考虑一个Yeoman Ember应用程序。
我看过不同的工具,如:
但我不太清楚如何在router.js中设置/获取不同的适配器url,具体取决于某些grunt / node环境。
答案 0 :(得分:1)
一种方法是使用例如两个文件:development.properties和production.properties,并使用grunt将它们复制到current.properties文件,然后您可以使用例如{读取current.properties文件{3}}来自您申请的任何地方。
您只需在grunt文件中使用grunt-contrib-copy任务。
总结:创建一个从命令行读取环境的gruntfile,并将相应的文件属性复制到current.properties,然后在你的route.js中只包含nconf,你就可以使用它了。
另外,作为替代方案,nconf可以在运行时从命令行中读取参数,因此您可以避开grunt文件并像节点app.js --property = value一样运行它并获取属性的值使用route.js中的nconf
答案 1 :(得分:0)
所以我最终找到了一种效果很好但只有两个环境的方法:
我为ember-generator做了一个拉动请求,开始使用该模式: https://github.com/borisrorsvort/generator-ember/commit/66f26e9e5a7599da53cb99b85e8ef5864648349b
这是一个适用于yeoman ember generator的实现:
您的替换任务应如下所示:
replace: {
app: {
options: {
variables: {
ember: 'bower_components/ember/ember.js',
ember_data: 'bower_components/ember-data-shim/ember-data.prod.js',
app_config: 'scripts/app_config/development.js'
}
},
files: [{
src: '<%= yeoman.app %>/index.html',
dest: '.tmp/index.html'
}]
},
dist: {
options: {
variables: {
ember: 'bower_components/ember/ember.prod.js',
ember_data: 'bower_components/ember-data-shim/ember-data.prod.js',
app_config: 'scripts/app_config/production.js'
}
},
files: [{
src: '<%= yeoman.app %>/index.html',
dest: '.tmp/index.html'
}]
}
}
==
然后在@@ ember和@@ ember_data下添加'@@ app_config'index.html,以便它被正确的字符串替换
==
然后创建两个文件:
这些包含您可以在Ember应用程序中使用的AppConfig onject
var AppConfig = {};
==
现在想象一下,在构建应用程序时,您想要更改适配器:
只需使用:
MyApp.ApplicationAdapter = DS.RESTAdapter.extend({
host: AppConfig.apiAdapterUrl
});