<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Node.js 专题：从运行时基础到全栈后端开发 on PlumePHP</title><link>https://plumephp.com/posts/nodejs/</link><description>Recent content in Node.js 专题：从运行时基础到全栈后端开发 on PlumePHP</description><generator>Hugo</generator><language>zh-CN</language><lastBuildDate>Tue, 09 Dec 2025 06:21:39 +0800</lastBuildDate><atom:link href="https://plumephp.com/posts/nodejs/index.xml" rel="self" type="application/rss+xml"/><item><title>为什么 Bun 这么快？深入解析 Zig + JavaScriptCore + Bundler 架构</title><link>https://plumephp.com/why-bun-fast/</link><pubDate>Tue, 09 Dec 2025 06:21:39 +0800</pubDate><guid>https://plumephp.com/why-bun-fast/</guid><description>&lt;p&gt;深入解析 Zig Runtime + JavaScriptCore + 全能 bundler 架构&lt;/p&gt;
&lt;p&gt;Bun 的目标非常明确：&lt;strong&gt;做最快的 JavaScript Runtime 与“前端工具链的一体化替代品”。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Bun 之所以“快到不合理”，并不是某一个组件做得好，而是 &lt;strong&gt;整体架构选择 + 工程策略 + 极度工程化优化&lt;/strong&gt; 的结果。&lt;/p&gt;</description></item><item><title>Node.js vs Bun vs Deno：三大 JavaScript Runtime 架构深度对比</title><link>https://plumephp.com/node-vs-bun-deno/</link><pubDate>Tue, 09 Dec 2025 05:21:39 +0800</pubDate><guid>https://plumephp.com/node-vs-bun-deno/</guid><description>&lt;p&gt;三大 JavaScript Runtime 架构的系统性对比。&lt;/p&gt;
&lt;p&gt;过去十年，Node.js 是 JS 世界的事实标准运行时；如今，&lt;strong&gt;Bun 和 Deno&lt;/strong&gt; 带着现代化设计重新挑战 JS 生态，推动了 Web 运行时的整体革新。&lt;/p&gt;</description></item><item><title>选择 Node / Bun / Deno 的架构决策指南</title><link>https://plumephp.com/node-runtime-decision-guide/</link><pubDate>Tue, 09 Dec 2025 04:21:39 +0800</pubDate><guid>https://plumephp.com/node-runtime-decision-guide/</guid><description>&lt;p&gt;一篇面向工程团队的技术选型指南，从架构视角对比三大 JS Runtime 的特性与适用场景。&lt;/p&gt;
&lt;p&gt;JavaScript 不再只有一个运行时，而是进入了 &lt;strong&gt;多 Runtime 并存的时代&lt;/strong&gt;。&lt;br&gt;
在实际业务中，如何选择合适的 Runtime，会直接影响：&lt;/p&gt;</description></item><item><title>Node.js 性能调优指南</title><link>https://plumephp.com/node-performance-tuning/</link><pubDate>Tue, 09 Dec 2025 03:21:39 +0800</pubDate><guid>https://plumephp.com/node-performance-tuning/</guid><description>&lt;p&gt;以测量为起点，以架构调整为核心，以细节优化为补充。&lt;/p&gt;
&lt;p&gt;这份指南面向已经在生产或准生产环境使用 Node.js 的工程团队，希望在 &lt;strong&gt;延迟、吞吐量、资源利用&lt;/strong&gt; 上做系统性优化。&lt;/p&gt;</description></item><item><title>Node.js 架构图解析：事件循环、线程池与 N-API</title><link>https://plumephp.com/node-architecture/</link><pubDate>Tue, 09 Dec 2025 02:21:39 +0800</pubDate><guid>https://plumephp.com/node-architecture/</guid><description>&lt;p&gt;理解 Node.js 的底层，必须从其运行时结构开始：&lt;strong&gt;事件循环、线程池、V8、libuv、模块系统与 N-API 扩展层&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;下面的架构图展示了 Node.js 的完整结构，包括 JS 层到 C++ 层，再到操作系统的路径。&lt;/p&gt;</description></item><item><title>Node.js 深度解析：运行时架构、事件循环、性能模型与未来路线</title><link>https://plumephp.com/node-deep-dive/</link><pubDate>Tue, 09 Dec 2025 01:21:39 +0800</pubDate><guid>https://plumephp.com/node-deep-dive/</guid><description>&lt;p&gt;&lt;strong&gt;理解现代 JavaScript Runtime 的核心本质。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Node.js 不仅是“让 JavaScript 跑在服务器端的工具”，它是一个完整的 Runtime，由 V8、libuv、内置调度器、事件循环、模块系统、多线程能力、工具链生态等部分组成。&lt;/p&gt;</description></item><item><title>Node.js 简介：历史、特性、发展与未来</title><link>https://plumephp.com/node-intro/</link><pubDate>Tue, 09 Dec 2025 00:21:39 +0800</pubDate><guid>https://plumephp.com/node-intro/</guid><description>&lt;p&gt;让 JavaScript 走向服务器端的关键转折点。&lt;/p&gt;
&lt;p&gt;Node.js 诞生于 2009 年，它从“让 JS 跑在服务器端”的单一想法开始，逐渐演变为现代工具链、云原生和前端工程化的核心力量。它的出现改变了 Web 的技术形态，也改变了开发者构建应用的方式。&lt;/p&gt;</description></item><item><title>Node.js JWT 认证实战：Express + Passport 的登录鉴权与权限控制</title><link>https://plumephp.com/nodejs-jwt-auth/</link><pubDate>Sat, 22 Nov 2025 18:00:00 +0800</pubDate><guid>https://plumephp.com/nodejs-jwt-auth/</guid><description>&lt;p&gt;&lt;strong&gt;JWT（JSON Web Token）是现代 Web 应用的标准认证方案&lt;/strong&gt;：无状态、自包含、可跨域。本文详解 Node.js 后端 JWT 认证的完整实现。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="一jwt-基础"&gt;一、JWT 基础&lt;/h2&gt;
&lt;p&gt;JWT 由三部分组成：&lt;code&gt;Header.Payload.Signature&lt;/code&gt;&lt;/p&gt;</description></item><item><title>Node.js + Prisma + PostgreSQL：类型安全的全栈数据层实战</title><link>https://plumephp.com/nodejs-prisma-postgres/</link><pubDate>Sat, 22 Nov 2025 17:00:00 +0800</pubDate><guid>https://plumephp.com/nodejs-prisma-postgres/</guid><description>&lt;p&gt;&lt;strong&gt;Prisma 是当前 Node.js 生态中最现代化的 ORM&lt;/strong&gt;：类型安全、自动迁移、可视化数据浏览器、卓越的开发体验。本文覆盖从 Schema 设计到生产部署的完整工作流。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="一初始化"&gt;一、初始化&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;npm install prisma @prisma/client
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;npx prisma init
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;pre tabindex="0"&gt;&lt;code class="language-prisma" data-lang="prisma"&gt;// prisma/schema.prisma
generator client {
 provider = &amp;#34;prisma-client-js&amp;#34;
}

