snowpack / vite 等基于 ESM 的构建工具出现,让项目的工程构建不再需要构建一个完整的 bundle。很多人都觉得我们不再需要打包工具的时代即将到来。借助浏览器 ESM 的能力,一些代码基本可以做到无需构建直接运行。

对于 webpack 而言,社区掀起的这一波 ESM 热潮,将 webpack 编译的速度推到了风口浪尖。webpack 在 v5 版本中也是针对编译的性能做出了不少努力,除了提供了物理缓存的优化之外,还提供 Module Federation 的方案,这给我们上层的应用实践带来了很多想象的空间。

以前 webpack 大有一统构建工具的趋势,而现在我们可以结合业务的特点有更多的选择。

为什么需要打包JavaScript

编程过程中很多时候,我们都在修改变量,在一个复杂的项目开发过程中,如何管理函数和变量作用域,显得尤为重要。而 JavaScript 的模块化提供了我们更好的方式来组织和维护函数以及变量。大家熟知的 JavaScript 模块除了上述的 ESM 之外,还有 CJS、AMD、CMD、UMD 等等规范。

而在 npm 生态开发的背景下,CJS 模块是开发过程中接触最多也是无法避免的。但由于浏览器并不能直接执行基于 CJS 打包的模块,因此类似 webpack 等打包工具便应运而生。

对于早期的 web 应用而言,打包模块既能够处理 JS 模块化,又能将多个模块打包合并网络请求。使用这类构建工具打包项目的确是个不错的选择。时至今日基本上主流的浏览器版本都支持 ESM,并且并发网络请求带来的性能问题,在 HTTP/2 普及下不像以前那么凸显的情况下,大家又将目光转向了 ESM。就目前的体验而言,基于原生 ESM 在开发过程中的构建速度似乎远远优于 webpack 之类的打包工具的。

初探 ESM 构建工具

使用 ESM

<script src="index.js" type="module"></script>

通过 type="module" 告诉浏览器,当前脚本使用 ESM 模式,浏览器会构建一个依赖关系图,借助浏览器原生的 ESM 能力完成模块的查找、解析、实例化到执行的过程。

为什么快

为什么基于 ESM 的构建工具 snowpack / vite 会比 webpack 在构建的时候要快很多,借用 snowpack 官网的一张图片来说明:

最核心的两个特点:

1、首先它们的构建复杂度非常低,修改任何组件都只需做单文件编译,时间复杂度永远是 O(1)

2、借助 ESM 的能力,模块化交给浏览器端,不存在资源重复加载问题,如果不是涉及到 jsx 或者 typescript 语法,甚至可以不用编译直接运行

