”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > Deno 起飞

Deno 起飞

发布于2024-11-02
浏览:529

网络是人类最大的软件平台,拥有超过 50 亿用户,并且还在不断增长。然而,随着 Web 开发需求的飙升,其复杂性也随之增加。在无尽的配置文件、大量的样板文件和大量的依赖项之间,开发人员花费更多的时间来进行设置,而不是构建下一个大东西。

进入 Deno,这是一种用于 JavaScript 和 TypeScript 开发的现代一体化工具链。将其视为对混乱的急需回应。 Deno 旨在简化、精简和安全的 Web 开发,其使命是让开发人员重新获得时间(和理智)。现在,随着 Deno 2 的推出,事情将会变得更好。


Deno  Takes Flight

嘿! ?
已经有一段时间了!最近放了个假,没有发文章。但现在我回来了,准备好应对今年的最后一段时间。让我们坚强地结束一切,充分利用剩下的一切!

....首先要做的事情...

顺便说一句,什么是 Deno?

如果您熟悉 Node.js(彻底改变了服务器端开发的 JavaScript 运行时),那么 Deno 就像它雄心勃勃的弟弟一样。 Deno 由 Node 背后的同一思想者 Ryan Dahl 创建,是 JavaScript 和 TypeScript 的现代运行时,旨在简化和安全的 Web 开发。

虽然 Node.js 已经成为十多年来的首选,但 Deno 提供了原生 TypeScript 支持、内置工具(如 linter、格式化程序和测试运行器)以及安全第一的方法。将其视为对 Node 所做的一切的全新诠释,但麻烦更少,内置功能更多。

为什么选择 Deno?

JavaScript 在过去十年中一直是 Web 开发的王者,而 TypeScript 已成为强有力的挑战者,在流行度方面排名第三。尽管 JavaScript 无可否认地无处不在,但它周围的工具生态系统已经变成了 Node.js 依赖项、包管理器和臃肿配置文件的迷宫。 Deno 彻底颠覆了这种范式,将开发人员所需的一切都集成到一个包中:零配置设置、原生 TypeScript 支持、内置安全性以及一些重要的“内置电池”。

将 Deno 视为您梦想中的 Bun,但更稳定,以及您希望拥有的 Node:更快、更时尚、更直观。

Deno 2 有什么新功能?

如果您涉足过 Deno 1,您已经知道它的优点:默认的安全性、内置实用程序和原生 TypeScript。但在 Deno 2 中,游戏规则发生了变化。最大的更新?向后兼容 Node.js 和 npm。是的,您没听错——您的旧 Node 项目现在可以与 Deno 无缝运行,无需魔杖。

以下是最令人兴奋的功能的细分:

  • Node.js 兼容性:运行现有的 Node 应用程序,完全支持 package.json、node_modules 和 npm 工作区。
  • Lightning-Fast 包管理:通过 deno install、deno add 和 deno remove 等新命令,Deno 管理依赖项的速度比 npm(带有热缓存)快 90%。
  • JSR(JavaScript 注册表):为跨运行时共享 JavaScript 库而构建的现代注册表。可以将其视为 npm,但功能增强且本身对 TypeScript 友好。
  • 标准库稳定性:Deno 的标准库现在坚如磐石,提供与 lodash、jest 和 chalk 等流行的 npm 模块等效的功能。

Bun、Node 和 Deno:运行时三角恋

Deno  Takes Flight

现在,让我们通过一些友好的竞争来增添趣味。

Node.js: 老守卫。可靠,但由于其庞大的配置生态系统和包管理怪癖,Node 有时感觉就像一个凌乱的室友,将 node_modules 文件夹留下到处都是。
小圆面包: 街区里的新来的孩子。速度快得令人难以置信,并且注重性能。然而,它仍在解决一些稳定性问题,并且缺乏完整的生态系统兼容性,而这使得 Node 对许多人来说至关重要。
Deno: 时尚、安全且明智的。原生 TypeScript 支持、内置 Web API(如 fetch 和 Promises),现在与 Node.js 完全兼容。 Deno 带来了开发人员所渴望的轻松和简单性,所有工具都捆绑在一起 - 没有外部依赖项,只有干净、高效的代码。

虽然 Bun 可能是短跑运动员,但 Deno 是马拉松运动员,尤其是现在与 Node.js 兼容。 Deno 不再是一个古怪的副项目;它是 JavaScript 运行时大逃杀中的有力竞争者。

为什么选择 Deno 2?

如果您对 Node 感到满意,您可能会想:为什么要切换?好吧,想象一下这样的开发体验,您不再需要处理 tsconfig.json、webpack.config.js、babel.config.js 或任何那些讨厌的文件。 Deno 具有内置的 TypeScript 支持、默认安全执行以及与运行时紧密集成的丰富标准库。需要导入 npm 包吗?只需使用 npm,Deno 就会处理剩下的事情——不需要 node_modules 或 package.json (当然,除非你想要它们)。

