Deno 1.19开始原生支持网页流媒体

由Node.js之父Ryan Dahl所开发JavaScript执行环境Deno,推出了最新1.19版本,该版本两大更新重点在于原生支持网页流媒体,并且还加入deno vendor子指令,来满足用户自供应(Vendoring)相依项目的需求。

由于Deno开发者希望在程序代码存储库中,直接管理所使用的相依项目,因此官方在Deno 1.19中,加入deno vendor子指令。官方解释,过去开发者要达到Vendoring的目的,便要将签入(Check In)DENO_DIR到存储库,虽然这个方法有效,但是却并不方便。DENO_DIR中的文件是以16进制字符串所构成的非主动名称,从版本控制的角度来说并不好。

Deno 1.19所提供的Vendoring新方法deno vendor子指令,当用户想要对模块一个或是多个进入点Vendoring的时候,Deno能够通过分析模块所有的导入和导出,并且从这些文件构建模块图,再将生成的模块列表写入到vendor/文件夹中,必要的时候模块名称或许会被变动,以产生有效的文件系统路径,但系统会尽量维持与原始模块相同。Deno会产生导入映射表,将所有远程模块映射到本地端vendor文件夹中。

Deno.FsFile和Deno.Conn接口现在分别具有ReadableStream和WritableStream类型的可读和可写属性,所以能够与其他网页流媒体的Web API集成。由于Deno所有API都支持开箱即用的网页流媒体,包括原生HTTP服务器,因此开发者可以容易地组合这些API一起使用。

另外,在新版Deno中还添加了内置转换器CompressionStream和DecompressionStream,官方提到,该网页标准API,可以让用户将资料压缩和解压缩成多种文件格式,目前这项API已经先在Chrome中提供,其他浏览器也可能很快地支持这项功能,而Deno也正在与网页标准工作组合作,要在CompressionStream和DecompressionStream API中,添加受到Chrome、Opera和Firefox浏览器支持的brotli压缩算法。

由于开发者抱怨Deno命令行旗标操作不够友善,当Deno检查权限失败时会抛出异常,而且需要用户每次都提供这些旗标。因为这种做法太过烦人,因此官方现在做出调整,在Deno 1.19中,当未授给需要的访问权限,命令行会丢出提示,让用户以交互的方式接受或是拒绝每个访问检查。

官方解释,其实这项功能早已在Deno中提供,只是要使用—prompt旗标来激活这项功能,但现在Deno默认激活,如果用户想要停用,则需要使用—no-prompt旗标。不过这项默认是只有在用户连接至TTY时才会出现,因此不需要在像是CI脚本中使用—no-prompt旗标。