node.js - 向客户端公开 Node.js 变量

标签 node.js express pug

我想向客户端公开一个node.js 服务器变量。我正在努力让快速暴露工作。 我不知道如何初始化和使用该库。

在express-expose指南中,用法没有意义

var express = require('express');
var expose = require('express-expose');
app = expose(app);
app.expose(...);

如何在初始化之前在“expose(app”) 中使用应用程序?

我用过

const app = expose(express());
app.expose('var some = "variable";','head');

但这似乎也不起作用。

任何人都可以向我提供一个初始化 express-expose 库并将 var 'some' 导出到客户端的示例吗?

(通过向客户端公开,我的意思是它将作为全局变量可供我的所有 javascript 文件使用,以便我可以执行“console.log(some);”并打印其值)

最佳答案

使用哈巴狗

由于您将 ExpressPug 一起使用,因此您只需调用 res.render函数并给它你想要的变量。以下是如何做到这一点。

假设您有一个名为 index.pug 的模板,它可能如下所示:

html
  head
    title= title
  body
    h1= message

在您的服务器上,负责渲染的代码应如下所示。在本例中,我们将 someVariable 传递给需要渲染的 View 。

const someVariable = 'hello world!';

app.get('/', function (req, res) {
  res.render('index', { title: 'Hey', message: someVariable })
})

关于 express-expose 的说明

express-expose 库未得到维护,并且5 年来未更新。我的建议是按照前面的描述渲染变量或者只使用 AJAX 请求。

使用全局变量的注意事项

I am using the 'pug' view engine. It is passed to the view but I want it as a global javascript variable.

更好的主意是使用 Template Inheritence创建“通用布局”并根据需要扩展它们。如果您在后端更改全局变量,则与正在渲染的文件共享全局变量不会在前端神奇地更新它。即使变量是全局的。

如果您想反射(reflect)“实时变化”,您应该查看 Socket.io .

关于node.js - 向客户端公开 Node.js 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55321014/

相关文章:

mysql - 使用nodejs和multer将图像上传到MySQL

node.js - nodejs服务器断开连接时如何清除redis数据库?

javascript - 类型错误 : Cannot read properties of undefined when sending an EJS form to Express

node.js - 我可以在同一条路线上使用 2 个不同的功能吗? Node.js

node.js - Jade模板如何在同级标签后添加文字

javascript - 使用 Express 和 Node 将值传回 Jade 渲染

jquery - 我的导航菜单有问题。我正在使用 Bootstrap 3、JQuery 2.3.1、Jade、ExpressJS 和 Node.js

node.js - Node - 生成 AES-CBC key 和 iv

node.js - mongoose populate() 方法有什么相反的吗? ( Mongoose ,node.js, express )

node.js - 使用 Passport 进行 Facebook 身份验证。无法读取未定义错误的属性 '0'