webpack整理

162 阅读3分钟

一.为什么使用webpack

项目为了维护性,进行模块设计,webpack帮助管理模块,是代码管理工具,vue,react,angle,使用webpack作为实现底层代码的工具,支持懒加载,代码分割等,webpack4速度更快,节约构件时间

二. webpack简析

原始方式面向对象不足

html需要加载多个js文件,发送多个http请求,加载速度慢,
不直观,查看需打开查看
不容易查错,代码不容易维护,例如依赖加载错误顺序

ES Moudle模块引入方式

原生浏览器不识别,需要借助webpack翻译,浏览器才能正确识别

import Header from "./header.js"

改变引入方式,在js文件import导入每个模块,解决加载慢,依赖关系非常明确,目录结构比较清晰,依赖不会出现顺序错误

webpack 如何安装使用

  1. 导入导出

    安装了node.js,和包管理工具
    npm init初始化配置文件,package.json
    npm i webpack -cli --save-dev 安装cli时自动安装webpack
    通过webpack -v查看版本
    npx webpack index.js 用webpack 翻译js文件
    文件夹生成dist目录,里面存储翻译好的文件
    模块需要引入导出
    export default 模块名
    
  2. webpack核心定义时模块打包工具

    node里使用CommonJS模块 -- webpack打包也能识别

    引入模块
    var header= require("./header.js")
    导出模块
    module.exports = Header
    
    CMD AMD
    最早是js模块打包工具 -- require  js文件
    现在可以打包任何文件 
    var style = require("./index.css")
    import style from "./index.css"
    
  3. 文档的使用 -- webpack.js.org

    1. condiguration 概念 --Modules介绍了模块化的概念
    2. API --MODULES moudles常用方法和变量

三.webpack安装环境

用的node.js,10.13.0版本比较稳定,新版本node.js提高webpack的打包速度

webpack打包速度影响的两个点:node.js的版本和webpack的版本尽量的新,也要保持稳定

两个都能打印安装就没有问题,npm 是以node的规范创建项目

npm init 生成package.json,描述包的信息,配置的内容 "private":true,是否发布

安装webpack

> 全局安装 npm i webpack -cli -g 安装不成功使用手机WiFi热点 不建议使用
> 全局安装的webpack,两个项目不同版本创建,安居安装得到版本为4时无法运行3的项目,解决问题需要删除重新安装运行,才能启动,如果两个项目有依赖,想同时启动,没有办法实现
> 卸载webpack  npm uninstall webpack webpack-cli -g
> 局部安装webpack   在文件内 npm i webpack webpack-cli -D/-dev
> 局部运行webpack  npx webpack -v 
> 优点:创建不同版本项目,不会影响到另外一个webpack的运行

四.webpack的配置

通过配置文件,进行打包的设置,webpack.config.js,需要根据工程的复制程度进行对配置内容的编写

const path = require("path")
module.exports ={
	entry:"index.js" //打包入口
	output:{	//打包出口
		filename:"bundle.js",	//生成文件名
		path:path.resolve(_dirname,"bundle")	//绝对路径打包位置
	},
  mode:"production" //打包格式 打包的文件会被压缩 可选:development  不压缩代码一样执行
}

五.对代码进行打包

//npx webpack 对代码进行打包
在package.json进行配置
"scipts":{
	"bundle":"webpack" //先到工程命令的webpack中查找
}
//npm run bundle 对代码进行打包

打包提示:

hash:对应的唯一id值
version:webpack版本
time:时间    builta	at:日期
asset :打包的文字	size:大小	chunks:打包文件的id	
chunk names:文字的name	是config配置entry的main的简写
enterypoint main :打包入口