免费试用

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

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


相关知识:
阿里小程序开发者工具
阿里小程序开发者工具是一款用于阿里小程序开发的工具,它可以帮助开发者更高效地开发、调试和发布小程序。下面我将对阿里小程序开发者工具做一个详细介绍。1. 工具简介阿里小程序开发者工具是一款基于JavaScript语言开发的开发工具,它提供了代码编辑、调试、构
2023-08-09
安徽自助洗车小程序开发平台有哪些
随着互联网和移动互联网发展,自助洗车逐渐成为了消费者的新选择。与传统的洗车方式相比,自助洗车更加方便、快捷和经济,尤其受到城市人们的喜爱。因此,一些开发者和公司开始在自助洗车领域进行尝试,推出自助洗车小程序。那么,安徽自助洗车小程序开发平台有哪些呢?首先,
2023-08-09
安庆美容行业小程序开发
随着互联网技术的发展,美容行业也迎来了新的变革。小程序成为了美容行业的一种新的营销方式,让用户可以随时随地地查看自己需要的信息,同时也为美容行业带来了更多的商机。本文将对安庆美容行业小程序的开发原理或详细介绍进行相关的讲解,帮助美容行业的从业者更好地了解、
2023-08-09
安仁小程序开发工具
安仁小程序开发工具是一款适用于微信小程序开发的集成开发环境,可供开发者基于该工具构建小程序应用。此工具基于微信官方提供的开发框架进行开发,支持主要实现技术包含 JavaScript、CSS 和 WXML 等,同时也支持微信提供的开放接口以及第三方接口。安仁
2023-08-09
vscode微信小程序开发提示插件
Visual Studio Code 是一款十分受开发者欢迎的IDE,也有许多使用微信小程序开发的开发者喜欢在 VSCODE 中编写代码。这时我们就可以借助适用于微信小程序开发的提示插件来提升开发效率。本文将简要介绍如何在 VS CODE 中使用微信小程序
2023-08-09
view开发小程序
小程序是一种轻量级的应用程序,适合在微信等社交平台上快速开发和发布。小程序通常由前端框架和后端服务器组成,它们使用特殊的约束和限制来保持轻量级和高效性,并且不需要安装到设备上。其中View(视图层)是小程序框架的核心之一,它负责渲染页面和处理用户的交互行为
2023-08-09
springboot开发小程序经济性
Spring Boot 是一个快速开发框架,它可以帮助开发者快速、方便地创建独立的、生产级别的基于 Spring 框架的应用程序。在开发小程序经济性方面,Spring Boot 可以为开发者解决一些常见的问题,例如配置管理、依赖管理、自动配置等,从而提高开
2023-08-09
java开发微信小程序登录
微信小程序是一种全新的应用场景,它具有简单、快捷和便携等优势,越来越受到广大用户的欢迎。在微信小程序中,用户可以实现各种功能,包括查看新闻、购物、支付等等。其中,登录是微信小程序的重要功能之一,今天我们将为大家介绍如何利用Java开发微信小程序登录。一、微
2023-08-09
app开发案例小程序开发案例
App(Application)是指应用程序,通常运行在移动设备(如手机、平板电脑)等上,为用户提供各种功能和服务,如社交、购物、游戏等。而小程序,则是指可以在微信或其他平台中直接运行的应用程序,可以不用下载安装,用户可以直接使用。App和小程序的开发都需
2023-08-09
3级景区微信小程序开发收费标准
微信小程序,是指基于微信平台开发的小型应用程序,其中包含一些简单的网页应用功能。微信小程序有非常多的优势,比如使用方便、资源占用少等等,因此得到了越来越广泛的应用。针对3级景区微信小程序开发的收费情况,下面就来作一些介绍。1. 收费标准:一般情况下,3级景
2023-08-09
godot打包exe
Godot是一个开源的游戏引擎,使用Godot可以轻松地创建2D和3D游戏。在开发游戏过程中,我们最终需要将游戏打包成可执行文件(在Windows操作系统下为.exe文件),以便于在没有Godot引擎的情况下也能运行游戏。本教程将详细介绍如何使用Godot
2023-05-26
西安微信小程序开发工具升级版
微信小程序是一种可以在微信中使用的轻量级应用,具备快速开发、高效运行、占用空间小等诸多优点。为了更好地满足开发者的需求,微信团队推出了升级版的西安微信小程序开发工具,使得开发者可以更加便利地开发小程序。一、升级版的特点1.更强大的开发者工具升级版的开发者工
2023-05-26