誕生的原因
node.js 的作者 Ryan Dahl(ry)推正,因為感覺node.js存在設(shè)計上的嚴重缺陷,而node.js 的大量用戶使得node.js 如果要經(jīng)過大的修改變得非常的困難嘱支,所以ry 選擇離開node.js 開發(fā) deno.
發(fā)布時間
2009年5月袁滥,node.js 發(fā)布驱富。11年后, 2020 年5月13號 Deno發(fā)布了1.0版本凿试,1.0版本的正式發(fā)布引起了IT界很大的關(guān)注排宰。
-
迄今node.js 在github上的star:
image.png -
Deno在github的star:
image.png
可以看到deno是在迅猛的發(fā)展,雖然說一個新的東西要完全超越或者覆蓋一個舊的東西需要一個很長時間的過渡那婉,或者不大的可能性板甘。
但是筆者對于Deno的流行,抱有必然的信心详炬。
將來Deno和nodejs一定會像Vue和React在前端領(lǐng)域一樣盐类, 在js語言的后端界并駕齊驅(qū)。
安裝
- Windows安裝使用PowerShell:
iwr https://deno.land/x/install/install.ps1 -useb | iex
- mac安裝:
$ curl -fsSL https://deno.land/x/install/install.sh | sh
- 使用choco安裝:
choco install deno
- 查看deno的版本
$ deno --version
安裝Deno的 VSCode插件
因為Deno的基于ES的標準的模塊系統(tǒng)呛谜,使用import url的導入模塊的形式在跳,以及Deno全局對象并未被VSCode支持,所以需要借助插件 [Deprecated] Deno隐岛,進行支持猫妙,并且將settings 中將 deno.enabled 設(shè)置為 true。
這里有可能查詢deno的環(huán)境變量不存在聚凹,所以需要配置deno的環(huán)境變量割坠。
-
安裝前:
image.png -
安裝后:
image.png
Helloworld
- 新建js文件或者ts文件都可以:
console.log('hello world');
運行:
deno run hellowWorld.ts # hello world
Deno的特點
- 內(nèi)置就支持TypeScript,這一點比node.js 只支持js如果要寫TS就需要使用轉(zhuǎn)譯的方式妒牙。
- 基于ES的標準的模塊系統(tǒng)韭脊。
- 簡化的安裝方式。
- 既是運行時又是包管理器单旁。
- 安全性能大大提升沪羔。
Deno 內(nèi)置API使用
const dir = Deno.readDirSync(Deno.cwd());
for (const file of dir) {
console.log(file);
};
運行:
$ deno run --allow-read dir.ts
Deno 默認支持TS
// index.ts
let num:number = 123;
num = 'deno';
運行:
deno run index.ts
結(jié)果: 這個時候會出現(xiàn)類似以下提示錯誤
Type 'deno' is not assignable to type 'number'.
Deno運行權(quán)限設(shè)置
Deno默認是沒有 網(wǎng)絡(luò)、文件讀象浑、文件寫蔫饰、環(huán)境變量讀取等權(quán)限,所以如果要運行時使用可以 添加上如下:
-A, --allow-all 允許所有的權(quán)限愉豺。
--allow-env 允許環(huán)境獲取和設(shè)置環(huán)境的權(quán)限篓吁。
--allow-hrtime 允許高精度的定時器。
--allow-net 允許訪問網(wǎng)絡(luò)的權(quán)限蚪拦。
--allow-plugin 允許加載插件權(quán)限杖剪。
--allow-read 允許讀文件的權(quán)限冻押。
--allow-write 允許寫文件的權(quán)限。
--allow-run 允許運行子進程盛嘿,注意子進程并沒有與deno進程相同的安全性洛巢,請謹慎使用。
參考文檔
因為只是初次嘗試次兆,所以暫時只寫到這里稿茉,之后會有更加深入的研究,或者系統(tǒng)的歸納芥炭,期待deno有更好的發(fā)展漓库。