webpack承担了哪些工作?原理?功能

2025-02-25 13:38:41
推荐回答(2个)
回答1:

承担了很多前端代码的自动化生成的工作。
搭配很多loader,可以完成不同的事情。
比如说把繁杂的项目中用到的js打包并压缩成你设定的一个或多个文件去发布到生产环境。
比如把react中引用的图片压缩并抽出来项目中引用到的。没引用到的,不会拿过来。
比如CSS Modules,单个组件开发时用单独的css定义,最终打包成一个css文件里,而没用到的css不会打包。而且通过设置,不用担心各个文件中的同名css打包到一个css里后重复。
less转css
sass转css
PostCSS转css
es6写的js,通过babel转成浏览器可执行的es5
......
原理,其实就是用程序代替人的工作。比如我们开发的时候经常是css写到一个或几个文件,随着迭代,里面肯定就产生很多垃圾不再用的代码,而用人去识别很累,如果用CSS Modules,把css也模块化,随着迭代,不再引用到的,就不会再打包进去,不用人来识别了。同理,浏览器是不识别sass这种的,程序来帮你转成浏览器可读的css。不管用什么程序,其实都可以开发这样的一个解释器,其实就是一个翻译转化的过程。只不过当前前端的发展需要和node的便捷加上npm方便的分发,所以在node中,大量的工具出现了。
其实原理和功能,就是用程序代替人做那些事,由程序翻译成普通浏览器可执行的代码。

回答2:

依赖管理:方便引用第三方模块、让模块更容易复用、避免全局注入导致的冲突、避免重复加载或加载不需要的模块。
合并代码:把各个分散的模块集中打包成大文件,减少HTTP的请求链接数,配合UglifyJS可以减少、优化代码的体积。
各路插件:babel把ES6+转译成ES5-,eslint可以检查编译期的错误……
原理:最简单地说,就是分析代码,找到require、exports、define等“关键词”,并替换成对应模块的“引用”