自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Deno 能吞掉 Node.js 嗎?

開發(fā) 開發(fā)工具
最近,Node.js的原作者Ryan Dahl發(fā)布了Deno1.0 , 有網(wǎng)友創(chuàng)建了上述漫畫,似乎Deno要吞噬整個Node.js社區(qū)了。

最近,Node.js的原作者Ryan Dahl發(fā)布了Deno1.0 , 有網(wǎng)友創(chuàng)建了上述漫畫,似乎Deno要吞噬整個Node.js社區(qū)了。

Deno是什么? 簡單來說,它一個支持JavaScript和TypeScript的安全平臺,有點像Node.js。

有了Node.js,可以讓JavaScript運行在服務(wù)器端,為什么還要搞一個Deno?

其實就兩個字:不爽!

Deno的作者,同時也是Node.js的作者Ryan Dahl想要一個有趣的、生產(chǎn)力強大的腳本語言平臺,但是現(xiàn)在的技術(shù)平臺滿足不了他。

他看Python不爽,Ruby不爽, 甚至自己寫的Node.js都看著不爽 !他還專門講過“Node.js設(shè)計的十大失誤”, 總是讓我想起努爾哈赤起兵s時寫的《七大恨》,不同的是努爾哈赤反的是明朝,而Ryan Dahl反的是自己。

他覺得Node.js有這么幾個大的槽點:

1. Node module設(shè)計得很爛,還是集中式的

2. 需要支持很多遺留的API

3. 安全問題

既然如此,那就另起爐灶,再搞一個吧,把這些缺陷給修正了。

Deno 有什么重要特點呢?

1. 安全控制

你寫的或者從別的地方導(dǎo)入的js/ts代碼,默認(rèn)不能直接訪問硬盤/網(wǎng)絡(luò)等資源了,需要在運行的時候給腳本授權(quán)。

比如下面整個命令就是授權(quán)app.ts可以訪問環(huán)境變量,可以訪問網(wǎng)絡(luò),可以讀取/temp目錄。

 

熟悉Java的同學(xué)立刻就會想到Java 的沙箱(Sand Box),程序是運行在沙箱中被控制的, 為什么要這么做呢?一個重要的原因是有很多第三方的代碼庫是從網(wǎng)絡(luò)下載的,這些代碼可能存在惡意破壞本地環(huán)境,偷取本地敏感信息的問題, 可見Deno把安全確實放到了比較重要的位置。

有趣的是Java 默認(rèn)是開啟訪問權(quán)限,想限制的話需要提供策略文件, 而Deno默認(rèn)是關(guān)閉訪問權(quán)限, 更狠!

但我有一個感覺,這個功能并不是那么的重要和急迫,大家想一下,你定制過Java的安全策略嗎?大部分時間都是默認(rèn)配置的吧?現(xiàn)在有了Docker這樣的容器來實現(xiàn)隔離,在應(yīng)用層面再來授權(quán),意義有多大呢?

2. 終于有標(biāo)準(zhǔn)庫了!

用慣Java同學(xué)可能沒啥感覺,因為一直在用JDK中的各種內(nèi)置的class。

但是JavaScript一直沒有標(biāo)準(zhǔn)庫,很多功能靠第三方代碼,會給人造成選擇困難癥。

現(xiàn)在Deno終于提供了一個標(biāo)準(zhǔn)庫,涵蓋了datetime, encoding,hash, http,log,testing等等,這將會極大地方便程序員。

不過,我瀏覽了一下標(biāo)準(zhǔn)庫代碼:https://deno.land/std, 都是用TypeScript編寫的。

3. 支持開箱即用的TypeScript

TypeScript是JavaScript的超集,支持靜態(tài)類型,現(xiàn)在已經(jīng)很流行了。

Deno對TypeScript支持得非常好, 你可以用TypeScript來寫程序,然后直接Deno run xxx.ts,Deno在內(nèi)部會編譯成JavaScript運行。

