我有一个使用 Rails 作为服务器的 EmberJS 应用程序。在我的 Javascript 代码中,我有一些变量会根据应用程序所在的环境而变化。例如,如果应用程序在开发环境中,我希望 JS 代码向 localhost:3000 发送 POST 请求,如果是在暂存中,我希望它转到 staging.domain.com,如果它在生产中,它应该转到 domain.com。与其在更改环境之前手动更改所有常量变量,不如在 JS 文件中设置因环境而异的常量的最佳方法是什么?我需要这个的原因是因为 ember 应用程序正在与外部服务器进行通信以获取其 POST 请求。
问问题
816 次
1 回答
1
由于我猜您正在使用 rails 提供文件(包括您的 ember 应用程序 js 文件),因此您可以实现此目的的一种方法是简单地将 rails env 变量注入这些文件,例如通过在 index.html 中执行类似的操作:
index.html.erb
...
<%= javascript_tag do %>
window._current_host = "<%= Rails.env['SERVER_NAME'] %>"
<% end %>
...
这样做之后,您可以window._current_host
在 javascript 代码中根据需要使用该全局变量:
应用程序.js
...
App.ApplicationRoute = Ember.Route.extend({
model: function() {
var url = window._current_host + '/somepath/...';
return Ember.$.getJSON(url, function(data) {
return data;
});
}
});
...
甚至:
DS.RESTAdapter.reopen({
host: window._current_host
});
以上只是伪代码,当然还有更多的方法可以做到这一点,但我想你明白了。
希望能帮助到你。
于 2013-10-11T08:55:29.417 回答