快速上手Webpack打包指南:用简单的步骤掌握Webpack的使用技巧

news2024/11/28 12:37:07

目录

  • 概念:
    • 1. webpack 打包简介
      • 1.0 多个 JS 文件打包:
      • 1.1 webpack 数组形式
      • 1.2 webpack 对象形式
  • 总结

Webpack的打包过程可以总结为以下几个步骤:

  • 1.入口点配置:在Webpack的配置文件中,我们需要指定一个或多个入口点(entry points),这些入口点是我们应用程序的起点,Webpack会从这些入口点开始分析和构建依赖关系。
  • 2.模块解析:Webpack会根据入口点的依赖关系图,递归地解析所有的模块。在解析过程中,Webpack会根据配置文件中的规则,识别并处理不同类型的模块,例如JavaScript、CSS、图片等。
  • 3.加载器处理:对于非JavaScript类型的模块,Webpack会使用加载器(loader)进行处理。加载器可以将这些模块转换成JavaScript代码,或者将其转换成其他类型的静态资源文件。加载器可以链式调用,以便进行多个转换操作。
  • 4.依赖图构建:在模块解析和加载器处理完成后,Webpack会根据模块之间的依赖关系,构建一个依赖图(dependency graph)。这个依赖图描述了模块之间的引用关系,以及它们的依赖关系。
  • 5打包输出:最后,Webpack会根据依赖图生成一个或多个打包输出文件。这些输出文件可以是JavaScript代码、CSS样式表、图片等。Webpack还可以通过插件(plugins)进行额外的处理,例如代码压缩、文件合并等。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/f44ace2601ad412c8a76700b69bc0895.png#pic_center)
  • 概念:

    webpack 是 JavaScript 应用程序的模块打包器,可以把开发中的所有资源(图片、js文件、css文 件等)都看成模块,通过loader(加载器)和 plugins (插件)对资源进行处理,打包成符合生产环境 部署的前端资源。所有的资源都是通过 JavaScript 渲染出来的。 如果一个页面大部分是script标签构成,80%以上是 webpack 打包。

    地址:http://cls.cn/telegraph
    在这里插入图片描述

    1. webpack 打包简介

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

    1.0 多个 JS 文件打包:

    如果模块比较多,就会将模块打包成JS文件, 然后定义一个全局变量 window[“webpackJsonp”] =[ ] ,它的作用是存储需要动态导入的模块,然后重写 window[“webpackJsonp”] 数组的 push( ) 方法为webpackJsonpCallback( ) ,也就是说window[“webpackJsonp”].push( ) 其实执行的是webpackJsonpCallback( ) window[“webpackJsonp”].push( ) 接收三个参数,第一个参数是模块的ID,第二个参数是 一个数组或者对象,里面定义大量的函数,第三个参数是要调用的函数(可选)
    在这里插入图片描述

    1.1 webpack 数组形式

  • 给需要处理业务的模块进行打包,通过下标取值。
  • !function(e) {
    var t = {};
    // 加载器 所有的模块都是从这个函数加载 执行
    function n(r) {
    if (t[r])
    return t[r].exports;
    var o = t[r] = {
    i: r,
    l: !1,
    exports: {}
    };
    1.2 webpack 对象形式
    给需要处理业务的模块进行打包,通过 key 取值。
    return e[r].call(o.exports, o, o.exports, n),
    o.l = !0,
    o.exports
    }
    n(0)
    }
    ([
    function () {
    console.log('123456')
    },
    function () {
    console.log('模块2')
    },
    ])
    

    1.2 webpack 对象形式

  • 给需要处理业务的模块进行打包,通过 key 取值
  • !function(e) {
    var t = {};
    // 所有的模块 都是从这个加载器 执行的 分发器
    function n(r) {
    if (t[r])
    return t[r].exports;
    var o = t[r] = {
    i: r,
    l: !1,
    exports: {}
    };
    return e[r].call(o.exports, o, o.exports, n),
    o.l = !0,
    o.exports
    }
    n('xialuo') // 对象 根据KEY 找模块
    }({
    0: function () {
    console.log('我是模块1 负责加密')
    },
    'xialuo': function () {
    console.log('我是模块2 负责解密')
    },
    2: function () {
    console.log('我是模块3 负责爬数据')
    }
    }
    );
    

    总结

    总的来说,Webpack的打包过程是一个将多个模块合并成一个或多个静态资源文件的过程。通过合理配置Webpack的入口点、加载器和插件,我们可以实现代码的模块化、资源的优化和性能的提升。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/793375.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Android Studio 代码模板插件实现

Android Studio 代码模板插件 背景 可以跳过背景和简述,从模板插件实现开始看. 开发新页面时,原先需要写一堆模板代码。比如用Databinding写列表结构的页面,需要手写以下文件: XxActivity.ktXxFragment.ktXxViewModel.ktXxListA…

从零开始学习CTF

前言 CTF简介 中文一般译作夺旗赛,在网络安全领域中指的是网络安全技术人员之间进行技术竞技的一种比赛形式 CTF起源于1996年DEFCON全球黑客大会,以代替之前黑客们通过互相发起真实攻击进行技术比拼的方式 竞赛模式 解题模式: 在解题模式…

如何引导客户进行自助服务,提高员工工作效率?

搭建帮助中心是大多数企业都在尝试做的事情,它的重要性对于企业来说不言而喻。现在对于企业来说,搭建帮助中心或许不是什么难事,但是关于帮助中心,有几个问题需要思考清楚,才能让其发挥最大的价值。 一、如何让用户养成…

Android手机app页面布局方法

