webpack 究竟是什么,初学者晕头转向
第 9 阶段:搞懂、搞透前端构建第 1 天
对于前端新手来说,不能理解为啥前端要使用 webpack 进行打包。曾经,刚入门前端的时候我也有这个疑问。今天我来帮大家重新认识一下 webpack。
如果在很久以前,纯 HTML + CSS + JavaScript 开发,不需要打包工具,直接把写好的 HTML 丢到浏览器中,浏览器就会乖乖地给你显示出一个网页。而今天,时代变了,前端人开始做更多的尝试:
1、前端人不再用 css,而是用 Less、Sass、Stylus 这样的预处理语言;
2、前端人不再通过 JavaScript 「显式地」修改 DOM,他们开始使用各种框架,比如 Vue,React;
3、前端人开始尝试语言的新特性,比如 ES6、ES7,现在流行起来使用 TypeScript,可是这些新特性并不能够适用于所有的浏览器;
4、前端人为了让代码体积更小,他们开始对 CSS、JavaScript、HTML、图片等进行压缩处理;
5、项目越来越大,前端人开始追求模块化开发;
......
慢慢地,前端人为了使用更多的特性,每个特性都需要一个工具来处理,那要有多少工具呀!那为何不开发一个管理这些工具的工具呢?此时 webpack 出现了(当然在 webpack 出现之前经历了很多其它类似的工具),在我看来,它就是这样一个「工具集」,聚集了非常多的小工具。
webpack 说白了就是能够让一件事物从一种形态转变为另一种形态,就如下面的“小人人”一样,由三个小人最终转换成了一个大人:
从代码的角度来说,webpack 是能够把一种代码转换成另一种浏览器能够识别的代码,图中 a.js 引用了 b.js 和 c.js 最终经过 webpack 处理后变成了 index.js。通俗地讲,程序员写的代码文件如同鱼塘里的鱼,有金鱼、鲤鱼、草鱼等,webpack 相当于一个养殖员,等鱼儿长大后,他要对这些鱼进行处理,金鱼要卖到城市了,鲤鱼要卖到农村,草鱼留着自己吃。
市面上的小工具太多了,webpack 如何能够让这些小工具发挥它该有的作用呢?靠的是 loader 和 plugin,loader 相当于一个语言的翻译官,比如可以把 less 翻译成 css,把 TypeScript 翻译成 js;plugin 可以监听 webpack 在打包过程中发出的事件,比如 webpack 处理 suyan.js 这个文件时,会发出事件,plugin 可以接收到这个事件,对 suyan.js 这个文件进行处理。
webpack 在打包的时候,需要通过 webpack.config.js 这个文件告诉它,打包先从哪个文件开始,比如先从 index.js 文件开始,index.js 文件又引用了 a.js 和 b.js 文件,那么 webpack 在处理的时候会把 index.js 文件合并到一个文件中。最终需要一个 output(出口)告诉 webpack 把最终生成的文件要放到哪个地方。
总的来说,webpack 就是一个前端打包工具,它拥有非常多的小工具,可以把代码从开发模式变成线上模式,最终交给浏览器渲染。
本节内容从宏观的角度分析了 webpack 是什么,希望你对 webpack 有一个整体的认识。
欢迎打卡留言,打卡主题(一起讨论一起学):
1、本文表述了在我眼中的 webpack,那么在你眼中的 webpack 是什么,表达一下你的观点;
2、挑战一下,用一句话说明什么是 loader,什么是 plugin;
大家加油!
推荐阅读:
第 9 阶段:每位前端人都需要搞懂、搞透前端构建
webpack 究竟是什么,初学者晕头转向相关推荐
- Webpack 究竟是什么?如何理解Webpack
本篇文章主要是针对 B站Webpack从原理到实战 的知识梳理,之前写过一些 Webpack 更细节的一些知识,详情见 前端工程化(webpack),里面更详细的介绍了前端工程化.loader的使用, ...
- webpack组织模块的原理 - 基础篇
现在前端用Webpack打包JS和其它文件已经是主流了,加上Node的流行,使得前端的工程方式和后端越来越像.所有的东西都模块化,最后统一编译.Webpack因为版本的不断更新以及各种各样纷繁复杂的配 ...
- 什么是webpack?
目录 一.面向过程的前端开发 二.面向对象的前端开发(代码模块化) 三.使用webpack打包器 四.webpack究竟是什么呢? 一.面向过程的前端开发 首先,让我们来看一段面向过程的前端开发的代码 ...
- 深度解析VC中的消息(上)
消息是指什么? 消息系统对于一个win32程序来说十分重要,它是一个程序运行的动力源泉.一个消息,是系统定义的一个32位的值,他唯一的定义了一个事件,向Windows发出一个通知,告诉应用程 ...
- MFC消息处理学习总结
Windows消息机制概述 http://www.cppblog.com/suiaiguo/archive/2009/07/18/90412.html 消息是指什么? 消息系统对于一个win ...
- Windows消息机制详解
消息是指什么? 消息系统对于一个win32程序来说十分重要,它是一个程序运行的动力源泉.一个消息,是系统定义的一个32位的值,他唯一的定义了一个事件,向 Windows发出一个通知,告诉应用 ...
- Windows消息机制详解-6
消息系统对于一个win32程序来说十分重要,它是一个程序运行的动力源泉.一个消息,是系统定义的一个32位的值,他唯一的定义了一个事件,向 Windows发出一个通知,告诉应用程序某个事情发生了.例如, ...
- Windows消息机制详解-2
消息是指什么? 消息系统对于一个win32程序来说十分重要,它是一个程序运行的动力源泉.一个消息,是系统定义的一个32位的值,他唯一的定义了一个事件,向 Windows发出一个通知,告诉应用 ...
- 【转】深入理解Windows消息机制
转自:https://blog.csdn.net/liulianglin/article/details/14449577 今天我们来学一学Windows消息机制,我们知道在传统的C语音程序中,当我们 ...
最新文章
- 【Linux 操作系统】阿里云服务器 操作实战 部署C语言开发环境(vim配置,gcc) 部署J2EE网站(jdk,tomcat)
- maven依赖包下载地址
- Sobel边缘检测算法verilog实现及仿真
- 《金色梦乡》金句摘抄(五)
- 计算机网络数据链路层检错编码 --- 循环冗余码CRC
- Tomcat运行流程
- 从内容/用户画像到如何做算法研发
- JAVA查电话归属地
- iphone或者ipad上安装自己打包的ipa文件
- 我的世界服务器末地文件在哪,我的世界:找不到末地城怎么办?巧用2个操作,就能瞬间找到!...
- python svg转png_如何使用Python3实现svg转png与pdf(附转换源代码)
- 如何在应用中打开系统播放器
- InnoDB的“无用”知识
- 【jQuery】基础知识梳理笔记
- containsKey方法——判断是否包含指定的键名
- 阿里云天池大赛赛题(机器学习)——O2O优惠券预测(完整代码)
- 手机端页面的自适应设计的开发思路
- 在线教育项目技术笔记2
- Gbps Mbps Bps bps的进制转换
- 【vivado IP核】第4篇:ILA使用介绍
热门文章
- 浅谈对C#-lock()的理解
- 【C++】C++操作jsoncpp(写、读、解析)+jsoncpp从0到1配置步骤
- 一次生产环境P0级事故,整个项目组被扣了绩效......
- oracle char转存date,Oracle中char到Date和Number的转换
- Win10系统怎么使用U盘重装(图文并茂)
- pageable设置size_SpringBoot分页Pageable 自定义配置最大size
- ViewModel 的基本用法
- el-select添加icon阿里巴巴图标以及动态添加到value值 、icon图标颜色更改
- 安装VScode(从官网)
- 关于kali Linux安装中文输入法的巨坑,比如装个输入法就进不去图形化系统(萌新必看,欧皇算了)