uni-app全局变量/方法/模块/组件
文章描述:
uniapp公共模块
1. 公用模块—实现模块全局共享
定义公用模块:在 uni-app 项目根目录下创建 common 目录,然后在 common 目录下新建 helper.js 用于定义公用的属性或方法。
helper.js
// 域名
const apiUrl = "http://www.miyil.com";
// 时间
const now = Date.now || function () {
return new Date().getTime();
};
// 数组对象
const isArray = Array.isArray || function (obj) {
return obj instanceof Array;
};
// 字符串
const Hello = function(){
console.log('你好');
}
export default {
apiUrl,
now,
isArray,
Hello
}
vue
template
<view>{{time}}</view>
script
import helper from "@/common/helper.js"
// import helper from "../../common/helper.js"
export default{
data(){
return{
time:""
}
},
onLoad() {
console.log(helper.apiUrl) // 打印域名
console.log("now:" + helper.now()); // 打印时间戳
this.time = helper.now();
helper.Hello(); // 打印字符
},
}
2. 挂载 Vue.prototype—定义全局变量和公用方法
直接扩展到 Vue.prototype 上,每个 Vue 对象都会“继承”下来,更方便适应。
main.js
import Vue from 'vue'
import App from './App'
Vue.config.productionTip = false;
//自定义的属性
Vue.prototype.appName='coldchain';
App.mpType = 'app'
const app = new Vue({
...App
})
app.$mount()
index.vue
console.log(this.appName);
3. 全局变量机制globalData来定义并引用全局变量
在 App.vue 中声明全局变量
export default {
globalData: {
name: 'liy'
},
onLaunch: function() {
console.log('App Launch')
},
onShow: function() {
console.log('App Show')
},
onHide: function() {
console.log('App Hide')
}
}
全局变量赋值
getApp().globalData.name= 'ming'//赋值
获取全局变量的值
console.log(getApp().globalData.name) //取值
4. Vuex—全局状态管理机制
(1) 在根目录下创建 stroe/index.js
import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
// 创建一个 store
const store = new Vuex.Store({
// (1)初始 state 对象
state:{
hasLogin: false,
token: "",
company:"未知",
userInfo: {
"name": "未知",
"role": "未知",
"age": 0
},
},
// (2)定义一些mutation
mutations:{
change(state,company){
state.company = company;
},
login(state,token,userInfo) {
state.hasLogin = true;
state.token = token;
state.userInfo = userInfo;
},
logout(state) {
state.hasLogin = false;
state.token = "";
},
celarUserInfo(state) {
state.userInfo = {
"name": "",
"role": "",
"age": 0
};
},
}
})
// 导出该模块:以便其他文件可对其进行使用
export default store
在JavaScript ES6中,export与export default均可用于导出常量、函数、文件、模块等;并在其它文件或模块中通过import+(常量 | 函数 | 文件 | 模块)名的方式将其导入,以便能够对其进行使用;但在一个文件或模块中,export、import可以有多个,export default仅有一个。
(2) 在main.js中挂在Vuex
import store from './store'
Vue.prototype.$store = store;
(3)index.vue
<template>
<view>
<text>名称:{{company}}</text>
{{userInfo.name}}
<button type="primary" @tap="onChange()">更改</button>
</view>
</template>
import {mapState,mapMutations} from 'vuex';
export default {
data() {
return {
}
},
computed:{
...mapState(['company','userInfo'])
},
methods: {
onChange : function(){
this.$store.commit('change', 'jk');//通过 store.commit 方法触发状态变更
this.$store.commit('celarUserInfo')
}
},
onLoad() {
}
}
5. 全局组件的定义与使用
自定义组件
(1) 根目录新建components/page-head/page-head.vue
<template name="page-head">
<view class="page-head-container">
<view class="page-head-title">{{title}}</view>
</view>
</template>
export default {
name: "page-head",
props: {
title: {
type: String,
default: ""
}
}
}
.page-head-container{
padding:35upx;
text-align: center;
}
.page-head-title {
display: inline-block;
padding: 0 40upx;
font-size: 30upx;
height: 88upx;
line-height: 88upx;
color: #BEBEBE;
box-sizing: border-box;
border-bottom: 2upx solid #D8D8D8;
}
(2) index.vue
<template>
<view>
<page-head title="hello"></page-head>
</view>
</template>
import pageHead from "../../components/page-head/page-head.vue"
export default {
// 注册为子组件
components: {
pageHead
},
data() {
return {
}
},
methods: {
},
onLoad() {
}
}
全局组件
(1) main.js
import pageHead from '@/components/page-head/page-head.vue'
Vue.component('page-head', pageHead)
(2) index.vue
<page-head title="hello"></page-head>
发布时间:2022/07/08
发表评论