生产或开发中的root_url的Node.js模式

时间:2015-03-12 04:46:31

标签: javascript node.js backbone.js

相对较新的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”硬编码到我的前端?

解决这个问题的最佳模式是什么?

1 个答案:

答案 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];