node.js和java,Deno 會取代 Node.js 嗎?

 2023-10-22 阅读 29 评论 0

摘要:【CSDN 編者按】幾天前,Node 之父 Ryan Dahl 及 Deno 團隊為我們正式帶來了 Deno 1.0,據官方介紹,這是一個 JavaScript/TypeScript 運行時,使用 V8 引擎、Rust 構建。因其是 Node 之父的已經歷時兩年的新項目,Deno 在業界引起了非常強烈的

【CSDN 編者按】幾天前,Node 之父 Ryan Dahl 及 Deno 團隊為我們正式帶來了 Deno 1.0,據官方介紹,這是一個 JavaScript/TypeScript 運行時,使用 V8 引擎、Rust 構建。因其是 Node 之父的已經歷時兩年的新項目,Deno 在業界引起了非常強烈的討論。本文作者 Fernando Doglio 是在 Node.js 上鼎鼎有名的大神,著作了多本技術圖書,包括《Scaling Your Node.js Apps》、《REST API Development with Node.js》、《Reactive Programming with Node.js》等,其中有《Python 性能分析與優化》經圖靈引進已在國內上架中文版。在本文中,Fernando 詳細分析了 Deno 的眾多特性,以及開發者們尤為關注的是否會取代 Node.js 上,CSDN 經 Fernando 授權并發布以饗讀者。

作者 | Fernando Doglio,已獲作者翻譯授權

譯者 | 蘇本如,責編 | 唐小引

頭圖 | Deno 官網

出品 | CSDN(ID:CSDNnews)

以下為譯文:

Deno 是什么?它會取代 Node.js 嗎?

node.js和java。顯然,對這個問題的簡單回答就是“現在下結論還為時過早”,但有幾個事實可能在你做出這樣的決定時發揮重要的作用。

首先,Deno 是由 Ryan Dahl(Node 之父)所創建,他也以創建 Node.js 而聞名于世,聽起來很熟悉嗎?這是否意味著 Deno 會自動取代 Node?我們都應該開始計劃重構 sprint 嗎?見鬼,當然不!但是如果你想了解更多,請繼續閱讀!

我們從頭說起

2018 年,Ryan?做了一次演講,他談到了他認為 Node.js 的十大錯誤之處。在演講的最后,他公布了 Deno 項目,當時它還只是一個小項目,Ryan 將在這個項目中構建一個稱為 Node.js v2 的東西,它將對 Node.js 作些改進,并且使其更加安全。

下面是 Ryan 當時演講的視頻(請自備梯子訪問):

vue與js,https://youtu.be/M3BM9TB-8yA

兩年后,這個項目的發布日期終于確定在 2020 年 5 月 13 日,也就是 Deno 1.0 正式發布的日子。Deno 是一個在服務端運行的、全新的 JavaScript 運行時,但是它是用 Rust,而不是用 C++編寫的。它基于 Tokio 平臺(它提供 JavaScript 所需的異步運行時),并且仍然運行谷歌的 V8 引擎。

除此以外,Deno 都有什么新特性?

Deno 將不再是一個與當前 Node.js 完全兼容的新的 JavaScript 運行時。相反,Ryan 利用這個機會將一些他認為在 Node.js 的早期創建中缺失的一些特性放入到了 Deno 中。

  • 集成的安全性

js執行效率。默認情況下,Node.js 允許你訪問所有內容。也就是說,你可以讀寫文件系統、發出請求、訪問環境變量等等。雖然作為一個開發人員,擁有這種訪問權限是一個好處,但如果在編寫自己的代碼時不小心,也會帶來安全風險。

而 Deno 則不同,它使用命令行參數來啟用或禁用對于一個訪問不同的安全特性。比如說,如果你需要對腳本啟用訪問/etc 文件夾的權限,你可以執行以下操作:

deno?--allow-read=/etc?myscript.ts

這樣一來,你的腳本代碼從可以從 /etc 文件夾中讀取任何內容,而其他的東西想要執行同樣的讀取操作將會遇到安全異常。這與其他平臺處理安全性的方式類似。如果你是一個安卓用戶,那么肯定有很多應用程序曾要求你允許它們訪問手機內部的不同系統(例如聯系人,電話,文件夾等),同樣的概念也可以在這里應用。通過在執行腳本的命令行中使用這些標志,可以提供代碼所需的權限。

  • 更完整的標準庫

js和php,自從 Node.js 的第一個版本以來,JavaScript 已經改進了它的標準庫,但是與其他語言相比,它還有相當長的路要走。Deno 試圖改進這一點,并聲稱擁有一個非常完整的標準庫,允許開發人員使用官方工具來執行基本任務,只是在執行復雜的任務時需要使用外部庫(ala NPM)。

從本質上講,Deno 提供了一些開箱即用的工具,例如,它可以為終端文本添加顏色、使用外部數據結構(例如二進制、csv、yaml 等)、生成 UUID 甚至編寫 WebSocket 等等。它還提供了其他更基本的模塊,如文件系統訪問、日期助手函數、HTTP 相關函數等等。

  • 集成的 TypeScript

你沒看錯,如果你是 TypeScript 的愛好者,那么 Deno 就可以滿足你的需要。不需要外部工具,默認情況下,將 TypeScript 代碼轉換為 JavaScript 是在內部完成的,因此你無需擔心。

