我正在试验 babel.js 和 RequireJS。给出了要求,我不能遗憾地放弃它:(我在 babeljs 文档中发现有一个--modules amd
cli 标志可以将 ES6 代码转换为 AMD 定义。到目前为止一切都很好。我做了一个快速示例“应用程序”来测试它。这是结构:
.
|-- build.sh
|-- index.html
|-- js
| |-- assets
| | |-- asseta.es6
| | |-- asseta.js
| | |-- bootstrap.es6
| | `-- bootstrap.js
| `-- main.js
`-- node_modules
索引.html
<body>
<p>Hello world! This is HTML5 Boilerplate.</p>
<script type="text/javascript" src="node_modules/requirejs/require.js" data-main="js/main.js"></script>
</body>
main.js
(function() {
require.config({
baseUrl: "js/assets"
});
require(["bootstrap"], function(bootstrap) {
bootstrap.ready(function(sum) {
console.log(sum(1,2,3));
});
});
}());
引导程序.es6
import asseta from 'asseta';
console.log(asseta); // undefined :((
export function ready(cb) {
cb(asseta.sum);
}
资产.es6
export function sum(...nums) {
return nums.reduce(((acc, num) => acc += num), 0);
}
我的应用程序问题是main.js
加载bootstrap
正确,如果我将其注销,我会得到一个包含就绪功能的现有对象 - > OK 但是bootstrap
模块无法正确加载asseta
模块。我对此感到不确定:(
我错过了什么?
附加信息
该build.sh
脚本仅将 .es6 文件转换为 ES5 .js
#!/bin/sh
babel --modules amd js/assets/bootstrap.es6 -o js/assets/bootstrap.js
babel --modules amd js/assets/asseta.es6 -o js/assets/asseta.js