我可以根据域在node.js中设置环境变量吗?
我可以根据请求所经过的域设置环境变量吗 我想的是,我已经启动并运行了node.js应用程序,我分配了两个域,同一个域,具有不同的TLD:s,如下所示我可以根据域在node.js中设置环境变量吗?,node.js,heroku,Node.js,Heroku,我可以根据请求所经过的域设置环境变量吗 我想的是,我已经启动并运行了node.js应用程序,我分配了两个域,同一个域,具有不同的TLD:s,如下所示 mydomain.fr mydomain.de 做一些类似于伪代码的事情 switch(app.host) { case 'mydomain.fr': process.env.LANGUAGE = 'fr'; break; case 'mydomain.de': process.env.LANGUAGE = 'de'
mydomain.fr
mydomain.de
做一些类似于伪代码的事情
switch(app.host) {
case 'mydomain.fr':
process.env.LANGUAGE = 'fr';
break;
case 'mydomain.de':
process.env.LANGUAGE = 'de';
break;
default:
process.env.LANGUAGE = 'en';
break;
}
我之所以考虑这样做,是因为我真的希望使用节点模块,如i18n
或类似的模块,但使用相同的代码库,然后在特定的json文件中添加不同的语言变量
如果我想在一个新的国家,比如意大利(.it)或其他任何地方,这将使我的网站更容易发布。如果我将更新推送到网站,它会自动推送到所有语言
现在我的主要问题是:这可能吗
第二,这种方法的优点和缺点是什么?我已经列出了一些优点,现在我能想到的唯一缺点是,一台web服务器需要比我在不同服务器上设置页面所需的更大/更强
值得一提的是,每个语言网站的流量都很低(两种语言每月都低于10公里)
另一个值得一提的是,如果有必要的话,我计划将这些网站部署到Heroku。如果两个域同时运行,它将不起作用 node.js中的
process
等全局变量就是:全局变量。如果运行两个服务(应用程序),第一个将把变量process.env.LANGUAGE
设置为某物,第二个将覆盖它
如果你在每个连接上都这样做,它甚至都不会工作。来自法国的第一位客户将process.env.LANGUAGE
设置为fr
,然后来自德国的第二位客户将其设置为de
,然后在您回复第一位客户(法国人)时,您将以德语向他提供页面
记住,虽然node.js只是单线程的,但我们仍然需要担心多个连接,因为它们可能是并发的
正确的附加位置是为每个连接唯一获得的变量:请求对象和响应对象(通常缩写为
req
和res
)。如果您想要一些标准的东西,请使用中间件向请求对象添加一个伪头。我个人只会做req.lang='de'
如果两个域同时运行,它将不起作用
node.js中的process
等全局变量就是:全局变量。如果运行两个服务(应用程序),第一个将把变量process.env.LANGUAGE
设置为某物,第二个将覆盖它
如果你在每个连接上都这样做,它甚至都不会工作。来自法国的第一位客户将process.env.LANGUAGE
设置为fr
,然后来自德国的第二位客户将其设置为de
,然后在您回复第一位客户(法国人)时,您将以德语向他提供页面
记住,虽然node.js只是单线程的,但我们仍然需要担心多个连接,因为它们可能是并发的
正确的附加位置是为每个连接唯一获得的变量:请求对象和响应对象(通常缩写为
req
和res
)。如果您想要一些标准的东西,请使用中间件向请求对象添加一个伪头。我个人只会做req.lang='de'