扫码关注官方订阅号
比如资源服务器的host,后台api的host,微信第三方的host。这些host不能挨个去代码里面写吧。其实,我就是想知道vue如何设置全局变量。总感觉放到window,localstorage,sessionstorage不太正规。
webpack 有global关键字比如在一个a.js文件中定义全局变量:
global.COURSES = 'xxxxx'
在入口的main.js
import './a'
就可以,别的js不需要import也能用到COURSES
放到vuex的store里?
直接写一个config.vue放配置参数,需要用到的地方import进来。或者用vuex。
单有一个模块维护这些常量不就可以了,其他模块依赖这个模块。
或者是因为个人的强迫症,还是在全局Vue.use了一个自定义插件。
main.js如下:
// 重写了vue-bus import VueBus from './component/vue-bus.js' Vue.use(VueBus);
vue-bus.js如下:
(function(global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : (global.VueBus = factory()); }(this, (function() { 'use strict'; function VueBus(Vue) { var bus = new Vue(); bus.data = { host: "local.vue.com" } Object.defineProperty(Vue.prototype, '$bus', { get: function() { return bus; } }); } if (typeof window !== 'undefined' && window.Vue) { window.Vue.use(VueBus); } return VueBus; })));
简单需求的话,写在一个模块中就可以了,用的时候require或者import进来就可以了
建议你用vuex,因为这相当于数据仓库,而且可以是响应式的数据
连vue对象都是放在window下面,怎么换成你的就不正规了呢?
有很多种方法,下面这种方式比较合理,也是我平时用的方法:写一个js文件,将静态数据都写进去。
// config.js const host = '//a.com/api/xx'; export default { host };
然后在需要用的文件中使用一下方法引入:
import { host } form './config.js'
还有其他方法可以实现:
存到vuex中
使用props的方式传入当时由于host是静态数据,是不会变化的,所以,使用这两个方法有点浪费,因为vuex, props都是需要设置监听的。
存到VUEX的store里面就好了
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
webpack 有global关键字
比如在一个a.js文件中定义全局变量:
在入口的main.js
就可以,别的js不需要import也能用到COURSES
放到vuex的store里?
直接写一个config.vue放配置参数,需要用到的地方import进来。
或者用vuex。
单有一个模块维护这些常量不就可以了,其他模块依赖这个模块。
或者是因为个人的强迫症,还是在全局Vue.use了一个自定义插件。
main.js如下:
vue-bus.js如下:
简单需求的话,写在一个模块中就可以了,用的时候require或者import进来就可以了
建议你用vuex,因为这相当于数据仓库,而且可以是响应式的数据
连vue对象都是放在window下面,怎么换成你的就不正规了呢?
有很多种方法,下面这种方式比较合理,也是我平时用的方法:
写一个js文件,将静态数据都写进去。
然后在需要用的文件中使用一下方法引入:
还有其他方法可以实现:
存到vuex中
使用props的方式传入
当时由于host是静态数据,是不会变化的,所以,使用这两个方法有点浪费,因为vuex, props都是需要设置监听的。
存到VUEX的store里面就好了