vue项目中使用webWorker 时报错:Uncaught SyntaxError: Unexpected token '<'

vue项目中使用webWorker 时报错:Uncaught SyntaxError: Unexpected token '<'

网上大部分人说是需要配置 inline 选项,不太准确。

复盘一下整个安装使用的过程

  1. 安装 worker-loader
npm install worker-loader -D
  1. 配置 webpack

如果你的项目是基于 vue/cli 搭建的, 可以在 vue.config.js 中找到 loader 的配置位置。如果不是,在webpack.base.conf.js 中找到 loader 的配置位置

添加一行配置。 切记! 一定要写在 /\.js$/ 这种匹配js文件的loader之前。

{
  ...  
},
{
 test: /\.worker\.js$/,
    loader: "worker-loader",
    options: {
        inline: true,
        name: "workerName.[hash].js"
    }
},
{
    test: /\.js$/,
    ...
}
  1. 使用例子

    // test.vue 主线程
    import Worker from './file.worker.js'
    
    methods:{
     test() {
            let worker = new Worker();
            let data1 = '1'
            let data2 = '2'
            worker.postMessage([data1,data2]);
            worker.onmessage = function(event) {
                console.log(event,'event1')
            };
    
            worker.addEventListener("message", function(event) {
                console.log(event,'event2')
            });
     }
    }
    
    // file.worker.js  worker线程
    self.addEventListener("message",e=>{
        setTimeout(()=>{
            console.log('worker线程收到主线程发来的消息', e)
        },400)
    })
    self.postMessage('worker线程发送消息给主线程')
    
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、概述 JavaScript 语言采用的是单线程模型,也就是说,所有任务只能在一个线程上完成,一次只能做一件事。...
    零星小雨_c84a阅读 2,513评论 0 2
  • 作者:阮一峰www.ruanyifeng.com/blog/2018/07/web-worker.html 概述 ...
    grain先森阅读 1,110评论 0 1
  • 介绍web worker HTML5提供得,运行在后台的 JavaScript,独立于其他脚本,不会影响页面的性能...
    带刀打天下阅读 1,346评论 0 3
  • 33、JS中的本地存储 把一些信息存储在当前浏览器指定域下的某一个地方(存储到物理硬盘中)1、不能跨浏览器传输:在...
    萌妹撒阅读 2,129评论 0 2
  • 前言: 本篇文章我将带大家一起来好好认识一下postMessage,包括它的兼容性,对应的API介绍,以及常见的几...
    木子水吉_08阅读 62,054评论 0 9