文章目录

  • 一、前言
  • 二、项目结构
  • 三、文件加载顺序
    • 3.1 main.js
    • 3.2 App.vue
    • 3.3 pages.json
  • 四、生命周期
    • 4.1 应用生命周期
    • 4.2 页面生命周期
    • 4.3 组件生命周期
  • 五、延伸阅读 uni-app 单页面去除顶端导航栏
  • 六、拓展阅读

一、前言

跨平台是一种能够在多种平台(例如AndroidiOSWindowsBlackberry、小程序、快应用等)上运行的应用软件。基于此框架构建的应用程序不需要为每个平台进行单独的编码,而是一次编码就可以在多个平台上高效运行。它是当今应用程序开发领域中最受欢迎的方法之一。此篇博文主要梳理uni-app应用的项目结构、项目启动后文件加载顺序,及应用、文件生命周期等知识点。其中,大部分内容主要参考uni-app官方文档,按照自己的思路重新梳理一遍而得。

跨平台框架中,uni-appDCloud 出品的新一代跨端框架,可以说是目前跨端数最多的框架之一了,目前支持发布到:AppAndroid/iOS)、H5、小程序(微信小程序/支付宝小程序/百度小程序/字节跳动小程序),目前市面上类似的框架还有:Taro(京东出品)、Megalo(网易出品)。

uni-appnvue 说白了就是 weex 的那一套东西,uni-app 集成了 weexSDK,也就实现了 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.jsuni-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.vueuni-app的主组件,所有页面都是在App.vue下进行切换的,是页面入口文件。但App.vue本身不是页面,这里不能编写视图元素。

这个文件的作用包括:调用应用生命周期函数、配置全局样式、配置全局的存储globalData

应用生命周期仅可在App.vue中监听,在页面监听无效。

uni-app 支持 onLaunchonShowonHide应用生命周期函数

<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>

注意⚠️:

  1. 应用生命周期仅可在App.vue中监听,在其它页面监听无效。
  2. 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相关推荐

  1. 跨平台应用开发进阶(四十三)一文走近网络层抓包工具:WhireShark

    文章目录 一.前言 二.条件过滤 三.字段含义 四.TCP连接 4.1 三次握手示例 五.色彩规则 六.分析方法 6.1 Packet size limited during capture 6.2 ...

  2. 跨平台应用开发进阶(三十八)uni-app前端监控方案:基调听云APP探究

    文章目录 一.前言 二.产品介绍 2.1 工作原理 2.1.1 Android平台工作原理 2.1.2 iOS平台工作原理 三.项目集成 3.1 Android集成 3.2 iOS集成 四.答疑解惑 ...

  3. 跨平台应用开发进阶(六十一):uni-app 跨平台技术开发框架可行性调研

    文章目录 一.流程类 二.研发类(uni-app框架) 三.心得分享(研发踩坑&uni-app踩坑) 四.拓展阅读 一.流程类 IOS和安卓企业开发者账户申请流程(申请渠道.需要提供的相关证明 ...

  4. 跨平台应用开发进阶(三十):uni-app 实现集成火山视频直播服务

    文章目录 一.前言 二.技术实现 2.1 web-view组件在app中的窗体关系和plus.webview操作方式 三.双向通信 3.1 uni-app与内嵌网页通信 3.2 内嵌网页向uni-ap ...

  5. 跨平台应用开发进阶(八) :uni-app 实现Android原生APP-云打包集成极光推送(JG-JPUSH)详细教程

    文章目录 一.前言 二.资源 三.集成 3.1 SDK 引入 3.2 代码集成 3.3 遇到的问题及解决方案 3.3.1 包大小限制 3.3.2 [JS Framework] 当前运行的基座不包含原生 ...

  6. 跨平台应用开发进阶(十一) :uni-app 实现IOS原生APP-云打包集成极光推送(JG-JPUSH)详细教程

    文章目录 一.前言 二.资源 三.集成 四.遇到的问题及解决措施 4.1 IOS开发者证书无推送权限 4.2 manifest中并没有配置push模块.但云端打包ios就是一直报Code Signin ...

  7. 跨平台应用开发进阶(十二) :uni-app 实现应用桌面图标角标提示及应用跳转

    文章目录 一.前言 二.实现 2.1 集成极光实现 2.1.1 通道支持 2.1.2 iOS 角标 2.1.3 华为角标 2.1.4 小米角标 2.1.5 vivo 角标 2.2 H5+实现 三.遇到 ...

  8. 跨平台应用开发进阶(四十六)webview方式嵌套H5应用加载慢解决方案

    文章目录 一.前言 二.优化建议 三.实施方案 3.1 优化项目结构,减小项目组包体积 3.2 去除项目冗余字体文件 3.2.1 字体筛选 3.2.2 字体压缩 3.3 gzip压缩 3.4 ETag ...

  9. 跨平台应用开发进阶(四十一)使用Xcode打包 iOS 应用 archive 时四种证书的区别详解

    文章目录 一.archive 四种模式 二.相同点 三.安装方式区别 四.iOS开发者账号(企业版)申请攻略 4.1 苹果开发者账号类型 4.2 企业版开发者账号的优势是什么? 4.3 企业版开发者账 ...

  10. 跨平台应用开发进阶(七) :uni-app 自定义 showToast

    文章目录 一.前言 二.实现原理 三.代码实现 四.拓展阅读 一.前言 利用uni-app跨平台开发框架开发多终端APP时,应用HBuilder自身提供的弹窗不满足业务需求,故开发自定义弹窗组件sho ...

最新文章

  1. Ubuntu 16.04~ORB SLAM2~Kinect v1
  2. 关于 uniqueidentifier
  3. PAT甲级1004 Counting Leaves (30分):[C++题解]树、邻接表存储树、dfs遍历树
  4. 高效遍历Java容器
  5. boost::exception_test::throw_test_exception<T>的测试程序
  6. ExtJS4.2学习(10)分组表格控件--GroupingGrid
  7. 自动设置图片的序号_巧用word软件中的题注功能,让你插入的对象自动排序与更新...
  8. centos7搭建Linux集群,CentOS 7下Kafka集群安装
  9. Proteus仿真单片机:51单片机的仿真
  10. 解决:[ERROR] Error executing Maven. [ERROR] 1 problem was encountered while building the effective set
  11. math for programmers(转载)
  12. flag的具体用法python_Python Qt.WindowFlags方法代码示例
  13. python变量和对象,切片列表元祖
  14. python的decode函数报错_python2和python3的编码encode解码decode函数
  15. Qt 串口通信 高速发送出错的解决方法总结
  16. redis和oracle同步方案,redis与oracle之间怎么实现数据同步?
  17. 关于vs08生成解决方案慢的解决方法
  18. 基于C#木门归方程序 下料机 锯片 CNC 拆单软件 全屋定制设计拆单软件橱柜衣柜拆单设计制造管理一体化软件 有屋软件
  19. java 原子量_Java多线程-新特征-原子量
  20. 关于Python中rank()函数的理解

热门文章

  1. waterfox同步书签
  2. linux shell 实训总结和自评,听评课收获与总结
  3. 查询EC20 模块 SIM卡号iccid
  4. 天猫人群定位四件套如何理解
  5. 在本地利用服务器显卡跑代码
  6. docker运行项目脚本
  7. Templates在setting中设置所在目录
  8. Jenkins 安装和配置插件中心国内镜像源加快安装
  9. Chrome浏览器关闭右上角更新提示
  10. 2.编程实现基本遗传算法:对二元函数 f(x,y)=21.5+xsin(4πx)+ysin(20πy)