公用模块 / 全局变量

最后更新于:2022-04-02 03:40:40

[TOC] ## 公用模块 注意 1. 这种方式只支持多个vue页面或多个nvue页面之间公用,vue和nvue之间不公用。 根目录创建 common/helper.js ``` const websiteUrl = 'http://uniapp.dcloud.io'; const now = Date.now || function () { return new Date().getTime(); }; const isArray = Array.isArray || function (obj) { return obj instanceof Array; }; export default { websiteUrl, now, isArray } ``` 使用 ``` ``` ## 挂载 Vue.prototype 在 main.js 中挂载属性/方法 ``` Vue.prototype.websiteUrl = 'http://uniapp.dcloud.io'; Vue.prototype.now = Date.now || function () { return new Date().getTime(); }; Vue.prototype.isArray = Array.isArray || function (obj) { return obj instanceof Array; }; ``` 使用 ``` ``` 注意: 1. 建议在 Vue.prototype 上挂载的属性或方法,可以加一个统一的前缀。比如 $url、global_url ## globalData 注意: 1. globalData支持vue和nvue共享数据 2. globalData是一种比较简单的全局变量使用方式 3. 如果需要把globalData的数据绑定到页面上,可在页面的onshow声明周期里进行变量重赋值 在 App.vue中 ``` ``` 使用 ``` 赋值:getApp().globalData.text = 'test' 取值:console.log(getApp().globalData.text) // 'test' ``` ## Vuex 根目录新建 store/index.js ``` const store = new Vuex.Store({ state: { login: false, token: '', avatarUrl: '', userName: '' }, mutations: { login(state, provider) { console.log(state) console.log(provider) state.login = true; state.token = provider.token; state.userName = provider.userName; state.avatarUrl = provider.avatarUrl; }, logout(state) { state.login = false; state.token = ''; state.userName = ''; state.avatarUrl = ''; } } }) ``` 在 main.js 中进行挂载 ``` import store from './store' Vue.prototype.$store = store ``` 在 vue 中使用 ``` ```
';