webpack的基础,看懂webpack如何编译bundle everything

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了webpack的基础,看懂webpack如何编译bundle everything相关的知识,希望对你有一定的参考价值。

参考技术A 这篇文章简单概述webpack构建编译各种资源的通天本领,帮大家简单理解webpack如何强大到编译各种资源(es6/es7、jsx、vue、less、scss、image...)。

webpack天生支持有且只支持以下模块打包编译

糟糕,我们发现它只能读懂 .js、.json文件 。没有看到它支持 jsx、TypeScript 或者我们经常写的 sass、less样式 等的编译处理啊!比如less样式写法并不是原生css支持的,所以他怎么处理非原生模块的语法并进行模块化?

没错,就是用这些装载器把这些非原生样式语法写法转成单纯原生的css规则: index.less => index.css ,现在通过这些loader的编译转换,浏览器可以读懂了。

那么还有哪些常用的loader?

以babel-loader为例,为什么需要它。

例如我们开发中常写的 es6、es7、n... ,所以需要 babel 来编译进行转换为ES5兼容的语法。

对于语法转换,往更深层次的奥义,就是涉及babel原理, AST语法树 ,一般loader都会经过3个步骤:

篇幅概念性太强,请看总结。

参考:

略微讲讲最近的 webpack 该如何加快编译

首先假设 基础的环境是有 creat-react-app 所创建的
即所有基础的loader,插件的 cache 都已经缓存了
在这种情况下想加速,真是很难

不过,有一个插件是可以观察 各个模块所花的时间的:speed-measure-webpack-plugin,他给了我们一个观察点

有很多文章都会说 happypack 有能加速的效果
但是经过我的实际测试,效果不明显甚至无效
他的 bug 也很多,很多 loader 都无法会出现报错,如果没有时间和对于 webpack 的了解,就不要用了

node 升级

有一项是比较有用的即升级 node ,不得不说这是一种有效的方法

alias

项目文件多的可以多使用这个 ,对于打包有一定速度的提升

DLL & DllReference

这个方法至今仍然是最有效的方法,不过配置稍微麻烦了点 但是不能支持 preload-webpack-plugin 需要手动写,或者自己写一个插件

fast-sass-loader

代替sass-loader,据说是有效的,但是我暂未尝试

以上是关于webpack的基础,看懂webpack如何编译bundle everything的主要内容,如果未能解决你的问题,请参考以下文章

webpack基础

webpack基础

webpack热更新原理-连阿珍都看懂了

webpack基础知识以及配置

webpack基础知识以及配置

Webpack 基础使用