2016-10-22 3 views
1

Mit Node.js und Express, meine ersten Route bestimmt die Sprache des Kunden:Teile von Daten zwischen app.js und html

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'); 
}); 

Dann brauche ich code passieren index.ejs der entsprechenden Sprache angezeigt werden soll.

Einige Leute schlagen vor, Angular zu verwenden, um einen Bereich zu teilen, aber Angular ist nicht in meiner App definiert, nur in index.ejs. Ich bin mir nicht sicher, ob ich es zu app.js hinzufügen sollte oder nicht.

Andere schlagen vor, module.exports auf der App zu verwenden, aber require funktioniert nicht auf der Vorderseite entweder.

Was ist ein guter Weg, es zu tun?

Antwort

0

Anruf res.render innerhalb der Rückruf, nachdem Sie http://freegeoip.net genannt haben, und alle Daten übergeben erforderlich, um die Ansicht als Objekt Parameter zu machen, zu res.render, das heißt

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 
      }); 
     } 
    }); 
}); 
+0

dann, wie es von index.ejs zugreifen? – mens

+0

können Sie es mit dem '<% =' Operator dh '<%= code %>' irgendwo in ejs –

+0

Dank .. Ich erkannte, es hat nicht funktioniert, weil ich lokal testen und 127.0.0.1 gibt keinen Speicherort .. albern mich ! – mens

Verwandte Themen