写点什么

Deno 1.0 发布:为 JavaScript 和 TypeScript 提供安全运行时环境

  • 2020-06-23
  • 本文字数:1409 字

    阅读完需:约 5 分钟

Deno 1.0发布:为JavaScript和TypeScript提供安全运行时环境

经过了为期 2 年的开发,Deno 终于在 2020 年的 5 月份完成了1.0版本。其官方网站宣称,Deno 为 JavaScript 和 TypeScript 提供了一个安全的运行时环境。听起来是不是和 Node.js 类似?没错,就是这样,因为 Deno 是由 Node.js 的原班人马开发的。Ryan Dahl(Deno 和 Node.js 作者)之前发表过一篇文章——“关于Node.js最让他后悔的10件事”。为了解决文章中提到的问题,他创造了 Deno。和 Node.js 一样,Deno 可以在 V8 引擎上运行 JavaScript,TypeScript 和 WebAssembly 应用。对于应用开发者来说,相对于 Node.js,在使用 Deno 开发时有些地方是需要注意的。


在模块方面,Node.js 是二进制模块化文件,而 Deno 是单个二进制文件应用。它没有使用像 NPM 那样复杂的依赖管理解决方案。取而代之的是,当开发人员需要定义依赖关系时,只需要在源码中直接使用 URL 即可。截至目前,已经大约有超过500个第三方的Deno模块可以供使用。看看这种方式是否可以在企业应用中进行推广,将是一件很有趣的事情。因此,Deno 通常不兼容那些为专门为 Node.js 编写的 NPM 包。不过,移植并非难事,因为它们使用了相同的编程语言和框架。Deno 已经支持了大量的Node.js内置库对象。与 Node.js 相比,Deno 的运行时默认就是安全的,因此如果应用需要访问文件系统或者网络,那么开发者就需要进行额外的声明。


在 API 编程方面,Deno 优先支持 TypeScript。Deno 的运行API大量的采用了 TypeScript 或 JavaScript 中的 Promises 和 async/await API,这些 API 在 Node.js 被设计时还不被支持。除了 TypeScript 和 JavaScript,Deno 应用还可以加载和执行 WebAssembly 的字节码程序。例如,在 Deno 中,Sqlite模块就被从 C++编译成了 WebAssembly。此外,开发者还可以使用 Rust 对 Deno 进行扩展,这将允许使用 Cargo(Rust 的依赖和包管理系统)来管理 Deno 的插件和附加组件。


在底层方面,Deno 使用 Rust,而没有像 Node.js 那样使用 C 或者 C++来访问底层 V8 引擎。同时,在支持 web 应用的高并发时,Deno 使用了 Rust 的Tokio,而不是 libuv。


虽然 Deno 才刚刚完成 1.0 版本,但是它已经得到了很多业内知名人士的支持。其中,有诸如AWS LambdaAzure Functions和 Google Cloud Run之类主流云供应商;也有来自Begin.com的布赖恩·勒鲁(Brian Leroux),他同时还在 AWS 上对 Deno 进行了测试,且宣称Deno的启动时间只需要短短的6秒;还有 JetBrain 的WebStorm(最受欢迎的 JavaScript 的 IDE)也宣布支持 Deno。


然而,在对 Deno 的未来一片看好的情况下,依然还有大多数的开发人员相信 Node.js 会继续存在下去,且未来 Deno 很难超过 Node.js。这些开发者们的理由是 Node.js 有庞大的生态系统和大量的企业应用。


Fernando Doglio(Node.js 专家和书籍作者)说到:

Deno 目前还只是一个经过了 2 年研发的想法,还没有在生产系统进行实践和测试。因此它现在还只适合给早期使用者玩玩。


在 Deno1.0 版本发布之后的三周里,Deno 团队已经发布了5个小版本,主要是为了修复一些 bug。Deno 的下一个版本是v1.1,该版本的计划是对 CLI、公共 API 及其 Rust 插件系统进行改进。要了解更多关于 Deno 的未来计划,请查看即将在公开的OpenJS世界大会上 Ryan Dahl 的演讲


