4.1 简介
uni-app是基于Vue.js开发的所有前端应用的框架,编写一套代码,可发布到IOS、Android、鸿蒙Next、Web以及各种小程序等平台
特性:
跨端抹平度
平台能力不受限:通过条件编译+平台特有API调用,可以为不同平台编写各自专有代码;
支持原生代码混写与原生SDK的集成
性能体验优秀
加载新页面速度快、自动diff更新数据
APP端支持原生渲染,可支撑更流畅的用户体验
小程序端的性能优于市场其他框架。
生态丰富:
支持NPM、支持小程序组件和SDK
微信生态的各种sdk可直接用于跨平台App。
功能架构图

各端对比、技术选型参考
https://uniapp.dcloud.net.cn/select.html
4.1.1 开发环境配置及项目创建、运行、发布
新建项目

配置HBuilder编译器
在相应配置项中,添加对应编译器exe的路径
如果是第一次使用,需要配置开发工具的相关路径。点击工具栏的运行 -> 运行到小程序模拟器 -> 运行设置,配置相应小程序开发者工具的路径。
微信小程序工具需要配置允许权限,不然HBuilder无法调用微信小程序开发工具的命令行
打开 <安全设置-服务端口>
支付宝/百度/抖音/360小程序工具,不支持直接指定项目启动并运行。因此开发工具启动后,请将 HBuilderX 控制台中提示的项目路径,在相应小程序开发者工具中打开。
如果自动启动小程序开发工具失败,请手动启动小程序开发工具并将 HBuilderX 控制台提示的项目路径,打开项目。
外部浏览器

微信小程序

运行
快捷键 Ctrl+R
发布
4.1.2 通过vue-cli创建
4.1.3 一些兼容性问题
https://uniapp.dcloud.net.cn/matter.html
4.1.4 开发过程的FAQ
https://uniapp.dcloud.net.cn/faq.html
uni-app 中可使用的 UI 框架:https://ask.dcloud.net.cn/article/35489
uni-app 导航栏开发指南: https://ask.dcloud.net.cn/article/34921
uni-app 实现全局变量: https://ask.dcloud.net.cn/article/35021
uni-app 引用 npm 第三方库: https://ask.dcloud.net.cn/article/19727
uni-app 中使用微信小程序第三方 SDK 及资源汇总:https://ask.dcloud.net.cn/article/35070
uni-app/uni-app-x 小程序项目配置 占位组件(componentPlaceholder):https://ask.dcloud.net.cn/article/42114
原生控件层级过高无法覆盖的解决方案:https://uniapp.dcloud.io/component/native-component
国际化/多语言/i18n方案:https://ask.dcloud.net.cn/article/35872
本地存储详解:https://ask.dcloud.net.cn/article/166
4.1.5 其他类型项目转uni-app
uni-app可以多端输出,也欢迎各平台之前的老项目向uni-app转换迁移。
vue h5项目转换uni-app指南:https://ask.dcloud.net.cn/article/36174
微信小程序转换uni-app指南及转换器:https://ask.dcloud.net.cn/article/35786
wepy转uni-app转换器:https://github.com/zhangdaren/wepy-to-uniapp
另一种有效的wepy转uni-app方法: https://ask.dcloud.net.cn/article/39125
mpvue 项目(组件)迁移指南、示例及资源汇总: https://ask.dcloud.net.cn/article/34945
4.1.6 运营
4.2 前置知识
uni-app代码编写,基本语言包括js、vue、css。以及ts、scss等css预编译器。
在app端,还支持原生渲染的nvue,以及可以编译为kotlin和swift的uts
DCloud还提供了使用js编写服务器代码的uniCloud云引擎。
4.2.1 约定的开发规范与跨端原理
- 页面文件遵循 Vue 单文件组件 (SFC) 规范,即每个页面是一个.vue文件
- 组件标签靠近小程序规范,详见uni-app 组件规范
- 接口能力(JS API)靠近小程序规范,但需将前缀
wx、my等替换为uni,详见uni-app接口规范 - 数据绑定及事件处理同
Vue.js规范,同时补充了应用生命周期及页面的生命周期 - 如需兼容app-nvue平台,建议使用flex布局进行开发
跨端原理
uni-app分编译器和运行时(runtime),通过这2部分配合完成一套代码、多端运行。
编译器将开发者的代码进行编译,编译的输出物由各个终端的runtime进行解析,每个平台(Web、Android App、iOS App、各家小程序)都有各自的runtime。
4.2.2 工程
目录结构
1 | ┌─uniCloud 云空间目录, |
为什么需要static这样的目录
https://uniapp.dcloud.net.cn/tutorial/project.html
大致意思就是,uniapp不支持资源链接的解析,所以只能将静态资源全量复制到编译包
非 static 目录下的文件(vue组件、js、css 等)只有被引用时,才会被打包编译。
css、less/scss 等资源不要放在 static 目录下,建议这些公用的资源放在自建的 common 目录下。
