如何导出模块

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何导出模块相关的知识,希望对你有一定的参考价值。

我开始从https://egghead.io/technologies/es6学习ECMAScript 6方式,知道仍有很多可能会改变,但想早点开始。

但是,当我按照(https://egghead.io/lessons/ecmascript-6-es6-modules-es2015-import-and-export)上的教程说明完全相同时,我得到一个错误,我不知道我可能做错了什么。

未捕获的ReferenceError:未定义require

Babel转换为ES5后该行的代码

"use strict";

var _distExporter = require("dist/exporter");

console.log("2 + 3=", (0, _distExporter.sumTwo)(2, 3));
//# sourceMappingURL=importer.js.map

开发人员提到CommonJS和WebPack作为一种解决方案甚至提到了RequireJS,但在教程中没有说明我应该编写或使用替代库。

我的html就是这个

<html>
<head>
  <script src="dist/importer.js"></script>
</head>
<body>

</body>
</html>

我的importer.js是

import { sumTwo } from "dist/exporter";

console.log( "2 + 3=", sumTwo(2,3))

我的exporter.js是

function sumTwo(a, b){
  return a + b;
}

export { sumTwo };

我不知道我哪里出错了。我正在使用BabelJS(https://babeljs.io/

答案

如果您在Node下而不是在浏览器中运行此代码,您应该会看到您期望的结果。 Node了解CommonJS需要调用,并将离开并为您抓取其他文件。

浏览器不知道要求是什么特别的。但我们可以使用工具让浏览器了解。这是Browserify的一个例子,正如其他人提到的你也可以使用WebPack,但我认为WebPack的学习曲线要​​陡峭得多。

首先,你需要一些模块。

npm install -g browserify
npm install --save-dev babelify

然后我们可以像这样使用这些模块。

browserify main-file.js -o output-file.js -t babelify

这将导致您的源文件检查每个文件中的require调用,并将所需的其他文件添加到该bundle。然后它运行Babel变换,将ES6转换为ES5。最后,它将所有内容包含在一些需要在浏览器中工作的代码中。

以上是关于如何导出模块的主要内容,如果未能解决你的问题,请参考以下文章

如何有条件地将 C 代码片段编译到我的 Perl 模块?

这些角度电子邮件指令代码片段如何连接

函数前面与末尾的导出模块

如何将字符串数据从活动发送到片段?

[搬运] 将 Visual Studio 的代码片段导出到 VS Code

如何把视频片段做成动态图片