javascript - 在包含的前端 js 文件中使用服务器生成的变量

标签 javascript node.js variables pug

这里是 node.js 初学者。 所以我正在编写一个应用程序,每秒我都会得到一个服务器生成的数字并通过应用程序粘贴它。转到我的 index.pug 文件,我想在嵌入的 js 文件中使用该数字。我该怎么做?

服务器.js

randomNumber = 4;
app.get('/',(req,res) => {
    res.render('index', {title: 'Number', count: randomNumber})
});

索引.pug

html
 head
  title= title
 body
  h1= count
  script(src="includes/client.js")

客户端.js

var chart = new CanvasJS.Chart("chartContainer", { 
   title: {
    text: count
   },
});

现在如何使用 client.js 文件中的 randomNumber 变量?我在这里错过了什么?应用程序总是告诉我 count 未定义

最佳答案

您需要记住,在您的请求中存在三个独立的 Javascript 上下文:

  1. 路由(server.js),
  2. View /模板 (index.pug),以及
  3. 浏览器

除非您明确地将变量传递给链中的下一个变量,否则上述任何一个都不能访问其他任何一个。

您在 res.render 中明确地将标题和计数传递到 View /模板中语句,然后将它们进一步传递到浏览器中,您需要使用 unescaped string interpolation并将其添加到 <script> 中标记如下:

html
 head
  title= title
 body
  h1= count
  script.
    var count = !{count};
  script(src="includes/client.js")

如果您希望 count 作为字符串通过,请改为这样定义它:

html
 head
  title= title
 body
  h1= count
  script.
    var count = "!{count}";
  script(src="includes/client.js")

关于javascript - 在包含的前端 js 文件中使用服务器生成的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55025813/

相关文章:

javascript - jQuery 多个选择器,当某些元素可能存在或可能不存在时

javascript - 在动态创建的元素上单击时无法按预期工作 jQuery

node.js - NodeRedis client.multi() hgetall 性能

c - 如何比较 nlink_t 和 int

r - 对数据帧进行子集化,其中匹配变量的数量为 k

javascript - 在 donut 中插入图像

javascript - 如何在 React Native 中等待来自 firebase auth 的持久用户

javascript - Ramda 不提供深度 mixin 吗?

node.js - 在 express js 中禁用 http 方法

php - php如何转换 bool 变量?