worker-tls
Version:
worker-tls 提供了 动态Worker 功能 和 其它一些 Worker 场景下有用的工具集;让开发者可以像调用对象方法一样动态地调用Worker中的方法,也可以随时地往 Worker 中动态地添加函数 等等。
123 lines (86 loc) • 4.45 kB
Markdown
[教程]: ./doc/教程.md
[API接口文档]: ./doc/api/index.md
[动态Worker的设计与机制]: ./doc/动态Worker的设计与机制.md
[GitHub仓库]: https://github.com/GuoBinyong/worker-tls
[发行地址]: https://github.com/GuoBinyong/worker-tls/releases
[issues]: https://github.com/GuoBinyong/worker-tls/issues
[码云仓库]: https://gitee.com/guobinyong/worker-tls
**目录:**
<!-- @import "[TOC]" {cmd="toc" depthFrom=1 depthTo=6 orderedList=true} -->
<!-- code_chunk_output -->
1. [背景](#背景)
2. [简介](#简介)
3. [安装方式](#安装方式)
1. [方式1:通过 npm 安装](#方式1通过-npm-安装)
2. [方式3:通过`<script>`标签引入](#方式3通过script标签引入)
4. [教程](#教程)
5. [API接口文档](#api接口文档)
<!-- /code_chunk_output -->
--------
# 背景
在创建 `Worker` 时,总是需要提被运行代码的脚本文件的 url,这使得会有如下诸多不便:
+ 需要把在 `Worker` 中运行的代码放在一个独立的文件中。
+ 如果项目需要构建,还需要为这些在 `Worker` 中运行的文件配置专门的构建策略;
+ 如果你开发的是一个工具库,那 `Worker` 代码的构建包还不能直接在项目中引用,你和使用该工具库的用户还需要做以下操作,才能保存工具库正常运行:
1. 你和用户事先约定好以下内容:
- npm包中存放 `Worker` 代码的目录;
- 运行时,用户如何告诉你 Worker 代码 路径;
2. 从 `node_modules` 中找到工具库的包;
3. 将包中约定位置 下的 Worker 代码包拷贝到用户项目中不会被构建的目录中(比如:`public`);
4. 用户将刚拷出来的 Worker 代码包 的运行时路径通过 `第1步` 中约定的方式告诉工具库;
5. 当工具库更新时,用户需要重新执行下上面的步骤;
除此之外,Worker 的事件通信机制使得:
+ 在 TypeScript 场景中,`Worker` 之间传递数据的类型不明确;
+ Worker 之间不能像对象一样,互相调用对方的API;
+ 不能动态地往 Worker 中添加新的任务,或 删除旧的任务;
+ 等等
`worker-tls` 中的 动态Worker 就可以完全解决这些问题!
除了 动态Worker 之外,`worker-tls` 还为深度定制 Worker 提供了一些有用的工具方法。
# 简介
`worker-tls` 提供了 动态Worker 功能 和 其它一些 Worker 场景下有用的工具集;让开发者可以像调用对象方法一样动态地调用Worker中的方法,也可以随时地往 Worker 中动态地添加函数 等等。
**具有以下特性:**
- 像调用对象方法一样调用Worker中的API;
- 不需要特殊的构建就能使用 Worker;
- 可以动态地向 Worker 中添加函数,就像给对象添加方法一样简单;
- 可以动态地移除 Worker 中的函数,就像移除对象的方法一样简单;
- 完善的 TypeScript 类型提示;
- 运行时自动完善快捷命令;
- 支持 流、Promise 及其深层嵌套;
- 支持 专用Worker 和 共享Worker `SharedWorker`
- 支持 worker 池:只需要传递一个数字,就可以创建一个 worker 池,并会自动地分配任务给 worker 池中的 worker 去执行;
**详情请看:**
- 主页:<https://github.com/GuoBinyong/worker-tls>
- [GitHub仓库][]
- [码云仓库][]
- [教程][]
- [动态Worker的设计与机制][]
- [API接口文档][]
**如果您在使用的过程中遇到了问题,或者有好的建议和想法,您都可以通过以下方式联系我,期待与您的交流:**
- 给该仓库提交 [issues][]
- 给我 Pull requests
- 邮箱:<guobinyong@qq.com>
- 微信:keyanzhe
# 安装方式
目前,安装方式有以下几种:
## 方式1:通过 npm 安装
通过 npm (或 yarn、pnpm 等包管理器)安装
```shell
npm install worker-tls
```
## 方式3:通过`<script>`标签引入
您可直接从项目的 [发行地址][] 中下载以 `.iife.js` 作为缀的文件,然后使用如下代码引用 和 使用 worker-tls:
1. 引用 worker-tls
```html
<script src="path/to/package/worker-tls.iife.js"></script>
```
2. 使用全局的 `WorkerTls`
```html
<script>
// 使用全局的 WorkerTls
</script>
```
# 教程
- 简单入门,请看[教程][]
- 如果想深入原理,请看[动态Worker的设计与机制][]
# API接口文档
详情跳转至[API接口文档][]