使用Node.js和Express,我的第一条路线决定了客户的语言:
var express = require('express'),
app = module.exports = express(),
server = require('http').createServer(app),
io = require('socket.io').listen(server),
ent = require('ent'),
fs = require('fs'),
path = require('path'),
request = require('request');
app.set('view engine', 'ejs');
app.use(express.static(__dirname + '/public'));
app.get('/', function (req, res) {
var ip = req.ip;
request('http://freegeoip.net/json/' + ip, function (error, response, body) {
if (!error && response.statusCode == 200) {
var data = JSON.parse(body);
var code = data.country_code.toLowerCase();
}
});
res.render('index.ejs');
});
然后我需要将code
传递给index.ejs以显示相应的语言。
有些人建议使用Angular来共享范围,但Angular并未在我的应用中定义,只能在index.ejs中定义。我不确定是否应该将其添加到app.js。
其他人建议在应用上使用module.exports
,但require
也不会在前端工作。
这样做的好方法是什么?
答案 0 :(得分:0)
在调用res.render
后调用回调内的http://freegeoip.net
,并将视图呈现为对象参数所需的任何数据传递给res.render
,即
app.get('/', function (req, res) {
var ip = req.ip;
request('http://freegeoip.net/json/' + ip, function (error, response, body) {
if (!error && response.statusCode == 200) {
var data = JSON.parse(body);
var code = data.country_code.toLowerCase();
res.render('index.ejs', {
code: code
});
}
});
});