@ampproject/worker-dom

中文文档
0.36.0发布于 2025/06/28Apache-2.0ES Module零依赖近 30 天下载 7976

一份现代DOM执行的传真,打算用网络工人操作.

中文使用文档
文档目录12 节
  1. 安装
  2. 使用量
  3. AMP 分发 amp-script
  4. 除错分发
  5. 本地化运行
  6. 我能用哪个JavaScript API?
  7. 支持哪些浏览器 ?
  8. 地方发展
  9. 发布日志
  10. 安全披露
  11. 行为守则
  12. 许可证

工人发展司

目前正在实施DOM API, 打算在网络工人内部运行.

目的: 将与 DOM 突变有关的中间工作的复杂性移动到一个背景线程上,只将必要的操纵发送到一个前景线程上.

使用大小写数字 :

  1. 嵌入内容来自第三方与一党代码并存.
  2. 减轻内容的昂贵渲染,无需同步更新用户动作.
  3. 通过在文档的其他地方同步更新,保留主线程用于高优先级更新.

欲了解更多情况,请访问 博客文章 宣布工人DOM或离职 幻灯片 从美国JSConf的公告.

安装

npm install @ampproject/worker-dom

使用量

WorkerDOM分为两种花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花序花 可以直接或通过捆绑器将WorkerDOM主线程代码包含在文档中. 这是你如何直接做到这一点:

<script src="path/to/workerdom/dist/main.mjs" type="module"></script>
<script src="path/to/workerdom/dist/main.js" nomodule defer></script>

工人DOM允许我们升级文件的特定部分,由工人驱动. 比如说,想象一下 div 页面中的节点类似:

<div src="hello-world.js" id="upgrade-me"></div>

要使用该代码的模块版本升级此节点, 我们可以直接导入 upgradeElement 像这样使用它:

<script type="module">
  import {upgradeElement} from './dist/main.mjs';
  upgradeElement(document.getElementById('upgrade-me'), './dist/worker/worker.mjs');
</script>

节点格式显示全局 MainThread,并可以升级 div 以下列方式:

<script nomodule async=false defer>
  document.addEventListener('DOMContentLoaded', function() {
    MainThread.upgradeElement(document.getElementById('upgrade-me'), './dist/worker/worker.js');
  }, false);
</script>

AMP 分发 amp-script

工人DOM有一个特殊的输出变体,为安全特性提供额外的钩子,例如HTML sanitization. 此变体在 AMP 文件夹下为主线程和工人线程二进制分发 :

amp/main.mjs
amp/worker/worker.mjs

这个输出假设消费者会编译这个分布式的JavaScript,以确保它与更古老的 user-agent编号.

除错分发

WorkerDOM还有一个输出变体,包括额外的调试消息. 此变体分布在调试文件夹中.

debug/main.mjs
debug/main.js
debug/worker/worker.mjs
debug/worker/worker.js

本地化运行

克隆了寄存器后,可以尝试使用以下调试演示.

npm run demo

此脚本将构建当前版本的 WorkerDOM 并启动本地 网络服务器。 。 。 .

我能用哪个JavaScript API?

目前,大多数DOM元素及其属性都得到了支持. DOM 查询 API 喜欢 querySelector 获得部分支持。 浏览器类似历史的 API 尚未执行 。 请参见 API 支持矩阵 这里。 。 。 .

支持哪些浏览器 ?

总的来说,我们支持Chrome、Firefox、Edge、Safari、Opera和UC等主要浏览器的最新两个版本。 我们支持桌面、电话、平板电脑和这些浏览器的网页视图版本.

除此之外,我们的目标是非常广泛的浏览器支持, 我们接受所有市场份额超过1%的浏览器的修复.

特别是,我们试图维持"它可能并不完美,但是没有被打破"-支持IE 11,iOS 8,Android 4.0系统浏览器和Chrome 41.

地方发展

地方发展工人发展组织假定如下:

  1. 熟悉情况 npm 或者说 yarn
  2. LTS最新发布"节点"(撰写时为10个).
  3. 与TypeScript的舒适,代码库和测试完全用TypeScript来写.

发布日志

每次发布都包含一个随着新发布的版本而变化的日志. 您可以在这里找到日志 : https://github.com/ampproject/worker-dom/放行 互联网档案馆的存檔,存档日期2013-12-02

安全披露

AMP项目通过 Google 应用程序安全程序。 。 。 .

行为守则

AMP项目努力建立一个积极和不断发展的项目社区,为每个人提供安全的环境。 要求社区内的所有成员、承诺者和志愿者按照 行为守则。 。 。 .

许可证

根据《劳动法》,工人拥有许可证 Apache 许可证,2.0版本。 。 。 .

版本与发布记录

@ampproject/worker-dom 共发布 71 个版本,首次发布于 2018/08/22;过去 12 个月发布了 0 个版本。

版本发布日期距今
0.36.0latest2025/06/281.4 年前
0.35.02023/06/233 年前
0.34.02022/03/044 年前
0.33.02022/02/124 年前
0.32.12021/09/295 年前
0.32.02021/09/295 年前

关于 @ampproject/worker-dom 的常见问题

@ampproject/worker-dom 是什么?

一份现代DOM执行的传真,打算用网络工人操作.

如何安装 @ampproject/worker-dom?

在项目目录运行 npm install @ampproject/worker-dom,或使用 pnpm add / yarn add / bun add。

@ampproject/worker-dom 支持 TypeScript 吗?

该包的 package.json 没有声明类型入口。需要类型提示时,可以在 npm 上查找社区维护的 @types/ampproject__worker-dom 是否存在。

@ampproject/worker-dom 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@ampproject/worker-dom 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=18。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@ampproject/worker-dom 可以商用吗?

@ampproject/worker-dom 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@ampproject/worker-dom 的下载量有多少?

根据 npm 官方下载统计,@ampproject/worker-dom 在 2026/10/06 – 2026/11/04 这 30 天内被下载 7,976 次,日均约 266 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@ampproject/worker-dom 还在维护吗?

最新版本 0.36.0 发布于 2025/06/28(1.4 年前);至今共发布 71 个版本,其中过去 12 个月发布了 0 个;首次发布于 2018/08/22。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。