uni-app
是一个使用 Vue.js 开发所有前端应用的框架,开发者编写一套代码,可发布到iOS、Android、H5、以及各种小程序(微信/支付宝/百度/头条/QQ/钉钉/淘宝)、快应用等多个平台。uni-app在跨平台的过程中,不牺牲平台特色,可优雅的调用平台专有能力。
uniapp官网地址
uniapp的优势
- 开发者/案例数量更多
- 平台能力不受限 支持原生代码混写和原生sdk集成
- 性能体验优秀 体验更好的Hybrid框架,加载新页面速度更快
- 周边生态丰富 支持NPM、支持小程序组件和SDK、兼容mpvue组件和项目、兼容weex组件
- 学习成本低 采用vue语法+微信小程序api
- 开发成本低 开发成本,招聘、管理、测试各方面成本都大幅下降
uinapp特色
- 条件编译
1
2
3
4
5
6
7
8
9
10
11
需要条件编译的代码 仅出现在App平台下的代码
需要条件编译的代码 除了H5平台,其他平台均存在的代码
需要条件编译的代码 在H5平台或微信小程序平台存在的代码
条件编译是利用注释实现的,在不同语法里注释写法不一样,js使用 // #ifdef、css 使用 /* #ifdef */、vue/nvue 模板里使用 <!-- #ifdef -->
- App端的Nvue开发
- HTML5+
uniapp开发环境搭建
- 通过 HBuilderX 可视化界面 快速上手
运行uni-app 第一次使用,需要配置开发工具的相关路径。点击工具栏的运行 -> 运行到小程序模拟器 -> 运行设置,配置相应小程序开发者工具的路径
在微信开发者工具打开时,需要先在微信开发者工具中开启服务端口 设置 -> 安全 -> 开启服务端口
- 通过vue-cli命令行
1
2
3
4
5
6
7全局安装vue-cli npm install -g @vue/cli
创建uni-app vue create -p dcloudio/uni-preset-vue my-project
运行、发布uni-app
npm run dev:%PLATFORM%
npm run build:%PLATFORM%
%PLATFORM% 取值 app-plus(app平台)、h5、mp-alipay(支付宝)、mp-baidu(百度)、mp-weixin(微信)、mp-toutiao(头条)、
mp-qq(qq)、mp-360(360)、quickapp-webview(快应用通用)、quickapp-webview-huawei(快应用华为)、quickapp-webview-union(快应用联盟)
uniapp生命周期
应用生命周期
只能在App.vue中使用
1
2
3// onLaunch 应用初始化完成 全局只触发一次
// onShow 应用启动的时候 或者从后台进入前台会触发
// onHide 应用从前台进入后台页面生命周期
1
2
3
4
5
6
7
8
9// onload 监听页面加载 可以获取页面传参
// onReady 监听页面的初次渲染完成
// onShow 监听页面显示 包括从下级页面点返回露出当前页面
// onHide 监听页面隐藏
// onUnload 监听页面卸载
// onPullDownRefresh 监听用户下拉动作,一般用于下拉刷新
// onReachBottom 页面滚动到底部的事件 一般用于上拉加载
// onTabItemTap 点击 tabbar 触发
// onShareAppMessage 用户点击右上角分享组件生命周期(即vue的生命周期)uni-app 组件支持的生命周期,与vue标准组件的生命周期相同
常用生命周期执行顺序
1
2
3
4
5
6
7
8
9
10
11
12// App Launch
// APP Show
// Page Onload
// Page onShow
// component beforeCreate
// component created
// component beforeMounted
// component Mounted
// Page onReady
// component beforeDestroy
// component destroyed
// Page onUnload
uniap默认模板目录
- components 自定义组件的目录
- pages 页面存放目录
- static 静态文件资源目录
- unpackage 编译后的文件存放目录
- app.vue 全局公用的状态数据等
- main.js 应用入口
- manifest.json 项目基础配置
- pages.json 页面相关配置 注册页面 设置页面名称等
- uni.scss 公用的scss变量 无需import这个文件
uniapp配置启动模式 condition
uniapp使用中其他问题
屏蔽自定义导航栏
仅支持 default/custom。custom即取消默认的原生导航栏
注意事项1
2
3"globalStyle": {
"navigationStyle": "custom"
}自动导入自定义组件 无需import
1
2
3
4
5
6// components/navbar/navbar.vue
// index.vue 中 直接使用 <navbar /> 等同于以下
// import navbar from '../components/navbar/navbar.vue'
// components: {
// navbar
// }在非H5 app mp-alipay中胶囊的位置
1
2
3
4// 获取胶囊位置
const menuButtonInfo = uni.getMenuButtonBoundingClientRect()
console.log(menuButtonInfo)
// wx {width: 87, height: 32, left: 278, right: 365, top: 26, bottom: 58}