Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何通过app.js将所需函数从另一个.js文件传递到index.ejs视图_Javascript_Node.js_Express - Fatal编程技术网

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

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");

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!");
});
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跨域边界发出请求。所以,对于他们来说,调用必须在后端/服务器端完成。谢谢。我把你的解决方案标为最佳答案,因为它使我达到了我想去的地方。谢谢你的帮助!