webpack是什么?和它的五个核心概念以及两个打包模式

webpack是什么?

Webpack 是一种前端资源构建工具,一个静态模块打包器(module bundler)
在Webpack 看来,前端的所有资源文件(js| json | css | img| sass…)都会作为模块处理
它将根据模块的依赖关系进行静态分析,打包生成对应的静态资源(bundle)

在这里插入图片描述

webpack 的五个核心概念

Enery

​入口(Enery)指示 webpack 以那个文件为入口起点开始打包,分析构建内部依赖图

Output

​输出(Output)指示 webpack 打包后的资源 bundles 输出到哪里去,以及如何命名

Loader

Loader 让 webpack 能够去处理那些非JavaScript 文件(webpack 自身只理解JavaScript)

Plugins

​插件(Plugins)可以用于执行范围更广的任务,插件的范围包括,从打包优化和压缩,一直到重新定义环境中的变量

Mode

​区分开发环境和生产环境的编译:development(开发环境)和production(生产环境)

​如何区分:
把process.env.NODE_ENV 的值设为 development是开发模式

​把process.env.NODE_ENV 的值设为 production是开发模式

webpack 创建和使用

创建:首先我们要创建一个目录,然后初始化 npm 执行 npm init 一路回车,或npm init -y 生成一个package.json文件, 然后在本地安装 webpack ,接着安装 webpack-cli

首先执行以下命令进行 webpack和webpack-cli 的全局安装

npm install webpack webpack-cli -g

然后创建一个项目的文件夹, 使用下面第一个命令进行初始化,生成package.json,执行第二命令进行webpack和webpack-cli的本地安装

npm init -y
npm install webpack webpack-cli --save-dev

简单的使用实例

创建一个webpack-dome文件夹, 然后使用命令安装webpack和webpack-cli

npm init -y
npm install webpack webpack-cli --save-dev
然后在这个项目文件夹中新建一个src文件夹和一个build文件夹,在里面创建两个文件, index.js和aa.js; index.js就是webpack的默认入口文件,而aa.js是index.js中用来举例引用的

在这里插入图片描述
aa.js中的内容为

export default {
    name:'张三',
    age:18
}

然后我们要输入下面的命令进行打包操作

这是开发环境进行打包

webpack ./src/index.js -o ./build --mode=development

这是生产环境进行打包

webpack ./src/index.js -o ./build --mode=production
./src/index.js  指定入口文件
-o    是指定输出文件的放置位置
./build 打包之后的文件(最新版webpack会自动生成一个main.ja,main.ja就是打包后的代码)
--mode=  是指定模式, development为开发模式, production 为生产模式

开发环境进行打包后的结果:
首先在npm中执行 webpack ./src/index.js -o ./build --mode=development 命令,执行完后为以下结果就代表你打包成功了
在这里插入图片描述

然后我们可以看到build文件中会出现一个main.js这就是打包完后生成的代码文件

在这里插入图片描述
你可在build文件夹中写一个index.html,并引入打包后生成的main.js来查看输出后的结果,结果为:
在这里插入图片描述
生产环境的打包和开发环境的打包步骤一样,不过main.js中的代码不同,结果为:
在这里插入图片描述

webpack模块化

在你开发完代码后,进行打包时webpack并不强制你使用某种模块化方案,而是通过兼容所有模块化方案让你无痛接入项目;有了webpack,你可以随意选择你喜欢的模块化方案,至于怎么处理模块之间的依赖关系及如何按需打包,webpack会帮你处理好的。

webpack的模块化有什么特点?

1.可以兼容多模块风格,无痛迁移老项目。
2.一切皆模块,js/css/图片/字体都是模块。
3.静态解析,按需打包,动态加载。

注意:在index.js文件中引入css的文件打包时会报错,并且你引入的css效果不会生效,所以得出结果为webpack不能处理css/img的其他资源

注意:webpack打包时的指令:

开发环境 webpack ./src/index.js -o ./build --mode=development, webpack会以 ./src/index.js 为入口文件开始打包,打包后输出到 ./build 文件夹中生成一个main.js代码文件,整体的打包环境, 是开发环境
生产环境 webpack ./src/index.js -o ./build --mode=production, webpack会以 ./src/index.js 为入口文件开始打包,打包后输出到 ./build 文件夹中生成一个main.js代码文件,整体的打包环境, 是生产环境

总结

1.webpack 能处理js/json文件, 不能处理css/img等其他资源
2.生产环境和开发环境能将ES6模块化编译成浏览器能识别的模块化
3.生产环境比开发环境多一个压缩js代码的功能
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值