为什么要使用 webpack| 学习笔记

简介: 快速学习为什么要使用 webpack

开发者学堂课程前端自动化构建工具 Webpack为什么要使用 webpack】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/587/detail/8209


为什么要使用 webpack


目录

一、在网页中会引用哪些常见的静态资源?

二、网页中引入的静态资源多了以后有什么问题?

三、如何解决上述两个问题

四、什么是webpack?

五、如何完美实现上述的2种解决方案

 

一、在网页中会引用哪些常见的静态资源?

开始 webpack 的学习

JS

还有.js .jsx .coffee .ts ( TypeScriptC#语言)

coffee  TypeScript都是中间语言用

coffee  TypeScript可以写出类似于JS的代码但是不能直接在预览器运行

如果想运行需要有编译器把coffee  TypeScript这种语言编译成JS然后才能正常运行

.coffee .ts ( TypeScript)都是JS其中的一种需要编译才能正常运行

CSS

.css .less例如html{

font-size:12px;

p{

color:red;

.sass .scss 例如body

.sass 基本没有太大用处

再写CSS的文件时要以.scss作为文件的后缀名字

.sass .scss 的不同

.sass 没有更新之前

body

color:red

font-size: 12px

更新.scss之后的用法和.less的用法基本一样

html{

font-size:12px;

pl

colorred;

}

现在的 .less .scss用法差不多只是语法不同

可以看看sass的官网,看看语法

color:red

font-size: 12px

Images

常见图片后缀名.jpg .png .gif .bmp .svg

字体文件( Fonts )

.svg .ttf .eot .woff .woff2

模板文件

Moudle文件.ejs例如: html

head lbodydiv

.jade .vue【这是在webpack中定义组件的方式,推荐这么用】

.jade不好用

正常是

而用.jade

html

Head

Body

div

即将学习的 .vue

webpack结合.vue文件每一个文件都是一个图片,更容易理解图片的开发后续会讲.vue

二、网页中引入的静态资源多了以后有什么问题?

1.网页加载速度慢,因为要发起很多的二次请求;

一个网页想展现出来第一步输入urd 接下来预览器主动去请服务器去拿页面

服务器处理完毕之后把页面的 htlm 代码访问给预览器

所以这个时候只能有 htlm 的代码

发出二次请求又一个标签再发出一个请求又一个样式标签再发出一个请求图片也是这样一个方式

在整个个过程中一个网页真正想要显示出来,不止发出一次请求有很多的步骤,就会发出很多二次请求,网速慢网页加载速度就慢

再点发表文章的时候,点的时候会出来相应的菜单,出来的菜单就属于 js 行为,如果想正常的生效就要引用,但是还不可以

因为引用需要 jyquire 所以在引入之前需要导入 jyquire

所以在网页中要处理每个包和每个包的依赖关系

2.要处理错综复杂的依赖关系

 

三、如何解决上述两个问题

对于 JS CSS 处理方法如下:

合并、压缩、精灵图、图片的 Base64 编码

图片是默认有ssc属性指向资源

现在可以把ssc属性不指向真正的地址让其指向 Base64 编码一个字符串

这样会使htlm代码一起下来客户端

合并 JS CSS压缩 Images 图片真正的地址指向一个 Base64 编码

这样图片就会随着htlm代码一样在第一请求的时候就会拿到代码,避免二次请求,相对于精灵图来说图片的 Base64编码更佳的极致,精灵图至少发一次请求,Base64编码只发一次请求

但是图片的 Base64 编码不适合所有图片只适合一些小的图片

2.可以使用之前学过的 requireJS、也可以使用 webpack 可以解决各个包之间的复杂依赖关系;

 

四、什么是 webpack?

webpack 是前端的一个项目构建工具,它是基于 Node.js 开发出来的一个前端工具;

没有 Node.js 就不能安装 webpack 这是其中的特点

 

五、如何完美实现上述的2种解决方案

1.使用 Gulp,是基于 task 任务;

2使用 Webpack ,是基于整个项目进行构建;

如果项目是地球,Gulp 就是珠穆朗玛峰

在北京是看不到珠穆朗玛峰,只能辐射周边的区域

如果建一个 task 任务,就相当于珠穆朗玛峰只能处理周边的区域

处理其他的就是要新建任务关联起来

如果一个项目非常的大用Gulp构建需要建很多的 Gulp 小任务

这些小任务就相当于珠穆朗玛峰,在地球上这么多珠穆朗玛峰也能把地球构建起来

优点:小巧,灵活,方便。

基于项目的构建就力不从心。

Webpack 不是地球上的珠穆朗玛峰是卫星,所以 webpack 是基于项目构建的,站在更宏观的角度对待项目,这样会很方便的构建整个项目

各自的出发点不同

Webpack 是整个项目的角度去考虑问题

Gulp 是站在小小的工程点去考虑

没有谁优谁劣只有更适合做什么项目

借助于webpack这个前端自动化构建工具,可以完美实现资源的合并、打包、压缩、混淆等诸多功能。根据官网的图片介绍 webpack 打包的过程

打开 webpack 官网

看一看入门的 webpack

相同的 js 合并在一起

解决依赖关系

减少了不必要的网络请求

提高网络使用效率

经过千辛万苦进入了 webpack

这是在讲用中间的方块可以进行构建

把一个项目拆分成许多的小模块相互间有关系而且这个方块还会动

bundle your styles

bundle your assets 这些都可以进行打包

左侧可以想象成未打包的项目结构

这里有JS相互依赖的关系比较复杂,还有一些关于图片,左侧的关系非常多

经过 webpack 的处理基本上没有错通复杂的依赖关系数量也变少了

把相同的 JS,压缩表合在一起

首先帮助解决依赖关系,其次减少了不必要的网络请求提高效率

 

如图:

image.png

相关文章
|
5月前
|
JSON 监控 测试技术
《Webpack5 核心原理与应用实践》学习笔记-> 提升插件健壮性
《Webpack5 核心原理与应用实践》学习笔记-> 提升插件健壮性
54 0
|
5月前
|
缓存 前端开发 API
《Webpack5 核心原理与应用实践》学习笔记-> webpack插件开发基础
《Webpack5 核心原理与应用实践》学习笔记-> webpack插件开发基础
68 0
|
5月前
|
前端开发 JavaScript 测试技术
《Webpack5 核心原理与应用实践》学习笔记-> webpack的loader运行与调试
《Webpack5 核心原理与应用实践》学习笔记-> webpack的loader运行与调试
37 0
|
5月前
|
存储 缓存 JavaScript
《Webpack5 核心原理与应用实践》学习笔记-> webpack的loader开发技巧
《Webpack5 核心原理与应用实践》学习笔记-> webpack的loader开发技巧
45 1
|
5月前
|
缓存 监控 JavaScript
《Webpack5 核心原理与应用实践》学习笔记-> webpack极致性能优化
《Webpack5 核心原理与应用实践》学习笔记-> webpack极致性能优化
32 1
|
5月前
|
前端开发 JavaScript
《Webpack5 核心原理与应用实践》学习笔记-> webpack代码压缩
《Webpack5 核心原理与应用实践》学习笔记-> webpack代码压缩
48 0
|
5月前
|
监控 IDE 开发工具
《Webpack5 核心原理与应用实践》学习笔记-> webpack性能优化技巧
《Webpack5 核心原理与应用实践》学习笔记-> webpack性能优化技巧
68 0
|
5月前
|
JavaScript 前端开发 API
《Webpack5 核心原理与应用实践》学习笔记-> webpack并行构建
《Webpack5 核心原理与应用实践》学习笔记-> webpack并行构建
74 0
|
5月前
|
前端开发 测试技术
《Webpack5 核心原理与应用实践》学习笔记-> webpack核心配置结构
《Webpack5 核心原理与应用实践》学习笔记-> webpack核心配置结构
59 1
|
5月前
|
JavaScript 前端开发 Windows
《Webpack5 核心原理与应用实践》学习笔记-> 构建Electron
《Webpack5 核心原理与应用实践》学习笔记-> 构建Electron
37 1