了解Commonjs、AMD、CMD、UMD、ES 模块
首先什么是Rollup,它是一个封装好的ES模块工具。
Rollup 是一个JavaScript 模块捆绑器,可将小段代码编译为更大、更复杂的代码段,例如库和应用程序。 Rollup 对ES6 版本JavaScript 中包含的代码模块使用新的标准化格式,而不是以前的临时解决方案(例如CommonJS 或AMD)。 ES6 模块让您可以免费、无缝地访问您喜爱的库中最有用的独立函数,而无需在项目中携带未使用的代码。 ES6 模块最终将由浏览器本地实现,但您现在可以在汇总中提前体验它
Rollup不支持CommonJS和AMD打包方式
CommonJSCommonJS主要用在服务器端,单个文件就是一个模块,主要执行的是node.js。
帮助:
moduleexportsrequireglobalrequire 命令用于输入其他模块提供的功能。
module.exports命令用于标准化模块的外部接口。输出的是值的副本。一旦输出,就无法更改并被缓存。
CommonJS采用同步加载模块,加载的大部分文件资源都在本地服务器上,因此不存在执行速度或执行时间的问题。然而在浏览器端,由于网络原因,更合理的解决方案是使用异步加载。
AMD 使用异步方法加载模块。加载模块不会影响后续语句的执行。所有依赖于该模块的语句都定义在回调函数中,只有加载完成后才会执行该回调函数。其中,RequireJS是最好的实践者。
异步加载模块
CMDCMD(Common Module Definition)规范主要是在Sea.js的推广过程中形成的,其中文件就是模块,模块代码可以像Node.js一样编写。它主要运行在浏览器中,但也可以在Node.js 中运行。
TS:sea、js是什么? SeaJS是一个JavaScript模块加载框架,符合CMD规范,可以实现JavaScript模块开发和加载机制。这与AMD 非常相似,但有以下区别: AMD 建议前端加载并提前执行依赖项,而CMD 建议运行接近依赖项并延迟执行。
UMDUMD 全称为通用模块定义。它还随着更大的前端趋势而兴起,允许您在使用CommonJs、CMD 甚至AMD 的项目中在运行时或编译时运行相同的代码模块。未来,同一个JavaScript 包在浏览器端、服务器端、甚至APP 端运行时,只需要遵循相同的编写习惯即可。
它没有自己的规范,而是集成了CommonJs、CMD、AMD的规范,所以我们来看看具体的规范。
ES Modules(简称ESM)是JavaScript的官方标准化模块系统。
既然是标准,以后就会得到很多浏览器的支持,在浏览器上使用起来也会很方便。 (默认情况下,在浏览器加载时不能省略.js)也支持在node环境下执行。模块的进出口由进出口决定。可以与Commonjs 模块混合。 ES 模块打印对值的引用,并且输出接口是动态绑定的,而CommonJS 则打印值的副本。 ES 模块在编译时执行,而CommonJS 模块始终在运行时加载。 import { name, github } from './demo.js';console.log(name(), github());document.body.innerHTML=`${name()} ${github()}` 概述CommonJS同步加载,AMD 异步加载,UMD=CommonJS + AMD,ES Module 是标准规范,一般流程就是替换UMD。考虑到树摇的副作用。
标题:javascript 模块,js模块是什么意思
链接:www.ggaan.com/news/sypc/2798.html
版权:文章转载自网络,如有侵权,请联系删除!