目錄
1、簡介
2、Deno 的特點(diǎn)
3、Deno 和 Node 的區(qū)別
4、TypeScript開箱即用
5、內(nèi)置的基本開發(fā)工具
獨(dú)立可執(zhí)行文件
測(cè)試運(yùn)行器
代碼格式化程序
代碼linter
?6、專為云而建
7、從瀏覽器到后端的一致代碼
TC39
WinterCG
8、高性能聯(lián)網(wǎng)
9、數(shù)百萬個(gè)社區(qū)模塊
10、相關(guān)框架
1、簡介
Deno是為執(zhí)行JavaScript和TypeScript而設(shè)計(jì)的安全運(yùn)行時(shí)。這個(gè)創(chuàng)新的運(yùn)行時(shí)出現(xiàn)在Node. js首次發(fā)布近9年后,Node.js是一個(gè)非常受歡迎的JavaScript運(yùn)行時(shí)。Node.js作為JavaScript運(yùn)行時(shí),使開發(fā)人員能夠在服務(wù)器端使用JavaScript,這是其廣泛采用的關(guān)鍵因子。JavaScript是一種歷史悠久的編程語言,是全球使用最廣泛的語言。
2、Deno 的特點(diǎn)
- 默認(rèn)是安全的
- 對(duì)TypeScript和JSX的原生支持
- 開箱即用的測(cè)試、linting、格式化等功能
- 使用Rust和Tokio的高性能異步I/O
- 包括一組經(jīng)過審查的標(biāo)準(zhǔn)模塊,保證與Deno一起工作。
- 僅發(fā)布單個(gè)可執(zhí)行文件。
- 向后兼容Node.js和npm
目前Deno項(xiàng)目已超過90k的star數(shù),有250k+活躍開發(fā)者。
3、Deno 和 Node 的區(qū)別
從它們各自的特點(diǎn)來進(jìn)行對(duì)比。
Deno | Node |
數(shù)百萬個(gè)社區(qū)模塊 | 數(shù)百萬個(gè)社區(qū)模塊 |
基于V8 JavaScript引擎構(gòu)建 | 基于V8 JavaScript引擎構(gòu)建 |
默認(rèn)運(yùn)行時(shí)安全性 | 無粒度運(yùn)行時(shí)安全性 |
內(nèi)置TypeScript、JSX、formatter、linter和測(cè)試 | 依賴項(xiàng)和配置文件 |
易于嵌入Rust和Tokio | 用C++實(shí)現(xiàn)更復(fù)雜的嵌入過程 |
使用Web標(biāo)準(zhǔn)API構(gòu)建 | API覆蓋范圍不完整 |
綜合標(biāo)準(zhǔn)庫 | 有限標(biāo)準(zhǔn)庫 |
命令操作的差異:
Node.js | Deno |
---|---|
node file.js |
deno run file.js |
ts-node file.ts |
deno run file.ts |
node -e |
deno eval |
npm i -g |
deno install |
npm i ?/?npm install
|
n/a |
npm run |
deno task |
eslint |
deno lint |
prettier |
deno fmt |
package.json |
deno.json ?/?deno.jsonc ?/?import_map.json
|
tsc |
deno check ?2 |
typedoc |
deno doc |
jest ?/?ava ?/?mocha ?/?tap ?/ etc |
deno test |
nodemon |
deno run/lint/test --watch |
nexe ?/?pkg
|
deno compile |
npm explain |
deno info |
nvm ?/?n ?/?fnm
|
deno upgrade |
tsserver |
deno lsp |
nyc ?/?c8 ?/?istanbul
|
deno coverage |
benchmarks | deno bench |
4、TypeScript開箱即用
Deno原生支持TypeScript和JSX等現(xiàn)代JavaScript擴(kuò)展,無需構(gòu)建步驟或額外配置。
- 原生TypeScript支持,零配置
- 使用最前沿的JavaScript功能
- Visual Studio Code中的智能感知和自動(dòng)完成功能
- 以TypeScript源代碼的形式發(fā)布和分發(fā)模塊
5、內(nèi)置的基本開發(fā)工具
獨(dú)立可執(zhí)行文件
立即從您的Deno程序創(chuàng)建獨(dú)立的可執(zhí)行文件。它甚至支持其他平臺(tái)的交叉編譯!
1、創(chuàng)建一個(gè)文件?server.ts,內(nèi)容如下所示:
Deno.serve(()=> new Response("hello world !!!"))
2、開始進(jìn)行編譯,如下所示:
deno compile --allow-net server.ts
會(huì)在當(dāng)前目前生成一個(gè)可執(zhí)行文件,如下所示:
?啟動(dòng)服務(wù)
- 雙擊點(diǎn)擊server.exe文件,如下所示
- 或者執(zhí)行以下命令:
./server.exe
開始監(jiān)聽8000端口,在瀏覽器打開http://localhost:8000/,如下所示
測(cè)試運(yùn)行器
Deno提供了一個(gè)測(cè)試運(yùn)行器和斷言庫作為運(yùn)行時(shí)和標(biāo)準(zhǔn)庫的一部分。
// url_test.ts
import { assertEquals } from "https://deno.land/std@0.202.0/assert/mod.ts";
Deno.test("url test", () => {
const url = new URL("./foo.js", "https://deno.land/");
assertEquals(url.href, "https://deno.land/foo.js");
});
deno test url_test.ts
運(yùn)行以上命令,因?yàn)橐氲奈募沁h(yuǎn)程文件,所以先進(jìn)行下載到本地,并進(jìn)行緩存。
我們查看以下對(duì)應(yīng)的路徑。運(yùn)行如下命令:
deno info
可以查看下載的文件,轉(zhuǎn)換成了對(duì)應(yīng)的js文件,如下所示:
?可以打開對(duì)應(yīng)的js文件,最下面有對(duì)應(yīng)的映射路徑,
瀏覽器打開有映射的url地址,如下所示:
代碼格式化程序
Deno附帶了一個(gè)內(nèi)置的代碼格式化程序,可以自動(dòng)格式化以下文件:
文件類型 | 擴(kuò)展 |
---|---|
JavaScript | .js |
TypeScript | .ts |
JSX | .jsx |
TSX | .tsx |
Markdown |
.md ,?.markdown
|
JSON | .json |
JSONC | .jsonc |
代碼linter
Deno附帶內(nèi)置代碼linter,可幫助您避免錯(cuò)誤和壞代碼。
deno lint --watch
?6、專為云而建
無論您是使用我們閃電般的Deno Deploy部署,還是在其他云提供商上部署,Deno都能簡化您的體驗(yàn)。它不僅僅是一個(gè)運(yùn)行時(shí);它是為云時(shí)代重新設(shè)計(jì)的JavaScript,提供了傳統(tǒng)容器的無縫替代品。
Deno Deploy部署將最簡單的方式來托管您的Deno項(xiàng)目。主要有以下特點(diǎn):
-
全球分布式
-
在幾秒鐘內(nèi)部署
-
內(nèi)置鍵/值數(shù)據(jù)庫
-
集成GitHub for CI/CD
-
運(yùn)行靜態(tài)站點(diǎn)、應(yīng)用程序和邊緣函數(shù)
7、從瀏覽器到后端的一致代碼
?Deno盡可能提供Web標(biāo)準(zhǔn)API,最大限度地提高瀏覽器和服務(wù)器之間的代碼重用率,并確保代碼的未來性。 Deno積極參與TC39和WinterCG,以幫助推動(dòng)網(wǎng)絡(luò)向前發(fā)展。我們致力于在開放的環(huán)境中合作構(gòu)建JavaScript的未來。 ?
TC39
TC39是一個(gè)由JavaScript開發(fā)人員、實(shí)現(xiàn)人員、學(xué)者等組成的團(tuán)隊(duì),他們與社區(qū)合作維護(hù)和發(fā)展JavaScript的定義。
WinterCG
這個(gè)社區(qū)組旨在為JavaScript運(yùn)行時(shí)提供一個(gè)空間,以便在API互操作性方面進(jìn)行協(xié)作。我們專注于記錄和改進(jìn)Web平臺(tái)API跨運(yùn)行時(shí)(特別是非瀏覽器)的互操作性。這是通過運(yùn)行時(shí)之間的討論,規(guī)范場(chǎng)所(WHATWG,W3C)中對(duì)新Web API和當(dāng)前Web API的更改的建議以及現(xiàn)有運(yùn)行時(shí)行為的文檔來完成的。
8、高性能聯(lián)網(wǎng)
開箱即用支持:
- HTTPS(加密)
- WebSockets
- HTTP2
- 自動(dòng)響應(yīng)體壓縮

