这是我参与2022首次更文挑战的第19天,活动详情查看:2022第一次更文挑战
一、模块加载器
模块加载器可以让项目按需从服务器获取模块,而不是一次性加载所有模块或包含所有模块的 JS 文件。ECMAScript 6 模块规范定义了浏览器原生支持动态模块加载的最终目标。但现在,仍有很多浏览 器不支持 ES6 模块加载。因此,模块加载器作为某种腻子脚本,可以让客户端实现动态模块加载。
1.1 SystemJS
SystemJS 模块加载器可以在服务器上使用,也可以在客户端使用。它支持所有模块格式,包括 AMD、 CommonJS、UMD 和 ES6;也支持浏览器内转译(考虑到性能,不推荐在大型项目中使用)。
1.2 RequireJS
RequireJS 构建于 AMD 模块规范之上,支持特别旧的浏览器。虽然 RequireJS 经实践证明很不错, 但 JavaScript 社区整体上还是会抛弃 AMD 模块格式。因此不推荐在大型项目中使用 RequireJS。
二、模块打包器
模块打包器可以将任意格式、任意数量的模块合并为一个或多个文件,供客户端加载。模块打包器 会分析应用程序的依赖图并按需排序模块。一般来说,应用程序最终只需要一个打包后的文件,但多个 结果文件也是可以配置生成的。模块打包器有时候也支持打包原始或编译的 CSS 资源。最终生成的文件 可以自执行,也可以多个资源拼接在一起按需执行。
2.1Webpack
Webpack 拥有强大的功能和可扩展能力,是今天非常流行的打包工具。Webpack 可以绑定不同的模 块类型,支持多种插件,且完全兼容大多数模板和转译库。
2.2JSPN
JSPM 是构建在 SystemJS 和 ES6 模块加载器之上的包管理器。JSPM 建议的一个工作流是把所有模 块打包到一个文件,然后通过 SystemJS 加载。可以通过 JSPM CLI 使用这个功能。
2.3 Browserify
Browserify 是稍微有点历史但久经考验的模块打包器,支持 Node.js 的 CommonJS require()依赖 语法。
2.4 Rollup
Rollup 在模块打包能力方面与 Browserify 类似,但内置了摇树优化功能。Rollup 可以解析应用程序 的依赖图,排除没有实际使用的模块。
总结:
本期我们分享的是JavaScript(十九)的工具
我们下期:继续分享JavaScript的高性能脚本工具
原创不易,期待您的点赞关注与转发评论😜😜