EmberJS,如何为不同的"环境"管理不同的"配置变量"

fgu*_*len 1 javascript environments ember.js ember-cli ember.js-2

emberjs标签下有几个问题,讨论如何管理不同的环境,但所有问题都只适用于非常具体的场景.

我正在寻找一种如何为不同环境设置不同配置变量的通用解决方案.

比方说,我的开发环境有一个API URL,生产环境有另一个API URL .

production_api_url: "http://production.server.com/api"
development_api_url: "http://development.server.com/api"
Run Code Online (Sandbox Code Playgroud)

在我的适配器中,我想使用适当的API URL:

# /app/adapters/application.js
import ActiveModelAdapter from 'active-model-adapter';

export default ActiveModelAdapter.extend({
  namespace: 'api',
  host: [[API_URL]]
});
Run Code Online (Sandbox Code Playgroud)

fgu*_*len 5

在Ember 2.2和EmberCLI中,它可以开箱即用,如下所示:

为每个环境设置URLS :

# /config/environments.js
...
if (production === 'production') {
  ENV.API_HOST = 'http://production.server.com'
}

if (environment === 'development') {
  ENV.API_HOST = 'http://development.server.com'
}
...
Run Code Online (Sandbox Code Playgroud)

使用适配器中的URL :

# /app/adapters/application.js
import ActiveModelAdapter from 'active-model-adapter';
import config from '../config/environment';

export default ActiveModelAdapter.extend({
  namespace: 'api',
  host: config.API_HOST
});
Run Code Online (Sandbox Code Playgroud)