slogan 专业知识问答平台!
佰学网 >教育 > 教育精选 > commonjs和es6的module的区别

commonjs和es6的module的区别

原创 2022-08-27 20:10:48
commonjs和es6的module最本质的区别在于前者对模块依赖的解决是“动态的”,而后者是“静态的”。在这里“动态”的含义是,模块依赖关系的建立发生在代码运行阶段;而“静态”则是模块依赖关系的建立发生在代码编译阶段。 精选答案
  • 问题相关
commonjs和es6的module最本质的区别在于前者对模块依赖的解决是“动态的”,而后者是“静态的”。在这里“动态”的含义是,模块依赖关系的建立发生在代码运行阶段;而“静态”则是模块依赖关系的建立发生在代码编译阶段。

CommonJS介紹:对于基本数据类型,属于复制。即会被模块缓存。同时,在另一个模块可以对该模块输出的变量重新赋值。对于复杂数据类型,属于浅拷贝。由于两个模块引用的对象指向同一个内存空间,因此对该模块的值做修改时会影响另一个模块。当使用require命令加载某个模块时,就会运行整个模块的代码。

ES6 module模块介紹:ES6模块中的值属于动态只读引用。对于只读来说,即不允许修改引入变量的值,import的变量是只读的,不论是基本数据类型还是复杂数据类型。当模块遇到import命令时,就会生成一个只读引用。等到脚本真正执行时,再根据这个只读引用,到被加载的那个模块里面去取值。

ES6 Module在语言标准的层面上,实现了模块功能,而且实现得相当简单,旨在成为浏览器和服务器通用的模块解决方案。其模块功能主要由两个命令构成:export和import。

©本文版权归作者所有,任何形式转载请联系我们:xiehuiyue@offercoming.com。