如何导出模块
How to export a module
我开始从https://egghead.io/technologies/es6学习ECMAScript 6的方法,知道还有很多可能会改变的地方,但希望早点开始。
然而,当我按照教程说明(https://egghead.io/lessons/ecmascript-6-es6-modules-es2015-import-and-export)完全相同,我得到一个错误,我不知道我可能做错了什么。
Uncaught ReferenceError: require is not defined
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是this
<html>
<head>
<script src="dist/importer.js"></script>
</head>
<body>
</body>
</html>
My importter .js is
import { sumTwo } from "dist/exporter";
console.log( "2 + 3=", sumTwo(2,3))
我的export .js是
function sumTwo(a, b){
return a + b;
}
export { sumTwo };
我不知道我哪里出错了。我使用BabelJS (https://babeljs.io/)
如果您在Node下运行这段代码,而不是在浏览器中运行,您应该会看到预期的结果。Node理解CommonJS的请求调用,它会离开并为你抓取另一个文件。
浏览器不知道require是什么特殊的东西。但是我们可以使用一个工具让浏览器理解。下面是一个使用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。最后,它将所有这些都封装在一些代码中,以便在浏览器中工作。
- 如何从模块链中调用函数.导出到节点中
- 未定义不是函数:模块导出
- 如何在Webpack中从导出中排除供应商模块peerDependencies
- 导出由导入的类/接口组成的模块
- Typescript模块没有导出的成员-react
- 导出模块 NodeJS 时出现问题
- 试图将类导出为模块ES6-babel
- 模块的TypeScript导入导出行为
- 访问模块.从外部文件导出
- UMD:正在分配给模块,导出冗余
- 如何使用 webpack 要求或仅从模块导入必要的导出
- 如何使用默认函数导出为 commonjs 模块创建类型
- AngularJS打字稿从模块错误导出类
- 在 Node 模块中导出类.exports = {}.
- 使用 ES6 模块重新导出全局变量
- 如何正确地要求一个节点模块,导出其中的所有函数
- 寻找在模块之间导出和导入变量的最佳方式
- 在node.js中使用原型导出模块和导出继承
- 如何解构ES6模块联合导出
- Angular 2,打字稿模块没有导出的常量“FORM_DIRECTIVES”