@engine262/engine262

中文文档
0.0.1-46acc94625794d30f81b7a83dd608887530163a6发布于 2026/11/13MITTypeScriptESM + CJS零依赖构建来源已验证近 30 天下载 3402

在JavaScript中实施ECMA-262

中文使用文档
文档目录8 节
  1. 为什么会这样
  2. 所需资源
  3. 使用引擎262
  4. 引擎262操场
  5. 发动机262 CLI
  6. 引擎262 API
  7. 开发引擎262
  8. 相关项目

发动机262

在JavaScript中实施ECMA-262

目标

  • 100%的光谱遵守率
  • 回顾
  • 修改的便利

非目标

  • 以牺牲任何目标为代价的速度

这个项目受 行为守则。 。 。 .

加入我们 #engine262:matrix.org。 。 。 .

为什么会这样

在帮助开发JavaScript的新功能的同时,我发现了其中之一 最有用的方法 找出什么是可行的什么是不能 实际使用新特性运行代码. 宝贝 这真是太棒了 但是 有时候,一些特征只是不能 很好地代表它。 同样, 实施其中一种发动机的特性是一项大型工作,涉及 长编译时间和有优化编译器的烦扰错误.

引擎262 是让 JavaScript 开发者拥有新游戏场的工具 特性可以迅速被原型和探索. 例如,添加: 执行表达式 至此引擎与以下 diff 一样简单:

--- a/src/evaluator.mts
+++ b/src/evaluator.mts
@@ -232,6 +232,8 @@ export function* Evaluate(node) {
     case 'GeneratorBody':
     case 'AsyncGeneratorBody':
       return yield* Evaluate_AnyFunctionBody(node);
+    case 'DoExpression':
+      return yield* Evaluate_Block(node.Block);
     default:
       throw new OutOfRange('Evaluate', node);
   }
--- a/src/parser/ExpressionParser.mts
+++ b/src/parser/ExpressionParser.mts
@@ -579,6 +579,12 @@ export class ExpressionParser extends FunctionParser {
         return this.parseRegularExpressionLiteral();
       case Token.LPAREN:
         return this.parseParenthesizedExpression();
+      case Token.DO: {
+        const node = this.startNode<ParseNode.DoExpression>();
+        this.next();
+        node.Block = this.parseBlock();
+        return this.finishNode(node, 'DoExpression');
+      }
       default:
         return this.unexpected();
     }

这种简单适用于许多其他建议,例如: 可选链条, (中文(简体) ), 模式匹配, (中文(简体) ), 管道操作员还有更多 这个引擎也有 用于在ECMA-262和 测试262,用于 符合 JavaScript 执行.

所需资源

要运行引擎262本身, 支持最近 ECMAScript 特性的引擎 这是需要的。 此外,《国家行动倡议》bin/engine262.js)和试验262跑道 (单位:千美元)test/test262/test262.mts)需要最新版本的Node.js.

使用引擎262

从npm可以安装.

npm install @engine262/engine262
yarn install @engine262/engine262
pnpm install @engine262/engine262

如果您在全球安装, 您可以像这样使用 CLI :

$ engine262

引擎262操场

经典游乐场 财务报告和审定财务报表 Chrome Devtools 风格操场

发动机262 CLI

--单元/-m

将文件评价为模块 .

--eval < string > / -e < string >

评估给定的字符串并退出 .

--features QQfeatureA,featureB > / --features = all (中文(简体) )

运行 engine262 --list-features 以查看所有 ECMAScript 特性可以切换.

无测试262

别曝光 $ 财务报告和审定财务报表 $262 用于测试262测试套件的全局变量.

无检查者

不要开始检查.

默认的引擎 262 将启动检查器 ws://localhost:9229/ (像节点.js与 --inspector) (中文(简体) ). 见 节点引导 用于连接.

-- 不审查

不启用检查器中的预览功能 .

引擎262 API

见 实例。 。 。 .

开发引擎262

npm run build 财务报告和审定财务报表 npm run watch 将建造并观看建造.

npm run test:test262 将运行 测试262 测试套房。 运行 npm run test:test262 -- --help 以查看试跑者选项.

npm start 启动引擎262 CLI.

npm run inspector 启动网站( 调试引擎262 主要发生在这里) .

许多人和组织试图撰写 JavaScript 解释器 在JavaScript中很像引擎262,目标不同. 其中一些是 虽然引擎262并非基于其中任何一种,但在此列出以供参考.

版本与发布记录

@engine262/engine262 共发布 157 个版本,首次发布于 2021/11/27;过去 12 个月发布了 53 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.0.1-46acc94625794d30f81b7a83dd608887530163a6latest2026/11/13今天
0.0.1-2278ba8f84ab6fdfeb487eb4dbc93b34a6526c4b2026/11/13今天
0.0.1-48467be077f4dcbf8745469f4898c14b755881542026/11/13今天
0.0.1-67a6b6157fd4c08bb5c5295e613ff582fd9ac4882026/11/058 天前
0.0.1-02ef2d2b668543572cfd0d45ea1ff00ba95a32072026/11/049 天前
0.0.1-d553e7b52501fbc47eae981c8d0fa7a5c26d01712026/10/2321 天前

关于 @engine262/engine262 的常见问题

@engine262/engine262 是什么?

在JavaScript中实施ECMA-262

如何安装 @engine262/engine262?

在项目目录运行 npm install @engine262/engine262,或使用 pnpm add / yarn add / bun add。它还提供命令行工具 engine262,可以用 npx engine262 直接运行。

@engine262/engine262 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@engine262/engine262 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@engine262/engine262 可以商用吗?

@engine262/engine262 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@engine262/engine262 的下载量有多少?

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

@engine262/engine262 还在维护吗?

最新版本 0.0.1-46acc94625794d30f81b7a83dd608887530163a6 发布于 2026/11/13(今天);至今共发布 157 个版本,其中过去 12 个月发布了 53 个;首次发布于 2021/11/27。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。