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

Webpack 懒加载

文章目录

  • 前言
  • 懒加载
  • 示例
  • 后言

前言

hello world欢迎来到前端的新世界


😜当前文章系列专栏:webpack
🐱‍👓博主在前端领域还有很多知识和技术需要掌握,正在不断努力填补技术短板。(如果出现错误,感谢大家指出)🌹
💖感谢大家支持!您的观看就是作者创作的动力

懒加载

懒加载或者按需加载,是一种很好的优化网页或应用的方式。这种方式实际上是先把你的代码在一些逻辑断点处分离开,然后在一些代码块中完成某些操作后,立即引用或即将引用另外一些新的代码块。这样加快了应用的初始加载速度,减轻了它的总体体积,因为某些代码块可能永远不会被加载。

示例

我们在 代码分离 中的例子基础上,进一步做些调整来说明这个概念。那里的代码确实会在脚本运行的时候产生一个分离的代码块 lodash.bundle.js ,在技术概念上“懒加载”它。问题是加载这个包并不需要用户的交互 - 意思是每次加载页面的时候都会请求它。这样做并没有对我们有很多帮助,还会对性能产生负面影响。

我们试试不同的做法。我们增加一个交互,当用户点击按钮的时候用 console 打印一些文字。但是会等到第一次交互的时候再加载那个代码块(print.js)。为此,我们返回到代码分离的例子中,把 lodash 放到主代码块中,重新运行 代码分离 中的代码 final Dynamic Imports example。

project

webpack-demo
|- package.json
|- package-lock.json
|- webpack.config.js
|- /dist
|- /src|- index.js
+ |- print.js
|- /node_modules

src/print.js

console.log('The print.js module has loaded! See the network tab in dev tools...'
);export default () => {console.log('Button Clicked: Here\'s "some text"!');
};

src/index.js

