相对较新的Web开发,我不知道解决以下问题的模式。在我的Node.js应用程序中,我可能会使用请求库向服务器上的资源发出HTTP请求,而在服务器上,我可以检查我是在开发还是生产中,如下所示:
if('production' == process.env.NODE_ENV)
但在前端,例如使用Backbone,
var Player = Backbone.Model.extend({
idAttribute: "_id",
urlRoot: 'http://localhost:3000/api/players' //hardcoded for development only
});
如何通过检查它是开发服务器还是生产服务器来避免将“localhost”硬编码到我的前端?
解决这个问题的最佳模式是什么?
答案 0 :(得分:0)
您可以将环境属性附加到窗口(或者更优选的是应用程序命名空间)。
//Attach and object to the window
window.ENV = {};
//Add an environmental variable (that can be written by the server)
window.ENV.app_env = 'development';
//Keep all dev/test/prod urls in an object...
var server_urls = {
development: 'localhost:8080',
test: '192.168.0.2:3030',
production: 'mysite.co.uk',
}
//...
//Then build the url when you need it.
var server_url = server_urls[window.ENV.app_env];