webpack 保存文件后自动打包_继webpack后又一打包神器Parcel

前言:

在继grunt、gulp实现自动化构建之后,webpack又引领前端打包潮流,众所周知的是,vue-cli的脚手架就是基于webpack进行项目打包的。而webpack还在上升的势头的时候,又一打包神器横空出世——parcel。

Parcel

快速,零配置的 Web 应用程特性

快速打包

Parcel 使用工作进程启用多核编译,并具有文件系统缓存,即使在重新启动后也可快速重新构建。

打包所有资源

Parcel 支持JS,CSS,HTML,文件资源等等 - 不需要安装任何插件。

自动转换

在需要时,代码使用 Babel,PostCSS 和 PostHTML 自动转换 - 即使是 node_modules。

零配置代码拆分

Parcel 使用动态 import() 语法拆分您的输出包,所以只加载初始加载时所需的内容。

模块热替换

当你在开发过程中进行更改时,Parcel 会自动更新浏览器中的模块,不需要进行任何配置。

友好的错误记录

遇到错误时,Parcel 会以语法高亮的形式打印的代码帧,以帮助你查明问题。

为啥用 parcel?

现在有很多Web应用程序打包工具,包括webpack 和 browserify。所以,我们为什么还需要一个呢?主要的原因是围绕开发者的经验。

很多打包工具都围绕配置和插件进行构建的,因此看到有500行以上配置的应用程序正常运行并不罕见。这种配置不仅繁琐和费时,而且也很难得到正确的配置,必须为每个应用程序复制。通常情况下,这可能导致次优化的应用程序发送到生产环境。parcel 被设计为零配置:只要将它指向你的应用程序的入口点,它就能做正确的事情。

现有的打包工具大多都执行得慢,具有很多文件和依赖的大型应用将花费数分钟去构建,随着时间的推移,这将会相当痛苦的事情。监听文件变更能帮助重新编译,当时初始构建的时候通常还是会很慢。parcel 利用现代的多核处理能力和工作线程去并行编译你的代码。这导致了初始构建的速度极大的提升。它还有一个文件系统缓存,可以保存每个文件的编译结果,以便更快的后续启动。

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

Parcel 是如何工作的?

Parcel 将 资源 树转换成 包(bundles) 树。许多其它的打包工具基本上是基于 JavaScript 资源,还有附加在其上的其它格式的资源。例如,在 JS 文件中内联成字符串。 Parcel 是对文件类型无感知的,它能按你所期待的方式那样与任意类型的资源工作,且毋须配置。

构建资源树

Parcel 接受单个入口资源作为输入,可以是任意类型:JS、HTML、CSS、图片文件等等。在 Parcel 中定义了许多不同的资源类型,它知道如何去处理特定的文件类型。资源会被解析,资源的依赖会被提取,资源会被转换成最终编译好的形态。此过程创建了一个资源树。

构建文件束树

一旦资源树被构建好,资源会被放置在文件束树中。首先一个入口资源会被创建成一个文件束,然后动态的 import() 会被创建成子文件束 ,这引发了代码的拆分。当不同类型的文件资源被引入,兄弟文件束就会被创建。例如你在 JavaScript 中引入了 CSS 文件,那它会被放置在一个与 JavaScript 文件对应的兄弟文件束中。如果资源被多于一个文件束引用,它会被提升到文件束树中最近的公共祖先中,这样该资源就不会被多次打包。

打包

在文件束树被构建之后,每个文件束都会被 packager 写到一个特定文件类型的文件中。packagers 知道如何从每个资源中将代码合并起来,生成到最终被浏览器加载的文件中。

