免费试用

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

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. 用户认证和安全:阿里巴巴小程序开发提供了几种用户认证的方法,包括手机号码和阿里巴巴账号登录。此外,还提供了安全性良好的代码保护机制。2. 视图和页面:阿里巴巴小程序开发可以使用一些视图和页面组件
2023-08-09
安装微信小程序开发环境
微信小程序是一种基于微信内部的轻量级应用程序,在微信内部使用,而不需要下载和安装。因为其轻量级特性,微信小程序开发具有较小的代码量、短的开发周期和快速的反应速度。微信小程序开发环境的安装是开发的第一步,下面是安装微信小程序开发环境的详细介绍。微信小程序开发
2023-08-09
安康市微信小程序开发
安康市微信小程序是一种跨平台的应用程序,用户可以通过微信扫描二维码或搜索小程序名称直接打开使用,无需下载安装。相比传统应用程序,微信小程序占用内存小,使用方便,响应速度快,安全性高等优势,受到越来越多用户的喜爱。下面我们来了解一下微信小程序的原理和详细介绍
2023-08-09
安卓小程序的开发用什么语言
安卓小程序是一种由谷歌推出的轻量级应用程序,类似于微信小程序。它可以在安卓手机上运行,而不需要下载和安装到设备上。开发安卓小程序的语言主要有 Kotlin 和 Java。下面是一些详细介绍。1. KotlinKotlin 是一种由 JetBrains 开发
2023-08-09
安全的小程序开发软件
小程序作为手机APP的一种轻量化解决方案,在移动互联网领域日益普及,它具有便于分享和传播、占用空间小、使用门槛低等特点,所以成为了互联网领域的热门话题。但是,由于小程序集成着一定的业务逻辑,又涉及到用户隐私等方面,如果开发者不具备足够的安全意识、缺乏安全防
2023-08-09
web前端开发微信小程序
微信小程序是一种可以在微信中无需下载安装即可使用的应用程序,其开发方式采用了轻量、高效、低成本、易维护等特点。Web前端开发人员也可通过掌握微信小程序的开发原理,在小程序开发中发挥巨大作用。微信小程序采用WXML、WXSS、JS三种技术语言进行开发。其中W
2023-08-09
python小程序后台后端开发
Python在Web开发中有着广泛应用,可以用来开发后端Web应用,或者用来编写与现有Web服务器进行通信的客户端工具。Python为开发Web的后端提供了简单、高效和基础的条件,可以很容易地完成复杂的开发任务,有着丰富的第三方库和工具,对于不同类型的应用
2023-08-09
pycharm能开发微信小程序
PyCharm是一款用于Python语言开发的集成开发环境,由JetBrains创建。虽然PyCharm主要是用来开发Python应用程序,但它也可以被用来开发其他语言的应用程序,包括JavaScript、CoffeeScript、TypeScript、H
2023-08-09
java开发小程序后端
Java开发小程序的后端主要是构建一个Web应用程序或者Restful服务来提供小程序需要的各种功能接口。Java后端开发通常是基于Spring框架和Spring Boot实现的。首先,Java后端需要完成数据库设计与实现,这可以使用一些流行的关系型数据库
2023-08-09
新疆在线问诊小程序开发工具
随着互联网的发展,越来越多的人开始使用智能手机进行在线咨询和问诊。因此,开发一个新疆在线问诊小程序是在当前时代背景下非常有必要的。这种小程序可让患者通过智能手机随时随地咨询医生,适应了现代人们快节奏和方便性的需求。新疆在线问诊小程序的原理是基于微信公众号开
2023-05-26
辽宁自助洗车小程序开发工具
随着智能手机和互联网的普及,多种行业和业务都已经转移到移动端上来,汽车服务行业也不例外。作为汽车服务行业的一部分,洗车服务自然也要跟上潮流,因此在智能手机上推出了自助洗车小程序。自助洗车小程序是一种结合了用户需求的创新型洗车服务,用户只需通过智能手机下单即
2023-05-26
微信小程序嵌入链接?
微信小程序是一种轻量级的应用程序,可以在微信内部运行,无需下载安装,用户可以直接使用。小程序的开发可以使用微信提供的开发工具进行开发,同时也可以在小程序中嵌入外部链接,以实现更加丰富的功能和交互体验。
2023-04-06