前不久, deno1.0 正式發佈,相信大家應該都已經聽過它了.畢竟deno的作者正是大名鼎鼎的nodeJS之父Ryan Dahl.他在之前聲稱node已經無力迴天了,所以他決定新寫一個deno.意爲destroy node.通俗的說就是一個號練廢了,現在要重新練一個號.
deno怎麼發音,有說蒂諾
的,有說德諾
的.爲此,我特意去YouTube上聽了下deno作者的發音,鏈接戳我,但我怎麼感覺聽着更像是呆諾
呢? 各位同學可以自行愛好發音.
deno特性
Deno是使用V8引擎並內置於Rust的一個簡單現代並且安全的JavaScript和TypeScript運行時(Tips: 原先是用golang開發的,後來因爲性能問題改用Rust)
這裏簡單的列了一下其中的一些特性:
- 默認爲安全,除非明確啓用,否則沒有文件,網絡或環境訪問權限
- 開箱即用的支持TypeScript
- 僅發送一個可執行文件
- 具有內置的實用程序,如依賴檢查器和代碼格式化(fmt)
- 擁有一組保證能夠與deno一起使用的經過審覈的標準模塊:鏈接戳我
安裝
因爲我自己是macOS系統,所以國際慣例使用homebrew來安裝
brew install deno
window系統的安裝方式
choco install deno
還有其他的安裝方式,可以自行查看: 如何安裝
測試安裝
deno --version
如果打印了deno的版本號則證明已經安裝成功了
我這邊是打印出了deno, v8引擎以及ts的版本號
更新deno
deno upgrade
如果想要更新到某一個特定的版本,那就
deno upgrade --version 1.0.1
但是這個更新的速度實在是太…
所以,有時候還是選擇手動下包吧,自己動手,豐衣足食 鏈接戳我.將下載下來的包解壓縮後,替換原來的可執行文件即可.
這裏可以看到我的deno版本已經更新了.
查看命令行
deno --help
基本上的環境都有 --help
的指令,方便我們查看相關的指令.這裏我們也是照例來簡單瞧一瞧都有哪些信息.
在輸出結果中,我們可以看到除了常用命令外,它還告訴了我們該如何執行一個腳本
運行遠程文件
接下來讓我們來運行下help
信息中展示給我們看的代碼:
deno run https://deno.land/std/examples/welcome.ts
可以看到當我第一次運行代碼的時候,它是先下載,然後再編譯.
此時我們再次運行下代碼,發現就只是直接編譯了.
這是因爲通過外部地址引入的文件或庫,在第一次下載後都會緩存在本地,所以第二次就不下載,而是直接編譯了.
我們可以看到在終端輸出了 Welcome to Deno 🦕
這句話.我們打開上面的網址可以看到它上面的代碼就只有一行
這個可愛的圖標就是一隻小恐龍,因爲deno的標誌就是一隻恐龍呀
運行本地文件
我們新建一個index.ts
文件
console.log('hello deno');
運行下該文件deno run index.ts
終端輸出了hello deno
,證明我們的本地文件也已經運行起來了
權限
文件權限
我們修改代碼
console.log(Deno.cwd());
再次執行文件,會報錯
Uncaught PermissionDenied: read access to "/Users/xxx/code/deno/deno_test", run again with the --allow-read flag
這是因爲deno的安全策略(即上面的特性1
),默認是沒有文件,網絡或環境訪問權限的,除非我們明確啓用.於是我們加上--allow-read
參數,再次執行deno run --allow-read index.ts
可以看到我們的文件路徑已經打印出來了.
網絡權限
fetch('https://jsonplaceholder.typicode.com/todos/1')
.then(response => response.json())
.then(json => console.log(json))
執行運行命令deno run index.ts
,報錯
error: Uncaught PermissionDenied: network access to "https://jsonplaceholder.typicode.com/todos/1", run again with the --allow-net flag
重新執行命令deno run --allow-net index.ts
, 可以看到輸出結果了
{ userId: 1, id: 1, title: "delectus aut autem", completed: false }
編輯器插件
前面我們提到了引用外部庫的時候,第一次是會下載的,那麼我們下載下來的文件在什麼地方呢?這裏我使用的編輯器是VSCode
,我們可以安裝一個插件Deno
.
安裝好以後,我們只要將鼠標放到引入的url上,它就會顯示這個文件在我們本地的位置.
內置工具
可以對照特性4
,我們先來看原代碼
執行命令後:
deno fmt index.ts
可以看到代碼中開頭的空格已經沒了
引入標準庫
我們執行上圖中的代碼,輸出如下:
這也印證了特性5
,deno擁有一些標準庫.
當然除了官方的標準庫以外,還有第三方庫,可以在這裏看到鏈接戳我
總結: deno簡單的入門差不多就到這裏了,對deno已經有了一個大致的概念.我估計大部分的人可能在未來的幾年裏面,工作中都用不到這個.寶寶心裏苦啊😭,node還沒學會,現在就要毀滅node了.