一、关于webpack
自从出现模块化以后,大家可以将原本一坨代码分离到个个模块中,但是由此引发了一个问题。每个 JS 文件都需要从服务器去拿,由此会导致加载速度变慢。Webpack 最主要的目的就是将所有小文件打包成一个或多个大文件,官网的图片很好的诠释了这个问题,除此之外,Webpack 也是一个能让你使用各种前端新技术的工具。
关于gulp与webpack对比,转到https://www.cnblogs.com/zuobaiquan01/p/8600365.html
npm init
// 推荐这个安装方式,当然你也安装在全局环境下
// 这种安装方式会将 webpack 放入 devDependencies 依赖中
npm install --save-dev webpack
创建相关文件
// sum.js
// 这个模块化写法是 node 环境独有的,浏览器原生不支持使用
module.exports = function(a, b) {
return a + b
}
// index.js
var sum = require('./sum')
console.log(sum(1, 2))
<!-- index.html -->
<!DOCTYPE html>
<html lang="en">
<head>
<title>Document</title>
</head>
<body>
<div id="app"></div>
<script src="./build/bundle.js"></script>
</body>
</html>
配置最简单的 webpack,首先创建 webpack.config.js
文件
// 自带的库
const path = require('path')
module.exports = {
entry: './app/index.js', // 入口文件
output: {
path: path.resolve(__dirname, 'build'), // 必须使用绝对地址,输出文件夹
filename: "bundle.js" // 打包后输出文件的文件名
}
}
命令行输入:
node_modules/.bin/webpack
每次要输入 node_modules/.bin/webpack
过于繁琐,可以在 package.json
如下
"scripts": {
"explain": "node_modules/.bin/webpack 这里的webpack为依赖项",
"start": "webpack"
},
我们发现有一个提示WARNING
大致意思就是:未设置mode(模式),请指定是“开发环境”还是“生产环境”;
解决办法:只需要在package.json中添加配置项:
"scripts": {
"start": "xxx --mode development",
"build": "xxx --mode production"
}
可以发现原本两个 JS 文件不到 100B,但是打包后却增长到1010B,这其中 webpack 肯定做了什么事情,因为 module.export
浏览器是不支持的,所以 webpack 将代码改成浏览器能识别的样子。在浏览器中打开index.html
文件,就可以看到正确的 console信息。
相关源码地址:https://github.com/zuobaiquan/webpack/tree/master/my_webpck