美文网首页
Webpack项目中使用Web Worker

Webpack项目中使用Web Worker

作者: 月下吴刚_c8c7 | 来源:发表于2018-12-26 16:55 被阅读0次

详细看 https://juejin.im/post/5acf348151882579ef4f5a77
官方 https://webpack.docschina.org/loaders/worker-loader/

1 安装

项目工程目录下安装loader,目地是让Webpack识别worker文件

npm install -D worker-loader

2 配置webpack文件

向webpack配置文件中添加loader的配置

rules: [
      {
        test: /\.worker\.js$/, // 以.worker.js结尾的文件将被worker-loader加载
        use: { loader: 'worker-loader' }
      }
    ]
  },

3 编写Worker文件以及加载, 文件名必须以 .worker.js 结尾

test.worker.js文件如下,

onmessage = function(ev){    // 也可以是self.onmessage
  // 工作线程收到主线程的ev.data
};
let msg = '工作线程向主线程发送消息'
postMessage(msg);     // 也可以是self.postMessage, msg可以直接是对象

app.js文件如下

import Worker from './test.worker.js';
// 创建 worker 实例
var worker = new Worker(); // 传入 worker 脚本文件的路径即可
worker.postMessage({ a: 1 });
worker.onmessage = function (event) {
    console.log(event.data)
};

worker.addEventListener("message", function (event) {});
worker中不能识别window,但是可以识别websocket, location,navigator , 通过使用worker-loader我们可以在webpack自动化开发中方便的使用webworker来提供页面的性能。
经实际项目中测试,websocket连接从主线程中移到worker子线程中后,页面性能明显提升,并且解决了websocket高频率推送数据时页面假死的问题。
worker不只可以用到websoket连接中,还可以用到大文件上传的功能中,以此来提高页面的用户体验度。火狐所开发的用于pdf在页面中渲染的pdfjs中,对于pdf的数据解析也是采用了在worker中处理的方案。
在不使用worker的情况下,js是单线程的,那么即使是ajax请求,websocket推数据,都会影响页面的渲染和重绘,以至页面事件的响应。如果页面的某项操作与页面dom无关,并且耗时较长,那么就可以把它通过worker来执行,以此来解放页面的渲染和事件循环。

相关文章

  • Webpack项目中使用Web Worker

    详细看 https://juejin.im/post/5acf348151882579ef4f5a77官方 htt...

  • web worker

    web Worker web Worker 文件单独写在一个文件中,在main worker 中 执行的文件里使用...

  • 在vue中怎么使用Web Worker

    在vue项目中不能直接使用web worker,需要使用vue-worker这个库。它提供了run、create等...

  • web worker 处理多文件并行上传

    一 web worker: 什么是web worker Web Worker为Web内容在后台线程中运行脚本提供...

  • 1. vue初始化

    一、使用webpack初始化一个项目 vue init webpack-simple vueadmin 使用web...

  • Webpack 2.0 学习过程资料整理

    Webpack学习过程及项目使用问题及资料整理 -- 2017.11.02 Webpack的简介及使用教程 Web...

  • webpack准备工作

    安装 //在全局安装webpack使用以下命令。$npm install webpack -g 在项目中使用web...

  • webpack4.X学习笔记

    安装和使用 安装到项目yarn add webpack -Dyarn add webpack-cli -D web...

  • Web Worker使用

    最近对Web Worker进行了系统学习,主要看了阮大的教程[https://www.ruanyifeng.com...

  • web work

    Web Worker 什么是Web worker?为什么要用它?我们必须要先了解这些,才能更好的去使用这个技术。 ...

网友评论

      本文标题:Webpack项目中使用Web Worker

      本文链接:https://www.haomeiwen.com/subject/ipzhlqtx.html