免费试用

跨平台小程序在线开发工具,用做网页的技术做小程序,兼容微信、支付宝、抖音、快手、百度等主流小程序平台!

uni-app 开发微信小程序

uni-app 是一个跨平台开发框架,能够将一份代码同时编译成各个平台的应用,包括微信小程序等。下面详细介绍 uni-app 在开发微信小程序时的工作原理。

## uni-app 的架构

uni-app 框架基于 Vue.js 开发,它为开发团队提供了一站式的解决方案,包括了前端框架、开发工具和发布平台。uni-app 把小程序原生 API 封装成一套统一的 API,在开发时可以根据条件选择调用底层 API 还是微信小程序 API。

下面是 uni-app 的架构图:

![uni-app 架构图](https://cdn.nlark.com/yuque/0/2022/png/3530867/1644367366193-4d559824-5f55-4599-a75c-d5794cafec35.png)

uni-app 的架构可分为三层:

- 面向开发者的框架层:提供了丰富的组件和 API,以及开发工具集成成的开发环境;

- 面向平台的渲染层:uni-app 框架会将运行在特定平台上需要执行的代码编译成对应平台所能执行的代码,同时以统一的方式提供对应平台的原生能力;

- 原生平台 SDK 层:用于让 uni-app 能够在各个不同的平台上编译运行。

## 微信小程序开发的原理

从 uni-app 框架到微信小程序,涉及了两个平台:

1. uni-app 平台

2. 微信小程序平台

### uni-app 平台

uni-app 平台的架构图如下所示:

![uni-app 平台](https://cdn.nlark.com/yuque/0/2022/png/3530867/1644368156764-30ba490a-b277-4e09-814b-2cf9e6c69ec0.png)

uni-app 开发者会使用到 IDE 开发工具或命令行工具进行编写程序,并在平台上运行同步开发的调试工具。运行时通过 Runtime 层将 vue 模板编译成对应平台的代码。

### 微信小程序平台

微信小程序的架构图如下所示:

![](https://cdn.nlark.com/yuque/0/2022/png/3530867/1644368276823-ac007eb1-1d5c-4474-bf1b-9d7f655b285e.png)

Micro-parser 负责解析 JS、WXML 和 WXSS 文件,解析后得到相应的 AST。在运行时,会通过小程序的 API 将解析后的 AST 渲染到屏幕上,用户和开发者就可以看到渲染后的效果。

### 微信小程序与 uni-app 的对接

接下来,从 uni-app 平台出发,介绍微信小程序与 uni-app 是如何对接的。

#### 小程序的环境兼容处理

微信小程序官方原始的接口与 uni-app 平台赋予了很多基于 Web 标准的 API,同时貌似也对原生的接口做了一些封装。uni-app 的开发者在使用习惯和性能方面也与原始的小程序开发者的体验不相同。因此 uni-app 把原小程序接口进行了再封装,并提供了对应的框架接口。

比如 uni-app 将触摸事件封装成了 vue 的 DOM 事件,又将小程序的 wxss 编译成了 CSS 标准的语法,封装出了 Page、Component 和 App 等不同快照(snapshot)形式的组件。

#### 编译

uni-app 中的对应同名组件是在渲染树与WXML 渲染树匹配时使用的。在当前这个组件加载时,会在开发环境先去加载它们在 WXML 上的子树,之后认真看上去匹配它在注册中定义的 Component 部分。这里是 Vue.js 组件渲染分离的体现。

下面是 uni-app 编译流程:

- 通过 babel 将源码转化为标准的 ES5 代码

- 将 HTML、CSS、JS 同时编译成小程序可直接使用的代码

- 使用微信 IDE 相应的工具进行编译打包

#### 运行

运行时 uni-app 用代码根据小程序 Page、Component 和 App 注册项自动创建生成内部的 Vue 实例,完整地将当前页面、组件等进行封装。

总之,uni-app 知道如何编译一个小程序,将组件编译为如何从小程序实例上的属性或方法等相关的访问。这是一个函数,会将小程序的属性作为组件的属性传入 vue 实例,然后渲染组件中的子结构。

## 总结

综上所述,uni-app 使用一些框架技巧以及原生的小程序 API,在编写 App 和小程序时,采用了同一份代码,运行时自动适配平台。因此,uni-app 将小程序变得更加简单方便,这种技术架构对于使用 uni-app 开发微信小程序的开发者来说,意味着他们不再需要为每个平台编写单独的代码,节省了很多时间和精力。


相关知识:
安阳安卓小程序开发公司有哪些
安卓小程序是利用安卓系统的能力,开发出来的类似于微信小程序的应用程序。相比于传统的应用程序,安卓小程序大小小、安装方便、占用资源少,且可以脱离特定的平台运行。因此,安卓小程序开发成为了近年来越来越热门的领域。接下来我们就来了解一下安阳地区有哪些专业的安卓小
2023-08-09
安徽美容美发小程序开发哪家强一点
在安徽省内,有很多企业和公司都提供小程序开发的服务,因此选择一家实力强、专业性高、服务优质的开发公司是非常重要的。根据市场调研及相关评价,以下是在安徽省内比较出名的几家小程序开发公司:1. 云尚科技云尚科技专注于互联网行业多年,曾服务过众多知名企业和大型公
2023-08-09
安徽热处理设备小程序开发
安徽热处理设备小程序是一款基于微信小程序平台开发,专门为热处理设备行业提供服务的应用程序。其主要功能包括:设备展示、设备定制、售后服务、在线咨询等。本文将对安徽热处理设备小程序进行详细介绍。一、安徽热处理设备小程序的原理安徽热处理设备公司根据用户的需求和互
2023-08-09
安徽微信小程序开发定制
微信小程序是一种轻量级的应用程序,能够在微信中使用。作为一种新型的应用形态,微信小程序具有无需下载、快速启动、不占用手机存储空间等优点,已经成为移动互联网时代的重要趋势之一。在这个背景下,安徽微信小程序开发定制正逐渐走进人们的视野。下面我将从原理和详细介绍
2023-08-09
vue开发好如何部署到小程序
Vue是一个流行的JavaScript框架,用于构建现代Web应用程序。小程序是微信的轻量级应用程序,可以在微信上运行。在某些情况下,我们可能希望将Vue Web应用程序部署到小程序中。在本篇文章中,我将介绍如何将Vue Web应用程序部署到小程序中。部署
2023-08-09
und小程序开发
UNI-APP是一款非常热门的跨端应用开发框架,可以用于开发微信小程序、支付宝小程序、百度小程序、H5、App等多个平台。其中,UNI-APP的小程序开发(以下简称und小程序开发)是其中最为重要的一部分。und小程序开发的原理是依托于UNI-APP框架的
2023-08-09
swing开发一个小程序
Swing是Java语言中的一个GUI库,它提供了一系列组件和容器,可以方便地创建用户界面和交互式应用程序。在本文中,我将向你介绍如何使用Swing来开发一个小程序。1. 创建项目和界面首先,需要创建一个Java项目,并构建一个Swing界面。Swing界
2023-08-09
flutter什么时候可以开发小程序
Flutter 是一款自 2017 年以来由谷歌开发并开源的移动应用程序开发框架,目前已经成为行业内主流技术之一。Flutter 在开发过程中拥有高效、快速、灵活等优点,使得越来越多的开发者开始使用Flutter开发应用程序。目前微信小程序是国内最流行的小
2023-08-09
ai拍图识字识物小程序开发源码
AI拍图识字识物小程序是一款基于人工智能技术的图像识别应用程序,用户可以通过拍照或上传图片的方式识别图像内容,包括物体、文字等。其实现原理主要包括以下几个步骤:1. 图像采集和预处理。用户通过相机或从手机相册中选择一张图片上传至小程序平台,程序首先对该图片
2023-08-09
小程序开发工具苹果电脑下载不了
小程序开发工具是微信官方推出的一款针对小程序开发的集成开发环境(IDE),提供代码编辑、调试、上传等功能。在使用小程序开发工具时,我们可能会遇到一个问题——苹果电脑无法下载小程序开发工具。这是因为小程序开发工具采用的是微信开发团队自主开发和定制的 NW.j
2023-05-26
衡山小程序开发工具公司招聘
衡山小程序开发工具公司是一家专注于小程序开发工具的公司,为广大开发者提供优质的小程序开发工具和一站式服务。目前公司正在招聘小程序开发工程师,以下是招聘详细介绍。岗位职责:1. 参与公司小程序产品的开发和维护工作,负责小程序的技术选型、开发、测试、调优和现场
2023-05-22
河北共享美容店小程序开发工具
河北共享美容店小程序开发工具指的是一款可以轻松创建美容店小程序的工具。这个工具可以提供一个完整的开发环境,可以帮助开发人员快速创建美容店小程序。这个工具不仅提供了基本的界面设计和开发功能,而且也集成了大量的第三方工具和组件,以更好地满足美容店小程序的需求。
2023-05-22