首页 > 其他分享 >使webworker中支持使用import导入模块——threads.js

使webworker中支持使用import导入模块——threads.js

时间:2022-12-11 17:44:40浏览次数:81  
标签:Worker js webworker threads new import

threads.js基本使用

使用vue-cli创建一个项目(我这里vue --version的版本是3.11.0):

vue create hello-world

添加tool.js文件:

export function getSuffix() {
    return new Date().toDateString()
}

添加webworker.js文件,import引入tool.js文件,以验证webworker中支持import:

import sha256 from "js-sha256"
import { expose } from "threads/worker"
import { getSuffix } from './tool'

expose({
    hashPassword(password, salt) {
        let suffix = getSuffix();
        return sha256(password + salt) + `【当前时间:${suffix}】`
    }
})

添加master.js文件,

import { spawn, Thread, Worker } from "threads"

export async function getHashPassword() {
    const auth = await spawn(new Worker("./webworker"))
    const hashed = await auth.hashPassword("Super secret password", "1234")

    console.log("Hashed password:", hashed)

    await Thread.terminate(auth)
    return hashed;
}

注意,Worker从 threads.js 导入。

其中:

  • spawn()创建一个新的工人
  • expose()声明您希望您的工作人员公开哪些功能
  • Thread.terminate()一旦你不再需要它就杀死工人

安装依赖:

npm install threads tiny-worker

使用 webpack 构建

Webpack 配置与threads-plugin一起使用。

它将透明地检测所有new Worker("./unbundled-path")表达式,捆绑工作代码并将new Worker(...)路径替换为工作包路径,因此您无需显式使用worker-loader或定义额外的入口点。

 安装threads-plugin:

npm install -D threads-plugin

然后将其添加到您的webpack.config.js

const ThreadsPlugin = require('threads-plugin')

  module.exports = {
    // ...
    plugins: [
+     new ThreadsPlugin()
    ]
    // ...
  }

效果:

npm run serve后:

 

图中当前时间能正常输出证明tool.js被正常import了。

 

标签:Worker,js,webworker,threads,new,import
From: https://www.cnblogs.com/vickylinj/p/16973999.html

相关文章

  • 前端知识点(js部分)
    目录一、JS简介简介ECMAScript的历史二、JS基础1.注释语法2.引入js的多种方式3.结束符号三、变量与常量编写和运行js代码的两种方式变量声明四、基本数据类型1.数值类型(Nu......
  • JS基本数据类型——BigInt
    一、JS基本数据类型——BigIntBigInt是ES11引入的新的基本数据类型。BigInt数据类型的目的是比Number数据类型支持的范围更大的整数值,以任意精度表示整数。使用BigIn......
  • JS实现决策报表缓存最后一次查询条件
    问题描述决策报表在打开时希望参数控件的值可以默认是上一次页面关闭前最后一次查询所选择的值。解决方案每次点击查询后将参数值保存到浏览器缓存中(适用于控件在参数......
  • 关于angularJS压缩混淆后形参改变导致代码报错的问题
    问题angularJS1.3版本之前,有全局控制器的说法($scope),这个全局控制器会导致在js编译时进行压缩,会将scope变成简短的单词,导致报错。在demo.js中控制器第二个参数有两种......
  • go解析未知json
    使用go语言写一段代码,将未知结构的json解析出来  这里是一个例子: packagemainimport("encoding/json""fmt")funcmain(){v......
  • 前端开发系列023-基础篇之JavaScript和JSON(扩展)
    title:'前端开发系列023-基础篇之JavaScript和JSON(扩展)'tags:-javaScript系列categories:[]date:2017-06-2008:20:13本文输出JSON搜索和JSON转换相关的内容......
  • 前端开发系列022-基础篇之JavaScript和JSON(进阶)
    title:'前端开发系列022-基础篇之JavaScript和JSON(进阶)'tags:-javaScript系列categories:[]date:2017-06-1908:20:13在[javaScript和JSON](http://wendingd......
  • Node.js Event Loop 的三大常见理解误区和正确概念辨析
    Node.jsEventloop监控器。高的frequency和低的持续时间是最理想的eventloop状态。上图显示三点半到五点半之间,eventloop的frequency骤降,然后duration居高......
  • Node.js Event Loop 处理的几大周期介绍
    Node.jsEventLoop处理的几大周期如下图所示:Timer:通过setTimeout()或setInterval()安排的一切都将在这里处理。IO回调:这里将处理大部分回调。由于Node.js......
  • js之操作文件| 12-5
    在HTML表单中,可以上传文件的唯一控件就是​​<inputtype="file">​​。注意:当一个表单包含​​<inputtype="file">​​时,表单的​​enctype​​必须指定为​​multipart/f......