免费试用

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

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 开发微信小程序的开发者来说,意味着他们不再需要为每个平台编写单独的代码,节省了很多时间和精力。


相关知识:
百度小程序官方开发公司
百度小程序是百度公司推出的一种轻量级应用程序开发框架,旨在为开发者提供快速、简便的方式来构建跨平台的小程序应用。这些小程序可以在百度的搜索、百度APP、百度智能小程序等平台上运行,用户可以随时随地通过搜索或扫描二维码的方式访问这些应用程序。作为百度的官方开
2023-08-23
阿里新风口小程序开发
阿里新风口小程序是阿里巴巴最近推出的一款小程序,主要是面向实体店铺打造的一款工具,可以通过小程序实现店铺运营,管理库存、商品、会员等业务。对于商家而言,可以通过阿里新风口小程序来增加销售额,提高效率。阿里新风口小程序的主要特点包括以下几个方面:1. 大数据
2023-08-09
阿拉尔小程序开发商城
阿拉尔小程序开发商城是一款基于微信小程序开发的在线商城平台,旨在帮助商家实现线上销售和客户服务,提高销售效率和客户口碑。下面从原理和详细介绍两方面进行介绍。一、原理介绍阿拉尔小程序开发商城是基于微信小程序技术开发的,包含前端页面、后端逻辑、数据库等多个部分
2023-08-09
安徽小程序开发外包公司
安徽小程序开发外包公司是一种服务公司,主要提供基于微信生态的小程序开发服务。小程序是微信为开发者提供的一个平台,能够在微信内嵌入小程序,不需要下载安装即可使用,具有轻量化、快速加载、易传播的特点,受到了众多企业的青睐。因此,安徽小程序开发外包公司的出现,解
2023-08-09
安庆教育小程序开发招聘
随着移动互联网的发展,小程序已经成为了互联网行业的新宠,受到越来越多企业和个人的关注。小程序与APP相比,无需下载安装,用户可以直接在微信、支付宝等平台中访问,便捷性更高。小程序比较适合用于快速开发轻量级应用,例如教育小程序,其中包含了课程安排、在线问题解
2023-08-09
安卓小程序游戏开发软件
安卓小程序游戏开发软件是指可以快速创建安卓小程序游戏的一种软件。为了让更多的人能够尝试开发出自己的小程序游戏,并实现商业化的目的,各大软件厂商纷纷推出了各自的安卓小程序游戏开发工具,其中市场占有率较高的有微信开发者工具、Hbuilder、Android S
2023-08-09
python3开发全线微信小程序
微信小程序是一种运行在微信客户端内,基于微信开发者工具开发的应用程序。与传统的应用不同,微信小程序无需下载安装,用户可直接使用,具有许多优秀的特性,比如不占用手机存储空间、无需卸载等。Python 3是一种高级编程语言,可以用于构建大型的Web应用、桌面应
2023-08-09
layaair开发微信小程序
LayaAir是一款轻量级的HTML5游戏引擎,其中包含了丰富的功能和优秀的性能,可以通过官方提供的IDE进行开发,同时也可以通过搭建开发环境进行二次开发。除了HTML5游戏外,LayaAir也支持开发微信小程序。下面我们详细介绍一下如何搭建LayaAir
2023-08-09
h5微信小程序开发要学什么
随着互联网的发展,微信已成为人们日常生活中必不可少的工具。而微信小程序也因其简单、易用、开发快速等特点,已经成为了移动端开发的新趋势。而其中的H5微信小程序更是受到开发者们的青睐,那么要想学习H5微信小程序开发,我们需要掌握哪些知识呢?1. HTML5HT
2023-08-09
flash如何生成exe
生成Flash程序的独立可执行文件(exe)是一个让Flash程序在Windows操作系统上独立运行的方法,而不需要依赖Adobe Flash Player或Web浏览器。生成EXE文件的过程主要包括将SWF文件与一个特定的Flash播放器运行时环境整合在
2023-05-26
小程序后台开发工具
小程序后台开发工具是用于小程序后台开发的一种工具软件,配合云开发能够快速开发出小程序所需的后台服务。小程序后台开发工具是一种完全基于云开发的后台服务,使得开发者可以使用 JavaScript 和 Node.js 来开发云函数,使用数据库、云存储、云函数等云
2023-05-26
微信小程序开发工具安装包
微信小程序是微信公众平台推出的轻量级应用,相较于传统应用,小程序无需下载安装,可以直接在微信中使用,所以越来越受欢迎。而要开发小程序,就需要使用微信小程序开发工具。下面就来介绍一下微信小程序开发工具安装包的原理及详细介绍。## 1.微信小程序开发工具概述微
2023-05-26