javascript - Web Workers 可以访问 Vue 应用程序中定义的类吗?

标签 javascript typescript vue.js web-worker

我正在构建一个使用 Vue 作为前端的应用程序,特别是 Vue 3 Composition API + Typescript。我需要能够使用网络 worker 在后台长时间运行的进程。我能够让 vanillajs Web Worker 与 Vue 应用程序一起运行,没有问题。我的问题是,我需要我的网络 worker 能够访问 Vue 应用程序内编写的类和函数。我的 Web Worker 和 Vue 应用程序都需要使用相同的类和函数,我不想将它们写在两个地方。有办法分享吗?如有任何帮助,我们将不胜感激。

最佳答案

答案是肯定的:

有一种方法可以让 Web Worker 通过一个 JavaScript 文件访问 Vue.js 框架。

Vue.js 项目中可以帮助您完成此任务的库是 vue-worker。该库使用 simple-web-worker 包。 (内联Web Workers方法)

如您所知,标准 Web Worker 需要一个额外的 js 文件,其中包含 Worker 的代码。对于内联网络 worker 来说,没有必要使用辅助方法。这会将一个属性注入(inject)到 Vue 中(并将其传递给每个子组件),默认名称为 $worker。总的来说,您可以说它的行为就像一个 JavaScript promise ,但实际上并不是第二个 JavaScript 文件。


现在轮到你了:

有一个非常好的documentation遵循我描述的这种方法并添加第二种“老式”方法。尝试一下:)

关于javascript - Web Workers 可以访问 Vue 应用程序中定义的类吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71487912/

相关文章:

c# - WatiN doubleclick 在 IE9 中不起作用

javascript - Lync UCWA - 创建应用程序给出 HTTP 409 : Conflict error

typescript - 为什么类方法参数可以比接口(interface)参数更窄

javascript - 如何验证逗号分隔的电子邮件地址并限制电子邮件地址的 Angular ?

javascript - 为什么 alert 出现在 document.write 之前?

javascript - 从带有 post 的函数返回值

javascript - React Native Sqlite 获取 Listview 中的所有数据

javascript - vue.js 循环对象中的选项值

laravel - 错误 : Request failed with status code 500 Laravel/Vue

html - 连续均匀地显示网格卡片元素,无空白