赞
踩
uni-app官方推荐的开发工具为HBuilderX,不过由于本人习惯使用vscode,因此介绍如何在vscode中使用uni-app。
1.CLI工程
全局安装 vue-cli 3.x(如已安装请跳过此步骤)
npm install -g @vue/cli
通过CLI创建uni-app项目
vue create -p dcloudio/uni-preset-vue my-project
此时,会提示选择项目模板,初次体验建议选择 hello uni-app
项目模板,如下所示:
我这里选择默认模板。
2.安装vue语法提示插件vetur
<img src=“https://img-cdn-tc.dcloud.net.cn/uploads/article/20190827/f98722b481a8f8bdb29163a4d248926a.png” alt=“img” style=“zoom:67%;” />
3.目录结构
一个uni-app工程,默认包含如下目录及文件:
- ┌─uniCloud 云空间目录,阿里云为uniCloud-aliyun,腾讯云为uniCloud-tcb(详见uniCloud)
- │─components 符合vue组件规范的uni-app组件目录
- │ └─comp-a.vue 可复用的a组件
- ├─hybrid App端存放本地html文件的目录
- ├─platforms 存放各平台专用页面的目录
- ├─pages 业务页面文件存放的目录
- │ ├─index
- │ │ └─index.vue index页面
- │ └─list
- │ └─list.vue list页面
- ├─static 存放应用引用的本地静态资源(如图片、视频等)的目录,注意:静态资源只能存放于此
- ├─uni_modules 存放[uni_module](/uni_modules)规范的插件。
- ├─wxcomponents 存放小程序组件的目录
- ├─main.js Vue初始化入口文件
- ├─App.vue 应用配置,用来配置App全局样式以及监听 应用生命周期
- ├─manifest.json 配置应用名称、appid、logo、版本等打包信息
- └─pages.json 配置页面路由、导航条、选项卡等页面类信息
1.页面结构
页面结构和一般的vue一样,既有vue的生命周期,也有小程序的生命周期,如下所示:
- <template>
- <view class="content">
-
- </view>
- </template>
-
- <script>
- export default {
- data() {
- return {
-
- }
- },
- methods: {
-
- },
- onLoad() {
-
- },
- created() {
-
- }
- }
- </script>
-
- <style>
-
- </style>
2.tabbar和路由跳转
(1)tabbar
如果应用是一个多 tab 应用,可以通过 tabBar 配置项指定一级导航栏,以及 tab 切换时显示的对应页。
在 pages.json 中提供 tabBar 配置,不仅仅是为了方便快速开发导航,更重要的是在App和小程序端提升性能。在这两个平台,底层原生引擎在启动时无需等待js引擎初始化,即可直接读取 pages.json 中配置的 tabBar 信息,渲染原生tab。
- "tabBar": {
- "color": "#7A7E83",
- "selectedColor": "#3cc51f",
- "borderStyle": "black",
- "backgroundColor": "#ffffff",
- "list": [{
- "pagePath": "pages/component/index",
- "iconPath": "static/image/icon_component.png",
- "selectedIconPath": "static/image/icon_component_HL.png",
- "text": "组件"
- }, {
- "pagePath": "pages/API/index",
- "iconPath": "static/image/icon_API.png",
- "selectedIconPath": "static/image/icon_API_HL.png",
- "text": "接口"
- }]
- }
(2)路由跳转
路由方式 | 页面栈表现 | 触发时机 |
---|---|---|
初始化 | 新页面入栈 | uni-app 打开的第一个页面 |
打开新页面 | 新页面入栈 | 调用 API uni.navigateTo、使用组件 <navigator open-type=“navigate”/> |
页面重定向 | 当前页面出栈,新页面入栈 | 调用 API uni.redirectTo、使用组件 <navigator open-type=“redirectTo”/> |
页面返回 | 页面不断出栈,直到目标返回页 | 调用 API uni.navigateBack 、使用组件 <navigator open-type=“navigateBack”/> 、用户按左上角返回按钮、安卓用户点击物理back按键 |
Tab 切换 | 页面全部出栈,只留下新的 Tab 页面 | 调用 API uni.switchTab 、使用组件 <navigator open-type=“switchTab”/> 、用户切换 Tab |
重加载 | 页面全部出栈,只留下新的页面 | 调用 API uni.reLaunch、使用组件 <navigator open-type=“reLaunch”/> |
3.生命周期
uni-app支持vue以及小程序原生语法的生命周期。
4.全局变量
(1)通过Storage来设置
设置缓存:uni.setStorageSync(key, value)
获取缓存:uni.getStorageSync(key)
删除缓存:uni.removeStorageSync(key)
(2)getApp()
需要在app.vue里设置变量 globalData
设置变量:getApp().globalData.key = xxx
获取变量:let key = getApp().globalData.key
(3)vuex
uni-app 内置了vuex
什么时候需要用vuex?
5.分包
分包加载配置,此配置为小程序的分包加载机制。
因小程序有体积和资源加载限制,小程序平台提供了分包方式,优化小程序的下载和启动速度。
所谓的主包,即放置默认启动页面/TabBar 页面,以及一些所有分包都需用到公共资源/JS 脚本;而分包则是根据pages.json的配置进行划分。
在小程序启动时,默认会下载主包并启动主包内页面,当用户进入分包内某个页面时,会把对应分包自动下载下来,下载完成后再进行展示。此时终端界面会有等待提示。
使用方法:
假设支持分包的 uni-app
目录结构如下:
- ┌─pages
- │ ├─index
- │ │ └─index.vue
- │ └─login
- │ └─login.vue
- ├─pagesA
- │ ├─static
- │ └─list
- │ └─list.vue
- ├─pagesB
- │ ├─static
- │ └─detail
- │ └─detail.vue
- ├─static
- ├─main.js
- ├─App.vue
- ├─manifest.json
- └─pages.json
则需要在 pages.json 中填写
- {
- "pages": [{
- "path": "pages/index/index",
- "style": { ...}
- }, {
- "path": "pages/login/login",
- "style": { ...}
- }],
- "subPackages": [{
- "root": "pagesA",
- "pages": [{
- "path": "list/list",
- "style": { ...}
- }]
- }, {
- "root": "pagesB",
- "pages": [{
- "path": "detail/detail",
- "style": { ...}
- }]
- }],
- "preloadRule": {
- "pagesA/list/list": {
- "network": "all",
- "packages": ["__APP__"]
- },
- "pagesB/detail/detail": {
- "network": "all",
- "packages": ["pagesA"]
- }
- }
- }
运行项目
npm run dev:%PLATFORM%
发布项目
npm run build:%PLATFORM%
%PLATFORM%
可取值如下:
值 | 平台 |
---|---|
h5 | H5 |
mp-alipay | 支付宝小程序 |
mp-baidu | 百度小程序 |
mp-weixin | 微信小程序 |
mp-toutiao | 头条小程序 |
mp-qq | qq 小程序 |
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。