摘要:大家好,很高兴又见面了,我是"高级前端进阶",由我带着大家一起关注前端前沿、深入前端底层技术,大家一起进步,也欢迎大家关注、点赞、收藏、转发,您的支持是我不断创作的动力。
大家好,很高兴又见面了,我是"高级前端进阶",由我带着大家一起关注前端前沿、深入前端底层技术,大家一起进步,也欢迎大家关注、点赞、收藏、转发,您的支持是我不断创作的动力。
Andromeda 是一个现代、快速且安全的 JavaScript 和 TypeScript 运行时,采用 Rust 全新构建,并由 Nova Engine 和 Oxc(用 Rust 编写的 JavaScript 工具集合) 提供支持。
Nova Engine 也是一个用 Rust 编写的 JavaScript(ECMAScript)和 WebAssembly 引擎,遵循面向数据的设计原则。不过目前,该引擎的功能非常有限,仅通过了 test262 测试套件的 77% 左右,也在积极的开发中。
Andromeda 提供零配置 TypeScript 支持、丰富的 Web API 和原生性能,非常适合需要快速运行且无需传统 Node.js 复杂设置的脚本和应用。
Andromeda 的核心功能包括:
零配置 TypeScript:直接运行 .ts 文件,无需转译️ 导入映射(Import Maps):支持现代化的模块解析,使用裸指令和 CDN 集成 GPU 加速 Canvas:硬件加速的 2D Canvas API,带有 WGPU 后端和 PNG 导出功能 Web 加密 API:行业标准的加密原语SQLite 支持:内置 SQLite 数据库支持 文件系统访问:用于读写文件的简单 API Web 存储:支持用于数据持久化的 localStorage 和 sessionStorage⚡ 原生性能:基于 Rust 的执行引擎,搭配 Nova 优化的 JS 引擎️ 开发者工具:交互式 REPL、代码格式化程序、单文件编译以及使用 hotpath 进行性能分析 性能分析:集成 hotpath 分析器,用于识别瓶颈并优化运行时性能 Web 标准:TextEncoder/Decoder 性能 API 等 可扩展:模块化架构,提供可选功能 自动升级:内置升级系统,确保与最新版本保持同步目前 Andromeda 在 Github 通过 MPL-2.0 协议开源,短短几周已经快 1k 的 star,是一个值得关注的前端开源项目。
首先需要使用 cargo 安装 Andromeda:
cargo install --git https://github.com/tryandromeda/andromeda接着可以通过 Andromeda 直接执行 JavaScript 或 TypeScript 文件:
andromeda run hello.ts// 不编译ts直接运行andromeda run script1.js script2.ts// 一次性执行多个脚本andromeda run --verbose my-script.ts// 执行脚本时添加日志在 Andromeda 中使用 canvas 绘图也非常简单:
// 简单绘图const canvas = new OffscreenCanvas(400, 300);const ctx = canvas.getContext("2d")!;ctx.fillStyle = "#ff6b6b";ctx.fillRect(50, 50, 100, 100);ctx.fillStyle = "#4ecdc4";ctx.beginPath;ctx.arc(200, 150, 50, 0, Math.PI * 2);ctx.fill;// 按照 PNG 格式保存canvas.render;canvas.saveAsPng("output.png");console.log("Image saved to output.png");在 Andromeda 中与文件系统交互也非常简单,例如:
// 同步读取和写入文件const content = Andromeda.readTextFileSync("input.txt");Andromeda.writeTextFileSync("output.txt", content.toUpperCase);// 读取环境变量const home = Andromeda.env.get("HOME");Andromeda.env.set("MY_VAR", "value");同时,其也支持 localStorage、sessionStorage 等 API:
// localStorage and sessionStorage APIslocalStorage.setItem("user-preference", "dark-mode");const preference = localStorage.getItem("user-preference");console.log("Stored items:", localStorage.length);// Session storage for temporary datasessionStorage.setItem("session-id", crypto.randomUUID);const sessionId = sessionStorage.getItem("session-id");下面示例用于 Andromeda 的性能监控:
// 高精度时间const start = performance.now;await someAsyncOperation;const duration = performance.now - start;// 使用 marks 和 measuresperformance.mark("operation-start");await doWork;performance.mark("operation-end");performance.measure("total-time", "operation-start", "operation-end");下面示例用于 Andromeda 的数据库操作:
const db = new Database(":memory:");const stmt = db.prepare("INSERT INTO users (name, email) VALUES (?, ?)");stmt.run("Alice", "alice@example.com");const users = db.prepare("SELECT * FROM users").all;console.log(users);db.close;更多关于 Andromeda 的用法和示例可以参考文末资料,本文不再过多展开。
来源:高级前端进阶