✌️ Deno 2.9 来了,ESM 直接导入 CSS,甚至能开发桌面应用?!

👇 今日要闻

打破信息壁垒,走近全球前端。Hello 大家好,我是林语冰。

Deno 是 Node 之父使用 Rust 语言重做的新一代 JS 运行时,旨在解决 Node 的历史包袱,和 Node、Bun 合称"JS 运行时三柱神"。

Deno 团队官宣 2.9 次版本正式发布,最核心的新功能是 deno desktop,支持基于 Web 技术栈打造原生桌面应用,无需 Electron 和 Tauri 等流行桌面应用框架。

此外,本次 Deno 还带来一大波新功能和改进,我们一起速览一下。

👉 生态兼容性

Deno 2.9 进一步提升了 Deno 和 Node、npm、pnpm 等生态的兼容性,确保项目迁移到 Deno 的阻力更小。

首先,Deno 的兼容目标升级到了 Node 26,现在能解析部分 Node 内置函数,无需配置,比如常用的 import "fs" 会被映射到 "node:fs",和 Node 用法一样。

此外,Node 部分 API 也被 Deno 实现了,比如:

  • node:test 测试模块支持 mock.timers 和 mock.module 等 API
  • node:net 网络模块的回调保留了 AsyncLocalStorage 上下文
  • 支持 process.resourceUsage() 等进程等运行时 API

作为现代运行时,Deno 自己就是类似 npm 的包管理器。Deno 2.9 现在能解析 Node 项目的 package.json 包配置文件和 workspace 工作区结构。

这样,当你从 Node 项目中迁移到 Deno 时,相关配置都能被 Deno 正确解析,迁移过程更加丝滑。

👉 模块导入改进

前端工程中,我们惯用模块系统导入不同格式的文件,比如 .json 或 .css 等。

但这其实仰赖 Vite 等现代打包器的加持,JS 引擎本身并不支持导入 .js 之外的其他文件格式。

ES2025 开始支持 导入特性提案 ,允许导入 JSON 模块,这是第一种 ESM 支持的非 JS 文件,基本语法如下:

Deno 2.9 基于导入特性提案更进一步,现在也支持导入 CSS 文件。

使用 ESM 导入 .css 文件作为结构化样式表,基本语法如下:

这里的导入结果解析为一个 CSSStyleSheet 样式表实例,即使不借助 Vite 等打包器,代码也能同时跑在浏览器或 Deno 运行时中,省略打包构建步骤。

👉 供应链安全

前端生态近年来供应链攻击屡见不鲜,axios 等流行模块噩耗频传。为此,Deno 2.9 增强了供应链安全。

Deno 现在支持 min-release-age 最小发布时限配置,它会拒绝安装早于指定时限发布的新版 npm 模块。

这是因为很多代码投毒之类的供应链攻击在新版本发布后的 1~2 天内都能被检测出来,因此,只要拖延到高风险时间段之后再安装新版本,用户就能躲避大多数供应链攻击。

Deno 2.6 开始就支持选用 min-release-age 配置,现在 Deno 2.9 默认直接启用,并将最小发布时限设置为 24 小时,也就是一天之内发布的新版本都会被拒绝更新。

Deno 支持在 .npmrc 中按需配置,你的配置优先级能覆盖 Deno 默认的保护性配置,比如:

此外,Deno 2.9 新增了可选的 npm 信任策略,这能防止黑客盗用库作者的权限发布模块的攻击。

Deno 沿用了 pnpm 的设计,对版本发布的信任程度进行定级:

  1. 阶段式发布,库作者使用 2FA 双因认证发布,安全等级最高
  2. 携带来源证明的可信发布,安全等级次之
  3. 单独的来源证明,安全等级较低

Deno 默认禁用信任策略,你可以在 .npmrc 中按需启用:

这样,当某模块以前习惯较高的安全等级发布,但新版本突然降低安全等级发布时,Deno 会拒绝无脑升级新版本,因为该模块可能已经被黑客盗用权限了。

👉 桌面应用开发

Deno 2.9 的亮点功能是 deno desktop,它支持把 Next / Nuxt 等前端框架项目转化为一个独立的原生桌面应用,最终产物是一个跨平台分发的二进制文件,无需借助 Electron / Tauri 等桌面应用框架。

Deno vs Electron vs Tauri 的技术对照表如下:

Electron Deno Tauri
编程语言 JS / TS JS / TS Rust + JS / TS
Web 引擎 Chromium CEF / WebView WebView
一致渲染 ✅ ✅ ❌
兼容 Node ✅ ✅ ❌
交叉编译 ✅ ✅ ❌
框架自检测 ❌ ✅ ❌
iOS / Android ❌ ❌ ✅

我简单汇总了这张对照表来快速科普一下,更多细节可以参考我的另一篇博客《Electron 麻了,Deno 直接支持二进制应用,无需第三方桌面应用框架!》(文末链接可跳转~)

👇 重点总结

Deno 团队官宣 2.9 次版本 正式发布,此版本涉及性能优化、Node 生态兼容性、模块系统改进、供应链安全提升和 CLI 脚手架更新等综合升级,更多细节另请参阅官方博客。

其中最大亮点是 deno desktop 支持打造原生桌面应用,无需使用 Electron / Tauri 等桌面应用开发框架,优缺点主要有:

  • ✅ 基于纯 Web 技术,兼容 Node 生态,无需 Rust 基础
  • ✅ 自动检测前端框架,支持 webview 或 cef(Chromium 嵌入框架)
  • ✅ 跨平台交叉编译,五大平台完整支持
  • ❌ 不支持移动端应用,应用大小取决于技术选择

deno desktop 是一个先锋实验,未来或许能进一步竞争桌面应用市场,这也标志着 Deno 正在进化为一个破而后立的 JS 运行时。

👍 以上就是本期《前端日报》的全部内容了,如果读完对你有所帮助,可以按赞打卡、在看推荐或转发分享。

🙏 已经关注我的粉丝们,我们下期再见啦,掰掰~~

👇 参考文献:

相关推荐
小poop6 小时前
CSS 基础与实战:从入门到精通网页美化
前端
Csvn8 小时前
运行时性能
前端
Never_every999 小时前
位图转矢量工具哪个好?实测抠抠图AI位图转矢量工具
大数据·前端
paopaokaka_luck9 小时前
宠物门店经营管理系统(销售与库存联动、进货自动记账、 退换与退款关联、员工个人业绩、ECharts 经营分析、滞销识别与客户分层、宠物档案年龄计算)
前端·javascript·spring boot·mysql·echarts·mybatis·1024程序员节
空中湖9 小时前
用 React 写数据大屏:为什么我不建议用图表库
前端·react.js·前端框架
欣欣之王来了11 小时前
原始HTML插值:v-html指令的使用与安全风险
前端·学习·架构·项目·vue3教程
IT_陈寒11 小时前
Redis的LRU淘汰策略坑了我一整天
前端·人工智能·后端
计算机魔术师11 小时前
砍半价格、参数再涨,国产旗舰追到 Opus 鼻尖了
前端
特立独行的猫A11 小时前
10 MB 的桌面 AI 客户端:用仓颉 + 系统 WebView 替代 Electron
前端·harmonyos
修炼的dance12 小时前
白底图存JPG,sharp开mozjpeg背景杂点少近三成
前端