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

简介: 经过了为期 2 年的开发,Deno 终于在 2020 年的 5 月份完成了 1.0 版本。其官方网站宣称,Deno 为 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 Lambda , Azure 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://yqh.aliyun.com/zhibo

立即加入社群,与专家面对面,及时了解课程最新动态!
【云栖号在线课堂 社群】https://c.tb.cn/F3.Z8gvnK

原文发布时间:2020-06-23
本文作者:Vivian Hu
本文来自:“InfoQ ”,了解相关信息可以关注“[InfoQ](https://www.infoq.cn/article/RGh6YzkS4viHey2hiKk1

相关文章
|
17天前
|
JSON JavaScript 前端开发
设置WebStorm像VSCode一样每行代码结尾自动格式化加入“;”分号(JavaScript、TypeScript格式化)
设置WebStorm像VSCode一样每行代码结尾自动格式化加入“;”分号(JavaScript、TypeScript格式化)
|
2月前
|
消息中间件 Web App开发 JavaScript
Node.js【简介、安装、运行 Node.js 脚本、事件循环、ES6 作业队列、Buffer(缓冲区)、Stream(流)】(一)-全面详解(学习总结---从入门到深化)
Node.js【简介、安装、运行 Node.js 脚本、事件循环、ES6 作业队列、Buffer(缓冲区)、Stream(流)】(一)-全面详解(学习总结---从入门到深化)
77 0
|
24天前
|
JavaScript 前端开发 IDE
TypeScript和JavaScript有什么不同?
TypeScript和JavaScript有什么不同?
|
1月前
|
JavaScript 前端开发 Serverless
函数计算新功能— 支持 Node.js 18 、Node.js 20 运行时
从2024年2月起,函数计算正式发布 Node.js 18 运行时和 Nodejs.20 运行时,函数计算2.0和函数计算3.0都支持新的运行时,目前新运行时处在公测状态,欢迎大家来体验。
464 0
|
1月前
|
JavaScript 前端开发 开发者
如果你想在钉钉环境中运行JavaScript脚本
【2月更文挑战第17天】如果你想在钉钉环境中运行JavaScript脚本
34 6
|
2月前
|
JavaScript 前端开发 算法
【Node.js 版本过高】运行前端时,遇到错误 `Error: error:0308010C:digital envelope routines::unsupported`
【Node.js 版本过高】运行前端时,遇到错误 `Error: error:0308010C:digital envelope routines::unsupported`
66 0
|
2月前
|
JavaScript 前端开发 开发者
JavaScript(JS)和TypeScript(TS)的区别
JavaScript(JS)和TypeScript(TS)的区别
29 0
|
2月前
|
JavaScript 前端开发 API
JavaScript 和 typescript 有什么不同?
JavaScript 和 typescript 有什么不同?
|
2月前
|
JavaScript 前端开发 安全
TypeScript:赋予JavaScript数据类型新的力量,提升编程效率!
TypeScript:扩展JavaScript数据类型,赋予编程更强大的表达能力!
|
2月前
|
JavaScript 安全 容器
Vue3 + setup + TypeScript: 构建现代、类型安全的Vue应用的关键技巧总结
当使用 setup 的时候,组件直接引入就可以了,不需要再自己手动注册