vue3中项目优化(Web Worker的使用)

1.Web Worker的作用

本人的理解:js是单线程执行代码,也就是代码需要从上往下执行,而使用Web Worker后相当于分了一条线程出来执行代码,那么两条线程肯定是比一条线程执行的快。

2.新建Web Worker文件

在public文件夹下新建worker.js

说明:名称可以随意,worker.js相当于分装了一个方法,只适用于某个功能或者数据处理,所以可以新建多个worker.js相当于分装了多个用于不同场景的方法。

// worker.js

self.onmessage = function(event) {
  const result = processData(event.data);  // 执行数据处理操作
  console.log("result",result,event);
  postMessage(result); // 将处理后的数据发送回主线程
};

// 执行数据处理操作
function processData(data) {
  // 在这里进行数据处理操作
  let sum = 0;
    for (let i = 0; i < 200000; i++) {
        for (let i = 0; i < 10000; i++) {
            sum += Math.random()
        }
    }
  return '处理结果: ' + data +'/'+ sum;
}

3.引入使用

<template>
    <div>
        <button @click="processData">处理数据</button>
        <div>{{ result }}</div>
    </div>
</template>

<script setup>
import { ref } from "vue";

const result = ref('')
function processData() {
    const worker = new Worker('/public/worker.js'); // 创建 Web Worker 参数为worker.js文件路径
    worker.onmessage = (event) => { // 监听Web Worker消息处理
        result.value = event.data; // 处理返回的结果
    };
    worker.postMessage('哇酷哇酷'); // 发送消息给 Web Worker 参数为需要传递的数据
}
</script>

4.效果

5.说明

(1).如果不使用Web Worker而直接在processData方法中使用以下代码,那么要么卡死要么需要很久才能打印,而使用后就能相对较快打印出来

let sum = 0;
    for (let i = 0; i < 200000; i++) {
        for (let i = 0; i < 10000; i++) {
            sum += Math.random()
        }
    }
console.log("sum",sum);

(2).Web Worker不需要安装插件,如果使用worker-loader这个插件就需要安装,该插件好像只能在webpack项目才能使用

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【第二十六篇】Burpsuite实现请求方式修改+请求体文件选取

有时我们想将请求包的请求方法或请求体进行修改,这些操作可以由burpsuite完成,以节省时间。 文章目录 修改请求方法请求体文件选取修改请求方法 例如,某请求包的请求方法为GET: 如果我们想将其修改为POST且传递POST参数、上传文件,可以按以下步骤: 1、修改请求方法 2…

避雷!网络安全学习五大误区,你还不知道?

尽管安全问题老生常谈&#xff0c;但一些普遍存在的误区仍然可能让企业随时陷入危险境地。 为了有效应对当前层出不穷且不断变换的网络威胁&#xff0c;最大程度规避潜在风险&#xff0c;深入了解网络安全的发展趋势必不可少。即使部署了最新且最先进的硬件和解决方案并严格遵守…

LeetCode-热题100:138. 随机链表的复制

题目描述 给你一个长度为 n 的链表&#xff0c;每个节点包含一个额外增加的随机指针 random &#xff0c;该指针可以指向链表中的任何节点或空节点。 构造这个链表的 深拷贝。 深拷贝应该正好由 n 个 全新 节点组成&#xff0c;其中每个新节点的值都设为其对应的原节点的值。…

【数据结构与算法】力扣 142. 环形链表 II

题目描述 给定一个链表的头节点 head &#xff0c;返回链表开始入环的第一个节点。 如果链表无环&#xff0c;则返回 null。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环。 为了表示给定链表中的环&#xff0c;评测系统…

倒计时 抢登CCF-C NSPW’24论文战场,4月12日截稿,等你来征服

会议之眼 快讯 2024年NSPW&#xff08;The New Security Paradigms Workshop&#xff09;即新安全范式研讨会将于 2024 年 9月16日-18日在美国宾夕法尼亚州贝德福德举行&#xff01;NSPW是一个专注于信息安全领域的年度会议&#xff0c;该会议旨在为那些挑战计算机安全领域主流…

小小算式(1 + 2) * (3 + 4)背后的大道理

目录 前缀表示法&#xff08;波兰表达式&#xff09; 中缀表达法 后缀表达法&#xff08;逆波兰表达式&#xff09; 三种表达法的相互转换 练习&#xff1a;逆波兰表达式求值 前缀表示法&#xff08;波兰表达式&#xff09; 波兰表示法&#xff08;英语&#xff1a;Polis…

第四十七周:文献阅读+AGCN+Wavenet network

目录 摘要 Abstract 文献阅读&#xff1a;结合自适应图卷积和CNN-LSTM的多站点水质预测模型 现有问题 提出方法 方法论 Adaptive graph convolution network&#xff08;自适应图卷积网络&#xff09; WaveNet network&#xff08;WaveNet网络&#xff09; CNN-LSTM混…

php反序列化漏洞——phar反序列化漏洞

