Deno团队最近发布了Deno 1.10,支持共享WASM内存、实现Web Storage API、远程导入地图、改进内置测试运行器等。
Deno 1.10现在支持WebAssembly原子学和共享内存,遵循Chrome和Firefox的路径,它们默认启用之前的功能。
const memory = new WebAssembly.Memory({
initial: 1,
maximum: 10,
// enables atomics and allows for shared array buffers as WASM memory the backing store
shared: true,
});
console.assert(memory.buffer instanceof SharedArrayBuffer);
新的Deno版本还支持浏览器的Web存储API。网络存储API提供了替代cookies的机制,允许持久化少量的键/值对(本地存储不超过5MB)。这些机制在浏览器中可以通过 Window.sessionStorage
和 Window.localStorage
属性提供。在Deno中,localStorage
和sessionStorage
可以直接使用,不需要权限,如下所示。
// kv.ts
const key = Deno.args[0];
if (key === undefined) {
// if user passes no args, display number of entries
console.log(localStorage.length);
} else {
const value = Deno.args[1];
if (value === undefined) {
// if no value is specified, return value of the key
console.log(localStorage.getItem(key));
} else {
// if value is specifed, set the value
localStorage.setItem(key, value);
}
}
存储是由原点键入的(--location
选项)。下面是对以前脚本的执行,展示了数据是如何在调用过程中持续存在的。
$ deno run --location https://example.com ./kv.ts
0
$ deno run --location https://example.com ./kv.ts foo bar
$ deno run --location https://example.com ./kv.ts foo
bar
$ deno run --location https://example.com ./kv.ts
1
Deno 1.10允许开发者远程获取导入地图。
$ deno install --import-map=https://example.com/import_map.json -n example https://example.com/mod.ts
导入地图,最近在Chrome 89中添加,指定哪些URL会被JavaScriptimport
语句和import()
表达式获取(例如,import moment from "moment"
)。因此,导入地图允许在不修改源代码的情况下重新映射导入。
Deno的内置测试运行器也有明显的改进。虽然测试在默认情况下继续以串行方式运行,但开发人员可以使用--jobs
选项来指定运行测试的并发线程数。测试模块是隔离运行的,每个模块都有一个新的运行时实例。Deno.test
,也支持指定测试用例的权限,观察与测试用例相关的文件变化(--watch
选项)。
Deno用户可以通过在终端运行deno upgrade
来升级。Deno 1.10包含额外的功能、错误修复和性能改进。我们鼓励开发者查看新功能和稳定的API的完整列表和描述。