当前位置:首页 > 编程语言 > 正文内容

学习Deno并超越Node.js

a811625533年前 (2023-04-23)编程语言17

尽管Node.js仍然是使用最多的服务器端JavaScript运行时,但像Deno和Bun这样的替代运行时已经获得了关注,因为它们试图改进Node.js的概念。

Deno是两个较新的运行时中较受欢迎的,它解决了Node.js中固有的一些安全问题,并为TypeScript和WebAssembly等技术提供了更全面的支持。

在这篇文章中,你将探索Deno的基础知识,了解它与Node.js和Bun的比较,并跟随一个实践演示,使用Deno来构建一个简单的HTTP *** 服务器。

什么是Deno?

随着开发人员对的熟悉,他们看到了它在本地机器上编程的潜力。因此,他们创建了服务器端运行时–能够在不使用浏览器的情况下在机器上执行JavaScript代码的环境。

Ryan Dahl为此开发了,后来又创造了,以解决他在最初的Node.js设计中遇到的一些问题。一些明显的缺陷包括它对像这样的集中式软件包管理器的依赖,缺乏标准库,以及默认的安全设置不严格。

Deno的一些主要优势包括以下几点:

  • 默认的安全性 – 用户必须。
  • 对TypeScript和WebAssembly的内置支持 – 在Deno中运行TypeScript和WebAssembly程序就像运行JavaScript程序一样简单。运行时对这些语言的编译就像对JavaScript一样。
  • 一个分散的包管理器 – Deno可以直接从URL导入代码,而不是依赖npm或Bun的包管理器这样的包库。这种能力意味着你可以从任何托管的地方加载依赖,包括你的GitHub仓库、服务器或CDN。Deno还提供了一个,以便更容易访问。
  • 遵守 *** 标准 – Deno旨在遵循与浏览器相同的API,这意味着为浏览器编写的代码可以很容易地转换到运行时。

大公司和主要的行业参与者,如、和已经采用了Deno,但它在 *** 开发者中的采用却不那么广泛。根据,只有1.47%的专业开发人员在使用Deno,而46.31%的人表示在使用Node.js。

Deno是做什么的?

像任何JavaScript运行时一样,Deno使开发人员能够在服务器端运行JavaScript。因此,你可以使用Deno来完成各种各样的编程任务。

Deno在开发响应基于 *** 的用户请求的服务器应用程序等任务中表现最为突出。例如,如果你正在创建一个在线书店,你可以使用Deno建立一个应用程序,从数据库中获取信息,建立用户想要查看的页面,并将其发送到浏览器上进行渲染。

你也可以用Deno来完成较低级别的编程任务,比如建立一个命令行工具,通过终端管理你的待办事项。换句话说,你可以用Deno来实现与使用或Ruby等语言相同的目标。

Deno vs Node

Deno旨在成为Node.js的改进,它在几个关键领域实现了这一承诺。Deno通过为不同的代码模块实现更细粒度的访问配置来提高安全性。它还专注于 *** 标准的API合规性,这使得开发人员能够在浏览器和服务器端使用相同的代码。

对于从事服务器端JavaScript项目的团队来说,Deno已经成为Node的一个可行的替代品。虽然它们相似的功能让一些开发者相信Deno可以取代,但这种可能性是不可能的,有几个关键原因。

Node.js是更受欢迎的运行时,它积累了一个庞大的预写包生态系统和一个庞大、活跃的用户社区。这些宝贵的资源帮助Node.js保持了一个极具吸引力的运行时。

相比之下,Deno是新的:1.0版本是在2020年5月发布的,所以相对来说,很少有开发者有时间去玩它。学习一个新工具会延长开发时间。此外,目前还不清楚Deno是否会给许多简单的项目带来重大好处。

但是,如果你正在构建一个安全至关重要的领域的应用程序,如金融,Deno的安全功能可能会使你值得转换。

Deno vs Bun

前工程师在2022年7月首次发布了,进行Beta测试。Bun是一个比Deno更具实验性的运行时,与Deno不同的是,它被设计为与Node.js有广泛的后向兼容性。

Bun还拥有快得惊人的性能,。主要特点是实现了这些能力:

  • 更好的引擎—Bun使用更快、更高效的作为其底层JavaScript引擎,而不是谷歌的 JavaScript和Web Assembly引擎。
  • 更多的代码控制—Bun是用编写的,这是一种低级语言,对代码执行的控制比JavaScript更强。
  • 精心调整的效率—开发Bun的团队在开发过程中,以确保代码效率。

Bun是如此之新,在帮助解决故障方面的社区支持也相对较少。尽管如此,Bun对于实验来说还是很有趣的。那些特别需要提升性能的团队可能会发现Bun对他们的项目很有用,但 *** 开发经常优先考虑性能以外的因素。

开始使用Deno

现在你已经了解了Deno的一些情况,以及它与其他流行的JavaScript运行时的比较,现在是时候看看它是如何工作的。在这一节中,你将学习如何在Deno中创建一个简单的服务器,用 “Hello from the server!”来响应HTTP请求。

安装Deno

你可以使用官方文档中的这些将Deno作为二进制可执行文件安装到机器上。例如,在macOS上,你可以用命令 brew install deno 来安装Deno。

另一种开始使用Deno的 *** 是把它安装成npm包,像这样:

为你的项目创建一个文件夹(也许是deno_example),在其中运行 npm init 命令。(你可以接受 init 建议的所有默认选项,因为它创建了一个基本的package.json文件)。

