Webpack -前言

经过最近几年的爆炸式发展,前端已经绝不再是简简单单的页面开发了,从早期只是配合后端“切图”,到现在已经能够独立驱动整个业务,这背后就需要引入更多的思想、框架和工具。比如:

现阶段的大型应用就要求前端必须要有独立的项目,独立的项目想要有足够的效率就必须进行工程化。

具有复杂数据状态的应用开发过程就必须要有合适的框架,采用数据驱动开发的方式增强可维护性。

复杂项目结构必须进行模块化管理,一来提高部分公共内容的可复用性,二来增强团队并行协作能力。

重复规律性的工作必须采用自动化工具实现,一来提高效率,二来避免人为出错。

这里的大多数问题现如今都有很成熟的解法,这篇的主题就是其中最具有代表性的 Webpack。因为想要在现代化前端开发工作中有足够的开发效率,你一定离不开 Webpack 相关技术栈,不管是对于项目代码的模块化,还是一些规律性的重复工作,甚至是整个前端项目的工程化,Webpack 都能够帮你轻松搞定。

Webpack:提升前端生产力的利器

我个人觉得 Webpack 应该是现代化前端开发的基石,也是目前前端生产力的代名词。

当然在日常工作中,确实有奉行“够用就行”工作态度的开发者,但我认为这是他们还没有意识到这些新技术新方案可能带来的成效。

现在框架的官方推出这种高度集成的 CLI 工具,目的就是降低开发者的使用成本,但是对于一个优秀的开发人员而言,只会使用这种“黑盒工具”是远远不够的,因为这种“黑盒工具”大多数采用的都是通用的配置,而优秀的开发人员应该学会“因地制宜”,根据实际情况更灵活地去使用每一个工具。

我深知这些内容对你日常开发工作中解决问题能力的影响,很多开发者在日常工作中遇到问题不能快速地定位和解决,就是因为缺乏对这种底层或者基础的足够了解。因此,很多时候我会把对 Webpack 这类工具的认知程度,当作辨别开发人员优秀与否的分水岭。

Webpack 与模块化开发

那说到 Webpack,就不得不提模块化开发,因为 Webpack 最早的出发点就是去实践前端方向的模块化开发。想要搞明白 Webpack,就先得搞明白它所要解决的问题,所以我这里先唠叨两句模块化的事情。

模块化,可以说是当下最重要的前端开发范式之一。随着前端应用的日益复杂化,我们的项目已经逐渐膨胀到了不得不花大量时间去管理的程度。而模块化就是一种最主流的项目组织方式,它通过把复杂的代码按照功能划分为不同的模块单独维护,从而提高开发效率、降低维护成本。

但是“模块化”,本身仅仅是一个思想或者说是一个理论,并不包含具体的实现。所以接下来,我们会一起学习如何使用 Webpack 在前端项目中实践模块化思想,以及目前行业中其他的一些优秀方案。

可能你会问:Webpack 不应该是一个构建工具么?怎么还扯上了这么多东西?这也是目前绝大多数前端开发者都会有的疑问。你如果会有这种疑问,一多半还是因为你还不够了解 Webpack,或者所了解的内容还停留在表象层面。毕竟,Webpack 太强大了,强大到很容易让你忽略了它的本质。

Webpack 本质上仍然还是一个模块化打包工具,它通过“万物皆模块”这种设计思想,巧妙地实现了整个前端项目的模块化。在 Webpack 的理念中,前端项目中的任何资源都可以作为一个模块,任何模块都可以经过 Loader 机制的处理,最终再被打包到一起。

Webpack 本身的架构中有两个很核心的特性,分别是 Loader 机制和插件机制。正是因为它的插件机制形成了非常繁荣的生态,所以造就了它现在“无所不能”的现状,所以让 Webpack 慢慢发展成了现在很多前端开发者眼中的构建系统。

如果你现在每天都只是在使用 Vue CLI 或者 create-react-app 这样高度集成的 CLI,面对特殊资源加载、打包过程优化、资源代码分块、Tree-shaking 这样相对复杂的需求无从下手;又或是你初入前端行业,只有一些简单的前端开发经验,都应该好好学习一下 Webpack 以及对前端模块的实践,这对你日后掌握 React 和 Vue.js 这类框架的高级用法非常有帮助。

Webpack 背景介绍:包括模块化所解决的问题、模块化标准的演进过程、ES Modules 标准规范。希望你通过这个模块,能够了解 Webpack 这类工具解决的到底是什么问题。

Webpack 核心特性:包括基本特性、配置方式、工作模式、基本工作原理、Loader 机制、插件机制。希望你学习完这个模块,能够完全掌握 Webpack 的基本使用,理解 Webpack 打包过程和打包结果的工作原理,同时也能够自己开发 Webpack 的 Loader 和插件。

Webpack 高阶内容:包括 Source Map、模块热替换(HMR)机制、Proxy、Webpack Dev Server 等周边技能的使用,以及 Tree-shaking、sideEffects、Code Spliting 等高级特性的实践,再有就是常用优化插件、三种 hash 的最佳实践、打包速度优化,以更于你能更熟练地使用 Webpack 的高级特性,为开发效率添砖加瓦。

其他同类优秀方案:Rollup、Parcel。让你能够了解到一些 Webpack 同类的优秀方案,以及它们设计上的不同,这些都能够让你在工作中应对不同的项目、不同的需求时可以有更多的选择。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值