[ps:基于官网https://parceljs.org/进行的总结]

入门Demo

一、初始化npm

npm init

二、添加babel 并安装 babel-preset-env依赖

1.新建.babelrc 文件

{

"presets": [

"env"

]

}

2.安装依赖

npm install babel-preset-env --save-dev

三、添加parcel

npm install parcel-bundler --save-dev

四、最后生成的package.json文件大概就这样:

{

"name": "parcel-demo",

"version": "1.0.0",

"description": "parcel",

"main": "index.js",

"scripts": {

"test": "echo \"Error: no test specified\" && exit 1",

"start":"parcel index.html"

},

"keywords": [

"parcel"

],

"author": "aaron",

"license": "ISC",

"devDependencies": {

"babel-cli": "^6.26.0",

"babel-preset-env": "^1.6.1",

"parcel-bundler": "^1.2.0"

}

}

[ ps:给npm添加启动项:

"start":"parcel index.html"

]

五、最后根据官网新建index.html,index.js等文件,然后命令行打包,然后运行npm  start 或 parcel index.html 启动,简单的demo就生成了。

index.html / index.js / main.js / main.css

hello Parcel

parcel

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/562965.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

人员离职it检查_it人员跳槽的技巧与注意事项

it人员跳槽的技巧与注意事项年初总是跳槽的黄金季节,现今考虑跳槽的工作人比例高达85%,尤以IT行业为甚。下面是百分网小编为你精心推荐的it人员跳槽技巧,希望对您有所帮助。it人员跳槽的技巧1 大多新公司都会要求你尽快到岗,有的迫切到马上,这…

icd植入是大手术吗_骨折手术植入了钢板,骨折痊愈后,需要取出钢板吗?

六十多岁的王大爷不小心摔骨折了,经过手术以及大半年的调养治疗,王大爷终于康复出院了,可就在前几天王大爷又来找我复诊,跟我说:姚大夫,我这骨折的位置总是有点酸麻的感觉,你说是不是当时植入的钢板引起的呀…

安徽关节式焊接机器人_机器人自动焊接技术的优势及应用介绍

焊接生产线机械自动化技术的应用经历了仿制、自行研制、稳步发展三个阶段。焊接制造行业的焊接专机将得到普遍应用,焊接生产过程中,机械化与自动化程度将提高15%左右,焊接自动化程度将达到40~50%,为了发展焊接自动化技…

arduinowin7_win7系统64位系统安装Arduino uno R2 驱动的方法

恶心的ghost win7好久没有折腾arduino uno了,今天拿出来准备折腾一下DHT11温度模块,结果悲剧了…因为前期重装了系统,用的Ghost win7 64位,结果ghost系统安装arduino驱动简直就是悲剧。win7系统64位安装Arduino uno R2驱动的方法从…

小白学python爬虫_小白学爬虫——第一部分:简单学习Python

学习目录定义新函数文件读写数组字符串字典定义新函数**创一个小群,供大家学习交流聊天如果有对学 python 方面有什么疑惑问题的,或者有什么想说的想聊的大家可以一起交流学习一起进步呀。也希望大家对学python能够持之以恒python爱好群,如果…

python3 线程池监控线程是否停止工作_Python线程池——个人总结,如果你不喜欢就不要喷,勿...

有bug,请在评论区留下你得真言,谢谢concurrent.futures 包含线程池和进程池,目前只记录线程池 ThreadPoolExecutor的使用小二,上代码~from concurrent.futures import ThreadPoolExecutorimport threadingimport timedef test(i):…

bootstarp js设置列隐藏_bootstrap table getHiddenColumns获取隐藏的列的方法

bootstrap table getHiddenColumns获取隐藏的列的方法bootstrap table getHiddenColumns获取表格隐藏的列,即获取哪些列当前不可见的列,因为有的列可以通过工具栏或者方法可以设置列隐藏,如何隐藏某个列请查看左侧菜单。getHiddenColumns方法…

iphone11边框喇手问题_别贪图小便宜!iPhone11真机上手,3个缺点不得不说

推荐语:苹果发布会开了,新机也出了,但在体验了一番iPhone 11后,这位作者似乎并不满意。下文转载自作者:数码扒一扒如今,iPhone 11系列机型已经正式发布,值得一提的便是,iPhone 11这款…

提高抗打击能力_孩子抗挫能力差,巧用4个小窍门,引导孩子将“危”化为“机”...

孩子在成长的过程中失败与挫折是必不可缺少的,家长要明白,孩子就是在挫折与失败中,跌跌撞撞成长的。博为曾说过:一次的失败,一次跌倒,只能证明我们成功的决心还不够坚定。所以当孩子不够具有成熟的抗打击能…

14怎么敷铜不了_诗懿教你如何避开这十大敷面膜误区,护肤效果可翻倍!

面膜可以说是护肤的必备品了,而且很多人家里都囤着一堆面膜。敷面膜是对皮肤有改善作用的,但是用的不对,反而会造成敏感,滋生闭口痘痘。所以今天就先来了解一下敷面膜的误区吧,解锁敷面膜的正确姿势~那是因为&#xff…

按照顺序执行_问一个多线程的问题:如何才能保证线程有序执行?

面试的时候你是否经常被问到这样的问题:你一般通过什么方式去控制线程的执行顺序?碰到这样的问题,我的内心其实是很抵触的!开什么玩笑?我怎么会控制它呢?我为什么要控制它?其实不用慌&#xff0…

经典sql语句50题_SQL面试经典50题:带你从建表开始

大家好,相信很多学习数据分析的小伙伴在面试前都经历过刷题,本系列小编将带大家一起来刷一刷SQL面试必会的经典50题。当然本系列文章不单单是刷题,小编会带着大家梳理一下解题时用到的知识点,所以基础比较差的小伙伴也完全不必担心…

mongodb创建local库用户_mongodb用户与角色使用

此文档以mongodb 4.0版本进行对用户权限和角色讲解,更详细内容可参考mongodb官方文档.官方文档:https://docs.mongodb.com/manual/core/security-users/一.mongodb内部角色1.数据库用户角色read --读取数据库对像的权限readWrite --读取和修改数据库对像权限2.数据库管理…

exif linux php扩展_LNMP环境为PHP添加exif扩展

在使用时 php报出如下错误: Call to undefined function gemvary\exif_imagetype()好吧,exif扩展没安装...通过 打印phpinfo() 查看得知 mbstring 扩展是有的,exif扩展没有如果mbstring也没有,也可以参考以下exif扩展的安装过程;安装过程基本…

宇视硬盘录像机onvif_视频监控系统中强大的录像机,兼容不同品牌,看看有哪些监控厂家...

选录像机,除路数、盘位和最大接入像素这些硬规格,大家还关注兼容性,例如好不好用、配置方不方便、使用流不流畅、录像稳不稳定等。偶尔也会有朋友问“TP的录像机可以搭配xx厂商的摄像机使用吗?”,答案当然是&#xff1…

python设置函数_在Python中设置函数签名

假设我有一个泛型函数f,我想以编程方式创建一个行为与f相同但具有自定义签名的函数f2。更多细节给定列表l和字典d,我希望能够:将f2的非关键字参数设置为l中的字符串将f2的关键字参数设置为d中的键,将默认值设置为d中的值假设我们有…

mysql新建数据表_Mysql创建数据库与表,并添加表的数据

首先,在成功安装Mysql的基础上,进入到cmd窗口,登录我们的mysql管理系统。登录方式:mysql -u用户名 -p密码如果出现Welcome to...等一大堆英文指示,则说明成功进入了mysql系统。因为我们不知道系统中有哪些库&#xff0…

mysql数据库管理维护_(转)Mysql数据库管理 表的维护

原文:http://t.dbdao.com/archives/mysql%E6%95%B0%E6%8D%AE%E5%BA%93%E7%AE%A1%E7%90%86-%E8%A1%A8%E7%9A%84%E7%BB%B4%E6%8A%A4.html一、目标完成本课程后,你应该能够:认识不同类型的表维护操作执行维护表的SQL语句使用客户端和实用程序维护…

mysql如何使用事件_MySQL事件的使用详解

在系统管理或者数据库管理中,经常要周期性的执行某一个命令或者SQL语句。这个时候就会用到mysql事件,使用这个功能必须保证是mysql的版本是5.1以上。1.首先要查看事件是否开启了,SHOW VARIABLES LIKE event_scheduler;SELECT event_scheduler…

mysql 提交乱码问题_mysql数据库乱码问题

变量 a 的字符编码是由参数 CHARACTER_SET_CLIENT 决定的,假设此时编码为 A,也就是变量 a 的编码。2. 写入语句在发送到 MySQL 服务端之前的编码由 CHARACTER_SET_CONNECTION 决定,假设此时编码为 B。3. 经过 MySQL 一系列词法,语…