Deno 1.36.1和Node 18.12.1中的“hello world”Web服務(wù)器的每秒請(qǐng)求量在Linux 8核Intel Xeon E-2378 G機(jī)器上使用wrk測(cè)量。
9、數(shù)百萬個(gè)社區(qū)模塊
Deno向后兼容Node.js內(nèi)置API和npm上的200多萬個(gè)模塊。將Node.js生態(tài)系統(tǒng)的精華帶到Deno。
10、相關(guān)框架
Fresh是一個(gè)現(xiàn)代的Web框架,為邊緣服務(wù)器上的Deno運(yùn)行時(shí)從頭設(shè)計(jì)。文章來源:http://www.zghlxwxcb.cn/news/detail-715444.html
- 專為快速、可靠和簡單而設(shè)計(jì)
- 實(shí)時(shí)渲染
- 基于島的客戶端水化 實(shí)現(xiàn)最大的交互性
- 零運(yùn)行時(shí)開銷 - 默認(rèn)情況下不向客戶端發(fā)送JavaScript
SaaSKit模板應(yīng)用建立在Fresh之上,包括身份驗(yàn)證、計(jì)費(fèi)等。文章來源地址http://www.zghlxwxcb.cn/news/detail-715444.html
- ?使用oAuth 2.0進(jìn)行用戶身份驗(yàn)證
- 通過Stripe執(zhí)行的經(jīng)常性付款
- 預(yù)先構(gòu)建的會(huì)話和授權(quán)
- 使用Deno KV實(shí)現(xiàn)快速、輕量級(jí)的持久性
到了這里,關(guān)于Deno 下一代JavaScript運(yùn)行時(shí)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!