要求文件内的请求
我正在玩Node.js,我想知道我在做什么可以被认为是最佳的做法,我还有很多东西要学。
我试图通过创build更多的JSON文件,然后根据HTTP标头(语言)加载实现多语言布局。 我正在做的是这样的:
exports.index = function(req, res){ try { var words = require('../languages/' + req.headers["accept-language"].substr(0, 2).toLowerCase()); } catch(err) { console.log("no language found - falling back to english"); var words = require('../languages/en'); } res.render('index', { language: words }); };
现在,我很确定这里有什么问题。 因为我认为要求只应该做一次,而且我要求每一个要求。 但是,我想不出任何其他的方式,因为我需要访问请求头中的语言。
有任何想法吗?
提前致谢。
您需要两个不同的文件。 所以我不确定你为什么认为你重复自己。
最后,您应该将语言文件转换为位于本地node_modules文件夹中的实际模块,或与您的应用程序使用的Node_modules相同。
这样你可以要求你这样的语言模块。
var language = require('language');
在你的语言模块里面应该有一个索引文件和lib目录。
index.js
exports.en= require('./lib/en'), exports.fr= require('./lib/fr'), exports.de= require('./lib/de'),
那么你将能够像这样使用你的模块。
exports.index = function(req, res){ language = require('language'); try { var words = language[req.headers["accept-language"].substr(0, 2).toLowerCase()](); } catch(err) { console.log("no language found - falling back to english"); var words = language.en(); } res.render('index', { language: words }); };
用这个replace上面。
exports.index = function(req, res){ var language = require('language'); supported_languages = ['en', 'fr' , 'de'], accept_language = req.headers["accept-language"].substr(0, 2).toLowerCase(); if(supported_languages.indexOf(accept_language) !== -1){ var words = language[accept_language](); }else { console.log("no language found - falling back to english"); var words = language.en(); } res.render('index', { language: words }); };
对于国际化,我会强烈推荐i18n。
国际化节点