我今天正在玩一些ES6模块,没有真正的目标,只是想尝试一下。我的问题是,我似乎无法让我的代码执行。让我解释一下:
首先,我正在使用requireJS,所以我的文件包含了这样的
<script src="/assets/bower_components/traceur-runtime/traceur-runtime.js"></script>
<script data-main="/assets/js/main" src="/assets/bower_components/requirejs/require.js"></script>
<script>require(['/assets/js/compiled/User.js']);</script>
<script>require(['/assets/js/compiled/App.js']);</script>
我首先尝试从我的requirejs traceur-runtime.js
文件加载main.js
,但是它给了我关于未加载'path'模块的错误。因此,为了让事情有效,我降落在这里。这样我就没有错误,所有文件都按正确的顺序加载。
我正在使用grunt-traceur编译我的es6文件,这是配置。
traceur: {
options: {
//experimental: true,
modules: 'amd'
//arrayComprehension: true,
//generatorComprehension: true
},
custom: {
files: [{
expand: true,
cwd: './app/assets/js/modules/',
src: ['*.js'],
dest: './app/assets/js/compiled/'
}]
}
}
这是我的模块,在es6&amp; ES5
ES6
// User.js
export default function User(age) {
this.age = age;
};
// App.js
import User from 'user';
var shan = new User(35);
console.log(shan);
document.body.innerHTML = shan.age;
Traceur编译
// User.js
define("app/assets/js/compiled/User", [], function() {
"use strict";
var __moduleName = "app/assets/js/compiled/User";
function require(path) {
return $traceurRuntime.require("app/assets/js/compiled/User", path);
}
function User(age) {
this.age = age;
}
var $__default = User;
;
return {
get default() {
return $__default;
},
__esModule: true
};
});
// App.js
define("app/assets/js/compiled/App", ['user'], function($__0) {
"use strict";
var __moduleName = "app/assets/js/compiled/App";
function require(path) {
return $traceurRuntime.require("app/assets/js/compiled/App", path);
}
if (!$__0 || !$__0.__esModule)
$__0 = {default: $__0};
var User = $__0.default;
var shan = new User(35);
console.log(shan);
document.body.innerHTML = shan.age;
return {};
});
所以你可以看到,我只是想在console.log上看到任何反馈,但什么都没有出现。我从根本上做错了吗?基本上,我想编写像User.js
这样的模块,并将它们导入到App.js中以便与它们一起工作。
任何人都可以提供给我的任何信息都非常感谢!
答案 0 :(得分:0)
我认为您必须进行该模块的require调用