+ import _ from 'lodash';
+
- async function getComponent() {
+ function component() {const element = document.createElement('div');
-   const _ = await import(/* webpackChunkName: "lodash" */ 'lodash');
+   const button = document.createElement('button');
+   const br = document.createElement('br');+   button.innerHTML = 'Click me and look at the console!';element.innerHTML = _.join(['Hello', 'webpack'], ' ');
+   element.appendChild(br);
+   element.appendChild(button);
+
+   // Note that because a network request is involved, some indication
+   // of loading would need to be shown in a production-level site/app.
+   button.onclick = e => import(/* webpackChunkName: "print" */ './print').then(module => {
+     const print = module.default;
+
+     print();
+   });return element;}- getComponent().then(component => {
-   document.body.appendChild(component);
- });
+ document.body.appendChild(component());

Warning
注意当调用 ES6 模块的 import() 方法(引入模块)时,必须指向模块的 .default 值,因为它才是 promise 被处理后返回的实际的 module 对象。

现在运行 webpack 来验证一下我们的懒加载功能:

...Asset       Size  Chunks                    Chunk Names
print.bundle.js  417 bytes       0  [emitted]         print
index.bundle.js     548 kB       1  [emitted]  [big]  indexindex.html  189 bytes          [emitted]
...

后言

创作不易,要是本文章对广大读者有那么一点点帮助 不妨三连支持一下,您的鼓励就是博主创作的动力

相关文章:

Webpack 懒加载

文章目录 前言懒加载示例后言 前言 hello world欢迎来到前端的新世界 😜当前文章系列专栏:webpack 🐱‍👓博主在前端领域还有很多知识和技术需要掌握,正在不断努力填补技术短板。(如果出现错误,感谢大家指出…...

深度遍历DFS(括号生成,二叉树所有路径)

正整数 n 代表生成括号的对数,请设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。 示例 1: 输入:n 3 输出:["((()))","(()())","(())()","()(())","()()(…...

Rational Arithmetic

📑打牌 : da pai ge的个人主页 🌤️个人专栏 : da pai ge的博客专栏 ☁️宝剑锋从磨砺出,梅花香自苦寒来 ☁️有理数运算 实现对两个有理数的…...

文心一言4.0(ERNIE-Bot-4)申请方法及简单调用代码示例

10月17日过后,估计很多人会看到类似的新闻,如图: 我看到这则新闻也是觉得非常感兴趣,于是本着“百闻不如一见”的实事求是的态度检索如何申请,没想到还真找到了ERNIE-Bot-4(俗称:文心一言4.0&a…...

年终好价节买什么好?这些数码好物闭眼入

大家是不是都没听说过好价节?直截了当地说,这其实就是原先的双十二购物狂欢节,只不过给它起了个新名字。不过,今年毕竟是首次改名,因此淘宝年终好价节的各种优惠,仍然是我们值得期待的!作为年前…...

webpack对项目进行优化

对项目进行优化是提高性能和效率的关键,以下是一些实用的Webpack优化技巧: 代码拆分(Code Splitting):将代码拆分为多个小块,按需加载。通过配置splitChunks插件,可以将公共代码提取到单独的文件…...

Python edge-tts库全部声音模型一览表

下面是edge-tts的声音模型,zh-CN为中文语音模型 Name: af-ZA-AdriNeural Gender: Female Name: af-ZA-WillemNeural Gender: Male Name: am-ET-AmehaNeural Gender: Male Name: am-ET-MekdesNeural Gender: Female Name: ar-AE-FatimaNeural Gender: Female N…...

网络编程相关面试题

目录 1.请解释一下什么是TCP协议的三次握手?2.TCP协议使用什么机制确保数据包的顺序和完整性?3.什么是UDP协议?它与TCP协议有什么不同?4.请解释一下什么是IP地址?为什么需要它?5.请解释一下什么是端口&…...

TCP_NODELAY与TCP通信效率

最近做tcp通信速度测试:主要流程如下所示: //client: while() { send data... recv data... //阻塞 }//server: while() { recv data... send data... } 当每次send数据量较小时,速度极慢!而send数据量较大时速度尚可。两者速度…...

ZooKeeper的分布式锁---客户端命令行测试(实操课程)

本系列是zookeeper相关的实操课程,课程测试环环相扣,请按照顺序阅读测试来学习zookeeper。阅读本文之前,请先阅读----​​​​​​zookeeper 单机伪集群搭建简单记录(实操课程系列)。 阅读本文之前,请先阅读…...

工业4.0时代:图像识别驱动制造业智能生产的未来

在数字化革命的大潮中,工业4.0的到来标志着制造业将迎来全新的智能化时代。其中,图像识别技术作为一项核心技术,正引领着制造业实现了前所未有的智能生产。本文将深入探讨工业4.0时代下,图像识别是如何驱动制造业实现智能生产&…...

ROS vscode使用基本配置

1、创建ros工作空间 2、启动 vscode 3、vscode 中编译 ros ctrl shift B 调用编译,选择:catkin_make:build 修改.vscode/tasks.json 文件 4、 创建 ROS 功能包 选定 src ---> create catkin package 依次设置包名、添加依赖 5、C 实现 在功能包的 src 下…...

Android、ESP32、ESP8266的mqtt通信

Android activity_main <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"xmlns:app"http://schemas.android.com/apk/res-auto"xmlns:tools"http:/…...

Hive安装与配置

你需要掌握&#xff1a; 1.Hive的基本安装&#xff1b; 2.Mysql的安装与设置&#xff1b; 3.Hive 的配置。 注意&#xff1a;Hive的安装与配置建立在Hadoop已安装配置好的情况下。 hadopp安装与配置 Hive 的基本安装 从 官网 下载Hive二进制包&#xff0c;下载好放在/op…...

vuejs: 解决浏览器切换页面后setInterval计时器停止执行的问题

setInterval定时器是基于当前页面的&#xff0c;如果切换到其他页面&#xff0c;定时器会被暂停。这是浏览器的一种优化措施&#xff0c;以减少不必要的性能消耗。 如果需要在切换页面后继续执行定时器&#xff0c;可以使用Web Worker&#xff0c;它是在后台运行的程序&#xf…...

基于Web邮箱的邮件系统

题目: 基于web的邮件收发系统设计与实现 摘 要 计算机的应用已经越来越广泛&#xff0c;它从产生到完善已经差不多有50年左右的历史&#xff0c;更新换代速度非常快&#xff0c;在人们生活、工作中都发挥了不可替代的作用&#xff0c;几乎所有行业都离不开它&#xff0c;已经成…...

【Java学习笔记】75 - 算法优化入门 - 马踏棋盘问题

一、意义 1.算法是程序的灵魂&#xff0c;为什么有些程序可以在海量数据计算时&#xff0c;依然保持高速计算? 2.拿老韩实际工作经历来说&#xff0c;在Unix下开发服务器程序&#xff0c;功能是要支持上千万人同时在线&#xff0c;在上线前&#xff0c; 做内测&#xff0c;一…...

第二十章 多线程

20.2创建线程 20.2.1继承Thread类 Thread类是Java.lang包中的一个类&#xff0c;从这个类中实例化的对象代表线程&#xff0c;程序员启动一个新线程需要建议Thread实例。 public class ThreadTest extedns Thread{} run方法格式&#xff1a; public void run(){} 20.1让线程循…...

vue2使用npm依赖包导出xlsx文件

1.下载依赖npm i xlsx 2.在根目录utils新建mergeXlxs.js /****/ import { utils, writeFile } from "xlsx";export default function mergeHeader(headers, data, datamerges, defaultTitle) {const ws utils.book_new();utils.sheet_add_aoa(ws, headers);//这里…...

java--多态

1.什么是多态 多态是在继承/实现的情况下的一种现象&#xff0c;表现为&#xff1a;对象多态、行为多态。 2.多态的具体代码体现 编译看左边&#xff0c;运行看右边 3.多态的前提 有继承/实现关系&#xff1b;存在父类引用子类对象&#xff1b;存在方法重写 4.多态的一个注…...

ARM SME指令集:SQCVT与SQRSHR深度解析与应用

1. ARM SME指令集概述在当今处理器架构设计中&#xff0c;向量化计算已成为提升性能的关键技术。作为ARMv9架构的重要扩展&#xff0c;可扩展矩阵扩展&#xff08;Scalable Matrix Extension&#xff0c;SME&#xff09;指令集引入了多项创新特性&#xff0c;其中FEAT_SME2扩展…...

深入Linux内核链表:从of_property_read_bool看设备树属性的组织与查找

深入Linux内核链表&#xff1a;从of_property_read_bool看设备树属性的组织与查找 在Linux内核开发中&#xff0c;设备树&#xff08;Device Tree&#xff09;作为描述硬件配置的标准方式&#xff0c;其高效解析机制一直是内核开发者关注的焦点。当我们调用 of_property_read_…...

Android性能优化深度解析:从理论到实践

在Android开发领域,性能优化是确保应用流畅运行和用户体验的关键。作为一名安卓开发工程师,掌握性能优化技术不仅能提升应用质量,还能在面试和实际工作中脱颖而出。本文将以性能优化为核心领域,深入探讨其理论、工具和实践方法,并提供代码示例和常见面试问题及答案。文章内…...

UE5 CPU瓶颈定位实战:用ProfileCPU精准揪出Game线程卡顿根因

1. 这不是“点开就看”的性能分析&#xff0c;而是UE5里真正能救命的CPU瓶颈定位术在UE5项目做到中后期&#xff0c;你肯定经历过那种“明明没加多少新功能&#xff0c;帧率却从60掉到35&#xff0c;Editor卡得像PPT”的窒息时刻。打开Stat Unit&#xff0c;看到Game线程时间飙…...

ARM Trace Buffer扩展与调试同步机制详解

1. ARM Trace Buffer扩展与调试状态同步机制解析在嵌入式系统和处理器架构设计中&#xff0c;调试与追踪技术是开发人员不可或缺的工具。ARM架构通过Trace Buffer Extension&#xff08;TBE&#xff09;提供了强大的指令级执行流追踪能力&#xff0c;其核心原理是通过专用硬件单…...

ARM SME架构下的浮点外积运算优化实践

1. ARM SME架构与浮点外积运算概述在当代处理器设计中&#xff0c;SIMD&#xff08;单指令多数据&#xff09;架构已成为提升计算性能的关键技术。ARMv9引入的SME&#xff08;Scalable Matrix Extension&#xff09;指令集将这种并行计算能力提升到了矩阵运算层面&#xff0c;特…...

【深度解析】从 Mythos 到 DeepSeek 降价:大模型工程化选型、成本控制与 API 实战

摘要 近期 AI 大模型市场持续加速迭代&#xff1a;Anthropic Mythos 进入部署测试信号增强&#xff0c;OpenAI、Gemini 系列持续升级&#xff0c;DeepSeek 则通过永久降价重塑开发成本结构。本文从工程视角解析模型发布信号、Agentic 系统成本模型&#xff0c;并给出 OpenAI 兼…...

深度解析美国RTP全系列导热工程塑料,革新电子散热新选择

在工程塑料行业高速发展的今天&#xff0c;电子设备散热需求日益成为制约产品性能与可靠性的关键瓶颈。传统散热材料面临导热效率低、机械性能弱、加工适应性差等多重挑战&#xff0c;行业亟待寻找既能满足严苛散热要求&#xff0c;又具备优异综合性能的新一代解决方案。美国RT…...

Nginx基于反向代理的负载均衡

一、引言&#xff1a;从单点到集群&#xff0c;流量分发的艺术当你的应用用户量从几百飙升到几万&#xff0c;单台服务器很快就会成为性能瓶颈&#xff0c;甚至面临宕机风险。此时&#xff0c;最直接有效的解决方案就是横向扩展——部署多台服务器组成集群。但新问题随之而来&a…...

Codeforces Round 1058

【实况】Codeforces Round 1058 (Div. 2)&#xff08;rk3194;perf1423;solve3&#xff09; https://www.bilibili.com/video/BV1Tv4GzwE5r/ 【赛时3/7】Codeforces Round 1058(Div.2)上1000了记录一下 https://www.bilibili.com/video/BV1BC4kzMEoa/ Codeforces Round 1058 (Di…...