跨平台应用开发进阶(一) :走近 uni-app
文章目录
- 一、前言
- 二、项目结构
- 三、文件加载顺序
- 3.1 main.js
- 3.2 App.vue
- 3.3 pages.json
- 四、生命周期
- 4.1 应用生命周期
- 4.2 页面生命周期
- 4.3 组件生命周期
- 五、延伸阅读 uni-app 单页面去除顶端导航栏
- 六、拓展阅读
一、前言
跨平台是一种能够在多种平台(例如Android
,iOS
,Windows
,Blackberry
、小程序、快应用等)上运行的应用软件。基于此框架构建的应用程序不需要为每个平台进行单独的编码,而是一次编码就可以在多个平台上高效运行。它是当今应用程序开发领域中最受欢迎的方法之一。此篇博文主要梳理uni-app
应用的项目结构、项目启动后文件加载顺序,及应用、文件生命周期等知识点。其中,大部分内容主要参考uni-app官方文档,按照自己的思路重新梳理一遍而得。
跨平台框架中,uni-app
是 DCloud
出品的新一代跨端框架,可以说是目前跨端数最多的框架之一了,目前支持发布到:App
(Android/iOS
)、H5
、小程序(微信小程序/支付宝小程序/百度小程序/字节跳动小程序),目前市面上类似的框架还有:Taro
(京东出品)、Megalo
(网易出品)。
uni-app
的 nvue
说白了就是 weex
的那一套东西,uni-app
集成了 weex
的 SDK
,也就实现了 App
端的原生渲染能力。
weex
支持的东西,在 nvue
里大多都是支持的。
二、项目结构
一个uni-app
工程,默认包含如下目录及文件:
三、文件加载顺序
参照vue
项目启动后调用顺序: index.html → main.js → app.vue → router/index.js → components/组件
。
uni-app
项目启动后文件调用顺序为: index.html → main.js → app.vue → pages.json → components/组件
。
3.1 main.js
main.js
是uni-app
的入口文件,主要作用是初始化vue
实例、定义全局组件、使用需要的插件如vuex
。
首先引入了Vue
库和App.vue
,创建了一个vue
实例,并且挂载vue
实例。
import Vue from 'vue'
import App from './App'
import pageHead from './components/page-head.vue' //全局引用page-head组件Vue.config.productionTip = false
Vue.component('page-head', pageHead) //全局注册page-head组件,每个页面将可以直接使用该组件
App.mpType = 'app'const app = new Vue({...App
})
app.$mount() //挂载Vue实例
使用Vue.use
引用插件,使用Vue.prototype
添加全局变量,使用Vue.component
注册全局组件。
⚠️注意,此处无法使用vue-router
,路由须在pages.json
中进行配置。如果开发者坚持使用vue-router
,可以在插件市场找到转换插件。
3.2 App.vue
App.vue
是uni-app
的主组件,所有页面都是在App.vue
下进行切换的,是页面入口文件。但App.vue
本身不是页面,这里不能编写视图元素。
这个文件的作用包括:调用应用生命周期函数、配置全局样式、配置全局的存储globalData
。
应用生命周期仅可在App.vue
中监听,在页面监听无效。
uni-app
支持 onLaunch
、onShow
、onHide
等应用生命周期函数,
<script> export default { onLaunch: function() { console.log('App Launch,app启动') }, onShow: function() { console.log('App Show,app展现在前台') }, onHide: function() { console.log('App Hide,app不再展现在前台') },globalData: {// 登录用户信息userInfo: {},// 是否已登录hasLogin: false,// tokentoken: '',// 设备信息deviceInfo: {},// 是否有更新可用hasNew: false,config: {}}}
</script>
注意⚠️:
- 应用生命周期仅可在
App.vue
中监听,在其它页面监听无效。App.vue
不能写页面模板。
3.3 pages.json
pages.json
文件用来对 uni-app
进行全局配置,决定页面文件的路径、窗口样式、原生导航栏、底部原生tabbar
等。
它类似微信小程序中app.json
的页面管理部分。注意定位权限申请等原属于app.json
的内容,在uni-app
中是在manifest.json
中配置。
其中,uni-app
通过 pages
节点配置应用由哪些页面组成,pages
节点接收一个数组,数组每个项都是一个对象,其属性值如下:
Tips
跨平台应用开发进阶(一) :走近 uni-app相关推荐
- 跨平台应用开发进阶(四十三)一文走近网络层抓包工具:WhireShark
文章目录 一.前言 二.条件过滤 三.字段含义 四.TCP连接 4.1 三次握手示例 五.色彩规则 六.分析方法 6.1 Packet size limited during capture 6.2 ...
- 跨平台应用开发进阶(三十八)uni-app前端监控方案:基调听云APP探究
文章目录 一.前言 二.产品介绍 2.1 工作原理 2.1.1 Android平台工作原理 2.1.2 iOS平台工作原理 三.项目集成 3.1 Android集成 3.2 iOS集成 四.答疑解惑 ...
- 跨平台应用开发进阶(六十一):uni-app 跨平台技术开发框架可行性调研
文章目录 一.流程类 二.研发类(uni-app框架) 三.心得分享(研发踩坑&uni-app踩坑) 四.拓展阅读 一.流程类 IOS和安卓企业开发者账户申请流程(申请渠道.需要提供的相关证明 ...
- 跨平台应用开发进阶(三十):uni-app 实现集成火山视频直播服务
文章目录 一.前言 二.技术实现 2.1 web-view组件在app中的窗体关系和plus.webview操作方式 三.双向通信 3.1 uni-app与内嵌网页通信 3.2 内嵌网页向uni-ap ...
- 跨平台应用开发进阶(八) :uni-app 实现Android原生APP-云打包集成极光推送(JG-JPUSH)详细教程
文章目录 一.前言 二.资源 三.集成 3.1 SDK 引入 3.2 代码集成 3.3 遇到的问题及解决方案 3.3.1 包大小限制 3.3.2 [JS Framework] 当前运行的基座不包含原生 ...
- 跨平台应用开发进阶(十一) :uni-app 实现IOS原生APP-云打包集成极光推送(JG-JPUSH)详细教程
文章目录 一.前言 二.资源 三.集成 四.遇到的问题及解决措施 4.1 IOS开发者证书无推送权限 4.2 manifest中并没有配置push模块.但云端打包ios就是一直报Code Signin ...
- 跨平台应用开发进阶(十二) :uni-app 实现应用桌面图标角标提示及应用跳转
文章目录 一.前言 二.实现 2.1 集成极光实现 2.1.1 通道支持 2.1.2 iOS 角标 2.1.3 华为角标 2.1.4 小米角标 2.1.5 vivo 角标 2.2 H5+实现 三.遇到 ...
- 跨平台应用开发进阶(四十六)webview方式嵌套H5应用加载慢解决方案
文章目录 一.前言 二.优化建议 三.实施方案 3.1 优化项目结构,减小项目组包体积 3.2 去除项目冗余字体文件 3.2.1 字体筛选 3.2.2 字体压缩 3.3 gzip压缩 3.4 ETag ...
- 跨平台应用开发进阶(四十一)使用Xcode打包 iOS 应用 archive 时四种证书的区别详解
文章目录 一.archive 四种模式 二.相同点 三.安装方式区别 四.iOS开发者账号(企业版)申请攻略 4.1 苹果开发者账号类型 4.2 企业版开发者账号的优势是什么? 4.3 企业版开发者账 ...
- 跨平台应用开发进阶(七) :uni-app 自定义 showToast
文章目录 一.前言 二.实现原理 三.代码实现 四.拓展阅读 一.前言 利用uni-app跨平台开发框架开发多终端APP时,应用HBuilder自身提供的弹窗不满足业务需求,故开发自定义弹窗组件sho ...
最新文章
- Ubuntu 16.04~ORB SLAM2~Kinect v1
- 关于 uniqueidentifier
- PAT甲级1004 Counting Leaves (30分):[C++题解]树、邻接表存储树、dfs遍历树
- 高效遍历Java容器
- boost::exception_test::throw_test_exception<T>的测试程序
- ExtJS4.2学习(10)分组表格控件--GroupingGrid
- 自动设置图片的序号_巧用word软件中的题注功能,让你插入的对象自动排序与更新...
- centos7搭建Linux集群,CentOS 7下Kafka集群安装
- Proteus仿真单片机:51单片机的仿真
- 解决:[ERROR] Error executing Maven. [ERROR] 1 problem was encountered while building the effective set
- math for programmers(转载)
- flag的具体用法python_Python Qt.WindowFlags方法代码示例
- python变量和对象,切片列表元祖
- python的decode函数报错_python2和python3的编码encode解码decode函数
- Qt 串口通信 高速发送出错的解决方法总结
- redis和oracle同步方案,redis与oracle之间怎么实现数据同步?
- 关于vs08生成解决方案慢的解决方法
- 基于C#木门归方程序 下料机 锯片 CNC 拆单软件 全屋定制设计拆单软件橱柜衣柜拆单设计制造管理一体化软件 有屋软件
- java 原子量_Java多线程-新特征-原子量
- 关于Python中rank()函数的理解