在JavaScript中使用ES6模块导出简单变量

时间:2016-10-06 18:48:18

标签: javascript node.js module ecmascript-6

我在一个文件中用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', ...);
(...)

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

1 个答案:

答案 0 :(得分:0)

嗯,我知道这听起来很愚蠢(特别是pageId示例),芽有些情况甚至是必需的

想象一下,您正在构建一个包含数百个模块的物理/数学库。这说得通。仅在一个地方声明数学常数 并且仅在需要时加载它们

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

至于io对象。我有必要声明它,更改一些配置值然后,使用新配置重新导出它,无论何时需要它而不是创建一个新配置并在任何地方重新配置它(假设这种行为有效,我认为疑问)

无论如何,你的样本的语法是不正确的......你不能“需要”和单独的var或函数那样。将你的firstfile称为“strange.js”,它应该像:

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