德诺 2.9

2026-06-25 1 阅读 enz
Deno 2.9 已经发布,以 deno Desktop 为主角,这是一种从您已知的 Web 堆栈构建本机桌面应用程序的新方法,没有 Electron 样板,最后只有一个二进制文件。这也是迄今为止引入现有 Node 项目的最简单的版本: deno install 现在直接读取 npm、pnpm、yarn 和 Bun 锁定文件,因此将包管理器切换到 Deno 需要几个命令,而不是迁移。下面还有更多内容,从 CSS 模块导入和更强大的测试运行程序到更快的启动和 Node.js 26 兼容性。要升级到 Deno 2.9,请在终端中运行以下命令: deno Upgrade 如果尚未安装 Deno,请运行以下命令之一进行安装或在此处了解如何安装。 # 使用 Shell(macOS 和 Linux):curl -fsSL https://deno.land/install.sh | sh # 使用 PowerShell (Windows): iwr https://deno.land/install.ps1 -useb | iex deno 桌面 构建桌面应用程序通常意味着引入 Electron 或 Tauri,连接一个单独的工具链,并交付一个与项目的其余部分几乎没有相似之处的捆绑包。 Deno 2.9 引入了 deno 桌面。将其指向脚本(或 Web 框架项目),它会生成一个本机、独立的桌面应用程序,其中 UI 在 Web 视图中运行,您的逻辑在 Deno 中运行,整个过程编译为单个可分发的二进制文件(#33441)。 deno 桌面在 2.9 中是实验性的。这里描述的表面正在稳定,一些平台功能仍在落地。最简单的应用程序是为您的 UI 提供服务的入口点。桌面入口点内的 Deno.serve() 会自动绑定到 Web 视图打开的端口,因此无需进行端口连接: main.ts Deno 。 serve ( ( ) => new Response ( "

Hello from Deno 桌面 👋

" , { headers : { "content-type" : "text/html" } } , ) ) ; $ eno Desktop main.ts 这将打开一个呈现页面的本机窗口。 dendesktop 与 denocompile 共享相同的框架检测:在没有入口点(或 denodesktop .)的情况下运行它,它会自动检测当前目录中的 Web 框架(Next.js、Astro、Fresh、Remix、Nuxt、SvelteKit、SolidStart、TanStackStart 和 Vite SSR 都支持),构建它并包装结果: $ denodesktop # 自动检测当前目录中的框架 $ denodesktop --hmr # run with Hot开发期间的模块替换 本机桌面 API 更丰富的应用程序可以在 Deno.* 下的运行时中直接构建一整套本机桌面 API,立即可用,无需额外的依赖项。 Deno.BrowserWindow 为您提供对窗口大小、位置、可见性、菜单和 DevTools 的编程控制,并让您在 Webview 和 Deno 之间建立桥梁:使用 window.bind() 在入口点绑定函数,并通过绑定命名空间从页面 JavaScript 调用它。还有用于系统托盘图标和面板的 Deno.Tray,以及 macOS 上的 Deno.Dock:tray.ts const tab = new Deno 。托盘 ( ) ;托盘 。 setIcon(图标字节);常量面板=托盘。 AttachPanel ( { url : "https://localhost:8000/panel" } ) ;控制板 。窗户 。绑定 (“doThing”, async () => { /* ... */ } ) ; prompt() 、alert() 和confirm() 呈现为本机对话框,Deno.autoUpdate() 连接一个轮询自动更新程序,在后台应用二进制补丁。 Webview 或 CEF 每个桌面应用程序都需要一个浏览器引擎来绘制其 UI,并且 deno 桌面提供了两个浏览器引擎,通过 --backend 选择:webview(默认)使用操作系统的内置引擎进行渲染:Windows 上的 WebView2、macOS 和 Linux 上的 WebKit。没有捆绑任何额外的内容,因此二进制文件很小并且启动速度很快。权衡是渲染遵循主机搭载的任何引擎。 cef 通过 Chromium 嵌入式框架捆绑 Chromium,因此每个用户在每个平台上都可以获得相同的现代引擎。这在构建时增加了数十兆字节和下载量,但保证了各处相同的渲染和最新的网络平台功能。 $ eno Desktop main.ts # 原生 webview (默认) $ deno Desktop --backend cef main.ts # 捆绑 Chromium 大多数应用程序在默认 webview 上最满意;当您需要在每个平台上保证相同的引擎时,请使用 cef。发行版 由于 deno Desktop 与 denocompile 构建在同一台机器上,因此输出是一个独立的二进制文件,其中嵌入了您的代码和资产。该格式遵循您传递给 --output 的扩展名:在 macOS 上为 .app 和 .dmg,在 Windows 上为 .exe 或 .msi 安装程序,在 Linux 上为 .AppImage、.deb 或 .rpm。不过,您不需要大量机器来跨平台交付。 --target 将应用程序交叉编译到任何受支持的平台,而 --all-targets 在一个命令中构建所有这些应用程序,因此单个 Linux CI 运行程序(或您的笔记本电脑)可以一起生成适用于 Windows、macOS 和 Linux 的二进制文件。 Windows .msi 和 Linux .deb / .rpm 安装程序是用纯 Rust 编写的,因此它们是从任何没有特定于平台的打包工具链的主机生成的: $ deno Desktop --output MyApp.dmg main.ts # build for the host $ deno Desktop --target x86_64-pc-windows-m