Express/Node.js:将自定义javascript渲染为响应

Anu*_*ora 5 javascript response node.js express pug

在我的应用程序中,我需要提供一个API(类似于Google Maps javascript API),通过它我可以发送一些自定义javascript(带有一些会话和请求相关信息)作为响应.然后使用javascript在UI上绘制一些图形.我正在使用Express with Jade作为我的模板引擎.我目前使用的代码是:

app.use('/graph',function(req, res){
   //send out graph data
   var var_name = req.session.var_name //fetch something from session
   var graphData = fetchGraphData(req.query.graph); //function that fetches graph data
   res.contentType("text/javascript");
   res.render(__dirname + '/views/graph.jade', {
     title: "Title", queryStr: JSON.stringify({var_name: var_name, graphData: graphData  })
   });
});
Run Code Online (Sandbox Code Playgroud)

和玉文件:

|  some_var_name = {
|       initGraph : function(divId){
|       //some code here
|       var graphData = !{graphData}
|       // do something                               
Run Code Online (Sandbox Code Playgroud)

作为一种解决方法,我已经开始使用jade文件的每一行|,以便jade将文本解析为纯文本,并且不添加任何html标记!它工作正常,但是有更清洁的方法吗?解决方案可能会也可能不会使用Jade!

Myr*_*tol 6

您应该查看下划线模板.我认为,为了生成任意文本输出,它会更清洁.Jade专门用于呈现HTML.

你也可以试试MustacheHandlebars.

根据您的评论,我发现您希望继续使用它res.render来呈现模板.consolodate.js为Express增加了对所有主要模板引擎的支持.包括@TheHippo提到的Underscore模板,Handlebars,Moustache和Dust.