免费试用

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

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开发,百度小程序开发具有一些独特的特点和优势。首先,百度小程序的开发成本相对较低。传统的APP开发需要专门的开发团队和大量的开发资源,而百度小程
2023-08-23
安徽自助洗车小程序开发方案设计
安徽自助洗车小程序的开发方案需要涉及到前端、后端、数据库及其它相关技术,下面将分别进行详细介绍。一、前端自助洗车小程序的前端主要为用户提供操作界面和交互体验。开发自助洗车小程序前端需要掌握以下技术:1.小程序框架:安徽自助洗车小程序采用微信小程序框架进行开
2023-08-09
安卓地图标记小程序开发工具怎么用
安卓地图标记小程序是一种基于安卓系统的应用程序,它可以让开发者在地图上添加标记,并且可以包括位置信息和额外的描述。这种小程序可以用于标记各种地点和位置,方便用户进行导航和查询。在开发这种小程序的时候,最主要的技术是地图 API。安卓系统提供了一套地图 AP
2023-08-09
vue原生微信小程序开发
Vue.js 是一个构建用户界面的渐进式框架,而微信小程序则是微信推出的一种应用类型,通过小程序可以实现在微信中快速地开发轻量级应用程序,同时其也支持各种原生API。本文将介绍如何使用 Vue.js 构建微信小程序。Vue.js 是一种前端框架,主要用于构
2023-08-09
ssm框架微信小程序开发
SSM框架是一个基于Spring、SpringMVC和MyBatis的框架集合,常用于后端Web开发。微信小程序是小程序开发者通过开发工具,使用HTML、CSS和JavaScript语言编写的应用程序,在微信生态体系中运行。在SSM框架中,我们可以使用Sp
2023-08-09
qq小程序开发者工具怎么撤销编辑
QQ小程序开发者工具是腾讯公司开发的一款专门用于小程序开发的工具,使用该工具可以快速方便地开发出符合自己需求的小程序。在使用QQ小程序开发者工具的过程中,我们经常会遇到需要撤销编辑的情况,接下来将结合实际操作介绍QQ小程序开发者工具如何进行撤销编辑操作。一
2023-08-09
html5可以开发小程序吗知乎
HTML5是一种标记语言,它可以用于创建网站和Web应用程序。HTML5提供了丰富的功能,包括音频和视频媒体播放,动画,本地存储,Web Sockets,设备访问和许多其他功能。这些功能可以使开发人员创建强大的Web应用程序,可以适应不同的设备和平台。小程
2023-08-09
flutter能开发小程序码
Flutter是目前市场上备受关注的一款跨平台开发框架,其在移动端开发领域表现优异。而随着微信小程序在移动端市场上的崛起以及其在全面占领市场上的野心,Flutter能否开发小程序码成为了众多开发者关心的问题。小程序码作为微信小程序的核心入口之一,是一种二维
2023-08-09
小程序开发工具使用ip地址
小程序是一种可以在微信平台上运行的应用程序,小程序开发可以使用微信提供的官方开发工具。当使用小程序开发工具开发小程序时,通常需要连接一个服务器来获取数据或执行其他操作。而在本地开发环境中使用IP地址来连接本地服务器是一个常见的方式。首先,IP地址(Inte
2023-05-26
微信小程序开发工具运行bug失败
微信小程序开发工具是一款专为微信小程序开发者打造的集代码编辑、代码调试、项目管理、上传发布等多种功能于一身的开发工具。但在使用过程中,可能会出现一些运行bug失败的情况,下面为大家详细介绍可能的原因和解决方法。1.网络问题网络是微信小程序开发工具能否正常运
2023-05-26
安徽企业办公小程序开发工具大全
随着时代的进步,越来越多的企业开始重视数字化办公,尤其是在移动互联网时代,企业办公小程序逐渐成为趋势。那么,本文将为大家介绍安徽企业办公小程序开发工具大全。一、微信小程序开发工具微信小程序开发工具是由微信公司推出的一款小程序开发工具,可以让开发者在PC上进
2023-05-22
小程序链接网址
小程序是一种基于微信平台的轻应用程序,可以在微信内部直接使用,无需下载安装,具有开发成本低、使用门槛低、交互性强等优点。小程序还可以通过链接的方式进行传播和分享,本文将详细介绍小程序链接的原理和使用方法。一、小程序链接的原理小程序链接实际上是一种URL链接
2023-04-06