Deno 1.6正式发布!支持编译成单个可执行文件,苹果M1可原生运行

{"type":"doc","content":[{"type":"blockquote","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"近日,Deno 1.6.0正式发布。这一版本包含一些主要特性升级和许多错误修复,包括最受开发者关注的deno compile也取得了阶段性成果,现在Deno终于可以支持将TypeScript编译成单个可执行文件了。"}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"以下是"},{"type":"text","text":"本次版本更新的"},{"type":"text","text":"要点一览:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"构建自包含的独立二进制文件:"},{"type":"link","attrs":{"href":"https:\/\/deno.land\/posts\/v1.6#codedeno-compilecode-building-self-contained-standalone-binaries","title":"xxx","type":null},"content":[{"type":"text","text":"deno compile可以将Deno项目构建为完全独立的可执行文件"}]}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https:\/\/deno.land\/posts\/v1.6#built-in-deno-language-server","title":"xxx","type":null},"content":[{"type":"text","text":"内置的Deno语言服务器"}]},{"type":"text","text":":用于代码编辑器的完全集成LSP"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"对Mac Arm64的实验性支持:发布了可在苹果新款M1芯片上原生运行的二进制文件。"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"如果你已经安装了Deno,则运行deno upgrade即可升级到1.6版本。如果你是第一次安装Deno,可以使用下面列出的几种方法:"}]},{"type":"codeblock","attrs":{"lang":"shell"},"content":[{"type":"text","text":"# Using Shell (macOS and Linux):\ncurl -fsSL https:\/\/deno.land\/x\/install\/install.sh | sh\n\n\n# Using PowerShell (Windows):\niwr https:\/\/deno.land\/x\/install\/install.ps1 -useb | iex\n\n\n# Using homebrew (MacOS):\nbrew install deno\n\n\n# Using Scoop (Windows):\nscoop install deno\n\n\n# Using Chocolatey (Windows):\nchoco install deno\n\n\n# Build from source using cargo\ncargo install "}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"新特性和更改"}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"deno compile:独立的自包含二进制文件"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.infoq.cn\/resource\/image\/28\/c4\/283963b46156e174bcab056c2d3327c4.gif","alt":null,"title":"","style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":"","fromPaste":false,"pastePass":false}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Deno开发团队希望在Deno CLI中提供一个好用的实用工具链,deno fmt和deno lint就是其中的例子。现在,Deno工具链终于添加了另一个开发工具:deno compile。"},{"type":"text","marks":[{"type":"strong"}],"text":"deno compile对Deno来说,和Node里面的nexe或pkg的作用是一样的:从JavaScript或TypeScript源代码创建独立的自包含二进制文件。这也是Deno问题跟踪器上最受关注的一个问题。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"它的工作机制是这样的:"}]},{"type":"codeblock","attrs":{"lang":"shell"},"content":[{"type":"text","text":"$ deno compile --unstable https:\/\/deno.land\/[email protected]\/http\/file_server.ts\nCheck https:\/\/deno.land\/[email protected]\/http\/file_server.ts\nBundle https:\/\/deno.land\/[email protected]\/http\/file_server.ts\nCompile https:\/\/deno.land\/[email protected]\/http\/file_server.ts\nEmit file_server\n\n\n$ .\/file_server\nHTTP server listening on http:\/\/0.0.0.0:4507\/"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"与Deno中的所有新特性一样,deno compile需要--unstable标志,因为短期内这个接口可能会迎来重大更改。如果你有任何反馈,请在"},{"type":"link","attrs":{"href":"https:\/\/discord.gg\/deno","title":"xxx","type":null},"content":[{"type":"text","text":"Deno discord"}]},{"type":"text","text":"中发表评论,或在Deno"},{"type":"link","attrs":{"href":"https:\/\/github.com\/denoland\/deno\/issues","title":"xxx","type":null},"content":[{"type":"text","text":"问题跟踪器"}]},{"type":"text","text":"上创建功能请求问题。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"有关该实现的详细信息,参见#8539("},{"type":"link","attrs":{"href":"https:\/\/github.com\/denoland\/deno\/pull\/8539","title":"","type":null},"content":[{"type":"text","text":"https:\/\/github.com\/denoland\/deno\/pull\/8539"}]},{"type":"text","text":")。"}]},{"type":"heading","attrs":{"align":null,"level":4},"content":[{"type":"text","text":"当前限制"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"目前,使用deno compile时可能会遇到一些限制。如果你遇到了以下情况,请在对应的跟踪问题中提交反馈。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"当前不支持Web Worker。此特性的跟踪问题是#8654("},{"type":"link","attrs":{"href":"https:\/\/github.com\/denoland\/deno\/issues\/8654","title":"","type":null},"content":[{"type":"text","text":"https:\/\/github.com\/denoland\/deno\/issues\/8654"}]},{"type":"text","text":")。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"你不能在动态导入中动态包含代码。此特性的跟踪问题是#8655("},{"type":"link","attrs":{"href":"https:\/\/github.com\/denoland\/deno\/issues\/8655","title":"","type":null},"content":[{"type":"text","text":"https:\/\/github.com\/denoland\/deno\/issues\/8655"}]},{"type":"text","text":")。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"自定义V8标志和沙箱权限当前无法实现。此特性的跟踪问题是#8656("},{"type":"link","attrs":{"href":"https:\/\/github.com\/denoland\/deno\/issues\/8656","title":"","type":null},"content":[{"type":"text","text":"https:\/\/github.com\/denoland\/deno\/issues\/8656"}]},{"type":"text","text":")。"}]}]}]},{"type":"heading","attrs":{"align":null,"level":4},"content":[{"type":"text","text":"未来计划"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"你可能已经注意到,与其他为JS创建独立自包含二进制文件的工具(如pkg)不一样的是,deno compile没有可用于打包资产的虚拟文件系统。Deno开发团队表示,"},{"type":"text","marks":[{"type":"strong"}],"text":"希望随着将来一些TC39提案(例如import assertions和asset references)的引入,可以不再需要虚拟文件系统,因为届时资产可以在JS模块图中正确表示。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"目前来说,deno compile子命令不支持跨平台编译"},{"type":"text","text":","},{"type":"text","text":"特定平台的编译必须在该平台上进行。如果有需求,"},{"type":"text","text":"Deno开发团队"},{"type":"text","text":"想使用一个--target标志,为编译时添加针对不同架构交叉编译的功能。这个跟踪问题是#8567("},{"type":"link","attrs":{"href":"https:\/\/github.com\/denoland\/deno\/issues\/8567","title":"","type":null},"content":[{"type":"text","text":"https:\/\/github.com\/denoland\/deno\/issues\/8567"}]},{"type":"text","text":")。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"由于当前二进制文件打包的工作机制,二进制文件中包含了许多不必要的代码。"},{"type":"text","text":"经"},{"type":"text","text":"初步测试,除去这些不必要的代码后,可以将二进制文件的最终大小减少约60%(减到20MB左右)。目前"},{"type":"text","text":"Deno开发团队"},{"type":"text","text":"正在做这方面的工作(例如#8640,"},{"type":"link","attrs":{"href":"https:\/\/github.com\/denoland\/deno\/pull\/8640","title":"","type":null},"content":[{"type":"text","text":"https:\/\/github.com\/denoland\/deno\/pull\/8640"}]},{"type":"text","text":")。"}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"内置Deno语言服务器"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.infoq.cn\/resource\/image\/d1\/ac\/d15361b6f469c48c11644e2df01398ac.gif","alt":null,"title":"","style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":"","fromPaste":false,"pastePass":false}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Deno 1.6附带了一个新的deno lsp子命令,该子命令提供了一个实现"},{"type":"link","attrs":{"href":"https:\/\/microsoft.github.io\/language-server-protocol\/","title":"xxx","type":null},"content":[{"type":"text","text":"LSP语言服务器协议"}]},{"type":"text","text":"的语言服务器。LSP使编辑器可以与Deno通信,以提供各种高级功能,例如代码自动完成、linting和悬停文档等。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"这个新的deno lsp子命令尚未制作完成,但是它实现了许多主要的LSP功能:"}]},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"代码完成"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"悬停提示"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"转到定义"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"转到引用"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"deno fmt集成"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"deno lint整合"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https:\/\/marketplace.visualstudio.com\/items?itemName=denoland.vscode-deno","title":"xxx","type":null},"content":[{"type":"text","text":"Deno VSCode扩展"}]},{"type":"text","text":"尚不支持deno lsp。它比新生的deno lsp提供的功能还是丰富许多。但是,随着LSP越来越成熟,预计这种情况将在未来几周内改变。现在,如果你要使用VSCode尝试deno lsp,则必须安装"},{"type":"link","attrs":{"href":"https:\/\/marketplace.visualstudio.com\/items?itemName=denoland.vscode-deno-canary","title":"xxx","type":null},"content":[{"type":"text","text":"VSCode Deno Canary"}]},{"type":"text","text":"。在尝试这个新扩展之前,请确保Deno 1.6已安装,并禁用这个扩展的旧版本,否则诊断可能会重复。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"要跟踪开发进度,请查看问题#8643("},{"type":"link","attrs":{"href":"https:\/\/github.com\/denoland\/deno\/issues\/8643","title":"","type":null},"content":[{"type":"text","text":"https:\/\/github.com\/denoland\/deno\/issues\/8643"}]},{"type":"text","text":")。#8643完成后,"},{"type":"text","text":"Deno开发团队"},{"type":"text","text":"将发布使用deno lsp的新版vscode-deno。"}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"迁移到更严格的类型检查"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在Deno 1.4中,--unstable引入了一些更严格的TypeScript类型检查,使开发团队能够将一堆代码从JS移到Rust中(从而大大提升了TypeScript的编译和打包性能)。在Deno 1.5中,默认情况下为每个人都启用了这些更严格的类型检查,并且给出了\"isolatedModules\": flase的TypeScript编译器选项,以便开发人员选择关闭。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在这一版本中,这个选项已被移除。现在,所有TypeScript代码都使用\"isolatedModules\": true运行。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"关于此特性的更多详细信息,请参见Deno 1.5博客文章("},{"type":"link","attrs":{"href":"https:\/\/deno.land\/posts\/v1.5#stricter-type-checks-in-stable","title":"","type":null},"content":[{"type":"text","text":"https:\/\/deno.land\/posts\/v1.5#stricter-type-checks-in-stable"}]},{"type":"text","text":")。"}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"TypeScript 4.1"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Deno 1.6附带了TypeScript的最新稳定版本。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"有关Typescript 4.1中新特性的更多信息,请参见TypeScript 4.1发布文章。"}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"金丝雀频道"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"一些高级用户想要在下一个稳定的Deno版本发布之前测试错误修复和新特性,针对这些用户,Deno开发团队提供了一个canary更新通道。这里每天会发布多个金丝雀版本,在Deno存储库的"},{"type":"link","attrs":{"href":"https:\/\/github.com\/denoland\/deno\/tree\/master","title":"xxx","type":null},"content":[{"type":"text","text":"master分支"}]},{"type":"text","text":"上每提交一次就更新一个版本。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"你可以通过版本末尾的7字符提交哈希,以及deno --version输出中的canary字符串来识别这些发行版。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"从Deno 1.6开始,你可以切换到金丝雀频道,运行deno upgrade,--canary下载最新的金丝雀版本。你可以使用deno upgrade --canary --version 5eedcb6b8d471e487179ac66d7da9038279884df跳转到特定的提交哈希。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"blockquote","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"警告:在金丝雀版本之间跳转或降级为稳定版本可能会损坏你的DENO_DIR。"}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"可以从"},{"type":"link","attrs":{"href":"https:\/\/dl.deno.land下载canary版本的zip文件","title":"","type":null},"content":[{"type":"text","text":"https:\/\/dl.deno.land"}]},{"type":"text","text":"下载金丝雀版本的zip文件。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"金丝雀尚不支持aarch64-apple-darwin构建。"}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"对Mac Arm64的实验性支持"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"使用苹果搭载M1处理器的新Mac设备的用户将能原生运行Deno了。在发行zip文件中,开发团队通过LLVM target triple aarch64-apple-darwin来引用这个目标。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"该目标仍被认为是实验性的,因为它是用Rust nightly构建(我们通常使用Rust稳定版),并且团队尚无自动化CI流程来构建和测试这个目标。不过M1上的Deno完全通过了测试套件,因此团队还是挺有信心的,认为它会带来比较顺滑的体验。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"以M1为目标的rusty_v8 v0.14.0的二进制文件也提供了相同的警告("},{"type":"link","attrs":{"href":"https:\/\/github.com\/denoland\/rusty_v8\/releases\/tag\/v0.14.0","title":"","type":null},"content":[{"type":"text","text":"https:\/\/github.com\/denoland\/rusty_v8\/releases\/tag\/v0.14.0"}]},{"type":"text","text":")。"}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"std\/bytes的更改"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"作为标准库工作组("},{"type":"link","attrs":{"href":"https:\/\/github.com\/denoland\/deno\/issues\/8405","title":"","type":null},"content":[{"type":"text","text":"https:\/\/github.com\/denoland\/deno\/issues\/8405"}]},{"type":"text","text":")工作的一部分;std\/bytes模块已做了大修。这是稳定Deno标准库的第一步。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"大多数API都被重命名,以更好地与Array上可用的API保持一致:"}]},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"copyBytes -> copy"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"equal -> equals"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"findIndex -> indexOf"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"findLastIndex -> lastIndexOf"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"hasPrefix -> startsWith"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"hasSuffix -> endsWith"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"完整的发行说明(包括错误修复)参加此处:"},{"type":"link","attrs":{"href":"https:\/\/github.com\/denoland\/deno\/releases\/tag\/v1.6.0中找到","title":"","type":null},"content":[{"type":"text","text":"https:\/\/github.com\/denoland\/deno\/releases\/tag\/v1.6.0"}]},{"type":"text","text":"。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"原文链接:"},{"type":"link","attrs":{"href":"https:\/\/deno.land\/posts\/v1.6","title":"","type":null},"content":[{"type":"text","text":"https:\/\/deno.land\/posts\/v1.6"}]}]}]}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章