Deno 1.14 已发布,包括以下新特性和变更:
- 引入新的 Web Crypto API
- 增加针对
deno lint
和deno fmt
的自定义选项 - 引入 URLPattern
- 原生服务器端 WebSocket API 进入稳定状态
- worker 之间的零拷贝 ArrayBuffer 传输
- 引入 File locking API
- 对 OS signals API 的更改
- 在
fetch
中提供 Mutual TLS 支持 - 在
DENO_AUTH_TOKENS
中提供基本身份验证支持 - URL 解析速度提升了 3 倍
- 支持为子进程指定
gid
和uid
- 更快的
std/http
模块 - 更新 VSCode 扩展
- TypeScript 4.4
- V8 9.4
引入新的 Web Crypto API
此版本引入了许多新的 Web Crypto API:
crypto.subtle.exportKey()
:- HMAC 密钥现在支持以 JWK 和“raw”格式导出
- RSA 密钥现在支持以 pkcs#8 格式导出
crypto.subtle.importKey()
:- HMAC 密钥现在可以以 JWK 和“raw”格式导入
- 现在支持以 pkcs#8 格式导入 RSA 密钥
- PBKDF2 密钥现在支持以”raw”格式导入
crypto.subtle.generateKey()
:- 现在支持生成 RSA-OAEP 密钥
- 现在支持生成 ECDH 密钥
- 现在支持生成 AES 密钥
crypto.subtle.deriveBits()
:- 现在支持 PBKDF2 派生
- 现在支持 HKDF 派生
crypto.subtle.verify()
:- 现在支持 ECDSA 签名验证
crypto.subtle.encrypt()
:- 现在支持 RSA-OAEP 加密
crypto.subtle.decrypt()
:- 现在支持 RSA-OAEP 解密
引入 URLPattern
此版本引入了一个新的不稳定的 Web 平台 API,用于根据模式匹配 URL。URLPattern
是流行path-to-regexp
库的内置替代品 。
const pattern = new URLPattern({ pathname: "/books/:id" });
console.log(pattern.test("https://example.com/books/123")); // true
console.log(pattern.test("https://example.com/books/123/456")); // false
console.log(pattern.test("https://example.com/books")); // false
console.log(pattern.exec("https://example.com/books/123").pathname); // { input: "/books/123", groups: { id: "123" } }
引入 File locking API
此版本引入了四个新的可用于文件锁定的不稳定 API:
Deno.flock
Deno.flockSync
Deno.funlock
Deno.funlockSync
这些 API 对于像sqlite
提供适当的数据库同步这种项目来说是必不可少的 。
更快的 std/http
模块
Deno 标准库 0.107.0 版本对http
模块进行了重大改进 。
在 v1.13 中原生 HTTP server API 到达稳定状态后,团队重写了http/server.ts
模块,并使用了新的稳定 API。最终实现了显著的性能提升,以及创建了对用户更友好的 API——主要用于处理 HTTP 服务器的问题,例如错误处理和连接的多路复用。
原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/170715.html