【问题标题】:Using ES6 modules in JavaScript to export simple variables在 JavaScript 中使用 ES6 模块导出简单变量
【发布时间】:2016-10-06 18:48:18
【问题描述】:

我在一个文件中的 JavaScript 中定义 pageId = 3,在另一个文件中定义 socket = io(),我想在其他文件中使用这些变量。

我想我应该在 ES6 中使用模块,但我不知道该怎么做。

现在它确实有效,因为我在我实际使用变量的文件之前加载的文件中定义了两个变量,但这似乎是错误的代码,并且我的代码 IDE 编辑器给了我一个警告,指出变量是'未定义,因为它在当前文件中看不到它。

我已经阅读了一些教程,但我仍然看不到如何在一个文件中定义变量并将其导出到其他文件。

会不会

const pageId = 3;
const socket = io(); // which is defined in file 'socket.io-1.4.5.js' which is loaded before this file

module.exports = { pageId, socket };

然后将其导入到其他文件中

const pageId = require('pageId');
const socket = require('socket');

socket.on('connect', ...);
(...)

甚至没有在任何地方加载这些文件?

【问题讨论】:

  • ES6 module export options的可能重复
  • 事实上,当你“需要”它们时,你正在以某种方式加载它们
  • 甚至没有在任何地方加载这些文件?”是什么意思?
  • 我的意思是用<script src="file_with_page_id.js"></script>加载它们
  • @mortensen 你已经标记了这个问题node.js,还是没有脚本标签?

标签: javascript node.js module ecmascript-6


【解决方案1】:

好吧,我知道这听起来很傻(特别是 pageId 示例),但有些场景甚至是必需的

假设您正在构建一个包含数百个模块的物理/数学库。这说得通。只在一处声明数学常数 并且仅在需要时才加载它们

可能一个一个地导出它们,这不是最好的解决方案,但它是一个有效的解决方案

至于 io 对象。声明它,更改一些配置值,然后在需要的任何地方使用新配置重新导出它,而不是创建一个新配置并在任何地方重新配置它对我来说也是有意义的(假设这种行为有效,我怀疑)

无论如何,您的示例语法不正确...您不能以这种方式“要求”单个变量或函数。假设你的第一个文件名为“strange.js”,它应该这样做:

const pageId = require('strange').pageId
const socket = require('strange').socket;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-19
    • 2016-11-13
    • 2016-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-03
    相关资源
    最近更新 更多