详解CommonJS和ES6模块循环加载处理的区别(2)

//改用CommonJS规范加载文件,执行会报错 var x = m.even(5); ^ TypeError: m.even is not a function at Object.<anonymous> (/Users/zourong/Projects/node/ES6/mainx.1.js:3:11) at Module._compile (internal/modules/cjs/loader.js:689:30)

3. 总结

1)CommonJS模块是加载时执行。一旦出现某个模块被“循环加载”,就只输出已经执行的部分,没有执行的部分不会输出。

2)ES6模块是动态引用,遇到模块加载命令import时不会去执行模块,只是生成一个指向被加载模块的引用。

CommonJS模块规范主要适用于后端Node.js,后端Node.js是同步模块加载,所以在模块循环引入时模块已经执行完毕。推荐前端工程中使用ES6的模块规范,通过安装Babel转码插件支持ES6模块引入的语法。

页面内容主要来源于《ES6标准入门》Module 这一章的介绍。如果有描述不清楚或错误的地方,欢迎留言指证。

参考资料:

《ES6标准入门》之Module

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/de44f44924b4b82f489091a2585efd30.html