Webpack基础概念(一)

386 阅读2分钟

为什么需要构建工具?

  • 转换ES6语法(浏览器对ES6的语法支持的不是很好)
  • jsx转换(浏览器对框架性的语法糖支持的不好)
  • CSS前缀补全/ 预处理器(lessscss
  • 压缩混淆
  • 图片压缩

前端构建的历程

前端演变历程

grunt :本质为Task render,将事件划分成一个个任务。在打包过程可以划分为:解析HTML,解析CSS,解析js等等,将输入的内容存储到本地磁盘的temp目录下,因为存在磁盘的写入的IO操作,导致打包的速度相对较慢。

glup:为了解决grunt打包慢的问题。出现了这种打包工具 glupglup中有了一个文件流的概念,放在了内存中,下一个步骤可以直接使用上一个步骤的内存,加快了打包的速度(该阶段 百度推出fis3工具,管理力度较小,而且官方团队不再维护了,现阶段使用人也较少)

为什么选择webpack

  • 从社区的活跃度
  • 社区生态比较丰富(官方维护的插件也比较丰富)
  • 配置比较灵活
  • 官方更新迭代速度快

社区活跃度

初识

webpack的配置文件 系统默认配置文件:webpack.config.js

可以通过 webpack --config 指定配置文件

module.export={
  entry:'./src/index.js', // 打包的入口文件
  output:'./dist/main.js', // 打包的输出
  mode:'production',      // 环境
  module:{               
  	rules:[               // Loader的配置 
      	{test:/\.txt$/,use,'raw-loader'}
      ]
  },
  plugins:[            // 插件的配置 
  	new HtmlwebpackPlugin({
      	template:'./src/index.html'
      })
  ]
}

0配置的webpack:包含entry,output

module.export={
  entry:'./src/index.js', // 默认
  output:'./dist/main.js', // 默认
}

安装webpack

环境搭建:安装Node.js和NPM

  • 安装nvm

curl -o- raw.githubusercontent.com/creationix/… | bash(curl安装)

wget -qO- raw.githubusercontent.com/creationix/… | bash(wget安装)

  • 安装webpack 和 webpack-cli(4.0版本对二者进行分离,需要分别安装)

创建一个项目,并安装webpack和 webpack-cli

mkdir my-project
cd my-project
npm init -y
npm install webpack webpack-cli --save-dev
cd my-project./node_modules/.bin/webpack -v // 查看webpack的版本

文件目录

文件内容 webpack.config.js

"use strict";
const path = require("path");
module.exports = {
   entry: "./src/index.js",
    output: {
 		 path: path.join(__dirname, "dist"),
		  filename: "bundle.js",
   },
   mode: "production",
};

文件内容 helloWord.js

  export function helloWord() {
  	return "Hello webpack";
}

文件内容 index.js

import { helloWord } from "./helloword";
document.write(helloWord());

执行打包的脚本

./node_modules/.bin/webpack

结果生成了dist目录,想要查看效果,在dist的目录下创建一个index.html文件。文件的内容如下

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8" />
  <meta name="viewport" content="width=<device-width>, initial-scale=1.0" />
  <title>Document</title>
  <script src="bundle.js"></script>
</head>
<body></body>
</html>

在浏览器中查看效果,可以看到网站的样式:

网站截图

我们可以在package的里面配置script的方式来简化命令:

命令的配置