免费试用

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

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


相关知识:
百度小程序开发说明
百度小程序是一种基于百度生态体系的应用程序,旨在提供一种轻量级的应用开发解决方案,帮助开发者快速构建跨平台的应用程序。本文将详细介绍百度小程序的原理和开发流程。百度小程序的原理基于前端技术栈,包括HTML、CSS和JavaScript,通过百度小程序开发工
2023-08-23
百度小程序开发小程序名称是什么意思
百度小程序是一种基于百度生态系统的应用程序开发框架,旨在帮助开发者快速构建跨平台的移动应用。它类似于微信小程序和支付宝小程序,但有着自己的特色和优势。在介绍百度小程序的名称含义之前,我们首先需要了解什么是小程序。小程序是一种在移动设备上运行的应用程序,它不
2023-08-23
安卓手机桌面小程序开发怎么开
安卓手机桌面小程序,通常也称为桌面快捷方式或桌面图标,是可以在安卓操作系统的桌面上创建的小程序。这些小程序可以是访问网址、应用程序或其他文件的链接,它们允许用户在不访问应用商店的情况下直接访问特定的站点或应用程序。桌面小程序的开发因应用类型和需求而异。下面
2023-08-09
wepy框架开发小程序文档
wepy框架是一个基于Vue.js的小程序开发框架,它提供了类Vue.js的语法结构和组件生命周期,同时也支持使用基于小程序原生API的组件和语法。下面将对wepy框架进行详细介绍和原理解析。一、wepy框架的优势1.性能优化:wepy框架提供了自动优化配
2023-08-09
webform可以开发小程序吗
Webform 是基于 Drupal 的一个模块,主要用于开发动态表单和问卷调查,可用于网站的前台和后台开发。可以轻松创建表单,公共服务请求,调查,联络表单等。同时,Webform提供了数据分析、数据图表等功能,使得数据收集和汇总可视化,更加直观。对于小程
2023-08-09
php小程序直播开发教程
PHP是世界上最流行的开源Web应用程序开发语言之一,它具有易于学习、适用范围广、功能强大等特点。PHP还被广泛应用于直播平台的开发。本文将详细介绍如何使用PHP来开发小程序直播功能。小程序直播PHP开发原理小程序直播后端基于PHP语言开发,采用WebSo
2023-08-09
java小程序怎么开发
Java是一种面向对象的编程语言,因其跨平台、高效、安全等特性而广泛应用于各个领域,包括小程序的开发。Java小程序是一种轻量级、运行速度快、易扩展的应用程序,常用于较小的应用领域,比如桌面应用程序、移动应用程序、嵌入式设备等场景。本文将详细介绍Java小
2023-08-09
electron开发微信小程序
微信小程序是一种轻量级的应用程序,适用于各种行业和领域,具有快速启动、节省内部存储、无需下载安装和占用手机存储空间等优势。本文将介绍如何使用electron开发微信小程序。1.什么是electronelectron是Github开发的一个跨平台的桌面应用程
2023-08-09
django微信小程序商城全栈开发
Django是一个功能强大的Python Web框架,而微信小程序是一种基于微信平台的深度集成应用。通过将这两种技术融合在一起,可以创建一个强大而又易于使用的微信小程序商城应用程序。这篇文章将介绍如何使用Django开发一个微信小程序商城。第一步:搭建Dj
2023-08-09
go语言源码怎么生成exe
Go 语言源码生成 exe 文件指的是编译 Go 源代码生成可执行文件,该操作通常在 Windows 系统上执行。以下将详细介绍 Go 语言是如何编译源码以生成 exe 文件的过程。1. 安装 Go 语言环境首先,必须安装 Go 语言环境。你可以从官网(h
2023-05-26
flash做的文件是exe吗
Flash 文件和 EXE 文件概念上是有区别的,但在某些情况下,Flash 文件可以转换为 EXE 文件。为了全面了解这个问题,我们会从 Flash 基本概念、文件类型、制作过程和原理,以及如何将 Flash 转换为 EXE 文件等方面进行详细介绍。1.
2023-05-26
小程序定制开发工具
小程序定制开发工具是一种可用于创建、开发和管理小程序的工具集合。该工具允许开发者创建和支持自定义的小程序应用程序,以满足各种企业和个人需求。此外,小程序定制开发工具还提供诸如数据分析、应用程序测试、应用程序发布和营销等功能。在开发小程序时,开发者可以使用小
2023-05-26