Javascript 如何通过app.js将所需函数从另一个.js文件传递到index.ejs视图
graphs.js:包含一个函数,该函数进行API调用并返回一个带有HTML链接的对象,该链接将用于嵌入图形 app.js:包含以下(需要graphs.js):Javascript 如何通过app.js将所需函数从另一个.js文件传递到index.ejs视图,javascript,node.js,express,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");
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!");
});
var express=require(“express”);
var-app=express();
var图=要求(“图”) 不,您不会通过res.render()
发送函数。实践是,您首先处理路由或控制器中的逻辑/流程
,然后仅将计算数据发送到模板引擎。有时可能会令人困惑,因为您也可以在模板引擎中编写js
,但模板引擎仅用实际值替换模板文件中的变量,并将模板转换为发送给客户端的HTML文件。如下图所示:
app.get("/", function(req, res){
var data = graphs.graph();
res.render("index", {data: data});
});
说到您的具体问题,如果您的API调用是从服务器端完成的,那么您应该像上面那样做。如果您的API调用应该通过客户端完成,那么您可以将js
文件嵌入到视图中。否,您不会通过res.render()发送函数。
。实践是,您首先处理路由或控制器中的逻辑/流程
,然后仅将计算数据发送到模板引擎。有时可能会令人困惑,因为您也可以在模板引擎中编写js
,但模板引擎仅用实际值替换模板文件中的变量,并将模板转换为发送给客户端的HTML文件。如下图所示:
app.get("/", function(req, res){
var data = graphs.graph();
res.render("index", {data: data});
});
说到您的具体问题,如果您的API调用是从服务器端完成的,那么您应该像上面那样做。如果您的API调用应该通过客户端完成,那么您可以将js
文件嵌入到您的视图中。非常感谢您的回答,它帮助您解决了一些问题。服务器端API调用与客户端API调用相比,有什么真正的好处吗?看看它会如何改变我通过路由器使用数据的方式或直接嵌入数据?调用可以从双方进行,但当调用某些API时[CORS]会阻止JavaScript跨域边界发出请求。所以,对于他们来说,调用必须在后端/服务器端完成。谢谢。我把你的解决方案标为最佳答案,因为它使我达到了我想去的地方。谢谢你的帮助!非常感谢你的回答,它帮助澄清了一些事情。服务器端API调用与客户端API调用相比,有什么真正的好处吗?看看它会如何改变我通过路由器使用数据的方式或直接嵌入数据?调用可以从双方进行,但当调用某些API时[CORS]会阻止JavaScript跨域边界发出请求。所以,对于他们来说,调用必须在后端/服务器端完成。谢谢。我把你的解决方案标为最佳答案,因为它使我达到了我想去的地方。谢谢你的帮助!