es6模块与 commonJS规范

es6

export : ‘可以输出多个,输出方式为 {}’ ,

export default : ’ 只能输出一个 ,可以与export 同时输出,但是不建议这么做’,

解析阶段确定对外输出的接口,解析阶段生成接口,

模块不是对象,加载的不是对象,

可以单独加载其中的某个接口(方法),

静态分析,动态引用,输出的是值的引用,值改变,引用也改变,即原来模块中的值改变则该加载的值也改变,

this 指向undefined
这种加载称为“编译时加载”或者静态加载,即 ES6 可以在编译时就完成模块加载,效率要比 CommonJS 模块的加载方式高

 // 报错

    import { 'f' + 'oo' } from 'my_module';

 

    // 报错

    let module = 'my_module';

    import { foo } from module;

 

    // 报错

    if (x === 1) {

      import { foo } from 'module1';

    } else {

      import { foo } from 'module2';

    }
//上面三种写法都会报错,因为它们用到了表达式、变量和if结构。在静态分析阶段,这些语法都是没法得到值的

commonJS

module.exports = … : ‘只能输出一个,且后面的会覆盖上面的’ ,

exports. … : ’ 可以输出多个’,

运行阶段确定接口,运行时才会加载模块,

模块是对象,加载的是该对象,

加载的是整个模块,即将所有的接口全部加载进来,

输出是值的拷贝,即原来模块中的值改变不会影响已经加载的该值,

this 指向当前模块

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章