【发布时间】:2013-04-21 10:48:21
【问题描述】:
我正在制作一个单页应用程序并使用带有 requirejs 的主干。现在我想根据环境变量包含不同的配置。我不知道该怎么做以及最佳做法是什么。
我有三个不同的配置文件:
config.js : 这保持通用配置。
config.dev.js :这会保留开发环境的特定配置
config.production.js :这会保留生产特定的配置
我正在从特定于环境的模型扩展配置模型(在 config.js 中),并且我需要来自其他模块的配置模型。 这工作正常,但同时下载开发和生产配置文件。我只想加载 config.dev.js 或 config.production.js 而不是两者。
// config.js
define([
'backbone',
'modules/config/config.dev',
'modules/config/config.production'
], function(Backbone, DevConfig, ProdConfig) {
// Select environment model
EnvConfig = (ENV == 'dev') ? DevConfig : ProdConfig;
var ConfigModel = EnvConfig.extend({
// Extending attributes.
defaults: _.extend({
foo : 'bar'
}, EnvConfig.prototype.defaults)
});
return new ConfigModel();
});
在其他模块中,我使用 Config 如下样式:
define([
'backbone',
'modules/config/config'
], function(Backbone, Config) {
var ProfileModel = Backbone.Model.extend({
urlRoot: Config.get('apiRoot') + '/profiles'
...
});
return ProfileModel;
});
如何加载开发或生产特定配置文件之一,而不是两者?
【问题讨论】:
-
所以你的问题是它下载了两个文件?
-
是的。我只想下载。
config.dev.js或config.production.js,不能同时使用。 -
也许你可以找到一种使用
require的方法,但因为它是异步的...... -
如何返回带有
require的配置模型?我正在尝试使用 require 但定义从模块返回 unifened 因为异步。
标签: backbone.js requirejs