免费试用

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

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、注册阿里云账号;2、在阿里云控制台创建一个云服务器;3、在云服务器上安装 Node.js 和 MongoDB;4、通过 npm 安装小程序开发工具 wxc-cli。二、创建项目1、在 wxc-cli 中
2023-08-09
安阳小程序开发优质商家
随着移动互联网的普及,小程序逐渐成为了商家接触和服务用户的重要渠道之一。而在安阳,也有许多优质的小程序开发商家,他们不仅拥有丰富的技术经验,而且还能够提供个性化、定制化的开发服务,满足用户各种需求。一、亚博科技亚博科技是一家位于安阳市的小程序开发公司,专注
2023-08-09
安达小程序开发制作软件
安达小程序开发制作软件是一款专门针对小程序开发的辅助工具。小程序是微信在2017年1月发布的一种全新的应用场景。小程序通过微信内置浏览器运行,可以不用下载安装即可使用。小程序具有体积小、速度快、运营灵活、使用便捷等特点,逐渐成为移动互联网新的增长点。安达小
2023-08-09
vue开发微信小程序全部课程
Vue是一个流行的JavaScript框架,被广泛用于开发Web应用程序。现在,你也可以使用Vue开发微信小程序,因为微信开发者工具已经支持Vue了。下面是Vue开发微信小程序的全部课程:1.安装微信开发者工具首先,你需要安装微信开发者工具。打开微信公众平
2023-08-09
nodejs小体积桌面程序开发
Node.js是一种基于Chrome V8引擎的JavaScript运行环境,让JavaScript能够在服务器端运行,已经成为热门的开发工具。而在桌面开发中,Node.js也能够发挥很大的作用,实现小体积桌面程序开发。本文将介绍Node.js在桌面程序开
2023-08-09
macbookpro 开发小程序
苹果公司的 MacBook Pro 是开发小程序的绝佳平台,因为它具有高性能、良好的响应速度和稳定的操作系统。在本文中,我将详细介绍 MacBook Pro 开发小程序的原理和步骤。1. 安装开发工具在 MacBook Pro 上开发小程序,需要安装适当的
2023-08-09
ipad可以开发微信小程序码
iPad 是苹果公司推出的一款平板电脑,其操作系统为 iOS。微信小程序是一种应用程序,用户可以在微信中直接使用,不需要下载安装,非常方便。微信小程序拥有丰富的功能和广泛的应用场景,可以提供便捷、高效的服务和用户体验,受到了广泛的欢迎和使用。那么,iPad
2023-08-09
西安微信小程序开发工具不联网能用吗
小程序是一种能够在微信内部运行的应用程序,可以减少用户安装和卸载应用程序的繁琐,同时也提供了更快捷的体验。而微信小程序开发工具就是开发者用来创建、测试和发布小程序的工具。但是,很多人有个疑问:西安微信小程序开发工具不联网能用吗?微信小程序开发工具是一款基于
2023-05-26
微信小程序开发工具制作流程
微信小程序是一种基于微信内部的应用程序,其可以在微信中直接使用,与传统的手机应用有着很大的不同。在微信小程序中,用户不需要下载和安装程序,只需扫描二维码或搜索关键词即可使用,因此使用起来也更加便捷和快速。微信小程序的开发主要依赖于微信小程序开发工具,下面将
2023-05-26
微信公小程序开发工具
微信小程序是一种轻量级的应用程序,它基于微信社交平台开发,可以通过微信扫码或者搜索进入使用。微信小程序不需要下载安装即可使用,节省了用户的手机内存空间,使用户可以快速、便捷地体验到应用程序的功能。微信小程序开发工具是官方提供的开发平台,主要用于小程序的开发
2023-05-26
北京点餐小程序开发工具有哪些公司
小程序是一种轻量级的应用程序,因其占用空间小,功能丰富,便于传播等优点,在近年来逐渐被越来越多的企业、商家、服务机构所使用。点餐小程序是其中的一种应用场景,其帮助消费者快速准确的下单,提高了餐厅的工作效率,成为了餐厅行业的一种重要的智能化手段。以下介绍北京
2023-05-22