uni-app分享2

3/7/2021 uni-app
作者 修订日期
iwtkings 2020.11.25

分享主要内容:

小程序框架二

小程序调试二

# 一、小程序框架

# 1.1 uni-app功能框架

功能框架

# 1.2 需要明确的几个概念

  • [ ] 原生应用程序与hybrid (opens new window)(美[ˈhaɪbrɪd])应用程序
  • [ ] 跨平台应用程序的优缺点,灾难性问题 -> 兼容、适配、放弃
  • [ ] 宿主,想要构建小程序的原生App,集成uni小程序SDK的宿主
  • [ ] 小程序,运行在宿主中的前端代码编写的小程序项目,使用 uni-app 框架开发
  • [ ] wgt,小程序应用资源包,即使用 uni-app 框架开发的项目,导出的小程序应用资源包
  • [ ] 小程序内置组件 (opens new window)
  • [ ] 第三方小程序原生组件
  • [ ] 原生app与uni-app打包iOS、Android应用程序的区别
  • [ ] 小程序引擎 (opens new window)
  • [ ] 基于uni-app构建iOS、Android应用程序
  • [ ] uni-app云打包与本地打包 (opens new window)iOS、Android应用程序
小程序引擎
iOS版
Android版
web版
微信小程序
支付宝小程序
百度小程序
字节跳动小程序
QQ小程序
快应用(Android)

# 1.3 uni-app 原生渲染引擎

uni-app App端内置了一个基于 weex (opens new window) 改进的原生渲染引擎,提供了原生渲染能力。

在App端,如果使用vue页面,则使用webview渲染;如果使用nvue页面(native vue的缩写),则使用原生渲染。一个App中可以同时使用两种页面,比如首页使用nvue,二级页使用vue页面,hello uni-app示例就是如此。

虽然nvue也可以多端编译,输出H5和小程序,但nvue的css写法受限,所以如果你不开发App,那么不需要使用nvue。

以往的 weex ,有个很大的问题是它只是一个高性能的渲染器,没有足够的API能力(比如各种push sdk集成、蓝牙等能力调用),使得开发时非常依赖原生工程师协作,开发者本来想节约成本,结果需要前端、iOS、Android 3拨人开发,适得其反。 nvue 解决了这个问题,让前端工程师可以直接开发完整 App,并提供丰富的插件生态 (opens new window)和云打包。这些组合方案,帮助开发者切实的提高效率、降低成本。

同时uni-app扩展了weex原生渲染引擎的很多排版能力,修复了很多bug。比如

  • Android端良好支持边框阴影
  • iOS端支持高斯模糊,详情 (opens new window)
  • 可实现区域滚动长列表+左右拖动列表+吸顶的复杂排版效果
  • 优化圆角边框绘制性能

资源地址 (opens new window)

# 1.4 混合开发

uni-app和原生App混合开发问题:

首先务必确认uni-app和原生代码,谁是主谁是从的问题。

  • 如果你的应用是uni-app开发的,需要扩展一些原生能力,那么首先去插件市场 (opens new window)看看有没有现成的插件,如果没有,就自己开发,开发文档请参考原生插件开发教程 (opens new window)
  • 如果你的App是原生开发的,部分功能栏目想通过uni-app实现,有2种方式
    • 在原生App里集成uni小程序sdk,参考 (opens new window)
    • 如果不想集成原生sdk,那就把uni-app代码发布成H5方式,在原生App里通过webview打开。

如果应用是uni-app开发为主,只是想离线打包,那么不应该使用uni小程序sdk,而是使用App离线打包SDK,参考 (opens new window)。 另注意离线打包无法享受插件市场的付费原生插件,如有相关需求需自己进行原生插件开发。

uni-app和原生小程序混合开发问题:

  • 方式1:把原生小程序转换为uni-app源码。有各种转换工具,详见 (opens new window)
  • 方式2:新建一个uni-app项目,把原生小程序的代码变成小程序组件,进而整合到uni-app项目下。uni-app支持使用小程序wxml组件,参考 (opens new window)
  • 方式3:原生开发的小程序仍保留,部分新功能使用uni-app开发。这个场景有三方开发者提供了插件,参考 (opens new window)

如果想充分发挥uni-app的跨端特性,编译到各种其他小程序平台,建议使用方案1。

如果不需要其他小程序平台,仅需要h5和app,那方案1和方案2均可。

如果只需要开发微信小程序,但想使用vue的方式开发、或者想利用uni-app的插件生态、或者部分页面想跨多端复用,那么使用方案3。

资源地址 (opens new window)

# 1.5 page.json配置

资源文件 (opens new window)

# 1.6 easycom配置

传统vue组件,需要安装、引用、注册,三个步骤后才能使用组件。easycom将其精简为一步。 只要组件安装在项目的components目录下,并符合components/组件名称/组件名称.vue目录结构。就可以不用引用、注册,直接在页面中使用。

资源地址 (opens new window)

# 1.7 生命周期

资源地址 (opens new window)

# 二、小程序运行调试

# 2.1 uni-app以app的方式在iOS、Android设备上运行

通过cli命令创建项目的方式,无法在iOS、Android设备上运行应用程序

内置工程

# 2.2 HBuildX标准版和App开发版的区别说明

用哪个都行。 HBuilderX标准版可直接用于web开发、markdown、字处理场景。做App仍需要安装插件。 App开发版预置了App/uni-app开发所需的插件,开箱即用。 标准版也可以在插件安装界面安装App开发所需插件,App开发版只是一个预集成作用。 App开发插件体积大的原因主要有2方面:

  1. 真机运行基座,Android版、iOS版、iOS模拟器版,加起来体积就1百多M。真机运行基座需要把所有模块都内置进去,方便大家开发调试。开发者自己做app打包是不会这么大的,因为可以在manifest里选模块来控制体积。
  2. uni-app的编译器,依赖webpack和各种node模块,node_modules就是这么一个生态现状,文件超级多,几万个文件,解压起来很慢。

如果你使用uni-app cli方式创建项目,编译器会在项目下,且你不开发App,只用uni-app做小程序和H5,那使用标准版就可以。

# 2.3 uni-app开发中需要注意的一些细节

  • [ ] template中的数据展示尽量不要使用高端语法
  • [ ] template中的样式呈现尽量不要使用高端语法
  • [ ] template中的判断尽量不要使用高端语法以及复杂的判断
<template>
	<view>
		<text v-show="show" :class=""></text>
	</view>
</template>

<script>
data() {
 return {
 	show: false
 }
}

onLoad() {
	this.show = data.objA.propA.show && data.objB.propB.aa.length > 0;
}
</script>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
上次更新: 6/30/2021, 11:14:11 AM