EmberJs;有条件地启动实例初始化程序

时间:2017-02-14 20:59:17

标签: ember.js ember-cli

是否可以根据环境变量有条件地运行实例初始值设定项?

用例:我在本地计算机上运行了一个Ember应用程序。如果应用程序启动时存在某个环境变量,我想启动名为" lights"的服务。如果它不存在,我不希望该服务运行。

//instance-intializers/lights.js
 export default {
  name: 'lights',
  initialize(application) {
  application.container.lookup('service:lights');
 }
};

2 个答案:

答案 0 :(得分:1)

好吧,如果你想在构建期间检测环境变量并不是那么难。您可以编写一个in-repo-addon并使用preprocessTree挂钩来添加或删除初始化程序。你在节点环境中,所以你可以访问你需要的一切。

答案 1 :(得分:1)

一种不错的方法是从构建中删除它。 (正如勒克斯在答案中提到的那样。)

快速方法是获取环境变量并进行检查,例如:

//instance-intializers/lights.js
export default {
  name: 'lights',
  initialize(application) {
    let env = application.resolveRegistration('config:environment');
    if(env === ''){
      application.lookup('service:lights');
      //... do whatever you want...
    }
  }
};