datasource db {
 provider = &amp;#34;postgresql&amp;#34;
 url = env(&amp;#34;DATABASE_URL&amp;#34;)
}

model User {
 id Int @id @default(autoincrement())
 email String @unique
 name String?
 posts Post[]
 createdAt DateTime @default(now())
}

model Post {
 id Int @id @default(autoincrement())
 title String
 content String?
 published Boolean @default(false)
 author User @relation(fields: [authorId], references: [id])
 authorId Int
}
&lt;/code&gt;&lt;/pre&gt;&lt;hr&gt;
&lt;h2 id="二migration-工作流"&gt;二、Migration 工作流&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 生成迁移文件&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;npx prisma migrate dev --name init
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 应用到生产数据库&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;npx prisma migrate deploy
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 生成 Prisma Client（类型自动更新）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;npx prisma generate
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 打开数据浏览器&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;npx prisma studio
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h2 id="三crud-示例express"&gt;三、CRUD 示例（Express）&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-typescript" data-lang="typescript"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;PrismaClient&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="kr"&gt;from&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;@prisma/client&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;prisma&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nx"&gt;PrismaClient&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// 创建
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;user&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;prisma&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;create&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;email&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;alice@example.com&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;Alice&amp;#39;&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// 查询（含关联）
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;users&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;prisma&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;findMany&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;include&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;posts&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;where&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;published&lt;/span&gt;: &lt;span class="kt"&gt;true&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// 更新
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;updated&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;prisma&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;update&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;where&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;id&lt;/span&gt;: &lt;span class="kt"&gt;1&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;Alice Updated&amp;#39;&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// 事务
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;const&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;post&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;prisma&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;$transaction&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;prisma&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;create&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;email&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;bob@example.com&amp;#39;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="p"&gt;}),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;prisma&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;post&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;create&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;title&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;Hello&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;authorId&lt;/span&gt;: &lt;span class="kt"&gt;1&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="p"&gt;}),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;]);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="相关阅读"&gt;相关阅读&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://plumephp.com/node-js/"&gt;Node.js 详解&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://plumephp.com/nodejs-nestjs-guide/"&gt;Nest.js 入门指南&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://plumephp.com/typescript-nodejs-backend/"&gt;TypeScript + Node.js 后端工程化&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://plumephp.com/posts/nodejs/"&gt;Node.js 专题导航&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Nest.js 入门指南：模块化架构、依赖注入与 TypeScript 企业级后端</title><link>https://plumephp.com/nodejs-nestjs-guide/</link><pubDate>Sat, 22 Nov 2025 16:00:00 +0800</pubDate><guid>https://plumephp.com/nodejs-nestjs-guide/</guid><description>&lt;p&gt;&lt;strong&gt;Nest.js 是 Node.js 生态中最具&amp;quot;框架感&amp;quot;的后端框架&lt;/strong&gt;，受 Angular 启发，原生支持 TypeScript，提供模块化架构、依赖注入、装饰器路由等企业级特性。&lt;/p&gt;</description></item><item><title>Express.js 完全指南：路由、中间件与 REST API 开发实战</title><link>https://plumephp.com/nodejs-express-guide/</link><pubDate>Sat, 22 Nov 2025 15:00:00 +0800</pubDate><guid>https://plumephp.com/nodejs-express-guide/</guid><description>&lt;p&gt;&lt;strong&gt;Express.js 是 Node.js 生态中最流行、最轻量的 Web 框架&lt;/strong&gt;，自 2010 年发布以来一直是构建 REST API 和 Web 应用的首选。本文从路由到中间件，从开发到生产，覆盖 Express 的完整实战路径。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="一项目初始化"&gt;一、项目初始化&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mkdir my-api &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;cd&lt;/span&gt; my-api
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;npm init -y
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;npm install express
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;npm install -D nodemon @types/express typescript ts-node
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;npx tsc --init
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-typescript" data-lang="typescript"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// src/index.ts
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;express&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;Request&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;Response&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="kr"&gt;from&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;express&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;app&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;express&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;use&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;express&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;json&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="kr"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;/&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;req&lt;/span&gt;: &lt;span class="kt"&gt;Request&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;: &lt;span class="kt"&gt;Response&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;json&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;message&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;Hello Express&amp;#39;&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;PORT&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;PORT&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="mi"&gt;3000&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;listen&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;PORT&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sb"&gt;`Server running on port &lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;PORT&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h2 id="二路由系统"&gt;二、路由系统&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-typescript" data-lang="typescript"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;Router&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="kr"&gt;from&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;express&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;userRouter&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;Router&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// 参数路由
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;userRouter&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="kr"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;/:id&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;json&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;id&lt;/span&gt;: &lt;span class="kt"&gt;req.params.id&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// 查询参数
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;userRouter&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="kr"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;/&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kr"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;page&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;1&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;limit&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;10&amp;#39;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;query&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;json&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;page&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;limit&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// POST 请求体
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;userRouter&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;post&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;/&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kr"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;email&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;body&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;status&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;201&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;json&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;id&lt;/span&gt;: &lt;span class="kt"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;email&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;use&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;/users&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;userRouter&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h2 id="三中间件"&gt;三、中间件&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-typescript" data-lang="typescript"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// 日志中间件
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;use&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;next&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;method&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sb"&gt; &lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;url&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;next&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// 错误处理中间件（必须放在最后）
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;use&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt;: &lt;span class="kt"&gt;Error&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;req&lt;/span&gt;: &lt;span class="kt"&gt;Request&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;: &lt;span class="kt"&gt;Response&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;next&lt;/span&gt;: &lt;span class="kt"&gt;NextFunction&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;stack&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;status&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;500&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;json&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;Something broke!&amp;#39;&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h2 id="四项目结构"&gt;四、项目结构&lt;/h2&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;src/
├── index.ts # 入口
├── routes/
│ ├── users.ts
│ └── posts.ts
├── controllers/
│ ├── userController.ts
│ └── postController.ts
├── middleware/
│ ├── auth.ts
│ ├── errorHandler.ts
│ └── validate.ts
├── models/
│ └── user.ts
└── utils/
 └── db.ts
&lt;/code&gt;&lt;/pre&gt;&lt;hr&gt;
&lt;h2 id="常见问题"&gt;常见问题&lt;/h2&gt;
&lt;h3 id="express-5-什么时候发布"&gt;Express 5 什么时候发布？&lt;/h3&gt;
&lt;p&gt;Express 5 目前处于 RC 阶段，主要改进是原生支持 async 错误处理（不再需要 &lt;code&gt;express-async-errors&lt;/code&gt; 包）。&lt;/p&gt;</description></item><item><title>QuickJS 集成与实践指南</title><link>https://plumephp.com/quickjs%E9%9B%86%E6%88%90%E4%B8%8E%E5%AE%9E%E8%B7%B5%E6%8C%87%E5%8D%97/</link><pubDate>Wed, 29 Oct 2025 10:17:14 +0800</pubDate><guid>https://plumephp.com/quickjs%E9%9B%86%E6%88%90%E4%B8%8E%E5%AE%9E%E8%B7%B5%E6%8C%87%E5%8D%97/</guid><description>&lt;div class="toc"&gt;
 &lt;h2&gt;目录&lt;/h2&gt;
 &lt;nav id="TableOfContents"&gt;
 &lt;ul&gt;
 &lt;li&gt;&lt;a href="#11-quickjs-是什么"&gt;1.1 QuickJS 是什么&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#12-为什么选择-quickjs"&gt;1.2 为什么选择 QuickJS&lt;/a&gt;
 &lt;ul&gt;
 &lt;li&gt;&lt;a href="#121-相较于-v8--javascriptcore"&gt;1.2.1 相较于 V8 / JavaScriptCore&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/li&gt;
 &lt;li&gt;&lt;a href="#13-核心特性一览"&gt;1.3 核心特性一览&lt;/a&gt;
 &lt;ul&gt;
 &lt;li&gt;&lt;a href="#-ecmascript-支持完整"&gt;✅ ECMAScript 支持完整&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#-可嵌入的-runtime--context-架构"&gt;✅ 可嵌入的 Runtime + Context 架构&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#-字节码编译与独立执行"&gt;✅ 字节码编译与独立执行&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#-高精度数值类型扩展"&gt;✅ 高精度数值类型（扩展）&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#-内建标准模块"&gt;✅ 内建标准模块&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#-可裁剪可定制"&gt;✅ 可裁剪、可定制&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/li&gt;
 &lt;li&gt;&lt;a href="#14-quickjs-架构总览图"&gt;1.4 QuickJS 架构总览图&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#15-适用场景与行业用途"&gt;1.5 适用场景与行业用途&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#16-quickjs-的设计哲学"&gt;1.6 QuickJS 的设计哲学&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#17-quickjs-与-duktape--jerryscript-对比"&gt;1.7 QuickJS 与 Duktape / JerryScript 对比&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;

 &lt;ul&gt;
 &lt;li&gt;&lt;a href="#21-源码获取与结构概览"&gt;2.1 源码获取与结构概览&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#22-在-linux-上构建"&gt;2.2 在 Linux 上构建&lt;/a&gt;
 &lt;ul&gt;
 &lt;li&gt;&lt;a href="#可选参数"&gt;可选参数：&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/li&gt;
 &lt;li&gt;&lt;a href="#23-windows-编译方法"&gt;2.3 Windows 编译方法&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#24-macos-编译"&gt;2.4 macOS 编译&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#25-嵌入式裁剪构建"&gt;2.5 嵌入式裁剪构建&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#26-跨平台交叉编译"&gt;2.6 跨平台交叉编译&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#27-构建可共享库动态链接"&gt;2.7 构建可共享库（动态链接）&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#28-构建自定义配置"&gt;2.8 构建自定义配置&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#29-验证构建结果"&gt;2.9 验证构建结果&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#210-与项目集成的基础目录结构"&gt;2.10 与项目集成的基础目录结构&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#211-在-cmake-工程中使用-quickjs"&gt;2.11 在 CMake 工程中使用 QuickJS&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#212-常见构建问题与解决方案"&gt;2.12 常见构建问题与解决方案&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#213-quickjs-ng-与官方差异"&gt;2.13 QuickJS-NG 与官方差异&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#214-构建总结"&gt;2.14 构建总结&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;

 &lt;ul&gt;
 &lt;li&gt;&lt;a href="#31-runtime--context-基本概念"&gt;3.1 Runtime / Context 基本概念&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#32-runtime-生命周期与-gc-管理"&gt;3.2 Runtime 生命周期与 GC 管理&lt;/a&gt;
 &lt;ul&gt;
 &lt;li&gt;&lt;a href="#创建与销毁"&gt;创建与销毁&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#手动触发-gc"&gt;手动触发 GC&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#自定义内存分配器"&gt;自定义内存分配器&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/li&gt;
 &lt;li&gt;&lt;a href="#33-context-的创建与作用"&gt;3.3 Context 的创建与作用&lt;/a&gt;
 &lt;ul&gt;
 &lt;li&gt;&lt;a href="#创建"&gt;创建&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#获取全局对象"&gt;获取全局对象&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#执行脚本"&gt;执行脚本&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/li&gt;
 &lt;li&gt;&lt;a href="#34-运行-js-脚本的多种方式"&gt;3.4 运行 JS 脚本的多种方式&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#35-jsvalue-类型系统"&gt;3.5 JSValue 类型系统&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#36-从-jsvalue-到-c-类型的转换"&gt;3.6 从 JSValue 到 C 类型的转换&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#37-从-c-到-js-的值构造"&gt;3.7 从 C 到 JS 的值构造&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#38-属性访问与修改"&gt;3.8 属性访问与修改&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#39-异常处理机制"&gt;3.9 异常处理机制&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#310-jobqueue-与-promise-驱动"&gt;3.10 JobQueue 与 Promise 驱动&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#311-模块加载与上下文隔离"&gt;3.11 模块加载与上下文隔离&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#312-销毁顺序与资源回收"&gt;3.12 销毁顺序与资源回收&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;

 &lt;ul&gt;
 &lt;li&gt;&lt;a href="#41-注册-c-函数到-js"&gt;4.1 注册 C 函数到 JS&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#42-暴露-c-模块到-js"&gt;4.2 暴露 C 模块到 JS&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#43-从-js-调用-c-函数并返回对象"&gt;4.3 从 JS 调用 C 函数并返回对象&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#44-从-c-调用-js-函数"&gt;4.4 从 C 调用 JS 函数&lt;/a&gt;
 &lt;ul&gt;
 &lt;li&gt;&lt;a href="#获取函数引用"&gt;获取函数引用&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#绑定回调对象"&gt;绑定回调对象&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/li&gt;
 &lt;li&gt;&lt;a href="#45-js---c-结构体映射opaque"&gt;4.5 JS &amp;lt;-&amp;gt; C 结构体映射（opaque）&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#46-处理-c-层异常"&gt;4.6 处理 C 层异常&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#47-在-js-模块中注册全局方法"&gt;4.7 在 JS 模块中注册全局方法&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#48-在-c-项目中封装-quickjs"&gt;4.8 在 C++ 项目中封装 QuickJS&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#49-通过-c-调用异步-promise"&gt;4.9 通过 C 调用异步 Promise&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#410-复杂结构交互实例注册事件系统"&gt;4.10 复杂结构交互实例：注册事件系统&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#411-嵌入式最佳实践"&gt;4.11 嵌入式最佳实践&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;

 &lt;ul&gt;
 &lt;li&gt;&lt;a href="#51-quickjs-模块体系概述"&gt;5.1 QuickJS 模块体系概述&lt;/a&gt;
 &lt;ul&gt;
 &lt;li&gt;&lt;a href="#模块加载流程简化"&gt;模块加载流程（简化）&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/li&gt;
 &lt;li&gt;&lt;a href="#52-js-层模块示例"&gt;5.2 JS 层模块示例&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#53-自定义模块加载器c-层"&gt;5.3 自定义模块加载器（C 层）&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#54-模块缓存与热更新机制"&gt;5.4 模块缓存与热更新机制&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#55-c-模块与原生扩展"&gt;5.5 C 模块与原生扩展&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#56-动态导入异步-import"&gt;5.6 动态导入（异步 import）&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#57-字节码编译器-qjsc-基础"&gt;5.7 字节码编译器 qjsc 基础&lt;/a&gt;
 &lt;ul&gt;
 &lt;li&gt;&lt;a href="#命令行用法"&gt;命令行用法&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/li&gt;
 &lt;li&gt;&lt;a href="#58-内嵌多模块编译"&gt;5.8 内嵌多模块编译&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#59-字节码文件加载"&gt;5.9 字节码文件加载&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#510-模块系统嵌入架构示意"&gt;5.10 模块系统嵌入架构示意&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#511-实战示例嵌入式脚本插件系统"&gt;5.11 实战示例：嵌入式脚本插件系统&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#512-模块系统总结"&gt;5.12 模块系统总结&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;

 &lt;ul&gt;
 &lt;li&gt;&lt;a href="#61-quickjs-的内存管理模型"&gt;6.1 QuickJS 的内存管理模型&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#62-内存分配器与可插拔机制"&gt;6.2 内存分配器与可插拔机制&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#63-垃圾回收触发条件"&gt;6.3 垃圾回收触发条件&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#64-手动控制-gc"&gt;6.4 手动控制 GC&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#65-内存分配监控"&gt;6.5 内存分配监控&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#66-内存分布示意"&gt;6.6 内存分布示意&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#67-内存泄漏防御"&gt;6.7 内存泄漏防御&lt;/a&gt;
 &lt;ul&gt;
 &lt;li&gt;&lt;a href="#原则-1所有-jsvalue-必须释放"&gt;原则 1：所有 JSValue 必须释放&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#原则-2所有-c-分配的指针必须注册-finalizer"&gt;原则 2：所有 C 分配的指针必须注册 Finalizer&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#原则-3context-必须在-runtime-之前释放"&gt;原则 3：Context 必须在 Runtime 之前释放&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/li&gt;
 &lt;li&gt;&lt;a href="#68-常见-gc-问题排查"&gt;6.8 常见 GC 问题排查&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#69-内存调优建议"&gt;6.9 内存调优建议&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#610-gc-性能测量"&gt;6.10 GC 性能测量&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#611-finalizer-的使用"&gt;6.11 Finalizer 的使用&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#612-多-runtime-模式"&gt;6.12 多 Runtime 模式&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#613-内存调试工具链"&gt;6.13 内存调试工具链&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#614-嵌入式内存策略"&gt;6.14 嵌入式内存策略&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#615-小结"&gt;6.15 小结&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;

 &lt;ul&gt;
 &lt;li&gt;&lt;a href="#71-为什么要多语言绑定"&gt;7.1 为什么要多语言绑定&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#72-quickjs-的-ffi-原理"&gt;7.2 QuickJS 的 FFI 原理&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#73-go-与-quickjs-集成"&gt;7.3 Go 与 QuickJS 集成&lt;/a&gt;
 &lt;ul&gt;
 &lt;li&gt;&lt;a href="#731-绑定方案概述"&gt;7.3.1 绑定方案概述&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#732-go-示例执行-js-代码"&gt;7.3.2 Go 示例：执行 JS 代码&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#733-go-层包装接口示例"&gt;7.3.3 Go 层包装接口示例&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/li&gt;
 &lt;li&gt;&lt;a href="#74-rust-与-quickjs-集成"&gt;7.4 Rust 与 QuickJS 集成&lt;/a&gt;
 &lt;ul&gt;
 &lt;li&gt;&lt;a href="#741-使用-rquickjs-执行脚本"&gt;7.4.1 使用 &lt;code&gt;rquickjs&lt;/code&gt; 执行脚本&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#742-注册-rust-函数到-js"&gt;7.4.2 注册 Rust 函数到 JS&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#743-rust-异步任务集成"&gt;7.4.3 Rust 异步任务集成&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/li&gt;
 &lt;li&gt;&lt;a href="#75-python-与-quickjs-集成"&gt;7.5 Python 与 QuickJS 集成&lt;/a&gt;
 &lt;ul&gt;
 &lt;li&gt;&lt;a href="#751-安装与使用"&gt;7.5.1 安装与使用&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#752-python-调用-js-函数"&gt;7.5.2 Python 调用 JS 函数&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#753-js-调用-python-模块扩展"&gt;7.5.3 JS 调用 Python 模块（扩展）&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/li&gt;
 &lt;li&gt;&lt;a href="#76-多语言绑定的统一设计建议"&gt;7.6 多语言绑定的统一设计建议&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#77-gorust-混合架构图"&gt;7.7 Go/Rust 混合架构图&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#78-多语言绑定性能评估"&gt;7.8 多语言绑定性能评估&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#79-小结"&gt;7.9 小结&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;

 &lt;ul&gt;
 &lt;li&gt;&lt;a href="#81-为什么-quickjs-适合嵌入式"&gt;8.1 为什么 QuickJS 适合嵌入式&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#82-嵌入式系统中的典型架构"&gt;8.2 嵌入式系统中的典型架构&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#83-构建极简-quickjs-内核"&gt;8.3 构建极简 QuickJS 内核&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#84-在-openwrt-上运行-quickjs"&gt;8.4 在 OpenWrt 上运行 QuickJS&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#85-在-esp32--stm32-上集成-quickjs"&gt;8.5 在 ESP32 / STM32 上集成 QuickJS&lt;/a&gt;
 &lt;ul&gt;
 &lt;li&gt;&lt;a href="#示例控制设备-led"&gt;示例：控制设备 LED&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/li&gt;
 &lt;li&gt;&lt;a href="#86-在路由器--边缘节点中的使用"&gt;8.6 在路由器 / 边缘节点中的使用&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#87-性能与功耗对比iot-实测"&gt;8.7 性能与功耗对比（IoT 实测）&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#88-嵌入式沙箱与权限控制"&gt;8.8 嵌入式沙箱与权限控制&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#89-热更新与远程脚本执行"&gt;8.9 热更新与远程脚本执行&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#810-案例工业控制脚本引擎"&gt;8.10 案例：工业控制脚本引擎&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#811-案例智能家居设备逻辑"&gt;8.11 案例：智能家居设备逻辑&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#812-嵌入式优化清单"&gt;8.12 嵌入式优化清单&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#813-quickjs-与-lua-在-iot-场景的对比"&gt;8.13 QuickJS 与 Lua 在 IoT 场景的对比&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#814-嵌入式架构拓扑示意"&gt;8.14 嵌入式架构拓扑示意&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#815-小结"&gt;8.15 小结&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;

 &lt;ul&gt;
 &lt;li&gt;&lt;a href="#91-saas-场景下的脚本化需求"&gt;9.1 SaaS 场景下的脚本化需求&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#92-quickjs-在云端的运行模型"&gt;9.2 QuickJS 在云端的运行模型&lt;/a&gt;
 &lt;ul&gt;
 &lt;li&gt;&lt;a href="#saas-集成架构示意"&gt;SaaS 集成架构示意&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/li&gt;
 &lt;li&gt;&lt;a href="#93-示例表单计算引擎"&gt;9.3 示例：表单计算引擎&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#94-示例策略与风控规则引擎"&gt;9.4 示例：策略与风控规则引擎&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#95-quickjs--redis--http-桥接"&gt;9.5 QuickJS + Redis + HTTP 桥接&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#96-低代码与自动化平台中的-quickjs"&gt;9.6 低代码与自动化平台中的 QuickJS&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#97-quickjs-与-webassembly-wasm-集成"&gt;9.7 QuickJS 与 WebAssembly (WASM) 集成&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#98-quickjs-在-ai-与-prompt-平台中的应用"&gt;9.8 QuickJS 在 AI 与 Prompt 平台中的应用&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#99-多租户隔离方案"&gt;9.9 多租户隔离方案&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#910-saas-性能与稳定性优化策略"&gt;9.10 SaaS 性能与稳定性优化策略&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#911-saas-集成架构详细"&gt;9.11 SaaS 集成架构（详细）&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#912-quickjs-的业务可扩展模式"&gt;9.12 QuickJS 的业务可扩展模式&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#913-小结"&gt;9.13 小结&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;

 &lt;ul&gt;
 &lt;li&gt;&lt;a href="#101-性能调优总览"&gt;10.1 性能调优总览&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#102-脚本预编译与缓存"&gt;10.2 脚本预编译与缓存&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#103-gc-调度优化"&gt;10.3 GC 调度优化&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#104-jobqueue-调度优化"&gt;10.4 JobQueue 调度优化&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#105-跨语言通信优化"&gt;10.5 跨语言通信优化&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#106-沙箱安全体系"&gt;10.6 沙箱安全体系&lt;/a&gt;
 &lt;ul&gt;
 &lt;li&gt;&lt;a href="#禁用标准模块"&gt;禁用标准模块&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#封闭模块加载器"&gt;封闭模块加载器&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#限制内存与栈"&gt;限制内存与栈&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#禁止无限循环"&gt;禁止无限循环&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/li&gt;
 &lt;li&gt;&lt;a href="#107-沙箱隔离层架构"&gt;10.7 沙箱隔离层架构&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#108-安全白名单策略"&gt;10.8 安全白名单策略&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#109-审计与日志系统"&gt;10.9 审计与日志系统&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#1010-防御策略总结"&gt;10.10 防御策略总结&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#1011-性能与安全平衡"&gt;10.11 性能与安全平衡&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#1012-监控与指标体系"&gt;10.12 监控与指标体系&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#1013-工业级部署架构"&gt;10.13 工业级部署架构&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#1014-未来趋势quickjs--wasm--ai"&gt;10.14 未来趋势：QuickJS + WASM + AI&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#1015-小结"&gt;10.15 小结&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#全书总结"&gt;全书总结&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
&lt;/nav&gt;
&lt;/div&gt;
&lt;h1 id="第-1-章quickjs-概述与特性全览"&gt;第 1 章：QuickJS 概述与特性全览&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;“在不足 1 MB 的体积中，实现完整 ECMAScript 规范的奇迹。”&lt;/p&gt;</description></item><item><title>QuickJS 与 Lua 的深度对比与实战分析</title><link>https://plumephp.com/quickjs%E5%92%8Clua%E8%AF%A6%E7%BB%86%E5%AF%B9%E6%AF%94/</link><pubDate>Mon, 27 Oct 2025 10:17:14 +0800</pubDate><guid>https://plumephp.com/quickjs%E5%92%8Clua%E8%AF%A6%E7%BB%86%E5%AF%B9%E6%AF%94/</guid><description>&lt;div class="toc"&gt;
 &lt;h2&gt;目录&lt;/h2&gt;
 &lt;nav id="TableOfContents"&gt;
 &lt;ul&gt;
 &lt;li&gt;&lt;a href="#21-lua-的历史与哲学"&gt;2.1 Lua 的历史与哲学&lt;/a&gt;
 &lt;ul&gt;
 &lt;li&gt;&lt;a href="#哲学核心"&gt;哲学核心&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/li&gt;
 &lt;li&gt;&lt;a href="#22-quickjs-的诞生"&gt;2.2 QuickJS 的诞生&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#23-设计哲学对比"&gt;2.3 设计哲学对比&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;

 &lt;ul&gt;
 &lt;li&gt;&lt;a href="#31-基础语法"&gt;3.1 基础语法&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#32-控制结构与闭包"&gt;3.2 控制结构与闭包&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#33-异步与并发模型"&gt;3.3 异步与并发模型&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;

 &lt;ul&gt;
 &lt;li&gt;&lt;a href="#41-基础类型对比"&gt;4.1 基础类型对比&lt;/a&gt;
 &lt;ul&gt;
 &lt;li&gt;&lt;a href="#411-lua-的table-一统天下"&gt;4.1.1 Lua 的“Table 一统天下”&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#412-quickjs-的对象体系"&gt;4.1.2 QuickJS 的对象体系&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/li&gt;
 &lt;li&gt;&lt;a href="#42-值模型与内存表示"&gt;4.2 值模型与内存表示&lt;/a&gt;
 &lt;ul&gt;
 &lt;li&gt;&lt;a href="#421-lua-值结构tvalue"&gt;4.2.1 Lua 值结构（TValue）&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#422-quickjs-值结构jsvalue"&gt;4.2.2 QuickJS 值结构（JSValue）&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/li&gt;
 &lt;li&gt;&lt;a href="#43-动态类型检查机制"&gt;4.3 动态类型检查机制&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#44-用户数据与-c-绑定类型"&gt;4.4 用户数据与 C 绑定类型&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#45-内建异步类型"&gt;4.5 内建异步类型&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;

 &lt;ul&gt;
 &lt;li&gt;&lt;a href="#51-quickjs-虚拟机体系"&gt;5.1 QuickJS 虚拟机体系&lt;/a&gt;
 &lt;ul&gt;
 &lt;li&gt;&lt;a href="#核心组件"&gt;核心组件：&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/li&gt;
 &lt;li&gt;&lt;a href="#52-lua-虚拟机体系"&gt;5.2 Lua 虚拟机体系&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#53-执行循环对比"&gt;5.3 执行循环对比&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#54-执行性能与栈模型"&gt;5.4 执行性能与栈模型&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#55-模块系统与沙箱隔离"&gt;5.5 模块系统与沙箱隔离&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;

 &lt;ul&gt;
 &lt;li&gt;&lt;a href="#61-编译流程比较"&gt;6.1 编译流程比较&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#62-字节码结构示例"&gt;6.2 字节码结构示例&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#63-编译器特色"&gt;6.3 编译器特色&lt;/a&gt;
 &lt;ul&gt;
 &lt;li&gt;&lt;a href="#lua"&gt;Lua：&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#quickjs"&gt;QuickJS：&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/li&gt;
 &lt;li&gt;&lt;a href="#64-qjsc-编译器"&gt;6.4 qjsc 编译器&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#65-编译优化策略"&gt;6.5 编译优化策略&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#66-字节码执行效率比较"&gt;6.6 字节码执行效率比较&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#67-编译器可扩展性"&gt;6.7 编译器可扩展性&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;

 &lt;ul&gt;
 &lt;li&gt;&lt;a href="#71-概述与设计哲学"&gt;7.1 概述与设计哲学&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#72-quickjs-内存模型"&gt;7.2 QuickJS 内存模型&lt;/a&gt;
 &lt;ul&gt;
 &lt;li&gt;&lt;a href="#gc-触发逻辑"&gt;GC 触发逻辑&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#特点"&gt;特点&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/li&gt;
 &lt;li&gt;&lt;a href="#73-lua-内存模型"&gt;7.3 Lua 内存模型&lt;/a&gt;
 &lt;ul&gt;
 &lt;li&gt;&lt;a href="#特征"&gt;特征&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#lua-的内存策略优势"&gt;Lua 的内存策略优势&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/li&gt;
 &lt;li&gt;&lt;a href="#74-对比分析"&gt;7.4 对比分析&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#75-实践建议"&gt;7.5 实践建议&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;

 &lt;ul&gt;
 &lt;li&gt;&lt;a href="#81-模块机制对比总览"&gt;8.1 模块机制对比总览&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#82-quickjs-模块系统"&gt;8.2 QuickJS 模块系统&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#83-lua-模块系统"&gt;8.3 Lua 模块系统&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#84-模块加载性能比较"&gt;8.4 模块加载性能比较&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#85-模块沙箱与隔离"&gt;8.5 模块沙箱与隔离&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;

 &lt;ul&gt;
 &lt;li&gt;&lt;a href="#91-设计理念对比"&gt;9.1 设计理念对比&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#92-quickjs-的异步体系"&gt;9.2 QuickJS 的异步体系&lt;/a&gt;
 &lt;ul&gt;
 &lt;li&gt;&lt;a href="#内部实现"&gt;内部实现&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/li&gt;
 &lt;li&gt;&lt;a href="#93-lua-的协程模型"&gt;9.3 Lua 的协程模型&lt;/a&gt;
 &lt;ul&gt;
 &lt;li&gt;&lt;a href="#特点-1"&gt;特点&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#缺点"&gt;缺点&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/li&gt;
 &lt;li&gt;&lt;a href="#94-工程层面对比"&gt;9.4 工程层面对比&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#95-框架级应用举例"&gt;9.5 框架级应用举例&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#96-性能比较异步测试"&gt;9.6 性能比较（异步测试）&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#97-混合策略协程--promise"&gt;9.7 混合策略：协程 + Promise&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;

 &lt;ul&gt;
 &lt;li&gt;&lt;a href="#101-性能指标体系"&gt;10.1 性能指标体系&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#102-测试环境与配置"&gt;10.2 测试环境与配置&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#103-执行速度对比"&gt;10.3 执行速度对比&lt;/a&gt;
 &lt;ul&gt;
 &lt;li&gt;&lt;a href="#测试-1循环与算术"&gt;测试 1：循环与算术&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#测试-2函数调用深度"&gt;测试 2：函数调用深度&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#测试-3字符串拼接"&gt;测试 3：字符串拼接&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/li&gt;
 &lt;li&gt;&lt;a href="#104-启动与内存占用"&gt;10.4 启动与内存占用&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#105-gc-延迟"&gt;10.5 GC 延迟&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#106-c-调用性能"&gt;10.6 C 调用性能&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#107-优化策略"&gt;10.7 优化策略&lt;/a&gt;
 &lt;ul&gt;
 &lt;li&gt;&lt;a href="#quickjs-优化建议"&gt;QuickJS 优化建议&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#lua-优化建议"&gt;Lua 优化建议&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/li&gt;
 &lt;li&gt;&lt;a href="#108-性能结论"&gt;10.8 性能结论&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;

 &lt;ul&gt;
 &lt;li&gt;&lt;a href="#111-游戏引擎脚本"&gt;11.1 游戏引擎脚本&lt;/a&gt;
 &lt;ul&gt;
 &lt;li&gt;&lt;a href="#lua-的统治地位"&gt;Lua 的统治地位&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#quickjs-的潜力"&gt;QuickJS 的潜力&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/li&gt;
 &lt;li&gt;&lt;a href="#112-saas-与-web-后端配置脚本"&gt;11.2 SaaS 与 Web 后端配置脚本&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#113-嵌入式与-iot"&gt;11.3 嵌入式与 IoT&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#114-游戏服务器与分布式系统"&gt;11.4 游戏服务器与分布式系统&lt;/a&gt;
 &lt;ul&gt;
 &lt;li&gt;&lt;a href="#lua-案例skynet"&gt;Lua 案例：Skynet&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#quickjs-应用方向"&gt;QuickJS 应用方向：&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/li&gt;
 &lt;li&gt;&lt;a href="#115-工具与编辑器脚本"&gt;11.5 工具与编辑器脚本&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#116-脚本化运维与-dsl-平台"&gt;11.6 脚本化运维与 DSL 平台&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#117-总结场景决策矩阵"&gt;11.7 总结：场景决策矩阵&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;

 &lt;ul&gt;
 &lt;li&gt;&lt;a href="#121-lua-的生态"&gt;12.1 Lua 的生态&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#122-quickjs-的生态"&gt;12.2 QuickJS 的生态&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#123-社区与维护状况"&gt;12.3 社区与维护状况&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#124-技术趋势分析"&gt;12.4 技术趋势分析&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#125-未来展望"&gt;12.5 未来展望&lt;/a&gt;
 &lt;ul&gt;
 &lt;li&gt;&lt;a href="#lua-1"&gt;Lua&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#quickjs-1"&gt;QuickJS&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/li&gt;
 &lt;li&gt;&lt;a href="#126-作者评述"&gt;12.6 作者评述&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;

 &lt;ul&gt;
 &lt;li&gt;&lt;a href="#131-选型三原则"&gt;13.1 选型三原则&lt;/a&gt;
 &lt;ul&gt;
 &lt;li&gt;&lt;a href="#1-生态对齐原则"&gt;1. &lt;strong&gt;生态对齐原则&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#2-可维护性优先原则"&gt;2. &lt;strong&gt;可维护性优先原则&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#3-资源约束原则"&gt;3. &lt;strong&gt;资源约束原则&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/li&gt;
 &lt;li&gt;&lt;a href="#132-场景决策矩阵完整版"&gt;13.2 场景决策矩阵（完整版）&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#133-典型架构整合模式"&gt;13.3 典型架构整合模式&lt;/a&gt;
 &lt;ul&gt;
 &lt;li&gt;&lt;a href="#1-单引擎模式"&gt;1. &lt;strong&gt;单引擎模式&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#2-双层混合模式"&gt;2. &lt;strong&gt;双层混合模式&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/li&gt;
 &lt;li&gt;&lt;a href="#134-与宿主语言的集成示例"&gt;13.4 与宿主语言的集成示例&lt;/a&gt;
 &lt;ul&gt;
 &lt;li&gt;&lt;a href="#c-嵌入-lua"&gt;C 嵌入 Lua&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#c-嵌入-quickjs"&gt;C 嵌入 QuickJS&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#go-嵌入-quickjs"&gt;Go 嵌入 QuickJS&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#c-跨层桥接-lua-与-quickjs"&gt;C++ 跨层桥接 Lua 与 QuickJS&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/li&gt;
 &lt;li&gt;&lt;a href="#135-模块化部署模式"&gt;13.5 模块化部署模式&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#136-安全与沙箱设计"&gt;13.6 安全与沙箱设计&lt;/a&gt;
 &lt;ul&gt;
 &lt;li&gt;&lt;a href="#quickjs-安全策略"&gt;QuickJS 安全策略&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#lua-安全策略"&gt;Lua 安全策略&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/li&gt;
 &lt;li&gt;&lt;a href="#137-性能优化架构建议"&gt;13.7 性能优化架构建议&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#138-成本评估模型"&gt;13.8 成本评估模型&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;

 &lt;ul&gt;
 &lt;li&gt;&lt;a href="#141-语言哲学的融合"&gt;14.1 语言哲学的融合&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#142-新时代的脚本层三定律"&gt;14.2 新时代的“脚本层三定律”&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#143-工程应用预测20252030"&gt;14.3 工程应用预测（2025–2030）&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#144-对企业与团队的建议"&gt;14.4 对企业与团队的建议&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#145-结语轻量的未来"&gt;14.5 结语：轻量的未来&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;

 &lt;ul&gt;
 &lt;li&gt;&lt;a href="#quickjs-嵌入式配置系统"&gt;QuickJS 嵌入式配置系统&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#lua-游戏逻辑系统"&gt;Lua 游戏逻辑系统&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;

 &lt;ul&gt;
 &lt;li&gt;&lt;a href="#最后从工程师的视角"&gt;最后：从工程师的视角&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
&lt;/nav&gt;
&lt;/div&gt;
&lt;h1 id="第-1-章-引言脚本语言的嵌入革命"&gt;第 1 章 引言：脚本语言的嵌入革命&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“嵌入脚本，是让系统拥有第二条思考路径。”&lt;/em&gt;&lt;/p&gt;</description></item><item><title>QuickJS介绍</title><link>https://plumephp.com/quickjs%E4%BB%8B%E7%BB%8D/</link><pubDate>Mon, 27 Oct 2025 10:16:14 +0800</pubDate><guid>https://plumephp.com/quickjs%E4%BB%8B%E7%BB%8D/</guid><description>&lt;div class="toc"&gt;
 &lt;h2&gt;目录&lt;/h2&gt;
 &lt;nav id="TableOfContents"&gt;
 &lt;ul&gt;
 &lt;li&gt;&lt;a href="#11-基本信息"&gt;1.1 基本信息&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#12-quickjs-的设计目标"&gt;1.2 QuickJS 的设计目标&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;

 &lt;ul&gt;
 &lt;li&gt;&lt;a href="#21-体系结构概览"&gt;2.1 体系结构概览&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#22-内部模块划分"&gt;2.2 内部模块划分&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;

 &lt;ul&gt;
 &lt;li&gt;&lt;a href="#41-runtime--context-概念"&gt;4.1 Runtime / Context 概念&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#42-垃圾回收机制"&gt;4.2 垃圾回收机制&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#43-类型系统与-jsvalue"&gt;4.3 类型系统与 JSValue&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;

 &lt;ul&gt;
 &lt;li&gt;&lt;a href="#51-执行脚本示例"&gt;5.1 执行脚本示例&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#52-注册原生函数"&gt;5.2 注册原生函数&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;

 &lt;ul&gt;
 &lt;li&gt;&lt;a href="#61-qjs-解释器"&gt;6.1 qjs 解释器&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#62-qjsc-编译器"&gt;6.2 qjsc 编译器&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;

 &lt;ul&gt;
 &lt;li&gt;&lt;a href="#111-优化策略"&gt;11.1 优化策略&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#112-与其他语言集成"&gt;11.2 与其他语言集成&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;

 &lt;ul&gt;
 &lt;li&gt;&lt;a href="#121-quickjs-ng"&gt;12.1 QuickJS-NG&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#122-webassembly-计划"&gt;12.2 WebAssembly 计划&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="#123-未来方向"&gt;12.3 未来方向&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
&lt;/nav&gt;
&lt;/div&gt;
&lt;h1 id="第-1-章概述与背景"&gt;第 1 章：概述与背景&lt;/h1&gt;
&lt;p&gt;QuickJS 是一个由 &lt;strong&gt;Fabrice Bellard&lt;/strong&gt;（著名的 FFmpeg、QEMU、TinyCC 作者）与 &lt;strong&gt;Charlie Gordon&lt;/strong&gt; 共同开发的轻量级 JavaScript 引擎。&lt;br&gt;
它以 &lt;strong&gt;高标准兼容性、极小体积、易于嵌入&lt;/strong&gt; 为核心目标，成为现代嵌入式系统、游戏引擎、配置脚本系统与工具型软件的理想脚本引擎。&lt;/p&gt;</description></item><item><title>Vuetify介绍</title><link>https://plumephp.com/vuetify%E4%BB%8B%E7%BB%8D/</link><pubDate>Thu, 29 Aug 2024 10:16:14 +0800</pubDate><guid>https://plumephp.com/vuetify%E4%BB%8B%E7%BB%8D/</guid><description>&lt;p&gt;Vuetify 是一个基于 Vue.js 的开源 UI 库，它提供了大量精心制作的组件，遵循 Google 的 Material Design 规范。使用 Vuetify，开发者可以无需设计技能就能创建出美观、响应式的应用程序。以下是对 Vuetify 的详细介绍，包含代码示例和详细说明。&lt;/p&gt;</description></item><item><title>Vue3和vue2的区别</title><link>https://plumephp.com/vue3%E5%92%8Cvue2%E7%9A%84%E5%8C%BA%E5%88%AB/</link><pubDate>Wed, 28 Aug 2024 19:54:42 +0800</pubDate><guid>https://plumephp.com/vue3%E5%92%8Cvue2%E7%9A%84%E5%8C%BA%E5%88%AB/</guid><description>&lt;p&gt;Vue 3 和 Vue 2 在多个方面有着显著的区别，这些区别不仅体现在性能和响应式系统的优化上，还涉及到了语法、API 设计和项目构建方式等多个层面。以下是 Vue 3 和 Vue 2 的一些主要区别以及迁移方案的概述：&lt;/p&gt;</description></item><item><title>electron深入</title><link>https://plumephp.com/electron%E6%B7%B1%E5%85%A5/</link><pubDate>Mon, 26 Aug 2024 19:21:39 +0800</pubDate><guid>https://plumephp.com/electron%E6%B7%B1%E5%85%A5/</guid><description>&lt;p&gt;Electron 是一个使用 JavaScript, HTML 和 CSS 构建跨平台桌面应用的框架。它允许开发者将 Web 技术用于创建桌面应用程序，同时利用 Node.js 的能力访问本地系统资源。以下是对 Electron 架构的深入介绍。&lt;/p&gt;</description></item><item><title>Awesome Electron</title><link>https://plumephp.com/awesome-electron/</link><pubDate>Mon, 26 Aug 2024 18:27:28 +0800</pubDate><guid>https://plumephp.com/awesome-electron/</guid><description>&lt;p&gt;From: &lt;a href="https://github.com/sindresorhus/awesome-electron"&gt;https://github.com/sindresorhus/awesome-electron&lt;/a&gt;&lt;/p&gt;
&lt;h1 id="awesome-electron-awesome"&gt;Awesome Electron &lt;a href="https://awesome.re"&gt;&lt;img src="https://awesome.re/badge.svg" alt="Awesome" loading="lazy" decoding="async" style="max-width: 100%; height: auto;"&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;Useful resources for creating apps with &lt;a href="https://electronjs.org"&gt;Electron&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Electron is an open-source framework for creating desktop apps using web technologies. It combines the Chromium rendering engine and the Node.js runtime.&lt;/p&gt;
&lt;br&gt;
&lt;hr&gt;
&lt;br&gt;
&lt;br&gt;
&lt;div align="center"&gt;
	&lt;sub&gt;Check out my macOS app&lt;/sub&gt;
	&lt;br&gt;
	&lt;h2&gt;
		&lt;a href="https://sindresorhus.com/menu-bar-spacing"&gt;Menu Bar Spacing&lt;/a&gt;
		&lt;br&gt;
		&lt;sup&gt;Customize the gap between menu bar items on macOS&lt;/sup&gt;
	&lt;/h2&gt;
&lt;/div&gt;
&lt;br&gt;
&lt;br&gt;
&lt;hr&gt;
&lt;br&gt;
&lt;h2 id="contents"&gt;Contents&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#apps"&gt;Apps&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#boilerplates"&gt;Boilerplates&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#tools"&gt;Tools&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#components"&gt;Components&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#documentation"&gt;Documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#articles"&gt;Articles&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#books"&gt;Books&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#videos"&gt;Videos&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#podcasts"&gt;Podcasts&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#community"&gt;Community&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#related"&gt;Related&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="apps"&gt;Apps&lt;/h2&gt;
&lt;p&gt;Made with Electron.&lt;/p&gt;
&lt;h3 id="open-source"&gt;Open Source&lt;/h3&gt;
&lt;h6 id="featured"&gt;Featured&lt;/h6&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/feross/webtorrent-app"&gt;WebTorrent&lt;/a&gt; - Streaming torrent client.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/minbrowser/min"&gt;Min&lt;/a&gt; - Minimal web browser.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/zeit/hyper"&gt;Hyper&lt;/a&gt; - Terminal.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/Microsoft/vscode"&gt;Visual Studio Code&lt;/a&gt; - Cross-platform IDE.&lt;/li&gt;
&lt;/ul&gt;
&lt;h6 id="other"&gt;Other&lt;/h6&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/jlord/git-it-electron"&gt;Git-it&lt;/a&gt; - Teaches you Git and GitHub.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/sindresorhus/caprine"&gt;Caprine&lt;/a&gt; - Unofficial Facebook Messenger app.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/Automattic/simplenote-electron"&gt;Simplenote&lt;/a&gt; - Note keeper.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/brrd/Abricotine"&gt;Abricotine&lt;/a&gt; - Markdown editor with inline preview.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/wulkano/kap"&gt;Kap&lt;/a&gt; - Screen recorder with GIF support.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/luin/medis"&gt;Medis&lt;/a&gt; - Redis database management.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/evancohen/smart-mirror"&gt;SmartMirror&lt;/a&gt; - Voice controlled smart mirror.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/beakerbrowser/beaker"&gt;Beaker&lt;/a&gt; - Browser with peer-to-peer web protocols.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/keeweb/keeweb"&gt;KeeWeb&lt;/a&gt; - Unofficial KeePass app.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/manosim/gitify"&gt;Gitify&lt;/a&gt; - GitHub notifications in your menubar.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/zz85/space-radar"&gt;SpaceRadar&lt;/a&gt; - Interactive disk space and memory visualization.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/leanote/desktop-app"&gt;Leanote&lt;/a&gt; - Cloud notepad.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/mmckegg/loop-drop-app"&gt;Loop Drop&lt;/a&gt; - MIDI looper and synth for live electronic music performances.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/G07cha/pomodoro"&gt;Pomodoro&lt;/a&gt; - Timer based on the Pomodoro Technique.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://gitlab.com/NebulousLabs/Sia-UI"&gt;Sia-UI&lt;/a&gt; - Decentralized file storage system based on cryptocurrency technology.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/dvcrn/markright"&gt;MarkRight&lt;/a&gt; - GitHub flavored Markdown editor with live preview.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/sqlectron/sqlectron-gui"&gt;Sqlectron&lt;/a&gt; - SQL client.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/LightTable/LightTable"&gt;Light Table&lt;/a&gt; - Code editor with instant feedback.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/MarshallOfSound/Google-Play-Music-Desktop-Player-UNOFFICIAL-"&gt;Google Play Music Desktop Player&lt;/a&gt; - Unofficial Google Play Music app.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/auchenberg/chrome-devtools-app"&gt;Chrome DevTools&lt;/a&gt; - Chrome DevTools packaged as an app.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/steventhanna/proton"&gt;Proton&lt;/a&gt; - Markdown editor with live preview.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/kalpetros/hawkpass"&gt;Hawkpass&lt;/a&gt; - Password generator.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/BoostIO/Boostnote"&gt;Boostnote&lt;/a&gt; - Markdown note &amp;amp; code snippet app for developers.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/muffinista/before-dawn"&gt;Before Dawn&lt;/a&gt; - Screensaver tool.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/MeoBeoI/Catify"&gt;Catify&lt;/a&gt; - Utility for Spotify.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/m0g/ansel"&gt;Ansel&lt;/a&gt; - Image organizer.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/MayGo/tockler"&gt;Tockler&lt;/a&gt; - Tracks your time.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/mattermost/desktop"&gt;Mattermost&lt;/a&gt; - Mattermost client.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/HR/Crypter"&gt;Crypter&lt;/a&gt; - Secure encryption client.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/yakyak/yakyak"&gt;YakYak&lt;/a&gt; - Unofficial Google Hangouts app.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/KeitIG/museeks"&gt;Museeks&lt;/a&gt; - Music player.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/SabakiHQ/Sabaki"&gt;Sabaki&lt;/a&gt; - Go/Baduk/Weiqi board.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/wireapp/wire-desktop"&gt;Wire&lt;/a&gt; - Messenger and calling app.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/sedwards2009/extraterm"&gt;Extraterm&lt;/a&gt; - Terminal.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/oguzhaninan/Stacer"&gt;Stacer&lt;/a&gt; - Ubuntu system optimizer.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/sarah-seo/Inpad"&gt;Inpad&lt;/a&gt; - Notes app with GitHub-flavored Markdown.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/KELiON/cerebro"&gt;Cerebro&lt;/a&gt; - Launcher with inline previews.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/mifi/lossless-cut"&gt;LosslessCut&lt;/a&gt; - Lossless video trimming &amp;amp; cutting.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/oguzhaninan/Buka"&gt;Buka&lt;/a&gt; - E-book management.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/getinsomnia/insomnia"&gt;Insomnia&lt;/a&gt; - Create and manage HTTP requests.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/champloohq/tusk"&gt;Tusk&lt;/a&gt; - Unofficial Evernote app.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/buttercup/buttercup-desktop"&gt;Buttercup Desktop&lt;/a&gt; - Password manager.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/Foundry376/Mailspring"&gt;Mailspring&lt;/a&gt; - Extensible email client. (Fork of Nylas Mail)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/headsetapp/headset-electron"&gt;Headset&lt;/a&gt; - Discover, collect, and listen to music from YouTube.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/nukeop/nuclear"&gt;Nuclear&lt;/a&gt; - Music player that streams from free sources.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/marktext/marktext"&gt;Mark Text&lt;/a&gt; - Real-time preview Markdown editor.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/Splode/pomotroid"&gt;Pomotroid&lt;/a&gt; - Pomodoro timer.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/lutzroeder/netron"&gt;Netron&lt;/a&gt; - Visualizer for deep learning and machine learning models.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/resin-io/etcher"&gt;Etcher&lt;/a&gt; - Flash OS images to SD cards and USB drives.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/fabiospampinato/notable"&gt;Notable&lt;/a&gt; - Markdown-based note-taking.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/soroushchehresa/unsplash-wallpapers"&gt;Unsplash Wallpapers&lt;/a&gt; - Set desktop wallpaper from Unsplash.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/agalwood/Motrix"&gt;Motrix&lt;/a&gt; - Download manager.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/meetfranz/franz"&gt;Franz&lt;/a&gt; - Skype, Slack, Hangouts, WhatsApp, Grape, Telegram, FB Messenger, Hipchat in the same app.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/timche/gmail-desktop"&gt;Gmail Desktop&lt;/a&gt; - Unofficial Gmail app.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/madisvain/upcount"&gt;Upcount&lt;/a&gt; - Invoicing.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/szTheory/exifcleaner"&gt;ExifCleaner&lt;/a&gt; - Clean image metadata with drag and drop.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/antonreshetov/massCode"&gt;massCode&lt;/a&gt; - Code snippet manager for developers.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/swiftyapp/swifty"&gt;Swifty&lt;/a&gt; - Password manager.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/emqx/MQTTX"&gt;MQTTX&lt;/a&gt; - Client for MQTT, which is a lightweight messaging protocol.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/alibaba/lightproxy"&gt;LightProxy&lt;/a&gt; - Web debugging proxy.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/beekeeper-studio/beekeeper-studio"&gt;Beekeeper Studio&lt;/a&gt; - Cross-platform SQL editor and database manager.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/ueberdosis/mouseless"&gt;Mouseless&lt;/a&gt; - Keyboard shortcut training and look-up.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/ueberdosis/glyphfinder"&gt;Glyphfinder&lt;/a&gt; - Unicode character search.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/Graviton-Code-Editor/Graviton-App"&gt;Graviton Editor&lt;/a&gt; - Cross-platform code editor.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/lukasbach/yana"&gt;Yana&lt;/a&gt; - Notebook app with rich-text notes, nested note organization and global search.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/KYDronePilot/SpaceEye"&gt;SpaceEye&lt;/a&gt; - Live satellite imagery for your desktop background.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/Heroic-Games-Launcher/HeroicGamesLauncher"&gt;Heroic Games Launcher&lt;/a&gt; - Alternative Epic games launcher.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/TommyX12/VIR"&gt;VIR&lt;/a&gt; - Intelligent time manager with automatic planning.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/will-stone/browserosaurus"&gt;Browserosaurus&lt;/a&gt; - Browser prompter for macOS.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/lostdesign/linked"&gt;linked&lt;/a&gt; - Daily journal.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/nojsja/shadowsocks-electron"&gt;shadowsocks-electron&lt;/a&gt; - Cross-platform Shadowsocks client.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/aleksey-hoffman/sigma-file-manager"&gt;Sigma File Manager&lt;/a&gt; - Modern file manager.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/krud-dev/ostara"&gt;Ostara&lt;/a&gt; - Monitor and interact with Spring Boot apps via Actuator.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/G-Ray/pikatorrent"&gt;PikaTorrent&lt;/a&gt; - BitTorrent client.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/wavetermdev/waveterm"&gt;Wave Terminal&lt;/a&gt; - Open-source terminal with AI integration.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="closed-source"&gt;Closed Source&lt;/h3&gt;
&lt;h6 id="featured-1"&gt;Featured&lt;/h6&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://rosefinchapp.com"&gt;Rosefinch&lt;/a&gt; - Store and run SQL queries.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://nota.md"&gt;Nota&lt;/a&gt; - Pro writing app designed for local Markdown files.&lt;/li&gt;
&lt;/ul&gt;
&lt;h6 id="other-1"&gt;Other&lt;/h6&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.gitkraken.com"&gt;GitKraken&lt;/a&gt; - Git client.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://1clipboard.io"&gt;1Clipboard&lt;/a&gt; - Universal clipboard manager.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.getpostman.com"&gt;Postman&lt;/a&gt; - Create and send HTTP requests.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.com/ben-and-dion/how-slack-built-a-well-loved-product-going-against-peter-thiel-and-native-app-fashion-2abbbe5a022f"&gt;Slack&lt;/a&gt; - Desktop version.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://avocode.com"&gt;Avocode&lt;/a&gt; - Share design and collaborate.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://prepros.io"&gt;Prepros&lt;/a&gt; - Compile almost any preprocessing language with live browser refresh.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.strem.io"&gt;Stremio&lt;/a&gt; - Media center.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.typetalk.in"&gt;Typetalk&lt;/a&gt; - Share and discuss ideas with your team through instant messaging.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://pingendo.com"&gt;Pingendo&lt;/a&gt; - Bootstrap prototyping.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.spreaker.com/download"&gt;Spreaker Studio&lt;/a&gt; - Audio recording and broadcasting.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mockingbot.com"&gt;MockingBot&lt;/a&gt; - Prototyping tool for designing apps.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://caret.io"&gt;Caret&lt;/a&gt; - Markdown editor.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://rememberapp.co.kr"&gt;Remember&lt;/a&gt; - Business card management. &lt;em&gt;(Korean)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.mongodb.com/products/compass"&gt;MongoDB Compass&lt;/a&gt; - Official MongoDB app.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://freeter.io"&gt;Freeter&lt;/a&gt; - Organizer for freelancers &amp;amp; creatives.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.whatsapp.com/download/"&gt;WhatsApp&lt;/a&gt; - Official WhatsApp app.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://catlight.io"&gt;CatLight&lt;/a&gt; - Build status notifier.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://discord.com"&gt;Discord&lt;/a&gt; - Voice and text chat.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://cocos2d-x.org/products#creator"&gt;Cocos Creator&lt;/a&gt; - Game editor for creating web and native games for Cocos2D-x.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.inkdrop.info"&gt;Inkdrop&lt;/a&gt; - Markdown notebook for hackers.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.exodus.io"&gt;Exodus&lt;/a&gt; - Secure, manage, and exchange blockchain assets like Bitcoin and Ethereum.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://hackolade.com"&gt;Hackolade&lt;/a&gt; - Data modeling for NoSQL and multi-model databases.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://cashnotify.com"&gt;CashNotify&lt;/a&gt; - Monitor your Stripe accounts from your menu bar.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mockoon.com"&gt;Mockoon&lt;/a&gt; - Mock servers in seconds.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://app.twitch.tv"&gt;Twitch&lt;/a&gt; - Official Twitch app.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://fen%C3%AAt.re"&gt;Fenêtre&lt;/a&gt; - Picture-in-picture for your Mac.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://cleavr.io"&gt;Cleavr&lt;/a&gt; - Provision servers and deploy web apps.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://getbrandy.io"&gt;Brandy&lt;/a&gt; - A brand asset manager for your menu bar.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.cacher.io"&gt;Cacher&lt;/a&gt; - Cloud-based, team-enabled code snippet manager with Gist sync.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://musicplus.io"&gt;MusicPlus&lt;/a&gt; - Free music app for macOS and Windows.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mingo.io"&gt;Mingo&lt;/a&gt; - MongoDB GUI.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://datensen.com"&gt;Moon Modeler&lt;/a&gt; - Schema design tool for MongoDB, Mongoose, and MariaDB.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://notion.so"&gt;Notion&lt;/a&gt; - All-in-one workspace for your notes, tasks, wikis, and databases.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.fatpick.com"&gt;FATpick&lt;/a&gt; - Guitar tablature viewer that scores your performance as you play along.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.taskade.com"&gt;Taskade&lt;/a&gt; - Realtime organization and collaboration tool for distributed teams with tasks, notes, and chat.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coloban.com"&gt;Coloban&lt;/a&gt; - All-in-one project management tool with chats, Kanban, Gantt, calls, screenshare, and more.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dynobase.dev"&gt;Dynobase&lt;/a&gt; - AWS DynamoDB GUI.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://getlotus.app"&gt;Lotus&lt;/a&gt; - Keep up with GitHub notifications without stress.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://runjs.app"&gt;RunJS&lt;/a&gt; - Playground for JavaScript and TypeScript.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://opensftp.com"&gt;OpenSFTP&lt;/a&gt; - Integrated SSH and SFTP workspace client.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="samples"&gt;Samples&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/hokein/electron-sample-apps"&gt;Electron API usage&lt;/a&gt; - Sample apps illustrating usage of Electron APIs.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/hokein/electron-screen-recorder"&gt;Screen Recorder&lt;/a&gt; - WebRTC screen recorder.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://electronjs.org/blog/simple-samples#activity-monitor"&gt;Activity Monitor&lt;/a&gt; - Shows a doughnut chart of the CPU system, user, and idle activity time.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://electronjs.org/blog/simple-samples#hash"&gt;Hash&lt;/a&gt; - Shows the hash values of entered text using different algorithms.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://electronjs.org/blog/simple-samples#prices"&gt;Prices&lt;/a&gt; - Shows the current price of oil, gold, and silver using the Yahoo Finance API.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="boilerplates"&gt;Boilerplates&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/sindresorhus/electron-boilerplate"&gt;electron-boilerplate&lt;/a&gt; - Boilerplate to kickstart creating an app - by &lt;a href="http://github.com/sindresorhus"&gt;sindresorhus&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/sindresorhus/generator-electron"&gt;generator-electron&lt;/a&gt; - Scaffold out an app boilerplate.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/szwacz/electron-boilerplate"&gt;electron-boilerplate&lt;/a&gt; - Comprehensive boilerplate which even generates installers - by &lt;a href="https://github.com/szwacz"&gt;szwacz&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/chentsulin/electron-react-boilerplate"&gt;electron-react-boilerplate&lt;/a&gt; - Boilerplate based on React and webpack.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/electron/electron-quick-start"&gt;electron-quick-start&lt;/a&gt; - Clone the repo to try a simple app.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/railsware/bozon"&gt;bozon&lt;/a&gt; - Scaffold, run, test, and package your app.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/reZach/secure-electron-template"&gt;secure-electron-template&lt;/a&gt; - Security-focused boilerplate for creating apps with React, Redux, Webpack, and i18next.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/maximegris/angular-electron"&gt;angular-electron&lt;/a&gt; - Fast bootstrapping with Angular, Electron, TypeScript, SASS, and Hot Reload.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/cawa-93/vite-electron-builder"&gt;vite-electron-builder&lt;/a&gt; - Secure boilerplate for Electron app based on Vite. TypeScript + Vue/React/Angular/Svelte/Vanilla.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="tools"&gt;Tools&lt;/h2&gt;
&lt;h3 id="for-electron"&gt;For Electron&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/electron-userland/electron-builder"&gt;electron-builder&lt;/a&gt; - Create installers.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/electron-userland/electron-packager"&gt;electron-packager&lt;/a&gt; - Package and distribute your app.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/sindresorhus/electron-debug"&gt;electron-debug&lt;/a&gt; - Adds useful debug features.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/sindresorhus/electron-is-dev"&gt;electron-is-dev&lt;/a&gt; - Check if Electron is running in development.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/parro-it/electron-localshortcut"&gt;electron-localshortcut&lt;/a&gt; - Add keyboard shortcuts locally to a window.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/sindresorhus/fix-path"&gt;fix-path&lt;/a&gt; - Fix the $PATH on macOS when run from a GUI app. Useful when spawning a child process.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/sindresorhus/electron-dl"&gt;electron-dl&lt;/a&gt; - Simplified file downloads.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/ArekSredzki/electron-release-server"&gt;electron-release-server&lt;/a&gt; - Self-hosted release server with front-end &amp;amp; auto-updater support.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/electron/electron-rebuild"&gt;electron-rebuild&lt;/a&gt; - Rebuild native Node.js modules against the currently installed Electron version.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/parro-it/debug-menu"&gt;debug-menu&lt;/a&gt; - Chrome-like &amp;ldquo;inspect element&amp;rdquo; context-menu.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/unindented/electron-installer-debian"&gt;electron-installer-debian&lt;/a&gt; - Create a Debian package.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/unindented/electron-installer-redhat"&gt;electron-installer-redhat&lt;/a&gt; - Create a Red Hat package.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/unindented/electron-installer-windows"&gt;electron-installer-windows&lt;/a&gt; - Create a Windows package.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/electron-userland/electron-download"&gt;electron-download&lt;/a&gt; - Download the Electron release zip from GitHub.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/electron-userland/electron-osx-sign"&gt;electron-osx-sign&lt;/a&gt; - Code-signing for macOS apps.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/felixrieseberg/ember-electron"&gt;ember-electron&lt;/a&gt; - Build, test, and package Ember apps.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/sindresorhus/electron-store"&gt;electron-store&lt;/a&gt; - Save and load data like user preferences, app state, cache, etc.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/sindresorhus/electron-context-menu"&gt;electron-context-menu&lt;/a&gt; - Extensible context menu.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/louischatriot/nedb"&gt;NeDB&lt;/a&gt; - Embedded persistent or in-memory database.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/pubkey/rxdb"&gt;RxDB&lt;/a&gt; - A realtime NoSQL database.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/GPMDP/electron-devtools-installer"&gt;electron-devtools-installer&lt;/a&gt; - Install DevTools extensions from the Chrome Web Store.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/megahertz/electron-log"&gt;electron-log&lt;/a&gt; - Simple logging.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/rhysd/electron-about-window"&gt;electron-about-window&lt;/a&gt; - &amp;lsquo;About This App&amp;rsquo; window.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/manidlou/elemon"&gt;elemon&lt;/a&gt; - Live-reload your app during development.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/brrd/electron-is-accelerator"&gt;electron-is-accelerator&lt;/a&gt; - Check if a string is a valid accelerator.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/gerhardberger/electron-pdf-window"&gt;electron-pdf-window&lt;/a&gt; - View PDF files in browser windows.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/sindresorhus/got"&gt;got&lt;/a&gt; - Simplified HTTP requests.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/sindresorhus/electron-unhandled"&gt;electron-unhandled&lt;/a&gt; - Catch unhandled errors and promise rejections.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/sindresorhus/electron-util"&gt;electron-util&lt;/a&gt; - Useful utilities for developing apps and modules.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/sindresorhus/electron-reloader"&gt;electron-reloader&lt;/a&gt; - Simple auto-reloading during development.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/sindresorhus/electron-serve"&gt;electron-serve&lt;/a&gt; - Static file serving (Useful for routing, like &lt;code&gt;react-router&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/sindresorhus/electron-timber"&gt;electron-timber&lt;/a&gt; - Pretty logger.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/maxkueng/chromium-net-errors"&gt;chromium-net-errors&lt;/a&gt; - Chromium&amp;rsquo;s network errors as custom error classes.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/sindresorhus/run-electron"&gt;run-electron&lt;/a&gt; - Run Electron without all the junk terminal output.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/pd4d10/debugtron"&gt;debugtron&lt;/a&gt; - Debug in-production Electron-based apps.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/sindresorhus/electron-better-ipc"&gt;electron-better-ipc&lt;/a&gt; - Simplified IPC communication.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/getstation/electron-chrome-extension"&gt;electron-chrome-extension&lt;/a&gt; - Add support for Chrome extensions.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/citycide/trilogy"&gt;trilogy&lt;/a&gt; - TypeScript SQLite database layer with support for both native C++ and pure JavaScript backends.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/cliqz-oss/adblocker/tree/master/packages/adblocker-electron"&gt;adblocker-electron&lt;/a&gt; - Block ads and trackers.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/catdad/electronmon"&gt;electronmon&lt;/a&gt; - Monitor and reload apps out-of-process during development.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/doyensec/electronegativity"&gt;electronegativity&lt;/a&gt; - Identify misconfigurations and security anti-patterns.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.update.rocks"&gt;UpdateRocks!&lt;/a&gt; - Auto-update service. Free for open source projects.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/alex8088/electron-vite"&gt;electron-vite&lt;/a&gt; - Fast and easy-to-use build tool integrated with Vite.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/dutchigor/pluggable-electron"&gt;pluggable-electron&lt;/a&gt; - Build apps that can be extended through plugins.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://hydraulic.dev"&gt;Hydraulic Conveyor&lt;/a&gt; - CLI tool that deploys apps without needing any special update servers, multi-platform CI, or code changes.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://aptabase.com/for-electron"&gt;Aptabase&lt;/a&gt; - Analytics for apps. Open source, privacy-friendly, and simple.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="using-electron"&gt;Using Electron&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/jiahaog/nativefier"&gt;nativefier&lt;/a&gt; - Create an app of any website.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/juliangruber/electron-stream"&gt;electron-stream&lt;/a&gt; - Streaming wrapper.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/fraserxu/electron-pdf"&gt;electron-pdf&lt;/a&gt; - Generate PDF from URL, HTML, or Markdown files on the command-line.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/jprichardson/electron-mocha"&gt;electron-mocha&lt;/a&gt; - Run Mocha tests in Electron.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/reactotron/reactotron"&gt;Reactotron&lt;/a&gt; - Inspect your React and React Native apps.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/hustcc/jest-electron"&gt;jest-electron&lt;/a&gt; - Run and debug Jest unit tests in a browser environment.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="components"&gt;Components&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/maxogden/menubar"&gt;menubar&lt;/a&gt; - Menubar app framework.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/gabrielbull/react-desktop"&gt;React Desktop&lt;/a&gt; - UI toolkit for macOS and Windows built with React.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/adamschwartz/chrome-tabs"&gt;chrome-tabs&lt;/a&gt; - Chrome like tabs.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://xel-toolkit.org"&gt;Xel&lt;/a&gt; - Widget toolkit for building native-like apps.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="documentation"&gt;Documentation&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://electronjs.org/docs/tutorial/quick-start"&gt;Quick Start&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://electronjs.org/docs"&gt;Official docs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://jlord.us/essential-electron/"&gt;Essential Electron&lt;/a&gt; - Concise overview.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="articles"&gt;Articles&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://maxogden.com/electron-fundamentals.html"&gt;Electron Fundamentals&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.com/@bojzi/building-a-desktop-application-with-electron-204203eeb658"&gt;Building a desktop application with Electron&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://jbavari.github.io/blog/2015/08/14/codesigning-electron-applications/"&gt;Codesigning your app for macOS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.com/@svilen/auto-updating-apps-for-windows-and-osx-using-electron-the-complete-guide-4aa7a50b904c"&gt;Auto-updating apps for macOS and Windows: The complete guide&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://anadea.info/blog/building-desktop-app-with-electron"&gt;Building a desktop app with Electron, React, and Redux&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.figma.com/introducing-browserview-for-electron-7b40b4b493d5"&gt;Introducing BrowserView for Electron&lt;/a&gt; - New Electron API to embed web apps with fewer bugs and improved performance.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://slack.engineering/growing-pains-migrating-slacks-desktop-app-to-browserview-2759690d9c7b"&gt;Migrating Slack&amp;rsquo;s Desktop App to BrowserView&lt;/a&gt; - Slack rewrote their Electron app with &lt;code&gt;BrowserView&lt;/code&gt;, Redux, Rx, and TypeScript, to fix its performance problems.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.com/@yoannm/pushing-electron-on-the-mac-appstore-early-stages-7dcb85936f92"&gt;Electron on the App Store&lt;/a&gt; - A 5-part series about the journey of making and publishing an Electron app to the Mac App Store.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.com/quasar-framework/building-an-electron-file-explorer-with-quasar-and-vue-7bf94f1bbf6"&gt;Building a file explorer with Electron, Quasar, and Vue&lt;/a&gt; - Focused on design and code decisions and Electron security.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://kilianvalkhof.com/2018/apps/using-google-analytics-to-gather-usage-statistics-in-electron/"&gt;Using Google Analytics to gather usage statistics in Electron&lt;/a&gt; - How to collect anonymous user statistics.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://kilianvalkhof.com/2019/electron/notarizing-your-electron-application/"&gt;Notarizing your Electron app&lt;/a&gt; - How to configure your app packaging for Apple&amp;rsquo;s notarization.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://getlotus.app/21-making-electron-apps-feel-native-on-mac"&gt;Making Electron apps feel native on Mac&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="books"&gt;Books&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://bleedingedgepress.com/developing-an-electron-edge/"&gt;Developing an Electron Edge&lt;/a&gt; - &lt;a href="https://read.amazon.com/kp/embed?asin=B01G7TTKSK&amp;amp;asin=B01G7TTKSK&amp;amp;preview=newtab&amp;amp;linkCode=kpe&amp;amp;ref_=cm_sw_r_kb_dp_DLhOxb0XZ3MEC"&gt;Preview&lt;/a&gt; 💲&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.manning.com/books/electron-in-action?a_aid=electroninaction"&gt;Electron in Action&lt;/a&gt; 💲&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.manning.com/books/cross-platform-desktop-applications"&gt;Cross-Platform Desktop Applications&lt;/a&gt; 💲&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="videos"&gt;Videos&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=jKzBJAowmGg"&gt;Getting Started with Electron 1.x&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=dz5SnmBzBXc"&gt;Packaging and Distributing Electron Desktop Apps&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=K-H2amwQ_pU"&gt;Multi Window Electron Desktop Apps&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=RaPmi-33rfc"&gt;The State of Electron&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=9xX_G0l5jLU"&gt;Cross-Platform Desktop Apps with Electron&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=nXIrFq5-FC8"&gt;Building Native Desktop apps using Electron&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=jRPUB-D1Wx0"&gt;The New Desktop: Electron, React, &amp;amp; Pixel-Perfect Native-Feeling Experiences&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=rbSvc8_BHaw"&gt;Building Desktop Apps with Node.js and Electron&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.pluralsight.com/courses/electron-fundamentals"&gt;Electron Fundamentals course - Pluralsight&lt;/a&gt; 💲&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.lynda.com/Electron-tutorials/Electron-Building-Cross-Platform-Desktop-Apps/518051-2.html"&gt;Electron: Building Cross Platform Desktop Apps - Lynda&lt;/a&gt; 💲&lt;/li&gt;
&lt;li&gt;&lt;a href="https://egghead.io/courses/build-a-desktop-application-with-electron"&gt;Build a desktop application with Electron - Egghead&lt;/a&gt; 💲&lt;/li&gt;
&lt;li&gt;&lt;a href="https://frontendmasters.com/courses/electron/"&gt;Build Cross-Platform Desktop Apps with Electron - Frontend Masters&lt;/a&gt; 💲&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=DDjVaHPvRdM"&gt;Electron Meetup SF, November 2017&lt;/a&gt; - Includes some good talks on improving app startup time, debugging crashes, etc.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=fw4PmPaghyU"&gt;Make Your Electron App Feel at Home Everywhere&lt;/a&gt; - Tips on making your app feel more native on macOS, Windows, and Linux without sacrificing your own style.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="podcasts"&gt;Podcasts&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://hanselminutes.com/534/creating-cross-platform-electron-apps-with-jessica-lord"&gt;Hanselminutes: Creating cross-platform Electron apps with Jessica Lord&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://changelog.com/podcast/216"&gt;The Changelog #216: GitHub&amp;rsquo;s Electron with Zeke Sikelianos&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.fullstackradio.com/48"&gt;Full Stack Radio #48: Jessica Lord - Building Desktop Apps with Electron&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="community"&gt;Community&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.reddit.com/r/electronjs"&gt;Reddit&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://stackoverflow.com/questions/tagged/electron"&gt;Stack Overflow&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/electronjs"&gt;&lt;code&gt;@electronjs&lt;/code&gt; on Twitter&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://electron-br.slack.com"&gt;electron-br&lt;/a&gt; &lt;em&gt;(Brazilian Portuguese)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://electronpl.github.io"&gt;electron-pl&lt;/a&gt; &lt;em&gt;(Polish)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://telegram.me/electron_ru"&gt;&lt;code&gt;@electron_ru&lt;/code&gt; on Telegram&lt;/a&gt; &lt;em&gt;(Russian)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.facebook.com/groups/electronjs/"&gt;&lt;code&gt;electronjs&lt;/code&gt; on Facebook&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.producthunt.com/@sindresorhus/collections/electron-apps"&gt;Product Hunt&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="contribute"&gt;Contribute&lt;/h2&gt;
&lt;p&gt;Contributions welcome! Read the &lt;a href="contributing.md"&gt;contribution guidelines&lt;/a&gt; first.&lt;/p&gt;</description></item><item><title>electron介绍</title><link>https://plumephp.com/electron-introduction/</link><pubDate>Mon, 26 Aug 2024 11:16:44 +0800</pubDate><guid>https://plumephp.com/electron-introduction/</guid><description>&lt;p&gt;Electron 是一个开源框架，它允许开发者使用 HTML、CSS 和 JavaScript 等 Web 技术构建跨平台的桌面应用程序。以下是对 Electron 的详细介绍：&lt;/p&gt;
&lt;h3 id="历史背景"&gt;历史背景&lt;/h3&gt;
&lt;p&gt;Electron 最初是作为构建 GitHub Atom 编辑器的基础框架开发的。2013 年 4 月，Electron 项目启动，最初名为 Atom Shell。2014 年 5 月，Atom Shell 被开源，并于 2015 年 4 月更名为 Electron。2016 年 5 月，Electron 发布了 v1.0.0 版本，并支持将构建的应用程序上架到 Mac App Store 和 Windows Store 。&lt;/p&gt;</description></item></channel></rss>