我如何将多个js文件中的变量发送到一个ejs文件中?

问题描述 投票:0回答:2

我有一个js文件,它向ejs发送了几个变量,并且可以工作,但是当我尝试运行第二个节点js进程并运行另一个js文件时,似乎不会在我第二次运行的进程中查找。

我需要做些什么才能使ejs文件识别和接收第二个js文件中的变量?

在网页上,我得到<var> is not defined,即使我从第二个js文件进行渲染,它也可以追溯到第一个js文件的渲染。

我使用以下代码发送:

app.get('/', (req, res) => {
   res.render('main', {
   variable: value
   }
});

编辑:

尽我所能添加示例...

first.js:

var variable1 = value1;

app.get('/', (req, res) => {
   res.render('main', {
   variable1: value1
   }
});

second.js:

var variable2 = value2;

app.get('/', (req, res) => {
   res.render('main', {
   variable2: value2
   }
});

当我加载main.ejs时,它说它在first.js中找不到变量2。为什么即使我从second.js传递它,它也在first.js中寻找该变量?

javascript node.js ejs
2个回答
0
投票

我有first.js,它计算一些变量并将其传递给main.ejs。我还拥有与执行相同功能的first.js分开运行的second.js。

它不会单独运行…或根本不会运行。

HTTP基于以下简单系统:

  1. 客户端(例如网络浏览器)要求提供的东西
  2. 服务器(如基于Express.js的程序)响应某些内容>
  3. 而那些东西是single

东西。

因此浏览器发送了对/的请求,然后Express遍历已注册的路由,直到找到匹配项。

app.get('/', (req, res) => {
   res.render('main', {
   variable1: value1
   }
});

它运行该功能并生成响应。

它永远不会到达为同一路由注册的其他功能:它已经找到了允许它提供响应的路由。如果它继续前进并发送另一个响应,那么它将完全不同地执行EJS脚本,并且完全不同的响应是浏览器所期望的。


  • 写入一个处理/的路径。
  • 调用render 一次
  • ,并向其传递一个对象,并带有全部所需的数据
  • 如果想使代码更易于管理,请将其拆分为功能。函数之一可以是路由处理程序本身,它可以调用其他函数并获取它们返回的数据。如果事情真的很复杂,可以将功能分别移到modulesrequire中。

0
投票

您应该实现辅助线程https://nodejs.org/api/worker_threads.html以使两个节点进程彼此通信

© www.soinside.com 2019 - 2024. All rights reserved.