使节点模块中的变量可用于jQuery,Ember等

时间:2014-07-24 20:16:38

标签: javascript node.js restify

我对后端世界很陌生,我试图让我在其他普通JavaScript模块可以访问的Node模块(称为app.js)中创建变量。如果重要的话,所述变量中的数据来自MongoDB。

到目前为止,我只能将数据res.send()作为页面上无聊的纯文本。我希望能够将这些数据用于其他目的(例如制作表格)。那么如何将这些变量传递给JavaScript,以便我可以在HTML中正确显示它们?

2 个答案:

答案 0 :(得分:0)

我希望我能正确理解你的问题。

由于您标记了restify,我假设您只是在res.send()内发送JSON?

有了这个,您需要向具有AJAX调用的用户提供文件以获取JSON数据,然后根据您的前端操作它。

我建议尝试使用backboneangular之类的内容。使用这些前端JS框架,您可以将前端绑定到数据库。

否则,您还可以查看express或类似的内容,您可以在其中操作数据并执行您需要执行的操作,然后提供包含该数据的模板。

我只是在那里抛出一些想法,因为这取决于你决定使用什么技术(那里有很多东西)。您甚至可以向服务器执行纯JS AJAX请求以获取数据,但如果您在此类系统上构建Web应用程序,那将会非常繁琐。

答案 1 :(得分:0)

您可以使用res.render将数据传递到呈现的网页,使用express和jade看起来像这样:

res.render('yourView', {
    data: yourVariable
}

Res.render会去你res.send的地方。哪个应该与您的应用初始化(app.js)或外部文件(如(router.js)),然后送到您的应用程序。

然后在用作网页的模板中,您可以这样调用它:

#{data}

或者您可以制作这样的列表(如果您使用的是玉石)

each data in rows
    li= data

希望这就是你的意思,并帮助:D。

现在看起来像app.js的一个例子:

var express = require('express');
var http = require('http');
var bodyParser = require('body-parser');
var methodOverride= require('method-override');
var routes = require('./routes')(app);
var path = require('path'); 
var app = express();

app.configure(function() {
    app.set('port', process.env.PORT || 3000);
    app.set('views', __dirname + '/views');
    app.set('view engine', 'jade');
    app.use(bodyParser.urlencoded({extended: true}))
    app.use(bodyParser.json())
    app.use(methodOverride());
    app.use(express.static(path.join(__dirname, 'public')));
})

app.get('/', function(req, res){
    res.render('home', {
        title: "Welcome to an example site"
    });
});

http.createServer(app).listen(('3000'), function(){
    console.log('Server Online');
});