如何通过app.js将另一个.js文件所需的函数传递到index.ejs视图中

时间:2017-06-02 22:57:44

标签: javascript node.js express

graphs.js :包含一个进行API调用的函数,并返回一个带有HTML链接的对象,该链接将用于嵌入图形。

app.js :包含以下(已需要graphs.js)

var express = require("express");
var app = express();
var graphs = require("graphs"); <---

app.use(express.static(__dirname + '/'));
app.set("view engine", "ejs");

app.get("/", function(req, res){
    res.render("index");
    CAN I PASS THE FUNCTION THROUGH HERE?
});

//server
app.listen(process.env.PORT, process.env.IP, function(){
    console.log("Dev server started!");
});

index.ejs :我试图通过app.js传递 graphs.graph API函数调用,以便它可以在我的index.ejs中使用并执行

例如:

<div class="graph-test">
    <% graphs.graph() %>
</div>

任何建议,最佳实践评论或任何其他方法都将非常感激。谢谢!

1 个答案:

答案 0 :(得分:2)

不,你不会通过res.render()发送功能。实践是先在路由或控制器中处理logic/process,然后将计算数据发送到模板引擎。这可能会让您感到困惑,因为您也可以在模板引擎中编写js,但模板引擎只会将模板文件中的变量替换为实际值,并将模板转换为发送给客户端的HTML文件即可。如下所示:

app.get("/", function(req, res){
   var data = graphs.graph();
   res.render("index", {data: data});
});

谈论你的具体问题,如果你的API调用是从服务器端完成的,那么你应该像上面那样做。如果您的API调用应该通过客户端完成,那么您可以将js文件嵌入到您的视图中。