还没使用过Web Worker? 推荐一款开源工具Workerize-Loader,让你在webpack项目中轻松使用Web Worker
还没使用过Web Worker? 推荐一款开源工具Workerize-Loader,让你在webpack项目中轻松使用Web Worker
Workerize-Loader
将模块及其依赖项移动到 Web 辅助角色的 Web 包加载程序,自动将导出的函数反映为异步代理。
- 将一个小型、专门构建的 RPC 实现捆绑到应用中
- 如果导出的模块方法已异步,则签名保持不变
- 支持同步和异步工作函数
- 与异步/等待效果优美
- 导入的值是可实例化的,只是一个装饰
Worker
安装
npm install -D workerize-loader
使用
worker.js:
// block for `time` ms, then return the number of loops we could run in that time:
export function expensive(time) {let start = Date.now(),count = 0while (Date.now() - start < time) count++return count
}
index.js: (我们的演示)
import worker from 'workerize-loader!./worker'let instance = worker() // `new` is optionalinstance.expensive(1000).then( count => {console.log(`Ran ${count} loops`)
})
选项
inline
类型:默认值:Boolean
false
您还可以将工作人员内联为 BLOB 与参数inline
// webpack.config.js
{loader: 'workerize-loader',options: { inline: true }
}
或
import worker from 'workerize-loader?inline!./worker'
关于Babel
如果您在生成中使用Babel,请确保禁用了公共JS转换。否则,辅助加载程序将无法从辅助角色脚本检索导出函数的列表:
{test: /\.js$/,loader: "babel-loader",options: {presets: [["env",{modules: false,},],]}
}
IE11 需要多填充
Workerize 加载程序支持支持 Web Worker 的浏览器 - 即 IE10+。但是,这些浏览器需要多填充才能使用"承诺",而"工人加载器"所依赖的承诺。建议在全球范围内安装多填充,因为 Webpack 本身也需要承诺加载捆绑包。
最小的实现是我们建议安装的实现:
npm i promise-polyfill
然后,在模块中,您正在"工作",只需将其添加为您的第一次导入:
import 'promise-polyfill/src/polyfill';
所有工作代码现在都可以使用承诺。
测试
若要测试不使用 Webpack 时通常导入的模块,请直接在测试中导入该模块:workerize-loader
-const worker = require('workerize-loader!./worker.js');
+const worker = () => require('./worker.js');const instance = worker();
若要在不使用 Webpack 时测试依赖于工作导入的模块,您需要对测试运行程序进行一些深入探讨。对于 Jest,可以定义一个自定义,该自定义在主线程上模拟辅助加载器:transform
// in your Jest configuration
{"transform": {"workerize-loader(\\?.*)?!(.*)": "<rootDir>/workerize-jest.js"}
}
...然后将填充程序添加到您的项目中:workerize-jest.js
module.exports = {process(src, filename, config, options) {return 'module.exports = () => require(' + JSON.stringify(filename.replace(/.+!/,'')) + ')';},
};
现在,您的测试及其导入的任何模块都可以使用前缀。workerize-loader!
启发
这里的内部工作深受worker-loader启发。值得一读!
许可证
麻省理工学院执照©·米勒
翻译来源:https://github.com/developit/workerize-loader
还没使用过Web Worker? 推荐一款开源工具Workerize-Loader,让你在webpack项目中轻松使用Web Worker相关推荐
- 还没使用过Web Worker,推荐一款开源工具Workerize,快速上手
还没使用过Web Worker,推荐一款开源工具Workerize,快速上手 开源项目:https://github.com/developit/workerize 将模块移动到 Web 辅助角色中, ...
- 推荐5大开源工具,用于开发Kubernetes项目
从无服务器到本地开发,Github上有数以千计的开源工具可供使用.Kubernetes是当今最流行的技术之一. 因此,GitHub上有大量开源库和工具也不足为奇.本文根据流行度.Star数量等综合指标 ...
- 2023年推荐几款开源或免费的web应用防火墙
2023年推荐几款开源或免费的web应用防火墙 2023年,数字经济将强势崛起,并且成为新一轮经济发展的动力,传统的黑客破坏性攻击如CC,转为更隐蔽的如0day进行APT渗透.所以无论私有服务器还是云 ...
- 推荐一款开源的ICO制作神器——greenfish
推荐一款开源的ICO制作神器--Greenfish Icon Editor Pro 关于ICO格式做软件图标时,为什么有时候图标太小,且不清晰,看这篇文章就会茅塞顿开. 制作一个标准 ICO 图标 - ...
- 解决“Maven项目中的Dynamic Web Module 3.0 requires Java 1.6 or newer”问题
转载自 解决"Maven项目中的Dynamic Web Module 3.0 requires Java 1.6 or newer"问题 错误描述 当创建有动态web模块3.0 ...
- eclipse导入java web项目_Eclipse中轻松导入web项目的方法
今天介绍的是Eclipse中轻松导入web项目的方法,相信通过了解Eclipse中轻松导入web项目的操作步骤,大家对Eclipse编程工具一定会有更多的了解的! Eclipse中轻松导入web项目的 ...
- 还在用Swagger?我推荐这款零代码侵入的接口管理神器!
静态的 Swagger 们跟不上频繁变更的代码 "为什么改了这个没告诉我","实际功能和文档上说的不一样啊".这些话大家做开发的想必耳朵都听出老茧了.真不是故意 ...
- 还没做2022年计划?这个超赞工具送给你
又到了一年制定计划的时候了. 你可能要说,每年的计划在年终回顾时,都实现不了,除了发个朋友圈过下瘾,计划还有什么用呢? 这里其实是2个问题: 1.计划如何实现? 2.计划有什么用? 01 对于计划如何 ...
- 别说我没告诉你,真心推荐4款免费动画制作软件
使用最棒的动画软件将帮助您在人群中脱颖而出.此外,它极大地改变了您的工作流程.这个有用的指南包括你应该在 2022 年知道的最好的免费动画软件. 呆猫云桌面将为大家介绍每个软件的所有优点和缺点.它的目 ...
最新文章
- python数据库框架_Python数据库及ORM框架对比选择
- 两个小模型就能吊打大模型!北大校友、谷歌华人一作「模型集合」,CNN、Transformer都适用!...
- 宁‘内卷‘,勿‘躺平‘
- 动手动脑——登录界面
- char 类型的数组转换到CSting
- PHP快速入门教程:for循环
- 用Delphi写扬声器音乐
- arduino灯光装置_【pinpong库控制硬件】之Arduino uno-调光台灯
- 移动视频监控摄像机分类与优势浅析
- RHEL/Centos7下使用EPEL和REMI源
- 路由器的地址转换功能
- 体验下Xcode5与ios7
- 汉邦监控录像数据恢复软件---蓝梦软件BestRecoveryForHBMS
- 【软考】2019 上半年软件设计师 下午真题及答案
- jpg如何缩小kb?jpg图片压缩怎么弄?
- 吉他的起源与发展史_吉他的由来与发展简史
- opencv 眼部模糊
- Python 二次指数平滑法 预测
- 新中新电子f200a驱动安装_走班排课,闪亮登场!江门市棠下中学高一年级率先进入“新高考”模式!...
- 重回华语乐坛神仙打架的时代——飞利浦S302圈铁耳机评测