什么是webpack
这一篇文章主要简单介绍了 webpack 是什么以及 webpack 的一些简单配置,你只要跟着我敲完这些代码后一定会对 webpack 有一个基本的了解的。😎
webpack 是一个模块打包器
本质上,webpack 是一个现代 JavaScript 应用程序的静态模块打包器(module bundler)。当 webpack 处理应用程序时,它会递归地构建一个依赖关系图(dependency graph),其中包含应用程序需要的每个模块,然后将所有这些模块打包成一个或多个 bundle。
上面引用了 webpack 官网的一段介绍,我们可以简单的理解 webpack 是一个模块打包器,那什么是模块打包器呢?😂 先看一个简单的例子
- index.html
- index.js
- ComponentA
- ComponentB
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
</head>
<body>
<div id="root"></div>
<script src="./index.js"></script>
</body>
</html>
// ES Moudule 模块化引入
import ComponentB from './componentB';
var root = document.getElementById('root');
// CommonJs 模块引入
var ComponentA = require('./componentA');
new ComponentA();
new ComponentB();
function ComponentA() {
var componentA = document.createElement('div');
componentA.innerHTML = 'ComponentA';
root.append(componentA);
}
module.exports = ComponentA;
function ComponentB() {
var componentB = document.createElement('div');
componentB.innerHTML = 'ComponentB';
root.append(componentB);
}
export default ComponentB;
这里的模块可以理解成componentA和componentB,这种写法在vue和react中非常常见,写完这些文件后打开index.html文件,浏览器是会报错的。
Uncaught SyntaxError: Cannot use import statement outside a module
这是由于这里使用了 es6 中的模板引入的方式,浏览器是识别不了这种方式的,那怎么办呢?😥
这个时候 webpack 就派上用场了,首先初始化该项目
npm init -y
初始 化后会生成package.json文件
安装 webpack-cli 和 webpack(不建议全局安装)
npm install webpack-cli -D
npm install webpack -S
安装固定版本的 webpack
npm install webpack@版本号
npm info webpack // 查看包信息
打包 index.js
npx webpack index.js
这里如果不使用 npx 的话 node 会默认在全局环境中找寻 webpack,加上 npx 的话就会使用项目中安装的 webpack 来执行命令
打包后可以看到根目录下多了一个 dist 文件夹(webpack 默认设置好的,后面会讲如何改变),里面有一个 main.js 文件,这个文件就是经过 webpack 处理后的 index.js。
然后我们修改一下 index.html 的代码中引入 index.js 的地方
<script src="./dist/main.js"></script>