面对 ESM,webpack 还有还手之力吗?相关推荐

  1. 面对 ESM 的开发模式,webpack 还有还手之力吗?(转载)

    snowpack / vite 等基于 ESM 的构建工具出现,让项目的工程构建不再需要构建一个完整的 bundle.很多人都觉得我们不再需要打包工具的时代即将到来.借助浏览器 ESM 的能力,一些代 ...

  2. excel工具箱_WPS搬来救兵智能工具箱,强大到Excel没有还手之力

    EXCEL不加班 眼见Excel连胜2局,WPS慌了,搬来救兵智能工具箱,这个神器,所到之处,问题瞬间解决.这智能工具箱究竟是何方宝物,强大到Excel没有还手之力! Excel2016的闪电填充确实 ...

  3. 联想小新520新品实测,对比当贝投影D3X竟无还手之力

    正值618期间,想买投影仪的小伙伴可以看过来,今天分享的是当贝D3X对比新出的联想小新520这两款投影仪,孰强孰弱,亲测两款投影仪后,发现当贝D3X完全秒杀联想小新520,下面就来详细说说. 一.外观 ...

  4. “鲨鱼”特斯拉的降维打击,理想、蔚来、小鹏只能跪地求饶?

    文/智能相对论(aixdlun) 作者/XL 特斯拉开的不是汽车,是火箭啊 这10个月的股价飙升,特斯拉的市值已经超过8000亿美金,特斯拉的大boss马斯克也成了全球首富. 这两天还有消息说,特斯拉 ...

  5. python为什么流行头上长草_头上“长草”真的可以实现吗?

    不知从什么时候开始,很多城市中开始流行在头上夹一个植物样的发夹,这些发夹有豆芽的.有青草的,甚至还有花朵的.这些发夹做的惟妙惟肖,夹在头发上远远看去,还挺像头顶上冒出了一丛植物,颇有一种特殊的&quo ...

  6. AI独角兽面对BAT,挑战还是臣服?| 《财经》封面

    (图/视觉中国) 独角兽的身体里流着巨头的血液,这让博弈变得复杂.AI独角兽有平台梦,但能孵化巨头的基础世界巨头云集.门槛颇高.只有极少数独角兽能越过浪潮之巅,爬上金字塔尖. <财经>记者 ...

  7. 2:0!谷歌 AI “AlphaStar“ 虐杀职业星际玩家

    作者 | 若名 出品 | AI科技大本营(ID:rgznai100) 刚刚,在更复杂的<星际争霸 II>游戏中,DeepMind AI 以总比分 2:0 分别战胜两位职业人类选手.这或许是 ...

  8. 一些长时间GC停顿问题的排查及解决办法

    对于许多企业级应用,尤其是OLTP应用来说,长暂停很可能导致服务超时,而对这些运行在JVM上的应用来说,垃圾回收(GC)可能是长暂停最主要的原因.本文将描述一些可能碰到GC长暂停的不同场景,以及说明我 ...

  9. 2018人工智能期末考试复习资料(一):学术篇

    机器之心知识委员会 机心通知函[2018]002号 2018 年人工智能专业期末考试复习资料:学术篇 各人工智能研究者.工程师.从业人: 2018 年是人工智能迅猛发展的一年,从技术研究到产业应用都取 ...

最新文章

  1. [转]C C++ TDD单元测试非常好的书
  2. WGAN-GP与GAN及WGAN的比较
  3. Android NDK开发Crash错误定位[转]
  4. linux 修改消息队列大小
  5. LeetCode 658. 找到 K 个最接近的元素(二分查找)
  6. HTTP协议中GET和POST方法的区别
  7. mysql5.7 查询今天 昨天 一周_mysql查询今天、昨天、7天、近30天、本月、上一月 各个季度的 数据...
  8. 微信8.0来了!黄脸表情会动了,还能扔炸弹...一大波新功能上线!
  9. 订单系统需求分析说明
  10. Linux进程通信之信号量
  11. 昆仑通态通用版找不到驱动_昆仑通态无法连接1200
  12. MicroKMS 下载 与使用
  13. 审车的时候环保怎样安全通过_车审环保过不了如何处理
  14. 基于java的在线医院挂号系统设计(含源文件)
  15. 学习日记--overflow去掉滑条
  16. mysql数据库统计人数_统计人数 数据库
  17. R 添加使用mac字体
  18. 姓氏 (C++)简单贪心
  19. Blender关于雕刻
  20. 债务人不愿腾房是否能拍卖

热门文章

  1. 程序员的传奇“破圈”之路
  2. 基于 OpenCV 的图像阴影去除,你会吗?
  3. 选择什么技术,才能不被淘汰?180 所高校在增设这个专业!
  4. 学会这些 Python 美图技巧,就等着女朋友夸你吧!| 原力计划
  5. Python 10 行以内代码能有什么高端操作?| 原力计划
  6. 防控疫情,我们在行动——爱奇艺战“疫”全纪录
  7. 面试官:你连 RESTful 都不知道我怎么敢要你?| 原力计划
  8. 漫画:去掉一个数,如何让剩余的数乘积最大?
  9. 53 年 IT 老兵详谈传统网络到互联网的演变史
  10. 2019 世界读书日,让程序员疯狂的 13 本豆瓣高分技术书!