免费试用

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

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


相关知识:
百度智能小程序开发需要哪些技术
百度智能小程序开发是一种基于百度AI技术的应用开发方式,通过百度的开放平台,开发者可以利用百度智能小程序开发工具进行开发。在开发百度智能小程序时,需要掌握以下几个关键技术。1. 小程序原理:百度智能小程序是一种轻量级的应用程序,在用户的手机上可以直接打开和
2023-08-23
百度小程序值不值得去开发
百度小程序是百度公司推出的一种轻量级应用程序形式,可以在百度的移动搜索、主页、贴吧等平台上快速推广和使用。与传统的原生应用程序相比,百度小程序具有开发简单、用户获取成本低、推广方便等优势。下面我将介绍一下百度小程序的原理和详细情况,以帮助您判断是否值得进行
2023-08-23
安徽果蔬小程序开发语言
小程序是一种运行在微信客户端内的应用程序,小程序的开发语言多种多样,比如JavaScript、TypeScript、Java、PHP、Python等等,但是在不同的小程序平台上可能对语言的支持有所不同。本文将会介绍安徽果蔬小程序的开发语言及其原理。安徽果蔬
2023-08-09
python3开发小程序
Python 3是一种高级的编程语言,它支持多种编程范式,适用于许多不同的应用程序。Python是一种解释性语言,这意味着不需要编译器,可以直接运行程序。它还具有丰富的库和框架,使得开发小程序变得更加容易。在本文中,我们将讨论如何使用Python 3来开发
2023-08-09
ios 小程序开发
iOS小程序开发是一种基于iOS操作系统的轻量级应用程序开发方式,它与传统的iOS应用程序不同,它不需要用户下载安装就可以直接运行使用。小程序开发的目标是提供一个轻量级的、具有一定交互体验的应用程序,并且对开发难度和成本要求较低。下面就来介绍一下iOS小程
2023-08-09
es6开发小程序注意
小程序是近几年流行起来的一种轻量级的应用程序形式,它具有开发简单、用户使用便捷等特点。由于小程序的应用场景广泛,越来越多的开发者开始使用es6来编写小程序。本文将从原理和详细介绍两方面来探讨es6在小程序开发中的注意事项。一、原理ES6是JavaScrip
2023-08-09
app微信小程序开发到上线过程
微信小程序是一种新兴的应用程序类型,它基于微信生态圈,独立于普通网页应用和原生应用,提供了一种新的开发方式和交互方式。小程序本身不需要下载和安装,用户可以直接通过微信扫描二维码或搜索进入应用,具有在线即用、无需安装、占用空间小等特点。本文将介绍微信小程序从
2023-08-09
新疆健身类小程序开发工具有哪些
小程序是一种轻量级的应用程序,它可以在微信平台内被访问和使用。随着互联网技术的不断发展,小程序已经成为了很多企业和个人开展业务的重要工具之一。对于健身行业来说,开发一个健身类的小程序能更好地促进用户体验和交互,提高用户黏性。以下将详细介绍新疆健身类小程序开
2023-05-26
河池旅游小程序开发工具
河池旅游小程序是一款专注于河池旅游、景点、美食、住宿等信息推荐的小程序。开发工具是指用于开发小程序的软件或平台,如微信开发者工具等。在这篇文章中,我将介绍河池旅游小程序的开发工具,并讨论其原理和优势。一、微信小程序的特点1. 无需下载:小程序是基于微信内置
2023-05-22
不是小程序开发者怎么使用微信开发工具
微信开发工具是一个可视化的开发工具,专门为开发微信小程序而设计。使用微信开发工具,可以快速创建、编辑、调试和发布微信小程序。对于不是小程序开发者的人员,如何使用微信开发工具呢?首先,需要下载微信开发工具,并安装到本地电脑上。微信开发工具支持Windows、
2023-05-22
百色博客小程序开发工具怎么样啊
百色博客小程序开发工具是一款专门用于开发小程序的工具,它能够帮助开发者快速搭建小程序,实现小程序的设计、编程、调试和发布等功能。百色博客小程序开发工具采用了全新的小程序开发模式,将小程序与网站开发进行了无缝结合,从而让小程序的开发更加简单便捷。百色博客小程
2023-05-22
微信小程序链接
微信小程序是一种轻量级的应用程序,用户可以通过微信扫描二维码或在微信中搜索并打开使用。它的出现使得用户不再需要下载安装应用程序,可以直接在微信中使用应用程序的功能。微信小程序的链接是通过特殊的URL地址实现的。这个URL地址被称为小程序链接,它是一个特殊的
2023-04-06