V1.10与V1.10

2021-05-12 16:01:03

如果您已安装Deno安装,则通过运行丹麦升级,您可以升级到1.10。如果您首次安装DENO,则可以使用以下方法的ONEOF:

#使用shell(麦克斯和linux):curl -fssl https://deno.land/x/install/install.sh | Sh#使用PowerShell(Windows):IWR HTTPS://deno.land/x/install/install.ps1-useb | iex#使用homebrew(麦斯科斯):酿造install in deno#使用scoop(windows):scoop安装deno#使用巧克力(windows):choco安装deno

孤立和并行执行测试:在此版本之前,丹诺在单个运行时串行串行arttests。现在,所有发现的测试Modulesare使用每个模块的运行时的新实例运行隔离运行。 Deno测试现在支持--JOBS标志,允许其中的标志指定运行测试时应使用的曲线。默认情况下,所有测试仍然在运行状态。

测试的可配置权限:丹诺有许多旗杆允许指定允许使用程序的权限。为了在不同的权限集下可容易地测试,Deno.test现在支持“权限”选项,允许指定要应用于最佳案例的确切权限。

deno.test({name:"只写",权限:{write:true,阅读:false},async fn(){await deno.writetextfile(" ./ foo.txt&#34 ;,"我可以写!"); console.log(等待deno.readtextfile(" ./ foo.txt"));},});

$ deno test --allow-read -allow-write - unstable test_permissions.tscheck文件://users/ry/src/deno/test_permissions.tsrunning 1从文件中测试:///用户/ Ry / src / deno /test_permissions.tstest只写入...失败(5ms)失败:写入次数denied:需要读取访问" ./ foo.txt",再次使用deno read-read标志运行:核心/ core.js:86:46在unwrappropresult(deno:core / core.js:106:13)在Async Open.ReadTextFile(Deno:运行时/)处于Async Open(Deno:Runtime / JS / 40_Files.js:46:17) js / 40_read_file.js:40:18)在Async Fn(文件://users/ry/src/deno/test_permissions.ts:6:17)在Async AsyncopsAnitizer(Deno:Runtime / JS / 40_Testing.js:21 :9)在Async Exitsanitizer(Deno:运行时/ js / 40_testing.js:85:9)处的Async IncuessInizer(Deno:58:7)在Async Runtest(丹诺:运行时/ js / 40_testing) .js:199:7)在Async对象.RULESTS(DENO:Runtime / JS / 40_Testing.js:244:7)失败:写入仅限结果:失败。 0通过; 1失败; 0忽略了; 0测量; 0过滤掉(37ms)

请记住,测试用例所要求的权限不能超过使用--allow-*标志的进程的Permissgranted。如果在权限对象中省略了一个密钥,则它将继承其从相应--allow-*标志的值。

更好的测试Runner输出:运行测试套件时,将为每个发现的模块提供提示,其中包含测试数量和原点。

从文件运行4个测试:///dev/deno/cli/tests/unit/tty_test.tstest veleasizefile ...好的(11ms)测试账户化error ...确定(4ms)测试insatty ...确定(4ms)test isattyerror ...好的(3ms)从文件运行6个测试:///dev/deno/cli/tests/unit/rename_test.tstest renamedyncsucess ...确定(17ms)test renameyncreadperm ...确定(5ms)test renamesyncwriteperm。 。好的(6ms)测试Renames ...确定(13ms)测试RenameyNcErrorSunix ......确定(34ms)测试RenameyNcErrorswin ...忽略(1ms)...

类型在文档中查看示例:确保文档保持待扭力对所有项目至关重要。很容易忘记更新代码SamplesAfter更改API,导致陈旧的代码样本。为防止丹麦测试现在支持将在文档评论中键入检查CodeExamples的-Doc标志。

/ ** *```*导入{example} from" ./ test_docs.ts&#34 ;; * * console.assert(示例()== 42); *```* /导出函数示例():string {return"示例&#34 ;;}

$ deno test --doc https://deno.com/v1.10/test_docs.tscheck文件:///dev/test_docs.ts:2-7Error:TS2367 [错误]:此条件将始终返回'假'自从类型' string'和#39;数字'没有重叠.Console.Assert(示例()== 42); ~~~~~~~~~~~~~~~ at文件:///dev/test_docs.ts:2-7.Ts:3:16

在未来版本中,我们计划添加对运行代码示例的支持ASRegular测试。

在运行测试时监视文件更改:丹诺测试现在支持--Watch标志将在完成测试后保持过程并监视文件更改以重新运行相关的测试用例。

与支持--WARCT标志的其他子命令一样,所需的文件被丹诺自动发现。

Web工人是Web的并行化原始。它们允许您在单个例外环境(隔离)中同时运行JavaScript,Cypescript或WASM。您可以通过将消息传递到另一个工人和主线程之间进行通信。

丹诺自从我们的Intal 1.0发布以来支持Web工作者,但有一个重大限制:直到现在员工.PostMessage()使用内部JSON合格的邮件的非规范符合性algorithm。此解决方案导致用户为SomesureSulising缺陷,因为并非所有值和对象都会正确地提升。此版本更改为允许使用结构化克隆alogrom批准的任何数据。

以下是向工作人员发送递归JavaScript对象的示例,这将抛出错误:

const obj = {你好:"世界" }; obj.self = obj; const worker =新工人("数据:application / javascript,self.onmessage =(e)=> self.postmessage(e.data);",{类型:"模块"},); worker.onmessage =(e)=> {console.log("收到的事件:",e.data);}; worker.postmessage(obj);

此版本为Web存储API添加了支持。此API由LocalStorage和SessionStorage组成,可用于持久地存储少量数据,而无需直接文件系统访问。数据由原点键入(在丹麦中可以使用--location设置)。您可以使用LocalStorageAnd SessionStorage,而无需任何权限。

API工作就像在浏览器中一样:LocalStorage可以使用拓扑存储在过程重新启动时最多5 MB的数据,而SessionStorage可用于存储过程持续时间的少量数据。

// kv.tsconst key = deno.args [0];如果(key ===未定义){//如果用户通过args,则显示条目控制台的数量.log(localstorage.length);} else {const值= deno.args [1]; if(value ===未定义){//如果没有指定值,则返回key console.log的值(localstrage.getItem(key)); } else {//如果指定值,请设置值localstorage.setItem(键,值); }}

$ deno运行 - 位置https://example.com ./kv.ts0$ enow --location https://example.com ./kv.ts foo bar $ deno运行--location https://示例。 com ./kv.ts foobar $ deno运行 - 位置https://example.com ./kv.ts1

丹诺FMT是一个基于Dint的格式化程序,它是Ableto格式JavaScript,Cypescript,Json和Markdown文件。

跳过文件的格式,可以使用deno-fmt-ingrore-filedifige指令在文件顶部的评论形式。以前那些指令Werenot在标记文件中工作,但现在支持1.10。

跳过格式化标记文件使用<! - deno-fmt-Ignore-file - >在文件的顶部。

此版本使得支持WebasseMbly中的原始原子和共享内存。此前已经在Chrome和Firefox中启用了已启用,现在也是Indeno。

在WebasseMbly中将共享设置为True.Memory构造函数启用算法,允许共享阵列缓冲区作为WASM Memory备份存储。

由于缺乏支持转移(共享)阵列缓冲区的支持,WASM线程尚不可能。这是我们想要很快倾向的一个功能。要了解有关WASM线程的更多信息,您可以从Alex Danilo阅读此博客文章。

丹哥稳定的进口地图在Deno v1.8中,在Chrome89中稳定后。在1.10中,我们启用了使用远程导入地图。这意味着目前地图现在不必存储在本地文件系统上,他们可以在http上加载Alsobe:

此版本刷新插件界面,并允许它们利用Serde_v8以在runtimeand本机插件之间接口。此更新提供从本机插件调度的所有必要实用程序,而无需使用第三方代码。此外,现在允许使用斥责将rust对象储存运行时基础架构的resourcetable。有关如何使用这些API,请参阅test_pluginexample。插件系统仍然需要 - 不稳定标志,如实验特征。

丹诺的某些部分尚未稳定,可能会在稳定之前进行断裂变化 - 这主要是指JavaScript API。在运行丹诺时使用所需的API ITIS指定 - 不稳定标志。但是,此旗杆还用于标记尚未稳定的CLI功能(如丹麦棉绒)。在1.10中,我们已删除了使用 - 不稳定标志Forcli功能,因此,从现在开始,不稳定的标志仅控制不稳定的运行时API的可力性。一些仍然被认为不稳定的CLI功能在他们的帮助文本中有适当的评论(不稳定:)。但是,它们不再需要使用 - 不稳定标志来运行子命令,例如。丹诺编译,丹诺棉绒。