当前位置: 首页 > article >正文

webpack加载器、demo和核心工作原理

webpack的核心特性

1.模块打包工具:它本身可以解决我们js的代码问题,我们可以通过webpack把零散的模块代码打包到同一个js文件里面

2.模块加载器(loader):对于代码中有兼容的代码,我们可以在打包的过程中通过模块加载器进行编译转换

3.代码拆分的能力 :把代码可以按照我们的需要打包,我们可以把应用加载过程中初次运行的所必须的模块都打包在一起,其他的模块我们可以单独存放,等实际中需要用到那个模块,我们再去异步加载这个模块,从而实现增量加载或者是渐进式加载,这样的话我们就不用担心文件太大/太碎这两个极端的问题。

4.支持在js中以模块化的方式去载入任意类型的资源

打包工具解决的事前端整体的模块化,不是指JavaScript的模块化

1.快速上手步骤

yarn init --yes
yarn add webpack webpack-cli --dev 安装开发依赖

yarn webpack --version可以看到webpack版本,就可以通过它打包src下面的js代码了
yarn webpack 一般情况下,会从src下面的index.js开始打包,打包完就会出现dist/main.js,里面存放的就是打包完之后的代码

webpack的配置文件:webpack.config.js

2.webpack的工作模式:

  1. 生产模式下,自动优化打包生产结果
  2. 开发模式下,自动优化打包速度,添加一些调试过程中的辅助
  3. none模式下,运行最原始的打包,不做任何额外的处理

3.webpack的资源模块加载

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

4.webpack打包结果运行原理

1.资源模块加载
(1)处理css文件:需要配置适当的加载器loader来处理文件,webpack内部只能处理js

yarn add css-loader
yarn add style-loader:就是把css-loader转换之后的结果通过style标签追加到页面上,所以还需要安装style-loader,同时还要在webpack.config.js文件的rules里加上

demo:
入口文件是main.css
在这里插入图片描述
在这里插入图片描述
我们运行项目就可以看到我们的样式显示了出来

(2)webpack导入资源模块

demo:入口文件 是main.js
在这里插入图片描述
main.js:
在这里插入图片描述
main.css
在这里插入图片描述
heading.js
在这里插入图片描述
heading.css
在这里插入图片描述
运行出来结果:
在这里插入图片描述
我们会发现设置的两个css文件内容都生效了

(3)文件资源加载器(图片)

yarn add file-loader

在这里插入图片描述
编译完之后我们能看到在dist目录下会出现一张很长名字的图片,记得还要写上publicPath
在这里插入图片描述
Data URLs与url-loader:

yarn add url-loader
改一下webpack.config文件,会发现dist目录下就没有图片了
在这里插入图片描述

项目中的小文件通过data urls,减少请求次数

大文件就使用file-loader,单独存放
在这里插入图片描述

5.webpack常用加载器分类

1.编译转换类 转换成js代码(css-loader)

2.文件操作类:把我们加载到的资源模块拷贝到输出的目录,同时又将这个文件的访问路径向外导出(file-loader)

3.代码检查类:对于代码质量检查的加载器(eslint-loader)

6.webpack与ES2015

一些ES6新特性其实并不能被打包转换,我们需要babel-loader

yarn add babel-loader @babel/core @babel/preset-env --dev

我们需要为babel-loader配置他所需要的插件,这个集合里面包含了全部的ES最新特性
在这里插入图片描述

7.webpack加载资源的方式

在这里插入图片描述

8.webpack核心工作原理:

在我们的项目当中,一般都会散落着各种各样的代码及资源文件。那webpack会根据我们的配置找到其中的一个文件作为打包的入口。那一般情况下,这个文件都会是一个JavaScript的文件。

然后它会去顺着我们入口文件当中的代码,根据代码中出现的import或者像require之类的语句,然后解析推断出来这个文件所依赖的资源模块。然后分别去解析每个资源模块对应的依赖,那最后就形成了整个项目中所有用到文件之间的一个依赖关系的一个依赖树。

有了这个依赖关系树过后,webpack会递归这个依赖树,然后找到每个节点所对应的资源文件。最后再根据我们配置文件当中的rules属性去找到这个模块所对应的加载器,然后交给对应的加载器去加载这个模块。

那最后会将加载到的结果放入到bounder.js,也就是我们的打包结果当中。从而去实现我们整个项目的打包。那整个过程当中loader的机制其实起了很重要的一个作用,因为如果没有loader的话,它就没有办法去实现各种各样资源文件的加载。


http://www.kler.cn/a/291895.html

相关文章:

  • WEB服务器实现(药品商超)
  • LeetCode题解:18.四数之和【Python题解超详细】,三数之和 vs. 四数之和
  • 人工智能训练师 综合测试题库一
  • 什么是SSL VPN?其中的协议结构是怎样的?
  • Web导出Excel表格
  • git创建远程仓库,以gitee码云为例GitHub同理
  • 一个专门解决信创加密的方案:信创沙箱
  • 【代码随想录训练营第42期 Day46打卡 - 回文问题 - LeetCode 647. 回文子串 516.最长回文子序列
  • AI短剧时代来临,用ai生成短剧的工具?AI文字生成短视频工具系统搭建开发,AI前景趋势怎么样?
  • HTTP和HTTPS的区别?哪一个更适合你的网站?
  • 快速理解Hashtable与HashMap的区别(超简单)
  • 基于udp的socket网络编程
  • TypeScript关键词Parameters和ReturnType
  • Spring Coud Spring Clou Alibaba
  • dp练习【4】
  • HarmonyOS 延迟加载(lazy import)
  • 利用智能外呼机器人,重塑营销版图
  • QML学习二:Qt启用qml文件实时预览编辑,以及打印日志到控制台
  • 内核链表及使用
  • 使用matlab的热门问题
  • 5.1.数据结构-c/c++二叉树详解(上篇)(遍历,几种二叉树)
  • 【Spring Boot 3】【Web】全局异常处理
  • 【mac】brew 更新
  • psql常见报错解决
  • 探究 Eureka 在 Spring Boot 中的配置注入与统一管理机制(下)——第三节
  • wordpress发送邮件的方法?怎么配置功能?