-
Notifications
You must be signed in to change notification settings - Fork 3.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
第 148 题: webpack 中 loader 和 plugin 的区别是什么 #308
Comments
这里引用官方文档原文:
相对于loader转换指定类型的模块功能,plugins能够被用于执行更广泛的任务比如打包优化、文件管理、环境注入等…… |
loader一般是将某个语法统一处理为统一的语法 |
loader,它是一个转换器,将A文件进行编译成B文件,比如:将A.less转换为A.css,单纯的文件转换过程。 plugin是一个扩展器,它丰富了webpack本身,针对是loader结束后,webpack打包的整个过程,它并不直接操作文件,而是基于事件机制工作,会监听webpack打包过程中的某些节点,执行广泛的任务 |
loader:webpack自身只支持js和json这两种格式的文件,对于其他文件需要通过loader将其转换为commonJS规范的文件后,webpack才能解析到 |
loader:让webpack能够处理非js文件(自身职能理解js),然后你就可以利用 webpack 的打包能力,对它们进行处理。 plugins:从打包优化和压缩,一直到重新定义环境中的变量. |
通俗点讲loader是转换,plugin是执行比转换更复杂的任务,比如合并压缩等 |
loader是翻译官,plugin是干活滴 |
webpack 是由nodejs编写的前端资源加载/打包工具,由nodejs提供了强大的文件处理,IO能力。 如何自定义webpack插件:
|
一、webpack的打包原理
二、什么是loader loader是文件加载器,能够加载资源文件,并对这些文件进行一些处理,诸如编译、压缩等,最终一起打包到指定的文件中
三、什么是plugin 在webpack运行的生命周期中会广播出许多事件,plugin可以监听这些事件,在合适的时机通过webpack提供的API改变输出结果。 四、loader和plugin的区别 对于loader,它是一个转换器,将A文件进行编译形成B文件,这里操作的是文件,比如将A.scss转换为A.css,单纯的文件转换过程 plugin是一个扩展器,它丰富了webpack本身,针对是loader结束后,webpack打包的整个过程,它并不直接操作文件,而是基于事件机制工作,会监听webpack打包过程中的某些节点,执行广泛的任务 |
个人理解:
loader针对代码或资源,plugins针对工程。 |
Loaders:Loaders work at the individual file level during or before the bundle is generated. Plugins:Plugins work at bundle or chunk level and usually work at the end of the bundle generation process. Plugins can also modify how the bundles themselves are created. Plugins have more powerful control than loaders. Just for an example you can clearly see in below image where loaders are working and where plugins are working - Reference |
loader支持除js、json以外的文件,并且将他们转换成有效的模块,加入到依赖图中。本质是一个函数,接受的文件为参数,返回转换结果。执行顺序是从右到左。 plugin用于优化bundle文件的优化,资源增强和变量注入。loader不能做的都由它来实现,以此增强webpack的功能。plugin作用于整个过程 |
No description provided.
The text was updated successfully, but these errors were encountered: