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>
任何建议,最佳实践评论或任何其他方法都将非常感激。谢谢!
答案 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
文件嵌入到您的视图中。