基于Rollup搭建类库模板技术.pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

技术要点:Rollup

前言

工欲善其事,必先利其器。做好一个项目前期准备工作很重要,前期准备无非就是

合理规划项目结构、按需编写构建代码、批量创建文件、按需封装工具函数等,

而按需封装工具函数是项目基础的重中之重,是很有必要提前规划的。

这些经常重复使用的工具函数,包括但不限于浏览器类型、格式时间差、URL参数反

序列化、过滤XSS等。为了避免应用开发时重复的粘贴操作带来不必要的麻

烦,有些开发者都会将这些工具函数根据功能划分并统一封装,再发布到Npm公有仓

库。每次使用时直接安装,提升开发效率,将时间用在正确的事情中。

webpack长期霸占打包领域的,得以其强大的生态系统,很多前端应

用都基于webpack打包,因此很多类库在早期也选择webpack作为打包工具。随着

前端技术的大力发展,近几年也涌现出像rollup、esbuild和parcel这样的优秀

打包工具,每个工具都具备自己的特色且在某些应用场景占据一定的优势,因此

webpack的地位也受到,形成一超多强的局面。

虽然webpack蚕食大量打包市场份额,但也不是所有情况都适用webpack。在某些

应用场景使用webpack打包代码也可能很多问题,例如大量无用代码,随

着项目体积增大导致打包速度过慢、打包时间过长和打包体积过大。

基于上述,现在很多类库都会选择rollup打包代码,这些类库包括但不限于组

件库与工具库,其共是包括以JS为主的代码,因此资源类型不会像应用那样复

杂,所以对于单一类型单能的项目,使用rollup打包代码会更好,而rollup

也是为JS类库打包而生。本章将带领你基于Rollup类库基建模板,通过了解

rollup打包思想,一步一步上手rollup,完成一个通用工具库的前端工程化模

板。

在此提个醒,本课程的是前端工程化,因此不会展开编写业务代码,只会集中篇幅讲述前端工程化相关代

背景:背景:Rollup

rollup是一个JS模块打包器,可将小块代码编译为大块复杂代码。与webpack偏

向于应用打包的定位不同,rollup更专注于类库打包。像常见前端框架react与

vue,其源码都是基于rollup打包的。

为何都是打包,而像react与vue都优先选择rollup?总体来说webpack与

rollup都可基于自己特性在不同应用场景发布自身的优势作用。

webpack内置的分割代码、按需加载、HRM等特性在打包应用时有着的优势,

而rollup并不支持这些功能,因此在打包应用时需配合很多第插件才能完成,

而本身rollup的生态系统并不强大,第插件不齐全,部分插件也得不到很好的

,因此rollup无法支撑一个应用的打包功能。

但rollup也并不是一无是处,其内置的ES6解析、摇树优化、作用提升等特性在

打包类库时有些的优势,若你的项目是一个组件库或工具库,而这些单一类型

单能的项目只需输出一个或多个不同规范的bundle文件供其他应用,那使

用rollup再也适合不过了。

特性

因为rollup配置简洁、性能到位和功能专一的特性,webpack在v2也开始借鉴摇

树优化、作用提升等先进特性。

摇树优化

rollup在普通情况下,必须使用ESM编码,而不是以前的模块规范CJS或AMD。

在使用ESM编码的基础上,rollup会静态分析代码中的import并将删除所有未实

际使用的代码。这允许架构在现有模块中,而不会增加额外依赖或项目体积。

因为rollup只最基本最精简的代码,所以可生成轻量快速低复杂度的类库。这

种基于显式import/export的方式,远比在编译后bundle文件中简单地运行压

缩程序自动检测未使用的变量更有效。

摇树优化就是TreeShaking,可查看《TreeShaking实现原理》好好了解其原理,在

此不深入讲述了。

模块兼容

虽然rollup在普通情况下必须使用ESM编码,但很多古老的Npm模块都是基于CJS

编码,贸贸然这些Npm模块肯定会在打包流程中报错,因此推荐使用

@rollup/plugin-commonjs解决这些问题。

使用

rol

文档评论(0)

199****9598 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档