Deno 2.9
Deno 2.9 已经发布,其亮点是 deno desktop,这是一种从您已经了解的网络开发栈构建本地桌面应用程序的新方式,最终只需一个二进制文件,无需 Electron 模板。这也是将现有 Node 项目迁移至 Deno 的最简单版本:deno install 现在可以直接读取 npm、pnpm、yarn 和 Bun 锁定文件,因此将包管理器切换至 Deno 只需几条命令,而非迁移。有很多其他新特性,从 CSS 模块导入到更强大的测试运行器,再到更快的启动和 Node.js 26 兼容性。要升级至 Deno 2.9,请在终端中运行以下命令:deno upgrade。如果 Deno 尚未安装,请运行以下任一命令以安装或了解如何安装:curl -fsSL https://deno.land/install.sh | sh 或 iwr https://deno.land/install.ps1 -useb | iex。 deno desktop 构建桌面应用程序通常意味着使用 Electron 或 Tauri,连接一个独立的工具链,并生成一个与您项目的其他部分几乎无关的捆绑包。Deno 2.9 引入了 deno desktop。将其指向一个脚本(或 web 框架项目),它将生成一个本地、自包含的桌面应用程序,其中 UI 在 webview 中运行,您的逻辑在 Deno 中运行,整个程序编译为一个可分发的二进制文件(#33441)。deno desktop 在 2.9 中处于实验阶段。此处描述的表面正在稳定,而一些平台功能仍在安装中。最简单的应用程序是一个服务于您的 UI 的入口点。在桌面入口点中的 Deno.serve() 会自动绑定到 webview 打开的端口,因此无需进行端口连接: main.ts Deno.serve(()=> new Response("<!DOCTYPE html><h1>Hello from Deno desktop 👋</h1>", { headers: { "content-type": "text/html" } },)); deno desktop main.ts 这将打开一个原生窗口,渲染您的页面。deno desktop 共享与 deno compile 相同的框架检测:无入口点(或 deno desktop)时运行它,它会自动检测当前目录中的 web 框架(支持 Next.js、Astro、Fresh、Remix、Nuxt、SvelteKit、SolidStart、TanStack Start 和 Vite SSR),构建它并包装结果: deno desktop deno desktop --hmr 原生桌面 API 更丰富的应用程序获得了内置在 Deno.* 运行时中的完整原生桌面 API,立刻可用,无需额外依赖。Deno.BrowserWindow 让您可以程序性地控制窗口大小、位置、可见性、菜单和开发工具,并允许您在 webview 和 Deno 之间进行桥接:在入口点中用 window.bind() 绑定一个函数,然后通过绑定命名空间从页面 JavaScript 中调用它。还有 Deno.Tray 用于系统托盘图标和面板,macOS 上是 Deno.Dock: ray.ts const tray = new Deno.Tray(); tray.setIcon(iconBytes); const panel = tray.attachPanel({ url: "https://localhost:8000/panel" }); panel.window.bind("doThing", async () => { }); prompt()、alert() 和 confirm() 作为本机对话框渲染,而 Deno.autoUpdate() 则启用后台自动更新程序,应用二进制补丁。 Webview 或 CEF 每个桌面应用程序都需要一个浏览器引擎来绘制其 UI,deno desktop 随附两种引擎,使用 --backend 进行选择:webview(默认)使用操作系统的内置引擎进行渲染:Windows 上的 WebView2,macOS 和 Linux 上的 WebKit。没有额外的包,因此二进制文件保持小巧并快速启动。其权衡在于渲染遵循主机提供的引擎。 cef 通过 Chromium 嵌入框架捆绑 Chromium,因此每个用户都在每个平台上获得相同的现代引擎。这会增加数十兆字节,并在构建时进行下载,但保证在所有地方都实现相同的渲染和最新的 Web 平台特性: deno desktop main.ts deno desktop --backend cef main.ts 大多数应用程序在默认的 webview 上运行得很好;当您需要每个平台上都保证相同的引擎时,可以使用 cef。 发行 因为 deno desktop 是基于与 deno compile 相同的机制构建的,输出是一种包含您的代码和资源的独立二进制文件。格式遵循您传递给 --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 deno desktop --target x86_64-pc-windows-msvc main.ts deno desktop --all-targets main.ts 这五个受支持的目标与 deno compile 匹配:Linux x64/arm64、Windows x64 和 macOS x64/arm64。为了减小输出体积,--compress 会将运行时和 UI 后端打包为一个自提取的组合包。
本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。
☕请我喝杯咖啡