webpack 解决了什么问题?
webpack is a tool to build JavaScript modules in your application.
……
webpack simplifies your workflow by quickly constructing a dependency graph of your application and bundling them in the right order. webpack can be configured to customise optimisations to your code, to split vendor/css/js code for production, run a development server that hot-reloads your code without page refresh and many such cool features.
简单来说就是包管理
,并且对随之来的的新问题包大小
进行优化。
因为 JS 本身没有 package 的概念,最初始的方式是通过 <script>
的方式来加载,这种方式很容易出问题,比如如果三方库还没加载下来,代码就执行了,就会出错。有了 node 之后,npm 提供了包管理,webpack 就是提前把这些依赖关系处理好,生成一个 bundle.js 进行使用。
之前的三方库使通过 script tag 来进行应用
|
|
|
|
使用以下命令,通过 npm 安装 lodash, 使用了 webpack 之后,配合 import/export 关键字 webpack 会提前处理好依赖关系,生成一个 bundle.js。
|
|
|
|
|
|
这样各种包的依赖关系在用户加载的时候就已经确定了,开发人员在开发的时候也不容易犯错。
webpack 带来了什么新问题?
提前生成一个已经处理好依赖关系的 bundle.js 确实有很多好处,但是也带来了一个问题,如果所有 JS 代码都在一个文件里,那这个问题件会很大,用户首次加载会耗时比较久,好在 webpack 也提供了 Code Split 来解决这个问题,我之后再研究一下。