deno.js新特性

這是我第22篇簡書。

Deno是使用V8并內(nèi)置于RustJavaScriptTypeScript的簡單、現(xiàn)代且安全的運行時。

  1. 默認為安全。除非明確啟用,否則沒有文件,網(wǎng)絡或環(huán)境訪問權限。
  2. 開箱即用地支持TypeScript。
  3. 僅發(fā)送一個可執(zhí)行文件。
  4. 具有內(nèi)置的實用程序,例如依賴項檢查器(deno info)和代碼格式化程序(deno fmt)
  5. 擁有一組保證能與Deno一起使用的經(jīng)過審查(審核)的標準模塊

創(chuàng)建Demo的原因

Deno是 Ryan Dahl 在2017年創(chuàng)立的。這位大佬同時也是 Node.js的創(chuàng)始人,從2007年一直到2012年,之后他把Node.js 移交給了其他開發(fā)者,就跑去搞研究人工智能了。但是相傳他不是很喜歡 Python,所以時間久了就想搞一個 JavaScript的人工智能開發(fā)框架。等到他再回過頭撿起 Node.js,發(fā)現(xiàn)這個項目已經(jīng)背離了他的初衷,有一些無法忽視的問題。

1、ES6標準引入了大量新的語法特性。其中,影響最大的語法有兩個:Promise接口(以及async函數(shù))和 ES模塊。Node.js 對這兩個新語法的支持,都不理想。由于歷史原因,Node.js必須支持回調(diào)函數(shù)(callback),導致異步接口會有 Promise和回調(diào)函數(shù)兩種寫法;同時,Node.js 自己的模塊格式 CommonJS與 ES模塊不兼容,導致遲遲無法完全支持 ES模塊。

2、npm問題。Node.js的功能也不完整,導致外部工具層出不窮,初始化一個項目先來一噸依賴:webpack、babel、typescript、eslintprettier......

由于上面這些原因,大佬決定放棄 Node.js,從頭寫一個替代品,徹底解決這些問題。deno這個名字就是來自 Node的字母重新組合,表示"拆除Node.js"(de = destroy, no = Node.js)。

deno.js新特性

1、原生支持ts、js和webassembly
2、原生支持es6 module import,通過url和文件import。? 所有模塊通過 URL 加載,比如import { bar } from "https://foo.com/bar.ts"(絕對 URL)或import { bar } from './foo/bar.ts'(相對 URL)。因此,Deno不需要一個中心化的模塊儲存系統(tǒng),可以從任何地方加載模塊。
3、去中心化,沒有npm,node_modules 和package.json。只支持 ES 模塊,跟瀏覽器的模塊加載規(guī)則一致,沒有require()命令(即不支持 CommonJS模塊)。
4、原生支持promise
5、安全機制:默認為安全。除非明確啟用,否則沒有文件,網(wǎng)絡或環(huán)境訪問權限。
6、不兼容node ;兼容瀏覽器
7、常見工具內(nèi)置

  • deno bundle替代babel webpack
  • deno fmt 替代prettier
  • deno test 期待jest
  • deno lint 替代eslint等

安裝

DenoNode.js不同的是Deno只有一個可執(zhí)行文件,所有操作都通過這個文件完成,同時也是跨平臺的。所以可以直接在GitHub release上下載對系統(tǒng)的二進制文件或利用官方提供的腳本進行下載安裝:
使用 PowerShell:

iwr https://deno.land/x/install/install.ps1 -useb | iex
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容