javascript - vue2.0如何设置全局变量
巴扎黑
巴扎黑 2017-04-11 09:19:07
[JavaScript讨论组]

比如资源服务器的host,后台api的host,微信第三方的host。这些host不能挨个去代码里面写吧。
其实,我就是想知道vue如何设置全局变量。总感觉放到window,localstorage,sessionstorage不太正规。

巴扎黑
巴扎黑

全部回复(10)
PHPz

webpack 有global关键字
比如在一个a.js文件中定义全局变量:

global.COURSES = 'xxxxx'

在入口的main.js

import './a'

就可以,别的js不需要import也能用到COURSES

ringa_lee

放到vuex的store里?

大家讲道理

直接写一个config.vue放配置参数,需要用到的地方import进来。
或者用vuex。

ringa_lee

单有一个模块维护这些常量不就可以了,其他模块依赖这个模块。

伊谢尔伦

或者是因为个人的强迫症,还是在全局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;

})));
PHP中文网

简单需求的话,写在一个模块中就可以了,用的时候require或者import进来就可以了

ringa_lee

建议你用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都是需要设置监听的。

PHPz

存到VUEX的store里面就好了

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号