uni-app主入口main.js及主组件App.vue
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
注册全局组件
可以引用vuex
,因涉及多个文件,此处没有提供示例,详见hello uni-app
示例工程
无法使用vue-router
,路由须在pages.json
中进行配置。如果开发者坚持使用vue-router
,可以在 插件市场 找到转换插件
注意:
nvue
暂不支持在main.js
注册全局组件
App.vue
App.vue
是uni-app
的主组件,所有页面都是在App.vue
下进行切换的,是页面入口文件。但App.vue
本身不是页面,这里不能编写视图元素
这个文件的作用包括:调用应用生命周期函数、配置全局样式、配置全局的存储globalData
应用生命周期仅可在App.vue
中监听,在页面监听无效
应用生命周期
uni-app
支持如下应用生命周期函数:
函数名 | 说明 | 平台兼容 |
---|---|---|
onLaunch |
当uni-app 初始化完成时触发(全局只触发一次) |
|
onShow |
当uni-app 启动,或从后台进入前台显示 |
|
onHide |
当uni-app 从前台进入后台 |
|
onError |
当uni-app 报错时触发 |
|
onUniNViewMessage |
对nvue 页面发送的数据进行监听,可参考 nvue向vue通讯 |
App |
在App.vue
文件里使用生命周期函数,如下:
<script>
export default {
onLaunch: function() {
console.log('App Launch,app启动')
},
onShow: function() {
console.log('App Show,app展现在前台')
},
onHide: function() {
console.log('App Hide,app不再展现在前台')
}
}
</script>
注意
- 应用生命周期仅可在
App.vue
中监听,在其它页面监听无效 onLaunch
里进行页面跳转,如遇白屏报错,请参考:https://ask.dcloud.net.cn/article/35942App.vue
不能写模板
globalData
小程序有globalData
,这是一种简单的全局变量机制。这套机制在uni-app
里也可以使用,并且全端通用
以下是App.vue
中定义globalData
的相关配置:
<script>
export default {
globalData: {
text: 'text'
}
}
</script>
- js中操作
globalData
的方式如下:getApp().globalData.text = 'test'
- 在应用
onLaunch
时,getApp
对象还未获取,暂时可以使用this.$scope.globalData
获取globalData
- 如果需要把
globalData
的数据绑定到页面上,可在页面的onShow
页面生命周期里进行变量重赋值 nvue
的weex
编译模式中使用globalData
的话,由于weex
生命周期不支持onShow
,但熟悉5+
的话,可利用监听webview
的addEventListener show
事件实现onShow
效果,或者直接使用weex
生命周期中的beforeCreate
。但建议开发者使用uni-app
编译模式,而不是weex
编译模式globalData
是简单的全局变量,如果使用状态管理,请使用vuex
(main.js
中定义)
全局样式
在App.vue
中,可以一些定义全局通用样式,例如需要加一个通用的背景色,首屏页面渲染的动画等都可以写在App.vue
中。
注意如果工程下同时有vue
和nvue
文件,全局样式的所有css
会应用于所有文件,而nvue
支持的css
有限,编译器会在控制台报警,提示某些css
无法在nvue
中支持。此时需要把nvue
不支持的css
写在单独的条件编译里。如:
<style>
/* #ifndef APP-PLUS-NVUE */
@import './common/uni.css';
/* #endif*/
</style>
版权声明:
作者:Joe.Ye
链接:https://www.appblog.cn/index.php/2023/03/18/uni-app-main-entry-main-js-and-main-component-app-vue/
来源:APP全栈技术分享
文章版权归作者所有,未经允许请勿转载。
共有 0 条评论