javascript - 在 Node 中的客户端和服务器之间共享变量

标签 javascript node.js variables

首先让我说,我已经花了相当多的时间试图找出解决这个问题的方法,但我还没有发现任何有效的方法。我正在使用 Node 并希望在我的 app.js 服务器文件和客户端 javascript 文件 (demo.js) 之间共享一个变量。

我运行 node app.js 来启动服务器,demo.js 在客户端运行。我曾尝试使用 module.exportsexport 但是当我尝试导入 demo.js 文件或引用 module.exports var I得到错误。也许我正在以错误的方式接近它。

例如,我正在尝试使用 Node 维基百科包来抓取数据。我的 app.js 文件中有以下内容:

var wikipedia = require('node-wikipedia');

wikipedia.page.data('Clifford_Brown', { content: true }, function(response) {
    console.log(response);
    export const response = response;
    module.exports.data = response
});

在我的 demo.js 文件中,我尝试导入此响应变量并使用 module.exports 变量,但我没有成功。

有人对此问题有任何解决方案或我应该采取的不同方法吗?

最佳答案

浏览器 javascript 文件在浏览器中运行。 node.js javascript 文件在服务器上运行。您不能直接将事物从一个导出到另一个。它们位于不同位置的完全不同的计算机上。

对于开发人员来说,理解服务器端代码在服务器上运行而客户端代码在浏览器上运行的概念非常重要。两者不能直接互相调用,也不能到达对方的变量。假设您的服务器位于西雅图的数据中心,而浏览器在威尼斯的计算机上运行。

参见 How to access session variables in the browser为您之前的答案描述的各种选择。

简而言之,您可以让服务器在生成的网页中插入一个javascript变量,这样当javascript在浏览器的网页中运行时,它就可以在自己的页面中访问该变量。或者,您可以创建 Ajax 调用,以便客户端可以直接从服务器请求数据。或者您可以让服务器将一些数据放入浏览器中的 Javascript 然后可以访问的 cookie 中。

如果在生成页面时服务器很容易知道数据,并且您正在使用某种页面模板系统,那么只需添加一个 <script> 就很容易了。标记到生成的页面,该页面定义一个或多个包含所需信息的 Javascript 变量。然后,客户端 Javascript 只需引用这些变量即可访问数据。

关于javascript - 在 Node 中的客户端和服务器之间共享变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38546014/

相关文章:

javascript - 从 url 中删除 # 字符

javascript - 为什么 math.js 的 math.simplify ("1e-10").toString() 返回 0?

javascript - 使用 CDN 将 React 集成到现有的 Node Express 应用程序中

ios - Node.js 服务器向 iOS 应用程序发送信息

php - 用换行符分解字符串

javascript - 如何使图像在表格元素内居中

javascript - 分割文本并在它们之间放置一些文本

javascript - NodeJS - 如何创建一个在命令之后运行的命令?

PHP脚本被变量中断

ruby 在方法外初始化实例变量