Deno 1.10 发布:改进内置 test runner、新增 Web Storage API
Deno 1.10 已正式发布,此版本包含许多新功能、性能优化以及错误修复。
如果已经安装了 Deno,运行deno upgrade
命令即可升级到 1.10 版本。如果是首次安装,可以参考下面的方法:
# Using Shell (macOS and Linux): curl -fsSL https://deno.land/x/install/install.sh | sh # Using PowerShell (Windows): iwr https://deno.land/x/install/install.ps1 -useb | iex # Using Homebrew (macOS): brew install deno # Using Scoop (Windows): scoop install deno # Using Chocolatey (Windows): choco install deno
改进内置的 test runner
Deno 1.10 对内置的 test runner 进行了重大改进。
- 支持隔离和并行执行测试
- 支持为测试用例指定可配置的确切权限
Deno.test({ name: "write only", permissions: { write: true, read: false }, async fn() { await Deno.writeTextFile("./foo.txt", "I can write!"); console.log(await Deno.readTextFile("./foo.txt")); }, });
$ deno test --allow-read --allow-write --unstable test_permissions.ts Check file:///Users/ry/src/deno/test_permissions.ts running 1 test from file:///Users/ry/src/deno/test_permissions.ts test write only ... FAILED (5ms) failures: write only PermissionDenied: Requires read access to "./foo.txt", run again with the --allow-read flag at deno:core/core.js:86:46 at unwrapOpResult (deno:core/core.js:106:13) at async open (deno:runtime/js/40_files.js:46:17) at async Object.readTextFile (deno:runtime/js/40_read_file.js:40:18) at async fn (file:///Users/ry/src/deno/test_permissions.ts:6:17) at async asyncOpSanitizer (deno:runtime/js/40_testing.js:21:9) at async resourceSanitizer (deno:runtime/js/40_testing.js:58:7) at async exitSanitizer (deno:runtime/js/40_testing.js:85:9) at async runTest (deno:runtime/js/40_testing.js:199:7) at async Object.runTests (deno:runtime/js/40_testing.js:244:7) failures: write only test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out (37ms)
- 更好地展示 test runner 输出内容
running 4 tests from file:///dev/deno/cli/tests/unit/tty_test.ts test consoleSizeFile ... ok (11ms) test consoleSizeError ... ok (4ms) test isatty ... ok (4ms) test isattyError ... ok (3ms) running 6 tests from file:///dev/deno/cli/tests/unit/rename_test.ts test renameSyncSuccess ... ok (17ms) test renameSyncReadPerm ... ok (5ms) test renameSyncWritePerm ... ok (6ms) test renameSuccess ... ok (13ms) test renameSyncErrorsUnix ... ok (34ms) test renameSyncErrorsWin ... ignored (1ms) ...
- 支持运行测试时监视文件更改
- 支持在文档中进行类型检测
/** * ``` * import { example } from "./test_docs.ts"; * * console.assert(example() == 42); * ``` */ export function example(): string { return "example"; }
示例如下:
$ deno test --doc https://deno.com/v1.10/test_docs.ts Check file:///dev/test_docs.ts:2-7 error: TS2367 [ERROR]: This condition will always return 'false' since the types 'string' and 'number' have no overlap. console.assert(example() == 42); ~~~~~~~~~~~~~~~ at file:///dev/test_docs.ts:2-7.ts:3:16
新增 Web Storage API
此版本增加了对 Web Storage API 的支持。该 API 由localStorage
和sessionStorage
组成,可以用于持久存储少量数据,而无需直接访问文件系统。开发者可以不需要申请任何权限来使用localStorage
和sessionStorage
。
底层存储层和持久性对于应用程序是不透明的,因此不用担心安全性的问题。
该 API 的工作方式与在浏览器中一样:localStorage
可用于在流程重新启动时永久存储多达 5MB 的数据,而 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); } }
$ 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
支持远程导入映射 (maps)
Deno 1.8 中导入映射功能已稳定,到了 Deno 1.10,目前已启用远程导入映射功能。这意味着导入映射现在不必存储在本地文件系统上,它们也可以通过 HTTP 进行加载:
$ deno install --import-map=https://example.com/import_map.json -n example https://example.com/mod.ts

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Android 12 Beta 1 发布,改善 UI 和隐私,引入设备高性能标准
在今天的 Google I/O 大会上,Google 发布了 Android 12 的第一个测试版。Android 12 Beta 对 Android 系统进行的非常大的改动,以下是一些值得关注的变化。 适用于 Android 的新用户界面 正如 Android Developer 在消费者博客中强调的那样,Android 12 带来了 Android 历史上最大的设计变化。Google 重新思考了整个体验,从色彩到形状、光线和动画,使 Android 12 更具表现力、活力和个性化。这项工作是在 Google 的软件、硬件和 Material Design 团队之间的深度合作下完成的,Google 正在将软件和硬件生态系统统一在一种名为 Material You 的设计语言之下。 Google 已经将新的设计语言扩展到整个平台和 UI 组件,因此你的应用程序将自动获得这些升级。 重新设计的小部件 - 随着 Android 12 的设计变化,Google 已经更新了应用程序的小部件,使它们更好用、更漂亮,也更容易被发现。Google 增加了新的交互式控件,如复选框、开关和单选按钮。An...
- 下一篇
每日一博 | 使用 ML 和 DNN 建模的技巧总结
每个人都可以轻松地将数据放入任何模型机器学习或深度学习框架中。但是遵循最佳实践技巧可能有助于提升工作效率。以下是常见的一些方法。 本文内容 数据预处理 处理原始数据 使用张量 数据扩充 数据采样 模型训练 存储中间状态 虚拟周期 简化原则 定位问题 调试 定位问题 使用评价模型 数据转换 欠拟合 过拟合 生产 元数据关联 切换到推理模型 缩放成本 无状态模式 批处理 使用C++ 数据预处理(Data Preparation) 处理原始数据(Process Your Own Data) 因为消费者可能不知道开展数据处理和特征工程,所以数据分析师需要在模型内进行数据预处理。 以文本分类问题为例,使用BERT进行分类。数据分析师不能要求客户进行标记处理和特征整理。 以回归问题为例,时间是特征之一。在初始模型中,数据分析师只能使用星期几(如星期四)作为特征。经过几次迭代之后,星期几不再是一个好的特征因素,数据分析师只想使用日期(如31号)作为特征。而客户可能只提供了星期几的信息,而没有具体日期的信息,因此需要进行数据预处理。 以语音识别为例,消费者只能向数据分析师发送音频,而不能发送诸如Mel...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8安装Docker,最新的服务器搭配容器使用
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7安装Docker,走上虚拟化容器引擎之路
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS8编译安装MySQL8.0.19
- CentOS7,CentOS8安装Elasticsearch6.8.6
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- Windows10,CentOS7,CentOS8安装Nodejs环境