Deno 1.30 发布,内置 Node 模块
Deno 是一个简单、现代和安全的 JavaScript 和 TypeScript 的运行时,它使用 V8 并以 Rust 构建。
Deno 1.30 已发布,值得关注的更新包括:
对内置 Node.js 模块的支持
在 Deno 中,npm 包已经可以通过 Deno 的 Node.js 兼容层访问内置的 Node.js 模块,如 fs、path、process 等等。
在这个版本中,这些模块通过 node: specifiers
暴露给 Deno 代码:
import { readFileSync } from "node:fs"; console.log(readFileSync("deno.json", { encoding: "utf8" }));
如果你同时使用 Deno 和 Node.js 的代码,node:
方案将在两个运行时中工作。
deno.json
成为一个导入映射
这个版本带来了对配置文件的重大更新,现在可以直接使用 deno.json
文件作为导入映射。
在以前的版本中,可以通过指定 importMap
键和导入映射文件的路径来告诉 Deno 去哪里寻找导入映射文件。
许多用户发现它很有用,但是这种方法意味着有两个配置文件。为了更简洁,你现在可以在你的配置文件中指定 imports
和 scopes
键,Deno 将自动开始把配置文件当作导入映射。
Node/npm 和 LSP 的修复
这个版本包括超过 25 个与 npm 功能和 Node-API 相关的错误修复。此外,LSP 继续得到改进,有超过 10 个 bug 修复。
对 Deno
API 的改变
对稳定 API 的改变:
- Deno.permissions APIs 获得了同步对应部分
Deno.permissions.querySync({ name: "read", path: "./log.txt" }) 。 Deno.permissions.revokeSync({ name: "read", path: "./log.txt" })。 Deno.permissions.requestSync({ name: "read", path: "./log.txt" });
Deno.writeFile()
和Deno.writeTextFile()
现在接受ReadableStream
作为第二个参数。const stream = new ReadableStream({ pull(controller) { controller.enqueue(new Uint8Array([1])); controller.enqueue(new Uint8Array([2])); controller.close(); }, }); await Deno.writeFile("/tmp/test.txt", stream); assertEquals(Deno.readFileSync(filename), new Uint8Array([1, 2]));
增加了一个新的
Deno.env.has(name)
APIDeno.env.set("TEST_VAR", "A"); assert(Deno.env.has("TEST_VAR")); Deno.env.delete("TEST_VAR"); assert(!Deno.env.has("TEST_VAR"));
……
API 稳定化:
Deno.Listener.ref()
和 Deno.Listener.unref()
现在已经稳定。使用这些 API 时不再需要 --unstable
标志。
对不稳定的 API 的改变:
在
new Deno.Command({}).spawn()
中,stdin
选项的默认值被改为"inherit”
意味着如果你没有特别配置这个选项,标准输入将从父进程中继承。Deno.dlopen
添加对按值传递结构的支持:const Rect = ["f64", "f64", "f64", "f64"]; const dylib = Deno.dlopen("./dylib.so", { make_rect: { parameters: ["f64", "f64", "f64", "f64"], result: { struct: Rect }, }, }); const rect_sync = dylib.symbols.make_rect(10, 20, 100, 200); assertInstanceOf(rect_sync, Uint8Array); assertEquals(rect_sync.length, 4 * 8); assertEquals(Array.from(new Float64Array(rect_sync.buffer)), [ 10, 20, 100, 200, ]);
新的不稳定的 API:
这个版本增加了 3 个新的 API:
Deno.osUptime()
(需要-allow-sys=osUptime
权限)Deno.Conn.ref()
Deno.Conn.unref()
这些 API 需要 --unstable
标志,但我们计划在下一个版本中稳定它们。
移除内部 Deno.core
这个版本删除了 Deno.core
命名空间。Deno.core
是一个私有的 API,没有稳定性保证。这一变化对大多数用户应该没有影响。
Deno fmt
支持配置分号
Deno fmt
的一个长期以来被反复要求的功能是能够在没有分号的情况下进行格式化。现在可以通过使用 --options-no-semicolons
标志或在 Deno 配置文件的 fmt 配置中指定 "semiColons": false
来实现这一功能。
{ "fmt": { "options": { "semiColons": false } } }
更多详情可查看:https://github.com/denoland/deno/releases/tag/v1.30.0

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
TheRouter 1.1.2 版本发布,业界领先移动端路由框架
TheRouter 是由 Kotlin 编写,由货拉拉技术开源的,用于 Android 模块化开发的一整套解决方案框架。支持 KSP、支持 AGP8,不仅能对常规的模块依赖解耦、页面跳转,同时提供了模块化过程中常见问题的解决办法。例如:完美解决了模块化开发后由于组件内无法获取 Application 生命周期与业务流程,造成每次初始化与关联依赖调用都需要跨模块修改代码的问题,是目前业界最领先的移动端路由框架。 更多介绍,请见官网:https://therouter.cn 本次发布 1.1.2 版本,更新如下: feature: 提升ActionManager使用灵活性,暴露Navigator对象供外部定制拦截规则。 feature: 提升ActionManager使用灵活性,为链式调用新增参数传递能力。 feature:plugin中新增FlowTask编译期依赖图展示,使用请参考文档:https://therouter.cn/docs/2022/08/26/01 feature:VirtualFlowTask新增依赖关系,保证事件先后顺序。 @ServiceProvider支持类注释...
- 下一篇
Rust 1.67 发布
Rust 团队于近日发布了 Rust 1.67.0 新版本,1.67.0 稳定版中的主要更新内容如下: #[must_use] 对 async fn 有效 带有 #[must_use] 注释的 async 函数现在将该属性应用于返回的 impl Future 的输出。Future 特性本身已经带有 #[must_use] 注释,所以所有实现 Future 的类型都自动 #[must_use]。 在 1.67 版本中,如果输出没有以某种方式使用,编译器现在会发出警告。 #[must_use] async fn bar() -> u32 { 0 } async fn caller() { bar().await; } warning: unused output of future returned by `bar` that must be used --> src/lib.rs:5:5 | 5 | bar().await; | ^^^^^^^^^^^ | = note: `#[warn(unused_must_use)]` on by ...
相关文章
文章评论
共有0条评论来说两句吧...