Node之父ry釋出新專案deno:下一代Node
> 近日,Node 之父 Ryan Dahl 釋出新的開源專案 deno,從官方介紹來看,可以認為它是下一代 Node,使用 Go 語言代替 C++ 重新編寫跨平臺底層核心驅動,上層仍然使用 V8 引擎,最終提供一個安全的 TypeScript 執行時。
它的特性包括:
- 支援 TypeScript 2.8 開箱即用;
- 無 package.json,無 npm,不追求相容 Node;
- 通過 URL 方式引入依賴而非通過本地模組,並在第一次執行的時候進行載入和快取,並僅在程式碼使用--reload 執行,依賴才會更新,引入方式如:
import { test } from "https://unpkg.com/deno_testing@0.0.5/testing.ts"
import { log } from "./util.ts"
- 可以控制檔案系統和網路訪問許可權以執行沙盒程式碼,預設訪問只讀檔案系統可訪問,無網路許可權。V8 和 Golang 之間的訪問只能通過 protobuf 中定義的序列化訊息完成;
- 發生未捕捉錯誤時自動終止執行;
- 支援 top-level 的 await;
- 最終建立單一可執行檔案;
- 目標是相容瀏覽器;
- 可以作為庫引入,用於建立自己的 JavaScript runtime。
這幾個特性,有好幾個都是針對目前 Node 的痛點而來的,包括無 package.json、依賴的引入和更新方式,針對的就是被廣泛吐槽的過大的 node_modules。
同時,不追求相容 node,可以視為 ry 想徹底拋棄 node 包袱,打造一個更好的 JS 執行時。
作者在 GitHub Issue 回覆開發者的幾個問題:
> deno 和 Node 的區別是什麼?
ry 開玩笑稱,目前兩者最大的區別是 Node 大行其道,而 Deno 尚未投入使用。
從更高層面上來說,Deno 儘可能簡化 V8 與系統 API 的耦合,並打造更加簡單、穩定的模組系統,以及一個安全的沙箱執行環境。
再者,使用 Golang 而不是 C++ 作為底層語言,這樣,新增高階功能時會比在 Node 中更加容易,比如在 Go 中新增 http2.0 支援,只需新增一些路由 API 和一些配置到 protobuf 中。
Deno 誕生的目的,是為了建立更簡單和安全的非瀏覽器 runtime,它在這個時候出現,是因為現在的開發工具比 2009 年更好。
我們還可以認為 Deno 將是目前 Node 生態一些難解問題的終極答案,比如依賴管理、安全性、穩定性、橫向擴充套件等等。
Deno 的誕生,將啟發更多人投入到下一代 Node 的探索當中,這比之前 Node 的一些分叉更具備創新和革命性。
目前 Deno 正在緊張開發當中,我們也將持續關注它的進展。
Deno Github 地址: https://github.com/ry/deno
- 加微信實戰群請加微信(註明:實戰群):gocnio
相關文章
- Node 之父重構的 Deno 正式釋出了,它會取代 Node 嗎?
- Node之父重構的Deno終於釋出了,它終究會取代Node嗎?
- Deno 並不是下一代 Node.jsNode.js
- Deno並不是下一代Node.jsNode.js
- 從Node到Deno - DEVdev
- Deno 正式釋出,徹底弄明白和 node 的區別
- 使用 node.js 釋出部署 vue 專案Node.jsVue
- 多專案Node版本控制
- 採訪 Node.js 之父 Ryan DahlNode.js
- Deno 2021 回顧:優化 Deno 核心、相容 Node.js、Deno 2 路線圖將至優化Node.js
- Docker搭建部署Node專案Docker
- 鎖定專案的 node 版本
- Node.js 之父 Ryan 推薦大家使用 Go 語言,而不是 Node.jsNode.jsGo
- Jenkins打包node專案步驟Jenkins
- Node專案之評分系統
- Node專案之需求收集平臺
- 如何快速部署Node.js專案Node.js
- TypeScript在node專案中的實踐TypeScript
- node專案從0到1實戰
- 使用Node.js執行Cesium專案Node.js
- node-koa搭建MVC/RESTful API專案MVCRESTAPI
- Deno 執行時入門教程:Node.js 的替代品Node.js
- deno 如何償還 node.js 的十大技術債Node.js
- Deno 如何償還 Node.js 的十大技術債?Node.js
- 如何構建「大型 Node.js 專案」的專案結構?Node.js
- Node.js專案拆包工程化Node.js
- 如何在 Node.js 專案中使用 MQTTNode.jsMQQT
- node專案的鑑權和密碼管理密碼
- node專案錯誤處理與日誌
- Node.js專案的DevSecOps流程Node.jsdev
- 記一次Node專案的優化優化
- 安裝node及vue專案的啟動Vue
- vue3 vite node18 專案搭建VueVite
- Node.js 9.0.0 釋出Node.js
- node koa原始碼解釋原始碼
- 釋出node模組到npmNPM
- Node API經驗與種子專案分享 (一)專案綜述API
- node fs檔案操作