免费试用

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

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


相关知识:
百度小程序开发源码平台搭建体验
百度小程序是一种基于百度云开发平台的应用程序开发方式,它允许开发者使用JavaScript、CSS和HTML等前端技术,通过百度提供的API和工具来开发小程序。本文将介绍百度小程序开发源码平台的搭建体验,包括其原理和详细介绍。一、百度小程序开发的原理百度小
2023-08-23
安徽微信听书小程序开发
微信听书小程序是一种针对音频内容的小程序,主要功能是提供用户收听音频内容的服务。本文将从原理和详细介绍两个方面来阐述安徽微信听书小程序的开发。一、原理微信听书小程序的开发需要用到微信小程序开发框架,主要包括微信小程序框架和开发者工具。微信小程序框架包含了小
2023-08-09
安国市小程序开发商是谁
安国市小程序开发商是指在中国河北省保定市下属的安国市内从事小程序开发的公司或个人。在当今数字化时代,随着移动互联网的快速发展,小程序在中国已经成为移动互联网发展中的一股热潮。越来越多的企业、政府机构和个人纷纷加入到小程序开发的行列之中,安国市也不例外。安国
2023-08-09
安卓怎么用手机开发小程序语音
在安卓手机上开发小程序语音需要用到一些基础的技术和工具,例如语音库、录音和播放等。在本文中,我将详细介绍如何在安卓手机上开发小程序语音。1. 了解语音库在进行语音开发之前,首先要了解语音库的概念和作用。语音库是一个包含大量语音数据的文件,其中包括发音、语调
2023-08-09
uni小程序开发文档
uni小程序开发指的是基于uni-app框架开发小程序的过程。uni-app框架是一个使用Vue.js开发跨平台的框架,支持打包成微信、支付宝、H5、app、快应用等多个平台的应用程序。用uni-app开发小程序可以更快地开发出效果更好的应用,同时uni-
2023-08-09
ios各种小程序开发
iOS小程序开发是iOS应用程序开发中的一个重要分支,它可以快速为用户提供各种简便易行的小工具或服务。iOS小程序本质上就是一个精简版的应用程序,通过集成各种功能模块和API接口来满足用户各种需求。接下来,本文将为大家介绍几种常见的iOS小程序开发技术。1
2023-08-09
ironpython打包exe
在本教程中,我们将介绍如何将IronPython脚本打包为可执行文件(.exe)。这对于那些需要将您的Python脚本分发给没有安装Python环境的用户非常有用。IronPython是一个开源实现的Python编程语言,针对.NET框架进行了优化。Iro
2023-05-26
go编程开发exe程序
题目:Go 编程开发 exe 程序 - 原理与详细介绍Go 语言(也称 Golang)是一种现代编程语言,旨在简化编程任务并提高软件开发速度。通过 Go 语言,您可以创建独立的可执行文件(exe 程序),以便在 Windows、macOS 和 Linux
2023-05-26
freeze打包exe
标题:使用cx_freeze打包Python应用程序生成exe文件摘要:本篇文章将详细介绍如何使用cx_freeze库将Python应用程序打包成一个独立的exe文件。这样一来,即使在没有安装Python环境的设备上依然能够运行程序。正文:在某些情况下,我
2023-05-26
小程序开发工具教程视频
小程序开发工具是一款非常方便的开发工具,它提供了丰富的开发工具包,能够帮助开发者轻松地创建小程序。小程序开发工具的使用对于入门开发者非常友好,下面将为大家详细介绍小程序开发工具的使用原理和操作方法。一、小程序开发工具的安装小程序开发工具的安装非常简单,只需
2023-05-26
小程序开发工具下载保存不了文件
小程序是一种轻量级的应用程序,可以在微信或其他云平台上运行。它们通常是基于HTML5等其他基础技术开发的,可以跨平台,适用于iOS、安卓等多种操作系统。为了帮助开发者更加高效地开发小程序,官方提供了小程序开发工具。然而,一些开发者在使用小程序开发工具时,遇
2023-05-26
微信小程序开发工具当前代理
微信小程序开发工具是微信官方提供的一款开发工具,方便开发者在PC端进行小程序开发、调试和发布等工作。在使用微信小程序开发工具时,可能会遇到需要使用代理的情况。下面,我们来详细介绍一下微信小程序开发工具的代理原理和使用方法。一、代理的原理在使用微信小程序开发
2023-05-26