[关闭]
@levinzhang 2021-02-18T21:57:44.000000Z 字数 1644 阅读 692

Deno如今能够编译为独立的自包含二进制文件

by

摘要:

Deno 1.6引入了将Deno项目编译成独立的可执行文件的功能,这种文件在Deno 1.7中被进一步缩小(高达60%)。Deno现在有一个专门的语言服务器,旨在提升Deno开发者在代码编辑器中的体验。Deno还增加了对data URL的支持,使计算机生成的代码能够得以执行。


Deno 1.6引入了将Deno项目编译成独立的可执行文件的功能,这种文件在Deno 1.7中被进一步缩小(高达60%)。Deno现在有一个专门的语言服务器,旨在提升Deno开发者在代码编辑器中的体验。Deno还增加了对data URL的支持,使计算机生成的代码能够得以执行。

Deno 1.6的发布说明对新的编译工具链做出了如下的阐述:

deno compile为Deno所做的事情类似于nexepkg为Node所做的事情:根据JavaScript或TypeScript源码创建一个独立的、自包含的二进制文件。这是Deno issue跟踪器上被投票最多的一个问题。

将Deno应用编译成自包含的二进制文件解决了与Node或Nectarjs JavaScript原生编译器相同的使用场景。例如,有些开发人员可能想要为他们的应用程序创建一个闭源的商业方案/演示/试用版本;将他们的应用作为一个单独的文件部署在一系列的平台上,或者为了实现可移植性,在可执行文件中合并其他资产。

发布说明提供了一个使用新编译特性的样例:

Deno编译器可以将代码编译到任意支持的架构(Windows x64、MacOS x64和Linux x64)
,这与执行编译的计算机所使用的架构无关。这意味着,一台Linux机器能够创建适用于Windows或MacOS的可执行文件。借助--lite选项(Deno 1.7中可用),所生成的二进制文件能够小40-60%。deno compile还可以创建内置CA证书、自定义V8标记、限定的Deno权限以及预填充命令行参数的二进制文件。然而,它也有一些限制。Deno编译器不支持web workers动态导入

Deno 1.6引入了一个新的lsp子命令,它会启动一个实现了语言服务器协议(Language Server Protocol,LSP)的语言服务器。LSP定义了代码编辑器或集成开发环境与语言服务器之间的协议,从而能够提供一些便利的特性,比如代码补全、跳至定义处(go-to-definition)或代码lint。目前,deno lsp实现了代码补全、悬停提示、跳至定义处和跳至引用处等操作。Deno VSCode扩展目前还没有支持deno lsp

Deno 1.7添加了对data URL的支持。如下的data URL "data:application/typescript;base64,ZXhwb3J0IGNvbnN0IGEgPSAiYSI7CgpleHBvcnQgZW51bSBBIHsKICBBLAogIEIsCiAgQywKfQo="对下文所示的TypeScript源码进行了base64编码:

  1. export const a = "a";
  2. export enum A {
  3. A,
  4. B,
  5. C,
  6. }

在data URL中编码的代码可以通过常规的导入语法进行导入(import * as a from "data:application/typescript;base64,...")。该特性对于执行动态生成的内容特别有用。类似的特性被用来实现Svelte前端框架的交互式训练场。训练场用户在文本域中输入的源码会被预处理、打包、 通过URL对象进行导入、执行并在预览面板中展现。Data URL也可以用于web workers中。

Deno 1.61.7的发布说明详细介绍了该版本的其他小功能。Deno是一款开源软件,采用MIT许可证。我们鼓励通过Deno项目进行贡献,并应遵循Deno贡献指南

查看英文原文:Deno Now Compiles to Self-Contained, Standalone Binaries

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注