app页面布局方法 1. FrameLayout(帧布局) (1) FrameLayout是最简单的布局了。所有放在布局里的控件,都按照层次堆叠在屏幕的左上角。后加进来的控件覆盖前面的控件。 2. LinearLayout(线性布局) (1) LinearLayout按…

第九章 多组学简介

第一节 什么是多组学 多组学encode计划是一个大型国际合作计划,旨在研究各种生物体系中的功能元件和基因组功能。该计划的目标是建立一个全面的生物信息学数据库,包括人类和其他生物的基因组和表观基因组、转录组、蛋白质组、代谢组和表型组等。 多组学…

高等数学❤️第一章~第三节~极限❤️间断点及其分类

【精讲】高等数学中的间断点及其分类 博主:命运之光的主页 专栏:高等数学 目录 【精讲】高等数学中的间断点及其分类 导言 一、间断点的概念 二、间断点的分类 必需记忆知识点 知识点1 知识点2 例题(用于熟悉高等数学中的间断点及其…

dp算法篇Day11

“哎呀,哎呀,流云开一朵,哟诶嘿哟,哟诶嘿哟~” 51、目标和 (1) 题目解析 包括之后的一些题目,乍一眼看可能你不会发现它与dp问题有何相连,可是按照按照题目又难以想出 思路、写出代码来。因此,…

PostgreSQL——编码“GBK“的字符0x0xa8 0x27在编码“UTF8“没有相对应值`

问题:编码"GBK"的字符0x0xa8 0x27在编码"UTF8"没有相对应值 原因:客户端编码与服务端编码不一致 select name,setting,context from pg_settings where name like %encoding%; 解决方案:修改客户端编码方式和服务端一致…

Jmeter接口测试工具的一些使用小技巧

如何使用英文界面的JMeter Jmeter启动时会自动判断操作系统的locale 并选择合适的语言启动,所以,我们启动jmeter后,其会出现一个倍感亲切的中文界面。但由于jmeter本身的汉化工作做得不好,你会看到有未被汉化的选项及元件的参数。…

脸书营销,跨境电商不能忽视的营销新趋势

Facebook营销就是在Facebook上通过有针对性的广告、商业品牌群组等地方推广您的业务。随着社交媒体继续成为我们日常生活中不可或缺的一部分,Facebook产品在社交商务方面的扩展使该平台成为吸引新客户的重要渠道。 您应该注意到,很多企业都通过Facebook…

3个能免费使用的AI绘画软件,效果精致

通过AI绘画软件,设计小白也能轻松创作出精美的图画创作。本文将为大家介绍3款能免费使用的AI绘画软件,它们能帮助设计小白或者经验丰富的设计师快速设计出精美的图画作品,一起来看看吧! 1、即时灵感 即时灵感是国产的AI绘画软件…

【复习45-51题】【每天40分钟,我们一起用50天刷完 (剑指Offer)】第三十七天 37/50

专注 效率 记忆 预习 笔记 复习 做题 欢迎观看我的博客,如有问题交流,欢迎评论区留言,一定尽快回复!(大家可以去看我的专栏,是所有文章的目录)   文章字体风格: 红色文字表示&#…

VRRP技术和浮动路由(第二十六课)

VRRP技术和浮动路由(第二十六课) 一、浮动路由 1、浮动路由概述 1)浮动路由是什么 -浮动路由又称为路由备份,由两条或多条链路组成浮动路由 -浮动路由指配置两条静态路由,这两条静态路由的目的地址相同,但是下一跳地址不同两…

CPM-Bee-5B微调实记

CPM-Bee-5B微调实记 1. 准备工作 (1)用PyCharm打开CPM-Bee文件夹。 (2)设置成自己的环境:nlp (3)将src文件夹在终端打开 (4)激活自己的环境:nlp 2. 准备…

web自动化测试进阶篇05 ——— 界面交互场景测试

😏作者简介:博主是一位测试管理者,同时也是一名对外企业兼职讲师。 📡主页地址:【Austin_zhai】 🙆目的与景愿:旨在于能帮助更多的测试行业人员提升软硬技能,分享行业相关最新信息。…

数据结构day6(2023.7.20)

一、Xmind整理: 二、课上练习: 练习1:个栈的入栈次序ABCDE,则栈的不可能的输出序列是(D) A.ABCDE B.DECBA C.EDCBA D.DCEAB 栈的特点是先进后出,后进先出&#xf…

Electron 系统通知 Notification 实践指南

系统通知是桌面应用的常见功能,用于给用户发送提醒(刷下存在感 🙂),还能帮定点击事件以便后续的操作。 Electron 自带通知模块,下方代码是一个简单的示例 const { Notification } require(electron)cons…

Postman学习之常用断言

什么是断言? 断言——就是结果中的特定属性或值与预期做对比,如果一致,则用例通过,如果不一致,断言失败,用例失败。断言,是一个完整测试用例所不可或缺的一部分,没有断言的测试用例…

SZ:zip/内部函数外部函数/VGG模型/nn

zip: -r recursion-d delete-m move (move隐藏的意思是,原文件会消失)想增加文件,不需要加参数什么参数也没有。如果zip压缩文件不存在,执行以上命令将会创建一个新的zip文件并将指定的文件添加进去。如果zip压缩文件…

SpringBoot+Jpa+Thymeleaf实现增删改查

SpringBootJpaThymeleaf实现增删改查 这篇文章介绍如何使用 Jpa 和 Thymeleaf 做一个增删改查的示例。 1、pom依赖 pom 包里面添加Jpa 和 Thymeleaf 的相关包引用 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.…