Deno 是基于 MIT 协议的开源软件。如果想对Deno项目进行贡献和支持的话,需要遵循它的贡献指南


原文链接:


https://www.infoq.com/news/2020/06/deno-1-ready-production/


2020-06-23 12:294247

评论

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

关于fastjson出现反序列化远程代码执行漏洞的通知

天翼云开发者社区

征文投稿丨基于轻量应用服务器搭建Hexo个人博客

阿里云弹性计算

node.js nginx git Hexo 轻量应用服务器

InfoQ 极客传媒 15 周年庆征文|一文读懂分布式系统本质:高吞吐、高可用、可扩展

No Silver Bullet

架构 分布式系统 可扩展 6月月更 InfoQ极客传媒15周年庆

2022年中国新能源汽车换电市场发展洞察

易观分析

新能源汽车

【Spring 学习笔记(一)】第一个Spring程序与IoC思想

倔强的牛角

6月月更

直播回顾 | 7000字干货,深析区块链+汽车供应链金融的应用价值

旺链科技

区块链 产业区块链 供应链金融

当AI抄起了水表

华为云开发者联盟

人工智能 modelarts workflow 智能水务

AI“爷青回”:一键找回童年记忆

最新动态

多模态语义检索 | 基于 MetaSpore 快速部署 HuggingFace 预训练模型

Geek_a02d1e

机器学习 深度学习 开源 AI 多模态

天猫精灵语音技能单轮对话表达式的参数定义

汪子熙

人工智能 机器学习 聊天机器人 机器人 6月月更

【高并发】在高并发环境下该如何构建应用级缓存?

冰河

并发编程 多线程 高并发 异步编程 6月月更

选择天翼云混合云管理平台的五大理由

天翼云开发者社区

leetcode 417. Pacific Atlantic Water Flow 太平洋大西洋水流问题

okokabcd

LeetCode 搜索 数据结构与算法

撑算力之帆,天翼云助力数字时代逐潮者远航

天翼云开发者社区

5G+实时云渲染:交互实时云看车革新购车体验

3DCAT实时渲染

5G 汽车之家 汽车 元宇宙 实时云渲染

玩转云端|一文读懂天翼云CDN升级重点

天翼云开发者社区

数字先锋| 天翼云牵手中能融合

天翼云开发者社区

样品管理系统解决方案

低代码小观

Lims LIMS实验室信息管理系统 LIMS系统

【云服务器】云计算平台的架构是什么样的?

Finovy Cloud

云服务器 GPU服务器

移动平台打造新生态 | 助力企业跨业务、一站式、全场景的系统建设

BeeWorks

你的App是信息化时代的还是数字化时代的

FinClip

小程序开发

博云容器云产品族:如何实现让“Any APP on Any Kubernetes”?

BoCloud博云

云原生 容器云

Java 中三大类数据类型

迷篱

龙蜥开发者说:不忘初心,方得始终 | 第 7 期

OpenAnolis小助手

开源 cpu 龙蜥开发者说 飞腾 不忘初心

哈希游戏开发竞猜系统哈希值hash算法

薇電13242772558

哈希算法

Hoo研究院|一文速览风投机构NGC Ventures的加密布局

区块链前沿News

投资 VC Hoo NGC

【LeetCode】 删除二叉搜索树中的节点Java题解

Albert

LeetCode 6月月更

使用 LakeSoul 构建实时机器学习样本库

Geek_a02d1e

机器学习 大数据 开源 新基建 湖仓一体

Flutter 图片库重磅开源!

阿里巴巴终端技术

flutter 开源 native 客户端

这个API文档,太拽了吧!

Liam

前端 Postman API API文档 开放api

函数节流和函数防抖和他们的区别

工边页字

JavaScript 性能优化 前端 6月月更

Deno 1.0发布:为JavaScript和TypeScript提供安全运行时环境_大前端_Vivian Hu_InfoQ精选文章