写点什么

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

  • 2021-02-21
  • 本文字数:1171 字

    阅读完需:约 4 分钟

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

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编码:


export  const a =  "a";export  enum  A  {  A,  B,  C,}
复制代码


在 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

2021-02-21 17:022979

评论

发布
暂无评论
发现更多内容

当GaussDB遇上了毕昇编译器

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号 6 月 PK 榜

人民日报:天翼云持续拓展云网基础设施覆盖广度和深度

天翼云开发者社区

云计算

对线面试官-线程池(四)

派大星

Java 面试题

TCMalloc 技术细节详解

KaiwuDB

KaiwuDB TCMalloc

AIGC时代,设计软件应该做什么?丨AIGC X 企业服务

ToB行业头条

如何理解 REST 和 RPC 之间的差异?

Apifox

程序员 RPC Rest 协议 RPC调用

集结开发者力量,6月17日华为开发者联创日·深圳站即将启航!

说山水

程序员晋升指南!13年顶级架构设计经验的锦囊妙计与实践分享

互联网架构师小马

Java 架构

电路板电镀中4种特殊的电镀方法

华秋PCB

经验 电路板 焊接 PCB板 电镀

源生创新 云享未来|GOTC全球开源技术峰会华为云云原生精彩时刻

华为云开发者联盟

云原生 后端 华为云 华为云开发者联盟 企业号 6 月 PK 榜

一文走进 SQL 编译-语义解析

KaiwuDB

KaiwuDB SQL编译

抓包分析RST信号

蓝胖子的编程梦

TCP Wireshark tcpdump RST 报文 Connection reset

在百度生态用达人营销赋能品牌生意增长 | 度星选白皮书

说山水

KW 新闻 | KaiwuDB 亮相数字中国并发布离散制造场景解决方案

KaiwuDB

数字中国 KaiwuDB 离散制造业解决方案

低代码赛道拥挤 生态聚合成为破局关键

力软低代码开发平台

从分布式到微服务解密“架构”原理与实战笔记

小小怪下士

Java 程序员 分布式 微服务

揭秘Spring依赖注入和SpEL表达式

华为云开发者联盟

开发 华为云 华为云开发者联盟 企业号 6 月 PK 榜

政务云建设提速,天翼云夯实智慧政务数字底座

天翼云开发者社区

云计算 大数据

Navicat Premium将关系和实体添加到概念模型的方法

背包客

macos MySQL 数据库 Mac 软件 Navicat Premium

破防了!阿里用17个真实企业级项目阐述Java系统分析与架构设计

互联网架构师小马

Java 架构设计 系统分析

面试官:如何实现开关降级

互联网架构师小马

Java sentinel aop 开关降级

Sentinel熔断降级的规则及实现原理

互联网架构师小马

Java sentinel 熔断降级

参与赢大奖!阿里云机器学习平台PAI助力开发者激发AIGC潜能

阿里云大数据AI技术

阿里云 AIGC

【有奖调研】互联网新型社交,华为在找“元服务搭子”,快来集合!

HarmonyOS SDK

HMS Core

CloudOps自动化运维套件助力企业更好上云、用云、管云

阿里云弹性计算

云计算 大数据 阿里云 物联网

什么是低代码(Low-Code)?

优秀

低代码 低代码Low-Code 低代码是什么

微服务高并发:授权与系统自适应功能的实现原理

互联网架构师小马

授权 系统自适应

正式启动|2023中国高校计算机大赛—大数据挑战赛火热报名中!

云智慧AIOps社区

大数据 AI 算法 运维 智能运维

今年LED显示屏市场趋势

Dylan

商业 广告 娱乐 数字化 LED显示屏

MySQL 8.0.29 instant DDL 数据腐化问题分析

GreatSQL

greatsql greatsql社区

Deno现能够编译为独立的自包含二进制文件_大前端_Bruno Couriol_InfoQ精选文章