当前位置:K88软件开发文章中心编程语言JavaScriptECMAScript → 文章内容

ECMAScript 6 Module

减小字体 增大字体 作者:佚名  来源:网上搜集  发布时间:2019-1-15 15:38:43

orts = function(n) { return n != 0 && even(n - 1);}上面代码中,even.js加载odd.js,而odd.js又去加载even.js,形成“循环加载”。这时,执行引擎就会输出even.js已经执行的部分(不存在任何结果),所以在odd.js之中,变量even等于null,等到后面调用even(n-1)就会报错。$ node> var m = require('./even');> m.even(10)TypeError: even is not a function跨模块常量上面说过,const声明的常量只在当前代码块有效。如果想设置跨模块的常量(即跨多个文件),可以采用下面的写法。// constants.js 模块export const A = 1;export const B = 3;export const C = 4;// test1.js 模块import * as constants from './constants';console.log(constants.A); // 1console.log(constants.B); // 3// test2.js 模块import {A, B} from './constants';console.log(A); // 1console.log(B); // 3ES6模块的转码浏览器目前还不支持ES6模块,为了现在就能使用,可以将转为ES5的写法。除了Babel可以用来转码之外,还有以下两个方法,也可以用来转码。ES6 module transpilerES6 module transpiler是square公司开源的一个转码器,可以将ES6模块转为CommonJS模块或AMD模块的写法,从而在浏览器中使用。首先,安装这个转玛器。$ npm install -g es6-module-transpiler然后,使用compile-modules convert命令,将ES6模块文件转码。$ compile-modules convert file1.js file2.js-o参数可以指定转码后的文件名。$ compile-modules convert -o out.js file1.jsSystemJS另一种解决方法是使用SystemJS。它是一个垫片库(polyfill),可以在浏览器内加载ES6模块、AMD模块和CommonJS模块,将其转为ES5格式。它在后台调用的是Google的Traceur转码器。使用时,先在网页内载入system.js文件。<script src="system.js"></script>然后,使用System.import方法加载模块文件。<script> System.import('./app.js');</script>上面代码中的./app,指的是当前目录下的app.js文件。它可以是ES6模块文件,System.import会自动将其转码。需要注意的是,System.import使用异步加载,返回一个Promise对象,可以针对这个对象编程。下面是一个模块文件。// app/es6-file.js:export class q { constructor() { this.es6 = 'hello'; }}然后,在网页内加载这个模块文件。<script>System.import('app/es6-file').then(function(m) { console.log(new m.q().es6); // hello});</script>上面代码中,System.import方法返回的是一个Promise对象,所以可以用then方法指定回调函数。

上一页  [1] [2] [3] [4] [5] 


ECMAScript 6 Module