第 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 究竟是什么,初学者晕头转向相关推荐

  1. Webpack 究竟是什么?如何理解Webpack

    本篇文章主要是针对 B站Webpack从原理到实战 的知识梳理,之前写过一些 Webpack 更细节的一些知识,详情见 前端工程化(webpack),里面更详细的介绍了前端工程化.loader的使用, ...

  2. webpack组织模块的原理 - 基础篇

    现在前端用Webpack打包JS和其它文件已经是主流了,加上Node的流行,使得前端的工程方式和后端越来越像.所有的东西都模块化,最后统一编译.Webpack因为版本的不断更新以及各种各样纷繁复杂的配 ...

  3. 什么是webpack?

    目录 一.面向过程的前端开发 二.面向对象的前端开发(代码模块化) 三.使用webpack打包器 四.webpack究竟是什么呢? 一.面向过程的前端开发 首先,让我们来看一段面向过程的前端开发的代码 ...

  4. 深度解析VC中的消息(上)

    消息是指什么?      消息系统对于一个win32程序来说十分重要,它是一个程序运行的动力源泉.一个消息,是系统定义的一个32位的值,他唯一的定义了一个事件,向Windows发出一个通知,告诉应用程 ...

  5. MFC消息处理学习总结

    Windows消息机制概述 http://www.cppblog.com/suiaiguo/archive/2009/07/18/90412.html 消息是指什么?      消息系统对于一个win ...

  6. Windows消息机制详解

    消息是指什么?      消息系统对于一个win32程序来说十分重要,它是一个程序运行的动力源泉.一个消息,是系统定义的一个32位的值,他唯一的定义了一个事件,向 Windows发出一个通知,告诉应用 ...

  7. Windows消息机制详解-6

    消息系统对于一个win32程序来说十分重要,它是一个程序运行的动力源泉.一个消息,是系统定义的一个32位的值,他唯一的定义了一个事件,向 Windows发出一个通知,告诉应用程序某个事情发生了.例如, ...

  8. Windows消息机制详解-2

    消息是指什么?      消息系统对于一个win32程序来说十分重要,它是一个程序运行的动力源泉.一个消息,是系统定义的一个32位的值,他唯一的定义了一个事件,向 Windows发出一个通知,告诉应用 ...

  9. 【转】深入理解Windows消息机制

    转自:https://blog.csdn.net/liulianglin/article/details/14449577 今天我们来学一学Windows消息机制,我们知道在传统的C语音程序中,当我们 ...

最新文章

  1. 【Linux 操作系统】阿里云服务器 操作实战 部署C语言开发环境(vim配置,gcc) 部署J2EE网站(jdk,tomcat)
  2. maven依赖包下载地址
  3. Sobel边缘检测算法verilog实现及仿真
  4. 《金色梦乡》金句摘抄(五)
  5. 计算机网络数据链路层检错编码 --- 循环冗余码CRC
  6. Tomcat运行流程
  7. 从内容/用户画像到如何做算法研发
  8. JAVA查电话归属地
  9. iphone或者ipad上安装自己打包的ipa文件
  10. 我的世界服务器末地文件在哪,我的世界:找不到末地城怎么办?巧用2个操作,就能瞬间找到!...
  11. python svg转png_如何使用Python3实现svg转png与pdf(附转换源代码)
  12. 如何在应用中打开系统播放器
  13. InnoDB的“无用”知识
  14. 【jQuery】基础知识梳理笔记
  15. containsKey方法——判断是否包含指定的键名
  16. 阿里云天池大赛赛题(机器学习)——O2O优惠券预测(完整代码)
  17. 手机端页面的自适应设计的开发思路
  18. 在线教育项目技术笔记2
  19. Gbps Mbps Bps bps的进制转换
  20. 【vivado IP核】第4篇:ILA使用介绍

热门文章

  1. 浅谈对C#-lock()的理解
  2. 【C++】C++操作jsoncpp(写、读、解析)+jsoncpp从0到1配置步骤
  3. 一次生产环境P0级事故,整个项目组被扣了绩效......
  4. oracle char转存date,Oracle中char到Date和Number的转换
  5. Win10系统怎么使用U盘重装(图文并茂)
  6. pageable设置size_SpringBoot分页Pageable 自定义配置最大size
  7. ViewModel 的基本用法
  8. el-select添加icon阿里巴巴图标以及动态添加到value值 、icon图标颜色更改
  9. 安装VScode(从官网)
  10. 关于kali Linux安装中文输入法的巨坑,比如装个输入法就进不去图形化系统(萌新必看,欧皇算了)