.js文件。盡管默認情況下,Deno 會處理很多事情,但是你也可以使用自己的 tsconfig.json 文件覆蓋默認配置:

deno?run?-c?tsconfig.json?[your-script.ts]

默認配置使用嚴格模式,因此任何未經深思熟慮的編碼實踐都會立即得到警告。

  • 不再有 NPM 或 node_modules 文件夾

因為每個軟件都需要盡量兼容它的各個前代版本,所以這成了一個大問題。Node.js 的文件夾太臃腫了嗎?分發依賴關系的方式是錯誤嗎?這絕對是 Node.js 最具爭議的方面之一,而 Deno 決定徹底擺脫它。

djs?那么,Deno 如何處理依賴關系呢?在這個版本中,它的做法是:允許你從任何地方導入你所需要的模塊。換句話說,你可以簡單地執行以下操作:

import?*?as?log?from?"https://deno.land/std/log/mod.ts";

Deno 不再需要擁有自己的集中式存儲庫,但是在執行此操作時你必須謹慎,因為從無法控制的第三方來源導入模塊,可能會導致你處于公開狀態,并暴露于外部世界中。

實際上,我們的好朋友 package.json 文件也不再使用了,現在通過將模塊列表及其對應的 URL 放入一個名為 deps.ts 的文件中,簡化了依賴管理。而對于版本控制,你可以在 URL 上指定軟件包的版本,雖然它不是很優雅,但是使用起來很方便。

一個正常的 deps.ts 文件可能如下所示:

export?{?assert?}?from?"https://deno.land/std@v0.39.0/testing/asserts.ts";
export?{?green,?bold?}?from?"https://deno.land/std@v0.39.0/fmt/colors.ts";

Node.js?這將重新導出模塊,如果你想更改其版本,相應地簡單修改其對應的 URL 即可。

順便說一句,導入的代碼在第一次執行腳本時進行緩存,直到使用--reload 標志再次運行它為止。

  • 還有其他新特性嗎?

Deno 還包含其他功能,例如開箱即用的大型工具,包括測試運行程序、調試器、文件監視程序等。但是必須指提出,其中一些只是該語言提供的 API,你需要編寫自己的工具才能使用它們。

js,以 Deno.watchFs 提供給你的文件監視程序 API 為例,如果你正在尋找與 nodemon 類似的解決方案,那么你必須自己構建它。下面是一個解決類似問題的 23 行腳本,代碼如下:

用戶 Caesar2011 將上述腳本作為其代碼庫的一部分發布,你可以在這里找到完整的代碼。

Deno 會很快取代 Node.js 嗎?

不見得會。說實話,這個標題看起來有點像是騙取點擊的誘餌。我們中的一些人在 Node.js 發布版本 0.10 的時候就開始使用它了,并且是在生產環境中使用它!告訴你真相有點嚇人,但是我們這么做是因為當時周圍沒有類似的東西。PHP、Python 甚至 Ruby(更不用說 Java 或.NET)都無法與這樣一個在服務器端支持 JavaScript 和異步 I/O 模型的軟件相提并論。經歷了這么多年,Node.js(和 JavaScript)已經發展到可以滿足整個行業的要求。但是它完美嗎?當然不是!但是,就像生活中的任何其他事物一樣,任何編程語言都不是完美無缺的。

Deno 也沒有什么不同。現在發布的 Deno,只是對一個想法在過去大約兩年工作的總結。它還沒有被投放到生產環境中進行嘗試和測試。也尚未對它進行過審查,并將它放入各種奇怪的和異常的用例中,以了解其如何處理各種邊界情況。在這些工作完成之前,Deno 只是一個供早期采用者使用的玩具。也許一年后,我們會開始聽到一些公司分享他們的經驗,以及他們是如何解決新發現的問題的。最終,它的支持社區將對其進行調整,使其變得更加實用。那么,Deno 最終會取代 Node.js 嗎?沒有人知道答案!我們將對其拭目以待。

英文:What is Deno and will it Replace NodeJS?

鏈接:https://blog.bitsrc.io/what-is-deno-and-will-it-replace-nodejs-a13aa1734a74

作者簡介:Fernando Doglio,Globant 技術經理,多本技術書籍作者,包括《Scaling Your Node.js Apps》、《REST API Development with Node.js》、《Reactive Programming with Node.js》等,其中有《Python 性能分析與優化》經圖靈引進已在國內上架中文版。

翻譯:蘇本如,責編:唐小引

歡迎更多技術人微信搜索「donyintxy」(備注:姓名+公司+職位)向 CSDN 投稿。

更多精彩推薦
?華為 5G、阿里檢測病毒算法、騰訊 AI 一分鐘診斷,國內抗疫科技大閱兵!
?Get!讀懂數據科學和機器學習,看這文就夠了!
?天才程序員之隕落:在業余項目創業 Cloudflare,公司上市前患病失去自理能力
?Go遠超Python,機器學習人才極度稀缺,全球16,655位程序員告訴你這些真相
?對不起,我把APP也給爬了
?超級賬本Hyperledger Fabric中的Protobuf到底是什么?
你點的每個“在看”,我都認真當成了喜歡

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/2/161722.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息