一.什么是phar文件 类比java语言 JAR是开发Java程序一个应用&#xff0c;包括所有的可执行、可访问的文件&#xff0c;都打包进了一个JAR文件里使得部署过程十分简单。 PHAR("Php ARchive")是PHP里类似于JAR的一种打包文件 对于PHP 5.3 或更高版本&#xff0c;Ph…

【UE 网络】DS框架学习路线

目录 0 引言1 如何学习DS框架1. 熟悉Unreal Engine基础2. 学习网络编程基础3. 掌握UE网络概念4. 实践和实验5. 加入社区和论坛6. 官方示例和案例研究7. 专业书籍和在线课程 2 DS框架重要知识点有哪些1. 网络复制2. 远程过程调用&#xff08;RPC&#xff09;3. 客户端服务器架构…

0点起C语言

用sizeof()来查看在你的平台上到底占用多少你多少字节的内存。 Int x sizeof(int); Int xsizeof(shrt int); Int xsizeof(long); Int xsizeof(long double); 等等。 http://www.enet.com.cn/article/2012/0822/A20120822153730_2.shtml #—是个预处理的标志&#xff0c;表示对文…

如何本地搭建Discuz论坛并实现无公网IP远程访问

文章目录 前言1.安装基础环境2.一键部署Discuz3.安装cpolar工具4.配置域名访问Discuz5.固定域名公网地址6.配置Discuz论坛 前言 Crossday Discuz! Board&#xff08;以下简称 Discuz!&#xff09;是一套通用的社区论坛软件系统&#xff0c;用户可以在不需要任何编程的基础上&a…

自动化测试的6大适用场景

不能代替手工测试&#xff0c;因为自动化测试有适用场景&#xff1a;自动化测试的6大适用场景 自动化测试可以在短时间内执行大量的测试任务&#xff0c;缩短了测试时间和人工成本&#xff1b;而自动化测试脚本可以重复执行&#xff0c;提高了测试效率&#xff1b;而通过自动化…

【C++】流程控制语句:跳转语句之Break

在C编程语言中&#xff0c;流程控制不仅包括循环和条件分支&#xff0c;还包括一类特别重要的语句——跳转语句。 这类语句允许程序在执行过程中“打破”常规流程&#xff0c;转而执行其他位置的代码。 C提供了四种跳转语句&#xff1a;break、continue、goto 以及 return。…

充电桩项目,开源啦!

好&#xff0c;我是田哥 很多人&#xff0c;最近都在关注我的充电桩项目&#xff0c;之前建了一个微服务架构的项目&#xff0c;也有单体项目的代码开源。 今天&#xff0c;我把最新版微服务架构的充电桩项目源代码开源。 充电桩的输入端与交流电网直接连接&#xff0c;输出端都…

【线段树】【前缀和】:1687从仓库到码头运输箱子

本题简单解法 C前缀和算法的应用&#xff1a;1687从仓库到码头运输箱子 本文涉及的基础知识点 C算法&#xff1a;前缀和、前缀乘积、前缀异或的原理、源码及测试用例 包括课程视频 线段树 LeetCode1687从仓库到码头运输箱子 你有一辆货运卡车&#xff0c;你需要用这一辆车…

【Vue】响应式原理与ref

首先讲讲JS中的Proxy JavaScript 运行环境包含了一些不可枚举、不可写入的对象属性&#xff0c;然而在 ES5 之前开发者无法定义他们自己的不可枚举属性或不可写入属性。ES5 引入 Object.defineProperty() 方法以便开发者在这方面能够像 JS 引擎那样做。 ES6 为了让开发者能进…

阿里云服务器可以干嘛?阿里云服务器八大用途介绍

阿里云服务器可以干嘛&#xff1f;能干啥你还不知道么&#xff01;简单来讲可用来搭建网站、个人博客、企业官网、论坛、电子商务、AI、LLM大语言模型、测试环境等&#xff0c;阿里云百科aliyunbaike.com整理阿里云服务器的用途&#xff1a; 阿里云服务器活动 aliyunbaike.com…

springboot实现上传文件接口(简单版)

使用springboot实现一个最简单版本的上传文件接口 private String uploadPath "C:/imageFiles";RequestMapping(value "/upload", method RequestMethod.POST)private Result upload( RequestParam("modelName") String modelName,RequestPar…

前端实现拖拽div修改宽度,用于菜单栏等多处场景

1、演示 2、 比较简单&#xff0c;直接上源码&#xff08;内部有注释&#xff09; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-…

鸿蒙内核源码分析 (并发并行篇) | 内核如何管理多个 CPU?

理解并发概念 并发&#xff08;Concurrent&#xff09;: 多个线程在单个核心运行&#xff0c;同一时间只能一个线程运行&#xff0c;内核不停切换线程&#xff0c;看起来像同时运行&#xff0c;实际上是线程被高速的切换. 通俗好理解的比喻就是高速单行道&#xff0c;单行道指…