免费试用

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

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


相关知识:
百度小程序需要重复开发吗
百度小程序是百度开发的一种轻量级应用程序,它可以在百度的移动端平台上运行,为用户提供各种服务和功能。与传统的手机应用程序相比,百度小程序具有更低的开发成本和更快的开发周期。可重复开发的概念是指将同一种应用程序开发多次,用于不同的平台或设备。在了解百度小程序
2023-08-23
安徽美妆护理小程序开发哪家强
现今,随着移动互联网技术的发展都市女性对于美妆护理的需求逐渐上升,不管是化妆品、美容器具、还是美容院等领域都在不断发展壮大。而小程序逐渐成为了许多企业的营销利器,越来越多的美妆护理企业也对小程序起了兴趣。下面我们从原理和介绍两个方面来分析安徽美妆护理小程序
2023-08-09
qq开发小程序可以收费吗
QQ小程序是一种基于QQ社交平台的开放式应用,并且已经在QQ的版本更新中正式推出。由于QQ的用户群体广泛,QQ小程序已经成为很多企业和开发者的新宠儿,因为它可以快速的打造一款“轻应用”,支持多种开发语言,可以实现游戏、日程表、购物、工具等多种应用。由此,很
2023-08-09
qq小程序开发工具如何下载
QQ小程序是一种轻量级的应用程序,基于QQ客户端,可以快速开发和部署,以满足用户日常需求。QQ小程序开发工具是一个用于开发QQ小程序的集成开发环境。在这个环境中,程序员可以使用JavaScript、CSS和HTML等技术在QQ小程序的世界里编写,编辑和调试
2023-08-09
app开发和小程序开发从哪里开始学
随着移动应用程序和小程序的兴起,app开发和小程序开发成为了越来越多人学习的关注点。首先,我们需要了解什么是移动应用程序和小程序。移动应用程序通常指在手机或平板电脑等移动终端设备上运行的应用程序,通常需要下载并安装。而小程序是指通过微信等社交媒体平台内置打
2023-08-09
app小程序开发团队轻松应对
随着智能手机的普及和移动互联网的发展,移动应用程序成为了现代人生活中必不可少的一部分。其中,app和小程序最受欢迎。而对于企业、机构和个人而言,开发一款好的app小程序或许是一个不错的选择。但是,开发一个app小程序并不是一件容易的事情,需要一支专业的开发
2023-08-09
小程序开发工具突然代码消失
小程序是一种全新的应用程序形态,随着小程序的普及,越来越多的人开始学习和开发小程序。在开发小程序的过程中,不可避免地会遇到各种问题,其中就包括小程序开发工具突然代码消失的问题。下面将介绍造成这种情况的原因以及解决方法。1. 原因(1)工具版本不兼容小程序开
2023-05-26
小程序商城免费开发工具有哪些软件
随着微信小程序的流行,越来越多的企业开始涉足小程序开发领域,希望通过小程序来提升自身的品牌价值和实现商业价值,而小程序商城也成为了不少企业的首选。但是,小程序商城开发需要掌握专业技能,既耗时又费力。为此,一些软件厂商推出了小程序商城免费开发工具,下面我们详
2023-05-26
微信开放平台小程序开发工具
微信开放平台小程序开发工具是一款用于开发小程序的集成开发环境(IDE),也是一种快速开发小程序的工具。使用此工具,开发者们可以用简单的代码开发出正式完备的小程序,实现线上开发、调试、构建、上传等一系列工作。下面将详细介绍微信开放平台小程序开发工具的原理和使
2023-05-26
微信小程序开发工具打开
微信小程序是一种轻量级的应用程序,不需要用户下载和安装。用户可以通过扫码或在微信公众号内搜索使用小程序。小程序开发工具是开发者编写小程序代码和调试程序的工具。它提供了基础框架、开发语言和集成开发环境等,使得开发者可以尽快地开始构建并调试微信小程序。小程序的
2023-05-26
微信小程序开发工具1
微信小程序是指运行在微信客户端内的应用程序,由于小程序无需下载安装,使用也很方便,因此受到越来越多开发者和用户的热爱。而微信小程序开发工具则是开发小程序的利器,能够帮助开发者快速开发出小程序。微信小程序开发工具1.05是一款基于原生技术开发的开发工具,其主
2023-05-26
electron 小程序开发工具
Electron 是一种用于桌面应用程序开发的跨平台技术。它是由 GitHub 上的 Atom 编辑器团队开发的,基于 Node.js 和 Chromium 开发,支持开发出 Mac、 Windows 和 Linux 操作系统上的桌面应用程序。与传统的本地
2023-05-22