」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > Deno 起飛

Deno 起飛

發佈於2024-11-02
瀏覽:205

网络是人类最大的软件平台,拥有超过 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]刪除
最新教學 更多>
  • EchoAPI 與 Insomnia:結合實例進行綜合比較
    EchoAPI 與 Insomnia:結合實例進行綜合比較
    作为一名全栈开发人员,我知道拥有一流的工具来调试、测试和记录 API 是多么重要。 EchoAPI 和 Insomnia 是两个出色的选项,每个选项都有自己独特的特性和功能。让我带您了解这些工具,比较它们的功能和优点,给您一些实际示例,并帮助您决定何时使用 EchoAPI 或 Insomnia。 ...
    程式設計 發佈於2024-11-02
  • 出發時間和持續時間|程式設計教學
    出發時間和持續時間|程式設計教學
    介紹 本實驗旨在測試您對 Go 的時間和持續時間支援的理解。 時間 下面的程式碼包含如何在 Go 中使用時間和持續時間的範例。但是,程式碼的某些部分遺失了。您的任務是完成程式碼,使其按預期工作。 Go程式語言基礎知識。 熟悉 Go 的時間和持續時間支援。 $ ...
    程式設計 發佈於2024-11-02
  • 起重面試問答
    起重面試問答
    1. JavaScript 中什么是提升? 答案: 提升是执行上下文创建阶段为变量和函数分配内存的过程。在此过程中,为变量分配了内存,并为变量分配了值 undefined。对于函数,整个函数定义存储在内存中的特定地址,并且对其的引用放置在该特定执行上下文中的堆栈上。 ...
    程式設計 發佈於2024-11-02
  • 了解 JavaScript 中的文件物件模型 (DOM)
    了解 JavaScript 中的文件物件模型 (DOM)
    你好,神奇的 JavaScript 開發者? 瀏覽器提供了一個稱為文檔物件模型 (DOM) 的程式設計接口,它允許腳本(特別是 JavaScript)與網頁佈局進行互動。網頁的文檔物件模型 (DOM) 是一種分層樹狀結構,它將頁面的元件排列成對象,由瀏覽器在載入時建立。借助此範例,...
    程式設計 發佈於2024-11-02
  • 開始使用 SPRING BATCH 進行編程
    開始使用 SPRING BATCH 進行編程
    Introduction Dans vos projets personnels ou professionnels, Il vous arrive de faire des traitements sur de gros volumes de données. Le traite...
    程式設計 發佈於2024-11-02
  • 使用 CSS 讓您的 Github 個人資料脫穎而出
    使用 CSS 讓您的 Github 個人資料脫穎而出
    以前,自訂 Github 個人資料的唯一方法是更新圖片或更改名稱。這意味著每個 Github 設定檔看起來都一樣,自訂它或脫穎而出的選項很少。 從那時起,您可以選擇使用 Markdown 建立自訂部分。您可以包括您的履歷、您的興趣和嗜好,讓您的個人資料反映您的身分。這是任何人在訪問您的個人資料時看...
    程式設計 發佈於2024-11-02
  • TypeScript 實用程式類型:增強程式碼可重複使用性
    TypeScript 實用程式類型:增強程式碼可重複使用性
    TypeScript 提供內建實用程式類型,讓開發人員有效地轉換和重複使用類型,讓您的程式碼更加靈活和 DRY。在本文中,我們將探討關鍵實用程式類型,例如 Partial、Pick、Omit 和 Record,以協助您將 TypeScript 技能提升到新的水平。 Partial:使所有屬性可選 ...
    程式設計 發佈於2024-11-02
  • 電報 window.open(url, &#_blank&#);在ios上工作很奇怪
    電報 window.open(url, &#_blank&#);在ios上工作很奇怪
    我正在製作一個電報機器人,我想添加將一些資訊從小型應用程式轉發到聊天的選項。我決定使用 window.open(url, '_blank');在我在 iPhone 上嘗試之前它一直運作良好。我沒有轉發,而是分享(這是一件大事,我正好需要轉發一條訊息)。我有一些如何處理它的想法,但它們...
    程式設計 發佈於2024-11-02
  • 誰是前端開發人員?
    誰是前端開發人員?
    當今網路上每個網站或平台的使用者介面部分都是前端開發人員工作的結果。他們參與創建用戶友好的介面,確保網站的外觀和功能。但到底誰是前端開發人員呢?我簡單解釋一下。 用戶看到的部分是前端 開啟網站時首先看到的是網頁介面:顏色、按鈕、文字、動畫。這都是由前端開發人員創建的。前端是網站或應...
    程式設計 發佈於2024-11-02
  • 如何使用保留的 CSS 樣式將 HTML 內容儲存為 PDF?
    如何使用保留的 CSS 樣式將 HTML 內容儲存為 PDF?
    使用CSS 將HTML 內容儲存為PDF在Web 開發中,即使將內容匯出為不同格式,保持視覺美觀也至關重要。當嘗試將 HTML 元素儲存為 PDF 時,這可能會帶來挑戰,因為 CSS 樣式可能會在轉換過程中遺失。 對於必須在已儲存的PDF 中保留CSS 的情況,請考慮使用以下方法:建立新視窗: 開啟...
    程式設計 發佈於2024-11-02
  • 為什麼使用 Print_r() 時要為 DateTime 物件新增幻像屬性?
    為什麼使用 Print_r() 時要為 DateTime 物件新增幻像屬性?
    Print_r() 變更 DateTime 物件Print_r() 在 DateTime 物件上新增屬性,以便在偵錯期間啟用自省。此行為是 PHP 5.3 中引入的內部功能的副作用,它將幻像公共屬性指派給轉儲到文字的實例。 要避免這些屬性所造成的錯誤,請改用反射。然而,不建議尋找這些屬性,因為它們沒...
    程式設計 發佈於2024-11-02
  • C 語言的資料結構與演算法:適合初學者的方法
    C 語言的資料結構與演算法:適合初學者的方法
    在 C 語言中,資料結構和演算法用於組織、儲存和操作資料。資料結構:陣列:有序集合,使用索引存取元素鍊錶:透過指標連結元素,支援動態長度堆疊:先進後出(FILO) 原則佇列:先進先出(FIFO) 原則樹:分級組織資料演算法:排序:依特定順序排序元素搜尋:在集合中尋找元素圖形:處理節點與邊之間的關係實...
    程式設計 發佈於2024-11-02
  • ## `has_key()` 還是 `in`?  在 Python 中檢查字典鍵的最佳方法是什麼?
    ## `has_key()` 還是 `in`? 在 Python 中檢查字典鍵的最佳方法是什麼?
    在Python 中選擇「has_key()」和「in」來檢查字典鍵當涉及驗證是否存在Python 字典中的特定鍵,「has_key()」和「in」都提供了可行的選項。然而,首選方法隨著時間的推移而演變。 歷史上,「has_key()」通常用來檢查字典中鍵是否存在。然而,此函數已在 Python 3....
    程式設計 發佈於2024-11-02
  • 如何使用 AJAX 將 JSON 資料傳送到 PHP?
    如何使用 AJAX 將 JSON 資料傳送到 PHP?
    如何使用Ajax 將JSON 資料傳輸到PHP如何使用Ajax 將JSON 資料傳輸到PHP為了以JSON 格式將資料傳輸到PHP 腳本,至關重要的是能夠使用AJAX 有效地發送資料。 發送 JSON 資料$.ajax({ type: "POST", dataType: ...
    程式設計 發佈於2024-11-02
  • JS:承諾還是回調?
    JS:承諾還是回調?
    理解 JavaScript 中的 Promise 與 Callback 認證測驗的關鍵問題和解答 什麼是回呼函數,它與常規函數有何不同? 回呼函數作為參數傳遞給另一個函數並被呼叫以處理非同步操作。與常規函數不同,回呼被設計為在完成某個任務後執行。 與回呼相比,P...
    程式設計 發佈於2024-11-02

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3