靜態(tài)類型還是香啊!可以想象,用了TypeScript的助陣。Deno可以支持大型的、有著復(fù)雜業(yè)務(wù)邏輯的應(yīng)用程序開發(fā),以后再也無人可以嘲笑“動態(tài)一時爽,重構(gòu)火葬場”了。

對于Java程序員來說, 建議關(guān)注一下TypeScript。

4. 干掉了集中化的代碼倉庫

Deno的包管理方式有了天翻地覆的變化, 拋棄了集中式的代碼倉庫, 代碼從Web端直接導(dǎo)入:

 

這是直接從Web上導(dǎo)入ECMAScript模塊, 看起來倒是挺清爽的。當(dāng)然導(dǎo)入的模塊會緩存到本地,下次可以直接訪問。

可是分布式的包管理真的有那么好嗎?想想在代碼中的那些從各個網(wǎng)站import語句,我是覺得有點兒不爽,Python有pip, Ruby有g(shù)em , Java 有maven,它們的背后都是集中式的倉庫,用起來挺香啊。

現(xiàn)在Deno提供了一個非常初級的搜索第三方的庫的頁面:https://deno.land/x , 我認(rèn)為以后必然會出現(xiàn)第三方庫的托管網(wǎng)站,大家還是從同一個地方去搜索,下載軟件包。

5. 內(nèi)置了很多工具

JavaScript生態(tài)亂七八糟的工具太多,最好是能大一統(tǒng)。

Deno順應(yīng)了這個趨勢, 提供了諸如打包、格式清理、測試、安裝、文檔生成、linting、腳本編譯等一攬子解決方案,內(nèi)置可用,不用到處安裝下載, 這一點兒必須點贊。

小結(jié)

不得不佩服Ryan Dahl, 打造一個Node.js已經(jīng)足夠“吹噓”一輩子了,可是他還能革自己的命,推出Deno這么一個新平臺,為興趣工作,不斷創(chuàng)新,讓人贊嘆。

Deno非常激進,直接采用了ECMAScript模塊,拋棄了Node Module,這也讓它和現(xiàn)有的JavaScript生態(tài)系統(tǒng)不兼容。

說Deno替代Node.js還為時過早,畢竟這才是一個剛剛1.0的版本,和一個發(fā)展了10多年的平臺難以直接相提并論。Deno還沒有經(jīng)受生產(chǎn)環(huán)境的考驗,對于一些特殊的案例表現(xiàn)如何我們還不知道。

也許過一段時間,會有“先行者”公司分享它們的使用經(jīng)驗,解決Deno的坑,那個時候Deno才會變成一個真正有用的平臺,讓我們拭目以待吧。

【本文為51CTO專欄作者“劉欣”的原創(chuàng)稿件,轉(zhuǎn)載請通過作者微信公眾號coderising獲取授權(quán)】

 

戳這里,看該作者更多好文

 

責(zé)任編輯:武曉燕 來源: 51CTO專欄
相關(guān)推薦

2022-03-04 07:37:16

DenoNode.js項目

2020-10-29 18:36:02

DenoNode.jsJavascript

2022-08-24 08:00:00

Node.isJavaScriptDeno

2021-03-31 10:18:07

Node.jsDeno公司開發(fā)

2018-06-06 09:54:00

javascriptnode.jstypescript

2022-05-11 09:23:08

CloudflareNode.jsJavaScript

2023-09-26 15:22:02

2013-11-01 09:34:56

Node.js技術(shù)

2015-03-10 10:59:18

Node.js開發(fā)指南基礎(chǔ)介紹

2023-09-27 16:52:13

2011-11-01 10:30:36

Node.js

2011-09-02 14:47:48

Node

2011-09-09 14:23:13

Node.js

2011-09-08 13:46:14

node.js

2019-07-23 10:20:23

前端Node.js中間層

2012-10-24 14:56:30

IBMdw

2011-11-10 08:55:00

Node.js

2021-12-25 22:29:57

Node.js 微任務(wù)處理事件循環(huán)

2020-05-29 15:33:28

Node.js框架JavaScript

2012-02-03 09:25:39

Node.js
點贊
收藏

51CTO技術(shù)棧公眾號