丹灶网站设计,wordpress 导航下拉,学校网站建设所使用的技术,邢台123最新消息commonjs规范 #xff08;Node.js#xff09;:
CommonJS 主要运行于服务器端#xff0c;该规范指出#xff0c;一个单独的文件就是一个模块#xff0c;其内部定义的变量是属于这个模块的#xff0c;不会对外暴露#xff0c;也就是说不会污染全局变量。 Node.js为主要实…commonjs规范 Node.js:
CommonJS 主要运行于服务器端该规范指出一个单独的文件就是一个模块其内部定义的变量是属于这个模块的不会对外暴露也就是说不会污染全局变量。 Node.js为主要实践者它有四个重要的环境变量为模块化的实现提供支持module、exports、require、global。 CommonJS的核心思想就是通过 require 方法来同步加载所要依赖的其他模块然后通过 exports 或者 module.exports 来导出需要暴露的接口 优点CommonJS规范在服务器端率先完成了JavaScript的模块化解决了依赖、全局变量污染的问题这也是js运行在服务器端的必要条件。 缺点由于 CommonJS 是同步加载模块的在服务器端文件都是保存在硬盘上所以同步加载没有问题但是对于浏览器端需要将文件从服务器端请求过来那么同步加载就不适用了所以CommonJS是不适用于浏览器端的。
AMD 规范require.js
AMD是Asynchronous Module Definition的缩写意思就是异步模块定义。它采用异步方式加载模块模块的加载不影响它后面语句的运行。所有依赖这个模块的语句都定义在一个回调函数中等到加载完成之后这个回调函数才会运行。 模块功能主要的几个命令define、require、return和define.amd。define是全局函数用来定义模块,define(id?, dependencies?, factory)。require命令用于输入其他模块提供的功能return命令用于规范模块的对外接口define.amd属性是一个对象此属性的存在来表明函数遵循AMD规范。 优点适合在浏览器环境中异步加载模块。可以并行加载多个模块。缺点提高了开发成本并且不能按需加载而是必须提前加载所有的依赖。
CMD 规范sea.js:
CMD通过按需加载的方式而不是必须在模块开始就加载所有的依赖。 CMD推崇依赖就近、延迟执行。
优点同样实现了浏览器端的模块化加载。可以按需加载依赖就近。缺点依赖SPM打包模块的加载逻辑偏重。
ES6模块化 ES modulesESM是 JavaScript 官方的标准化模块系统。 在ES6中我们可以使用 import 关键字引入模块通过 export 关键字导出模块但是由于ES6目前无法在浏览器中执行所以我们只能通过babel将不被支持的import编译为当前受到广泛支持的 require。
总结
AMD/CMD/CommonJs 是js模块化开发的规范对应的实现是require.js/sea.js/Node.jsCommonJs 主要针对服务端AMD/CMD/ES Module主要针对浏览器端(服务端一般采用同步加载的方式浏览器端需要异步加载)AMD/CMD区别虽然都是并行加载js文件但还是有所区别AMD是预加载在并行加载js文件同时还会解析执行该模块因为还需要执行所以在加载某个模块前这个模块的依赖模块需要先加载完成而CMD是懒加载虽然会一开始就并行加载js文件但是不会执行而是在需要的时候才执行。CommonJs和ES Module的区别
CommonJS 模块输出的是一个值的拷贝ES6 模块输出的是值的引用。CommonJS 模块是运行时加载ES6 模块是编译时输出接口。CommonJS 模块的require()是同步加载模块ES6 模块的import命令是异步加载有一个独立的模块依赖的解析阶段。