我对后端世界很陌生,我试图让我在其他普通JavaScript模块可以访问的Node模块(称为app.js)中创建变量。如果重要的话,所述变量中的数据来自MongoDB。
到目前为止,我只能将数据res.send()作为页面上无聊的纯文本。我希望能够将这些数据用于其他目的(例如制作表格)。那么如何将这些变量传递给JavaScript,以便我可以在HTML中正确显示它们?
答案 0 :(得分:0)
我希望我能正确理解你的问题。
由于您标记了restify,我假设您只是在res.send()
内发送JSON?
有了这个,您需要向具有AJAX调用的用户提供文件以获取JSON数据,然后根据您的前端操作它。
我建议尝试使用backbone或angular之类的内容。使用这些前端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');
});