写点什么

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:294382

评论

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

【案例】新基建下星环科技城轨智能视频分析系统建设

星环科技

NumPy之:结构化数组详解

程序那些事

Python 数据分析 Numpy 程序那些事

负载均衡续:万亿流量场景下的负载均衡实践

Coder的技术之路

负载均衡 架构 高并发 负载均衡架构

INNOVATE 2021 圆满落幕,一起盘点那些 AI 前沿实例!

亚马逊云科技 (Amazon Web Services)

哑面爽滑肤感胶浆

C13713145387

哑面爽滑肤感胶浆

爽面弹力胶浆、哑面弹力胶浆

C13713145387

爽面弹力胶浆

MySQL数据迁移那些事儿

Simon

MySQL 数据迁移

立体水性石头拉浆

C13713145387

弹力抗刮硅油布胶浆

C13713145387

弹力抗刮硅油布胶浆

百分点大数据技术团队:政务数据安全管理实践

百分点大数据团队

高并发系列:架构优化之从BAT实际案例看消息中间件的妙用

Coder的技术之路

高并发 高并发系统设计 消息队列 消息中间件

采取有效云网络安全策略的5个基本步骤

云计算

Java中用户线程和守护线程区别这么大?

王磊

Java 并发编程 多线程 5月日更

不反粘水性台板胶Waterborne table glue

C13713145387

不反粘水性台板胶

一文抽丝剥茧带你掌握复杂Gremlin查询的调试方法

华为云开发者联盟

调试 图数据库 Gremlin 遍历源 图遍历

华云大咖说 | 安超DCM给数据中心“做主”

华云数据

架构实战营模块三作业

日照时间长

架构实战营

Flink on Zeppelin 系列之:Yarn Application 模式支持

Apache Flink

flink

postgresql数据库 timescaledb 时序库 超级表 块的压缩(compress_chunk()的应用)

Yang

数据库 postgresql

牛仔底色保护浆(喷砂工艺)

C13713145387

牛仔底色保护浆

融云亮相 CDEC2021 上海站 全场景通信能力赋能企业数字升级

融云 RongCloud

Google官方关闭binary后,Android工程师怎么办?

Changing Lin

5月日更

哑面防水尼龙胶浆Nylon printing paste

C13713145387

哑面防水尼龙胶浆

夏季不塞网胶浆、夏季不堵网胶浆

C13713145387

夏季不塞网胶浆

水性硅胶防滑透明浆

C13713145387

水性硅胶防滑透明浆

Spring-技术专题-设计模式和研究分析

码界西柚

spring 设计模式 原理分析 5月日更

OAuth 2.0 与 OIDC

Zhang

OAuth 2.0 OIDC

聊聊我的编程时如何入门的

C语言与CPP编程

c++ 编程 程序人生 C语言 数据结构与算法

LiteOS内核源码分析:静态内存Static Memory

华为云开发者联盟

内存管理 LiteOS 静态内存 Static Memory Membox

展开说说,Spring Bean IOC、AOP 循环依赖

小傅哥

Java spring 小傅哥 ioc 循环依赖

一次过透气浆、印一次透气浆

C13713145387

透气胶浆 一次过透气浆

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