内容简介:之前写过webpack4系列文章,本次对webpack4进行更再次研究学习
之前写过webpack4系列文章,本次对webpack4进行更再次研究学习
中文网更新慢,建议两个官网配合参考,已官网为主,中文辅助
我们先了解一下webpck的几个核心概念
- Entry(入口)
- Output(出口)
- Loaders(加载器)
- Plugins(插件)
- Mode(模式)
- Browser Compatibility(浏览器兼容性)
截止到目前,webpck4,最高版本是4.32.2,demo以此版本为主
开发环境搭建
目录
初始化,这一步不用赘述
npm init
也可以执行
npm init -y
快速的进行初始化
安装webpck和webpack-cli
webpack-cli是 Webpack 的 CLI (Command-line interface)工具
npm install --save-dev webpack npm install --save-dev webpack-cli
方便演示在demo中添加lodash
npm install --save lodash
lodash是一个一致性、模块化、高性能的 JavaScript 实用 工具 库。方便处理js对象,数组,字符串等等,具体信息参见官网
lodash 官网
lodash中文网较多,以下推荐使用
lodash中文网demo初始化(具体参见 官网 )
webpack-demo |- package.json + |- index.html + |- /src + |- index.js
src/index.js
import _ from 'lodash'; function component() { const element = document.createElement('div'); element.innerHTML = _.join(['Hello', 'webpack'], ' '); return element; } document.body.appendChild(component());
index.html
<!doctype html> <html> <head> <title>Getting Started</title> <meta charset="utf-8"> </head> <body> <script src="./dist/main.js"></script> </body> </html>
webpck4支持零配置
方便开发,我们全局安装npx
npm install -g npx
npx 是一个方便开发者访问node_modules内的命令行的小工具,npx webpack -v 相当于执行了
node ./node_modules/webpack/bin/webpack -v
开始打包
我们可以使用
npx webpack
进行打包
或者也可修改package.json
"scripts": { "test": "echo \"Error: no test specified\" && exit 1", + "build":"webpack" },
添加一个build命令
然后执行npm run build
打开index.html
(evernotecid://61429023-83DF-46B0-A28E-60CE0EBC1934/appyinxiangcom/21417035/ENResource/p180)
页面成功打开
打包成功,生成了一个dist目录,同时携带警告信息
因为没有配置打包模式(mode),默认启用了production模式
关于mode,稍后讨论
我们观察,在package.json的同级目录下生成了一个dist文件夹,dist文件夹下有一个main.js,这是怎么来的?
webpack4既然支持零配置,那么就必然存在默认配置,作为前端,对于webpack的工作就是根据自己的项目需求,更改webpack的这些默认配置
要修改默认配置,毋庸置疑,我们就要添加配置文件
关于配置文件的命名,没有强制要求,但是一般会做如下命名
webpck.xxx.js
例如
webpck.config.js
webpck.common.js
webpck.dev.js
webpck.pro.js
入口(entry)和出口(output)
我们在根目录下创建一个webpack.config.js
entry
关于entry, 中文网 介绍的很详细,下面做简单介绍
入口分单入口和多入口(但是出口只会有一个)
在webpack.config.js中我们使用commonjs语法进行导出
单入口,简写方式如下
module.exports = { entry: "./src/index.js" };
修改package.json
"build":" webpack --config webpack.config.js"
删除dist,执行
npm run build
dist 目录下打包出main.js文件
entry调整
module.exports = { entry: { main: "./src/index.js" } };
删除dist,执行打包
没有什么变化,再次调整,将main改为main1
module.exports = { entry: { main1: "./src/index.js" } };
删除dist,执行打包
dist 目录下打包出main1.js文件
我们得出结论
单入口打包,默认入口名称为main,可以省略,省略后,可以使用字符串来配置入口
出口的输出名就是入口名,关于出口的具体内容稍后讨论
说完了单入口,再看多入口
多入口
多入口支持数组和对象
配置多入口,代码做如下调整
src 下
新建MutiEntryIndex1.js
import _ from "lodash"; function component() { const element = document.createElement("div"); element.innerHTML = _.join(["webpack", "多入口打包文件1"], " "); return element; } document.body.appendChild(component());
新建MutiEntryIndex2.js
import _ from "lodash"; function component() { const element = document.createElement("div"); element.innerHTML = _.join(["webpack", "多入口打包文件2"], " "); return element; } document.body.appendChild(component());
index.html做如下修改
<!-- <script src="./dist/main.js"></script> --> <script src="./dist/MutiEntryIndex1.js"></script> <script src="./dist/MutiEntryIndex2.js"></script>
webpck.config.js
module.exports = { entry: { MutiEntryIndex1:"./src/MutiEntryIndex1.js", MutiEntryIndex2:"./src/MutiEntryIndex2.js", } };
删除dist 目录,执行打包npm run build
dist 下生成两个js文件
MutiEntryIndex1.js
MutiEntryIndex2.js
打开index.html
同样的,多入口支持简写
module.exports = { entry: ["./src/MutiEntryIndex1.js","./src/MutiEntryIndex2.js"]//多入口简写 };
可以发现,简写多入口后,入口文件名没了,
打包后发现dist下生成一个main.js
我们修改index.html,然后引入main.js
浏览器打开index.html
显示不变
这似乎不是一种值得推荐的简写方式,不过没有好与坏,结合自己的需要使用吧
多入口应用场景 参考
- 分离 应用程序(app) 和 第三方库(vendor) 入口;
关于这个问题,有诸多解决方案,webpack4可以通过optimization.splitChunks对此进行优化,后面讨论 -
多页面应用程序;
关于多页面,配合html-webpack-plugin使用,是最佳选择,当然不是必须的
context(上下文)
基础目录,绝对路径,用于从配置中解析入口起点(entry point)和 loader
如果配置了context
则修改entry的配置
const path =require('path') module.exports = { context: path.resolve(__dirname, "src"), entry: "./index.js",//单入口简写 };
效果相同
entry总结
关于entry(入口就介绍到这里)
entry支持单入口,多入口,
支持字符串,数组,对象的方式
entry的默认名为main,如果要修改,使用对象的方式进行调用和配置
以上所述就是小编给大家介绍的《webpack4.x 系列-entry(入口)》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
《Unity3D网络游戏实战(第2版)》
罗培羽 / 机械工业出版社 / 2019-1-1 / 89.00元
详解Socket编程,搭建稳健的网络框架;解决网游中常见的卡顿、频繁掉线等问题;探求适宜的实时同步算法。完整的多人对战游戏案例,揭秘登录注册、游戏大厅、战斗系统等模块的实现细节。 想要制作当今热门的网络游戏,特别是开发手机网络游戏,或者想要到游戏公司求职,都需要深入了解网络游戏的开发技术。本书分为三大部分,揭示网络游戏开发的细节。 第一部分“扎基础”(1-5章) 介绍TCP网络游......一起来看看 《《Unity3D网络游戏实战(第2版)》》 这本书的介绍吧!