0

我正在试验 babel.js 和 RequireJS。给出了要求,我不能遗憾地放弃它:(我在 babeljs 文档中发现有一个--modules amdcli 标志可以将 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
4

1 回答 1

0

这是一个用户错误。我错过了类似的default关键字asseta.es6

export default function sum(...nums) {
  return nums.reduce(((acc, num) => acc += num), 0);
}

或者解决它的另一种方法是省略default关键字 fromasseta但重构bootstrap

import { sum } from 'asseta';
于 2015-03-17T09:42:13.820 回答