我想向客户端公开一个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);”并打印其值)
最佳答案
使用哈巴狗
由于您将 Express
与 Pug
一起使用,因此您只需调用 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/