为什么需要Parcel?


Parcel的特性

  • 快速打包 - 多核编译,以及文件系统缓存,即使在重新启动之后也能快速重新构建。
  • 支持JS,CSS,HTML,文件资源等- 不需要安装任何插件。
  • 在需要的时候自动使用Babel,PostCSS和PostHTML自动转换模块 - 甚至是node_modules。
  • 零配置代码拆分,使用动态import语句分割。
  • 内置支持模块热替换
  • 友好的错误记录体验,语法突出显示的代码帧有助于查明问题。

比较

基于一个合理大小的应用程序,包含1726个模块,未压缩有6.5M 。构建在2016年的MAcBook Pro,4核物理CPU。

| 打包工具 | 时间 |

| ----------------------- | --------- |

| browserify       | 22.98s |

| webpack           | 20.71s |

| parcel | 9.98s |

| parcel - with cache | 2.64s |

为什么需要Parcel?

目前已经有很多的打包工具了,包括webpack和browserify。那么为什么我们还需要另外一个呢?主要原因是因为开发者的经验。

许多的打包工具都是围绕着配置和插件构建的,而且为了让应用正常的工作,超过500行的配置并不罕见。这些配置不仅繁琐而且耗时。通常情况下,这可能导致次优化的应用发送到生产环境。parcel被设计成零配置的:只需要将它指向应用程序的入口点,它就能正常工作。

目前现存的打包工具都非常慢。拥有大量文件和依赖的大型应用可能需要花费几分钟的时间来构建,这在开发过程中随着时间的变化而变得尤为痛苦。监听文件变更能够帮助重新构建,但初始的启动仍然非常慢。parcel利用工作线程编译你的代码,利用现代的多核处理器能力。这导致了初始构建的速度大大提升。它还具有一个文件系统缓存,可以保存每一个文件的编译结果,以便后续能够更快的启动。

最后,现有的打包工具都是围绕字符串加载/转换构建的,其中转换需要一个字符串,解析它,进行一些转换,然后再次生成代码。通常这样会导致许多的解析和代码生成在单个文件上运行,这是非常低效的。相反,parcel的转换工作在AST上,因此每个文件只有一个解析,多个转换以及一个代码生成。

Parcel如何工作的?

parcel将资源树转换为bundle树。许多其它的打包工具基本上都是基于js资源,其它格式都是粘贴的-例如,默认情况下以字符串的形式内嵌到js中。parcel是文件类型无关的-它可以按照你期望的方式与任何类型的资源一起工作,无需配置。

parcel将一个入口点作为输入,可以是任何类型的:JS文件,HTML,CSS,图片等。在parcel中定义了各种资源类型,它们知道如何处理特定的资源类型。资源文件被解析,它的依赖关系被提取,并转换成最终的编译形式。这创建了一个资源树。

一旦资源树被构建,资源就被放入一个bundle树中。为入口资源创建一个bundle,并为动态导入的资源创建子bundle,这回导致代码拆分的发生。当导入不同类型的资源的时候就会创建子bundle,例如如果你在js中导入css文件,它就会打包成对应js的兄弟bundle。如果一个资源需要多个bundle,它会被打包到最近的共同祖先,因此它不会被包含多次。

在构建bundle树之后,每一个包都有特定的文件类型的包装器写入文件。

本文发表于2017年12月07日 16:33
(c)注:本文转载自https://my.oschina.net/zhongzhong5/blog/1586369,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如有侵权行为,请联系我们,我们会及时删除.

阅读 235 讨论 0 喜欢 0

讨论

周娱

君子和而不同
按照自己的方式,去度过人生

4186 1125983
抢先体验

扫码体验
趣味小程序
文字表情生成器

加入组织

扫码添加周娱微信
备注“加入组织”
邀请进开发群

闪念胶囊

人生是一场马拉松,起跑的优劣对于整段路途而言并没有那么重要,笑到最后的都是一直在跑的人,也就是一辈子都在学习的人。

角色是谁并不重要,重要的是会不会抢戏~

在这个世界上,最顶级的趋势叫时代。次一级的趋势才是经济周期,再往下是你所在的单位和公司的经营节奏。一个人赶不赶得上好时代得看运气,但要在好时代里不留下遗憾,得靠见识。

2009年,雷军40岁生日这天,他和几个朋友一起喝酒。雷军感慨,“人是不能推着石头往山上走的,这样会很累,而且会被山上随时滚落的石头给打下去。要做的是,先爬到山顶,随便踢块石头下去。”

离职要果断,入职要缓慢。

这一生,会遇到很多人,经历很多事,得到很多,也会失去很多。但无论如何,有两样东西,绝不能丢弃,一个叫良心,另一个叫理想。

数据结构和算法这个东西,如果你不去学,可能真的这辈子都用不到,也感受不到它的好。但是一旦掌握,你就会常常被它的强大威力所折服。之前你可能需要费很大劲儿来优化的代码,需要花很多心思来设计的架构,用了数据结构和算法之后,很容易就可以解决了。

人生路上,我们会遇到很多的坎。跨过去,你就可以成长,跨不过去就是困难和停滞。而在后面很长的一段时间里,你都需要为这个困难买单。

晚上在理发店烫了个头,本来想烫成陈奕迅的样子,但是最后成了黄渤 ( ̄﹏ ̄)~~~自行脑补

Copyright © 2016 - 2018 Cion.
All Rights Reserved.
备案:鲁ICP备16007319号.