在初始化你的应用程序后,运行 npm install deno-bin 来安装Deno二进制包。现在你可以更新package.json文件,用 npm start 来启动应用程序。在默认的package.json文件中的 “scripts” 对象属性中添加下面的代码:

"scripts": {
"start": "deno run --allow-net app.ts",
"test": "echo \"Error: no test specified\" && exit 1"
},

这个脚本的添加使Deno能够以 *** 权限( --allow-net )运行app.ts模块。记住,在使用Deno时,你需要明确地允许对 *** 或文件系统的访问。

现在,你准备创建app.ts模块,负责监听一个端口并为用户请求提供服务。

创建App.ts模块

在Deno中创建一个基本的服务器是非常简单的。首先,创建一个app.ts文件并粘贴以下代码:

import { serve } from "https://deno.land/std@0.177.0/http/server.ts";
serve((_req) => new Response("Hello from the server!"), { port: 8000 });

该代码使用了存储在Deno.land官方网站上的中的 serve 函数。这段代码还为传入的请求提供了一个 serve 函数处理程序。处理程序函数对每个请求的回应是:”Hello from the server!”

该 serve 函数还接受可选参数,例如你想要服务的端口号。这里,代码示例使用这些参数在8000端口提供服务。

接下来,通过运行 npm start 来启动服务器。这应该会启动一个服务器,它监听 localhost:8000 ,并以问候语回应请求。

运行中的Deno服务器

如果你想把服务器扩展成一个完整的API,你可能需要添加数据库连接。这很容易做到,因为Deno社区已经创建了支持、、等流行数据库的驱动程序。

小结

运行时的范围从普通的、可靠的到非常实验性的。为你的项目选择合适的运行时取决于你的项目以及你希望你的运行时如何帮助你实现你的目标。

Node.js对大多数项目来说都很好用。它有一个庞大的生态系统和一个庞大的社区,可以帮助解决各种各样的故障情况。

Deno的好处是具有额外的安全性和更好的开发者体验。同时,它最适合有经验的团队使用,这样它的好处就超过了学习一个不熟悉的运行时的时间和人力成本。

最后,虽然Bun对于大多数专业项目来说过于实验性,但它是一个独特而有趣的运行时,可以为个人项目或扩展而拿起。

总而言之,Deno在Node.js的优点和Bun的实验性可能性之间提供了平衡。虽然Node.js对大多数项目来说是一个可行的选择,但Deno可能会成为 *** 开发未来发展的前沿。

扫描二维码推送至手机访问。

版权声明:本文由2345好导航站长资讯发布,如需转载请注明出处。

本文链接:http://2345hao.cn/blog/index.php/post/7994.html

分享给朋友:

“学习Deno并超越Node.js” 的相关文章

PHP 8.1有哪些变化:新特性、改变及弃用等

PHP 8.1有哪些变化:新特性、改变及弃用等

不久前,PHP 8.0大张旗鼓地发布了。它带来了许多新特性、性能增强和变化——其中最令人兴奋的是新的JIT编译器。 技术世界总是在向前发展,PHP也是如此。 ,包含了几个令人兴奋的特性。它定于今年晚些时候于2021年11月25日发布。 在本文中,我们将详细介绍PHP 8.1将带来哪些新的东...

宝塔面板教程之FTP管理篇

宝塔面板教程之FTP管理篇

使用宝塔面板,您可以快速地创建一个FTP管理账户,对网站文件进行管理。但有必要提醒大家的是,使用FTP远不如使用SFTP安全,你可以查看文章“”进一步了解两者之间的差异。 此外,宝塔面板的文件管理模块其实已经能够满足站长的大部分文件管理需求。当然,如果你非得要使用FTP管理服务器文件,可以参照以下...

静态与动态IP地址有何区别?

静态与动态IP地址有何区别?

每台连接到Internet的计算机都有一个Internet协议 (IP) 地址。但是,并非所有IP地址的外观或行为都相同。 如果您使用计算机网络或服务器,了解动态IP和静态IP之间的区别至关重要。通过详细了解每个协议,您可以选择最适合您需求的解决方案。 在本文中,我们将讨论静态和动态IP之间...

宝塔面板教程之监控管理篇

宝塔面板教程之监控管理篇

宝塔面板另外一个特质是,你无需通过Linux命令行来查看服务器各项指标状况,即可以阿里云服务器类似的可视化图表,查看资源使用、负载、CPU占用及内容使用百分比等指标。 默认监控是关闭,有需要的,可以开启,监控数据默认保存30天,可以自行修改,默认监控数据保存在日志,可手动清理该日志。 监控管理,...

宝塔面板教程之安全管理篇

宝塔面板教程之安全管理篇

宝塔面板的安全管理可以设置SSH开关、禁用PING、放行端口、屏蔽IP等相关的操作。 SSH的设置 SSH的关闭与启动,点击下图的开关,即可开启或关闭SSH远程连接。 SSH端口的修改,SSH远程连接的默认端口为22,修改端口前,请先查看该端口是否被占用。 PING命令的...

什么是Node.js以及为什么要使用它

什么是Node.js以及为什么要使用它

JavaScript是世界上最流行的编程语言之一。今天,它为数百万个网站提供支持,并吸引了成群的开发人员和设计人员为Web构建功能。如果您是编程新手,那么 JavaScript很容易成为之一。 在最初的20年里,JavaScript主要用于客户端脚本。由于JavaScript只能在<scr...