使用 Deno 2,您可以逐步迁移现有的 Node 项目。想要继续使用您最喜欢的基于 Node 的工具,例如 Next.js 或 SvelteKit?没问题! Deno 对 npm 的全面支持意味着您可以根据自己的喜好进行混合和匹配。

如果您是更大团队的一员呢? Deno 2 的工作空间和 monorepo 支持使其非常适合管理复杂的项目。每个工作区都可以有自己的 linter、格式化程序和依赖项设置,无论它们是基于 Deno 还是基于 Node。 Deno 2 将两全其美融合在一个生态系统中。

其他突出功能包括:

deno fmt 现在不仅可以格式化 TypeScript 和 JavaScript,还可以格式化 HTML、CSS 和 YAML。
deno lint 包含新的特定于节点的规则。
deno test 支持使用 node:test.
编写的测试 deno 任务可以运行你的 package.json 脚本。
deno 覆盖率输出漂亮的 HTML 报告。
denoserve 现在跨多个核心并行运行 HTTP 服务器,以提高性能。

Deno 的未来是光明的

Deno  Takes Flight

使用 Deno 2,Web 开发从未如此顺利、安全或有趣。它将人们熟悉的 Node 与现代运行时的未来特征结合在一起。无论您是在构建下一个病毒式应用程序、管理大型单一存储库,还是只是尝试您的业余项目,Deno 2 都会为您提供支持。

这是一个 JavaScript 的美丽新世界,Deno 2 已准备好引领潮流。

那么,您应该使用 Deno 2 吗?

Deno  Takes Flight

这取决于您要寻找的内容。如果您厌倦了 Node 无尽的配置和第三方依赖项,Deno 的“自带电池”理念可能会改变游戏规则。如果您需要与当前的 Node 生态系统无缝兼容,Deno 2 可以毫不费力地直接滑入您的工作流程。

最后,Deno 正在突破 JavaScript 运行时的界限,让开发人员更轻松地构建、发布和扩展他们的应用程序。但这只是一种观点。 Web 开发领域广阔,观点必然各不相同。

那么,你觉得呢? Deno 2 是否满足您的开发需求,或者您是否坚持使用 Node(或者可能跳到 Bun)?我很想听听你的想法。辩论开始!

注意: 有关 Deno 2 的完整报道,请访问 Deno 官方网站 - https://deno.com/blog/v2.0。

下次见......

Deno  Takes Flight

