uni-app 是一个使用 Vue.js
开发所有前端应用的框架,开发者编写一套代码,可发布到iOS、Android、H5、以及各种小程序(微信/支付宝/百度/头条/QQ/钉钉)等多个平台。
快速上手
通过 HBuilderX 可视化界面
通过 HBuilderX 可视化界面
捆绑性太强, 不建议使用这种方法.
通过 Vue-Cli 命令行
全局安装vue-cli
创建uni-app
1
| vue create -p dcloudio/uni-preset-vue my-project
|
此时,会提示选择项目模板,初次体验建议选择 hello uni-app
项目模板
运行并发布 uni-app
1 2
| npm run dev:%PLATFORM% npm run build:%PLATFORM%
|
%PLATFORM%
可取值如下:
值 |
平台 |
h5 |
H5 |
mp-alipay |
支付宝小程序 |
mp-baidu |
百度小程序 |
mp-weixin |
微信小程序 |
mp-toutiao |
头条小程序 |
mp-qq |
QQ小程序 |
使用须知
uni-app
跨了很多端,虽然代码层面可以开发一次,生成多端。但注意每个端,有每个端的管理规则
- 比如
H5
端的浏览器有跨域限制;
- 比如微信小程序会强制要求https链接,并且所有要联网的服务器域名都要配到微信的白名单中;
- 比如
App
端,iOS对隐私控制和虚拟支付控制非常严格;
- 比如
App
端,Android、国产rom各种兼容性差异,尤其是因为谷歌服务被墙,导致的push、定位等开发混乱的坑;
- 如果你的
App
要使用三方sdk,比如定位、地图、支付、推送…还要遵循他们的规则和限制;
开发规范
为了实现多端兼容,综合考虑编译速度、运行性能等因素,uni-app
约定了如下开发规范:
目录结构
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| ┌─components uni-app组件目录 │ └─comp-a.vue 可复用的a组件 ├─hybrid 存放本地网页的目录 ├─platforms 存放各平台专用页面的目录 ├─pages 业务页面文件存放的目录 │ ├─index │ │ └─index.vue index页面 │ └─list │ └─list.vue list页面 ├─static 存放应用引用静态资源(如图片、视频等)的目录,注意:静态资源只能存放于此 ├─wxcomponents 存放小程序组件的目录 ├─main.js Vue初始化入口文件 ├─App.vue 应用配置,用来配置App全局样式以及监听 应用生命周期 ├─manifest.json 配置应用名称、appid、logo、版本等打包信息 └─pages.json 配置页面路由、导航条、选项卡等页面类信息
|
生命周期
应用生命周期
函数名 |
说明 |
onLaunch |
当uni-app 初始化时触发(全局只触发一次) |
onShow |
当 uni-app 启动,或从后台进入前台显示 |
onHide |
当 uni-app 从前台进入后台 |
onError |
当 uni-app 报错时触发 |
onUniNViewMessage |
对 nvue 页面发送的数据进行监听 |
页面生命周期
函数名 |
说明 |
onLoad |
监听页面加载,其参数为上个页面传递的数据,参数类型为Object(用于页面传参) |
onshow |
监听页面显示。页面每次出现在屏幕上都触发,包括从下级页面点返回露出当前页面 |
onReady |
监听页面初次渲染完成。注意如果渲染速度快,会在页面进入动画完成前触发 |
onHide |
监听页面隐藏 |
onUnload |
监听页面卸载 |
onResize |
监听窗口尺寸变化 |
onPullDownRefresh |
监听用户下拉动作,一般用于下拉刷新 |
onReachBottom |
页面上拉触底事件的处理函数 |
onTabItemTap |
点击 tab 时触发,参数为Object,具体见下方注意事项 |
onShareAppMessage |
用户点击右上角分享 |
onPageScroll |
监听页面滚动,参数为Object |
onBackPress |
监听页面返回,返回 event = {from:backbutton、 navigateBack} ,backbutton 表示来源是左上角返回按钮或 android 返回键;navigateBack表示来源是 uni.navigateBack ; |
onNavigationBarSearchInputChanged |
监听原生标题栏搜索输入框输入内容变化事件 |
onNavigationBarSearchInputConfirmed |
监听原生标题栏搜索输入框搜索事件,用户点击软键盘上的“搜索”按钮时触发。 |
onNavigationBarSearchInputClicked |
监听原生标题栏搜索输入框点击事件 |
onPageScroll
参数说明:
属性 |
类型 |
说明 |
scrollTop |
Number |
页面在垂直方向已滚动的距离(单位px) |
onTabItemTap
参数说明:
属性 |
类型 |
说明 |
index |
String |
被点击tabItem的序号,从0开始 |
pagePath |
String |
被点击tabItem的页面路径 |
text |
String |
被点击tabItem的按钮文字 |