免费试用

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

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


相关知识:
鞍山百度小程序开发多少钱
鞍山百度小程序的开发费用,需要根据小程序的具体需求和复杂程度来确定。一般来说,小程序的开发费用包括设计费、编码费、测试费和维护费等,平均报价在5,000元左右。鞍山百度小程序是属于微信小程序的一种类型。开发一个百度小程序需要了解以下技术:1.百度小程序开发
2023-08-09
安徽小程序开发一个多少钱啊
安徽小程序开发价格因所需功能复杂度、开发者水平、开发周期等因素而有所不同。一般而言,开发一个简单的小程序需要1000-5000元不等,而功能较为复杂的小程序则需要1万元以上的费用。在小程序开发中,最重要的是找到合适的开发者。一般而言,有以下几种选择:1.
2023-08-09
uniapp开发微信小程序问题
Uniaap是一个基于Vue.js的开发框架,可以快速构建跨平台的应用程序。在Uniaap中开发微信小程序时,需要安装微信开发者工具和HBuilderX代码编辑器,以便进行开发、预览和发布微信小程序。首先,我们需要在HBuilderX中创建一个新的Unia
2023-08-09
qq小程序开发者如何关闭小程序
关闭QQ小程序是指将小程序从聊天界面中关闭,使其不再显示在聊天界面中。关闭小程序可以节省系统资源,同时也可以保护个人隐私。那么,QQ小程序开发者如何关闭小程序呢?下面我将分三个方面进行介绍:关闭小程序的原理、如何关闭小程序、小程序关闭的注意事项。一、关闭小
2023-08-09
php开发微信小程序软件入门
微信小程序是一种轻量级的应用程序,可以在微信平台上使用,无需下载安装。它采用的是前端技术,如HTML5, CSS3, JavaScript等,同时也支持后端语言接口,如PHP等。本文将介绍如何使用PHP开发微信小程序软件的入门原理。微信小程序后台的开发主要
2023-08-09
java开发微信小程序支付
微信小程序是一款基于微信平台的小型应用程序,可以在微信中直接使用,受到越来越多的用户青睐。小程序提供了丰富的开发接口,其中包括微信小程序支付接口。本文将介绍Java开发微信小程序支付的原理和详细步骤。一、微信支付简介微信支付是微信平台提供的一种安全便捷的支
2023-08-09
flutter能开发小程序吗
Flutter是Google开源的跨平台移动应用开发框架,支持同时开发iOS和Android应用,它也能用来开发小程序。下面详细介绍一下Flutter开发小程序的原理。1. Flutter小程序开发原理Flutter小程序的开发原理基于Flutter自身的
2023-08-09
c语言怎么开发微信小程序
微信小程序是一种轻量级的应用程序,它可以在微信中直接运行,无需下载安装,用户可以随时随地使用。小程序开发语言有多种选择,其中包括使用c语言进行开发。在这篇文章中,我将详细介绍使用c语言开发微信小程序的原理和步骤。1.了解微信小程序的架构微信小程序的框架采用
2023-08-09
foxtable做exe
FoxTable制作EXE文件的原理及详细介绍什么是FoxTable?FoxTable是一个使用FoxPro开发的数据表格管理工具,可以方便地管理数据库及表格,支持创建、编辑、查询、过滤等操作。FoxTable可以将数据库应用程序生成为EXE文件,便于用户
2023-05-26
小程序开发工具测试
小程序开发工具是一种能够帮助开发者快速开发小程序的工具,它提供了一系列的模板、组件和 API,可以帮助开发者快速构建出一个小程序的原型。在开发小程序时,使用小程序开发工具可以极大地提高开发效率,并且大大降低了入门门槛。小程序开发工具可以分为两个部分:前端开
2023-05-26
西安小程序开发工具保存键
小程序开发工具是开发小程序所需的一个开发工具集,小程序开发工具界面简洁明了,功能设置合理,开发者可以通过它更加得心应手地进行小程序的开发。其保存键是小程序开发过程中必不可少的一项功能,下面我们详细了解一下小程序开发工具保存键的原理和使用方法。一、小程序开发
2023-05-26
微信小程序开发工具怎么导入文件夹
微信小程序开发工具是一款非常方便的应用程序,能够帮助开发者快速地开发小程序。在开发小程序的过程中,我们通常会需要导入一些文件夹,以便于进行开发和调试。文件夹的导入过程其实非常简单,下面我将详细介绍一下。1. 打开微信小程序开发工具首先需要打开微信小程序开发
2023-05-26