版本声明 本文转载于:https://dev.to/mitchiemt11/deno-20-takes-flight-4ij3?1如有侵犯,请联系[email protected]删除
最新教程 更多>
  • 如何使用Java.net.urlConnection和Multipart/form-data编码使用其他参数上传文件?
    如何使用Java.net.urlConnection和Multipart/form-data编码使用其他参数上传文件?
    使用http request 上传文件上传到http server,同时也提交其他参数,java.net.net.urlconnection and Multipart/form-data Encoding是普遍的。 Here's a breakdown of the process:Mu...
    编程 发布于2025-07-13
  • 在Pandas中如何将年份和季度列合并为一个周期列?
    在Pandas中如何将年份和季度列合并为一个周期列?
    pandas data frame thing commans date lay neal and pree pree'和pree pree pree”,季度 2000 q2 这个目标是通过组合“年度”和“季度”列来创建一个新列,以获取以下结果: [python中的concate...
    编程 发布于2025-07-13
  • 表单刷新后如何防止重复提交?
    表单刷新后如何防止重复提交?
    在Web开发中预防重复提交 在表格提交后刷新页面时,遇到重复提交的问题是常见的。要解决这个问题,请考虑以下方法: 想象一下具有这样的代码段,看起来像这样的代码段:)){ //数据库操作... 回声“操作完成”; 死(); } ?> ...
    编程 发布于2025-07-13
  • 用户本地时间格式及时区偏移显示指南
    用户本地时间格式及时区偏移显示指南
    在用户的语言环境格式中显示日期/时间,并使用时间偏移在向最终用户展示日期和时间时,以其localzone and格式显示它们至关重要。这确保了不同地理位置的清晰度和无缝用户体验。以下是使用JavaScript实现此目的的方法。方法:推荐方法是处理客户端的Javascript中的日期/时间格式化和时...
    编程 发布于2025-07-13
  • 如何干净地删除匿名JavaScript事件处理程序?
    如何干净地删除匿名JavaScript事件处理程序?
    删除匿名事件侦听器将匿名事件侦听器添加到元素中会提供灵活性和简单性,但是当要删除它们时,可以构成挑战,而无需替换元素本身就可以替换一个问题。 element? element.addeventlistener(event,function(){/在这里工作/},false); 要解决此问题,请考虑...
    编程 发布于2025-07-13
  • Java字符串非空且非null的有效检查方法
    Java字符串非空且非null的有效检查方法
    检查字符串是否不是null而不是空的 if(str!= null && str.isementy())二手: if(str!= null && str.length()== 0) option 3:trim()。isement(Isement() trim whitespace whitesp...
    编程 发布于2025-07-13
  • Java是否允许多种返回类型:仔细研究通用方法?
    Java是否允许多种返回类型:仔细研究通用方法?
    在Java中的多个返回类型:一种误解类型:在Java编程中揭示,在Java编程中,Peculiar方法签名可能会出现,可能会出现,使开发人员陷入困境,使开发人员陷入困境。 getResult(string s); ,其中foo是自定义类。该方法声明似乎拥有两种返回类型:列表和E。但这确实是如此吗...
    编程 发布于2025-07-13
  • 图片在Chrome中为何仍有边框?`border: none;`无效解决方案
    图片在Chrome中为何仍有边框?`border: none;`无效解决方案
    在chrome 在使用Chrome and IE9中的图像时遇到的一个频繁的问题是围绕图像的持续薄薄边框,尽管指定了图像,尽管指定了;和“边境:无;”在CSS中。要解决此问题,请考虑以下方法: Chrome具有忽略“ border:none; none;”的已知错误,风格。要解决此问题,请使用以下...
    编程 发布于2025-07-13
  • 如何简化PHP中的JSON解析以获取多维阵列?
    如何简化PHP中的JSON解析以获取多维阵列?
    php 试图在PHP中解析JSON数据的JSON可能具有挑战性,尤其是在处理多维数组时。 To simplify the process, it's recommended to parse the JSON as an array rather than an object.To do...
    编程 发布于2025-07-13
  • 为什么尽管有效代码,为什么在PHP中捕获输入?
    为什么尽管有效代码,为什么在PHP中捕获输入?
    在php ;?>" method="post">The intention is to capture the input from the text box and display it when the submit button is clicked.但是,输出...
    编程 发布于2025-07-13
  • 如何在其容器中为DIV创建平滑的左右CSS动画?
    如何在其容器中为DIV创建平滑的左右CSS动画?
    通用CSS动画,用于左右运动 ,我们将探索创建一个通用的CSS动画,以向左和右移动DIV,从而到达其容器的边缘。该动画可以应用于具有绝对定位的任何div,无论其未知长度如何。问题:使用左直接导致瞬时消失 更加流畅的解决方案:混合转换和左 [并实现平稳的,线性的运动,我们介绍了线性的转换。这...
    编程 发布于2025-07-13
  • MySQL中如何高效地根据两个条件INSERT或UPDATE行?
    MySQL中如何高效地根据两个条件INSERT或UPDATE行?
    在两个条件下插入或更新或更新 solution:的答案在于mysql的插入中...在重复键更新语法上。如果不存在匹配行或更新现有行,则此功能强大的功能可以通过插入新行来进行有效的数据操作。如果违反了唯一的密钥约束。实现所需的行为,该表必须具有唯一的键定义(在这种情况下为'名称'...
    编程 发布于2025-07-13
  • 为什么不````''{margin:0; }`始终删除CSS中的最高边距?
    为什么不````''{margin:0; }`始终删除CSS中的最高边距?
    在CSS 问题:不正确的代码: 全球范围将所有余量重置为零,如提供的代码所建议的,可能会导致意外的副作用。解决特定的保证金问题是更建议的。 例如,在提供的示例中,将以下代码添加到CSS中,将解决余量问题: body H1 { 保证金顶:-40px; } 此方法更精确,避免了由全局保证金重置引...
    编程 发布于2025-07-13
  • 如何从Google API中检索最新的jQuery库?
    如何从Google API中检索最新的jQuery库?
    从Google APIS 问题中提供的jQuery URL是版本1.2.6。对于检索最新版本,以前有一种使用特定版本编号的替代方法,它是使用以下语法:获取最新版本:未压缩)While these legacy URLs still remain in use, it is recommended ...
    编程 发布于2025-07-13
  • 在Ubuntu/linux上安装mysql-python时,如何修复\“ mysql_config \”错误?
    在Ubuntu/linux上安装mysql-python时,如何修复\“ mysql_config \”错误?
    mysql-python安装错误:“ mysql_config找不到”“ 由于缺少MySQL开发库而出现此错误。解决此问题,建议在Ubuntu上使用该分发的存储库。使用以下命令安装Python-MysqldB: sudo apt-get安装python-mysqldb sudo pip in...
    编程 发布于2025-07-13

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3