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

Javascript開(kāi)發(fā)人員偏愛(ài)Deno而不是Node的5大原因

開(kāi)發(fā) 前端
NodeJS的作者Ryan Dahl發(fā)布了一個(gè)新的運(yùn)行時(shí),旨在解決Node的許多缺點(diǎn)。你最初的反應(yīng)可能是“哦,太棒了,另一個(gè)Javascript框架?正是我所需要的...”。別擔(dān)心,我也有同樣的反應(yīng)。在了解了優(yōu)勢(shì)之后,我也看到了為什么Deno正是2020年后端Javascript開(kāi)發(fā)人員所需要的。

 NodeJS的作者Ryan Dahl發(fā)布了一個(gè)新的運(yùn)行時(shí),旨在解決Node的許多缺點(diǎn)。你最初的反應(yīng)可能是“哦,太棒了,另一個(gè)Javascript框架?正是我所需要的...”。別擔(dān)心,我也有同樣的反應(yīng)。在了解了優(yōu)勢(shì)之后,我也看到了為什么Deno正是2020年后端Javascript開(kāi)發(fā)人員所需要的。讓我們來(lái)看看javascript開(kāi)發(fā)人員使用Deno vs. Node獲得更流暢,更現(xiàn)代的體驗(yàn)的5大原因。

[[330086]]

1.現(xiàn)代Javascript——ES Modules

 

如果你是像我這樣的React開(kāi)發(fā)人員,你會(huì)注意到使用NodeJS導(dǎo)入軟件包的語(yǔ)法是不同的。這是因?yàn)镹ode于2009年問(wèn)世,此后對(duì)Javascript進(jìn)行了大量更新和改進(jìn)。

在React(和Deno)中,我們使用 import package from 'package' 語(yǔ)法導(dǎo)入包,而在Node中,我們使用const package = require("package") 語(yǔ)法。

ES Modules導(dǎo)入的優(yōu)勢(shì)在于兩個(gè)原因:

  1. 使用 import,可以有選擇地只從包中加載需要的部分,這節(jié)省了內(nèi)存。
  2. 加載與 require 同步,而 import 則異步加載模塊,從而提高了性能。

如果你在上圖中注意到,我們正在從URL導(dǎo)入moment包,這將帶給我們Deno的下一個(gè)優(yōu)勢(shì)。

2.去中心化的包

使用Deno,不再依賴(lài)NPM。是的,不再需要 package.json,每個(gè)包都是從URL加載的。

在NodeJS中,要使用軟件包,必須首先從NPM安裝它:

 

  1. npm i moment 

等待它安裝,然后將其包含在你的應(yīng)用程序中:

 

  1. const moment = require("moment"

另外,任何時(shí)候有人要在本地運(yùn)行你的NodeJS倉(cāng)庫(kù)時(shí),都必須從NPM安裝所有依賴(lài)項(xiàng)。

在Deno中,該包是從URL導(dǎo)入的,因此,如果要使用moment,只需導(dǎo)入https://deno.land/x/moment/moment.ts。

 

關(guān)于Deno中軟件包的另一個(gè)巨大優(yōu)勢(shì)是,安裝后每個(gè)軟件包都緩存在硬盤(pán)驅(qū)動(dòng)器上。這意味著軟件包的安裝僅發(fā)生一次,如果要在任何地方再次導(dǎo)入依賴(lài)項(xiàng),則不必下載它。

3.TypeScript是原生的,不需要配置

[[330087]]

 

讓TypeScript與NodeJS一起工作是一個(gè)多步驟的過(guò)程。你必須安裝TypeScript,更新package.json,tsconfig.json,并確保你的模塊支持@types。

在Deno中,你所要做的就是將文件另存為 .ts 而不是 .js,TypeScript編譯器已經(jīng)安裝好了。

4.頂層await——在異步函數(shù)之外使用await功能

 

在Node中,只能在異步函數(shù)中訪問(wèn) await 關(guān)鍵字。

使用Deno,你可以隨時(shí)隨地 await 任何事情,而無(wú)需將其包裝在異步函數(shù)中。

幾乎所有Javascript應(yīng)用程序都包含許多異步函數(shù),這次升級(jí)使代碼更加干凈和簡(jiǎn)單。

5.訪問(wèn)瀏覽器API(Window,F(xiàn)etch)

要使用javascript發(fā)出HTTP請(qǐng)求,我們可以使用Fetch API。在NodeJS中,我們沒(méi)有訪問(wèn)Browser API的權(quán)限,因此我們不能直接調(diào)用獲取函數(shù)。我們必須首先安裝該軟件包:

 

  1. npm i node-fetch 

然后導(dǎo)入包:

 

  1. const fetch = require("node-fetch"

只有這樣,我們才能進(jìn)行調(diào)用。

Deno原生有權(quán)訪問(wèn) window 對(duì)象,這意味著你可以繼續(xù)調(diào)用fetch(“ https://something.com”)以及Browser API中的任何其他對(duì)象,而無(wú)需安裝任何庫(kù)。

結(jié)合頂層的await優(yōu)勢(shì),你現(xiàn)在可以看到Deno代碼比Node代碼簡(jiǎn)單得多:

2020年以后編寫(xiě)Javascript代碼的方式

并沒(méi)有就此結(jié)束

Deno還有許多其他優(yōu)點(diǎn),例如默認(rèn)情況下更安全,可以執(zhí)行Wasm二進(jìn)制文件,具有許多內(nèi)置庫(kù),并且列表還在繼續(xù)。

 

本文提到的所有要點(diǎn)都是相互聯(lián)系的,共同形成一個(gè)更現(xiàn)代的2020年后端javascript運(yùn)行時(shí)。作為一個(gè)React開(kāi)發(fā)人員,我與Deno共鳴。現(xiàn)在,我可以使用導(dǎo)入語(yǔ)法,在任何需要的地方編寫(xiě)await,使用TypeScript而不進(jìn)行任何配置,甚至可以調(diào)用fetch而無(wú)需安裝軟件包。很簡(jiǎn)單。

Deno最終會(huì)取代Node嗎?也許。這可能需要幾年時(shí)間。NodeJS生態(tài)系統(tǒng)非常龐大,Deno可能需要一些時(shí)間才能趕上。但是Javascript開(kāi)發(fā)人員最近一直喜歡Deno的新項(xiàng)目,因此,如果你打算盡快開(kāi)始一個(gè)新項(xiàng)目,那么絕對(duì)值得研究。有關(guān)如何開(kāi)始的更多信息,請(qǐng)?jiān)L問(wèn)deno.land。

責(zé)任編輯:華軒 來(lái)源: 前端全棧開(kāi)發(fā)者
相關(guān)推薦

2020-06-27 08:46:09

DenoNodeJavascript

2023-01-11 12:14:50

NeoVimVim開(kāi)發(fā)

2021-02-16 16:44:40

RustJavaScript開(kāi)發(fā)

2012-02-07 14:58:03

Node.js

2020-09-25 17:31:43

JavaScript開(kāi)發(fā)技術(shù)

2021-12-14 22:31:59

機(jī)器學(xué)習(xí)人工智能開(kāi)發(fā)

2010-02-24 13:45:40

Python開(kāi)發(fā)人員

2015-08-20 09:57:38

JavaScript框架

2020-05-11 09:54:33

JavaScript開(kāi)發(fā)技術(shù)

2017-10-24 11:59:41

JavaScript

2021-03-01 10:34:28

開(kāi)發(fā)技能代碼

2018-05-08 12:00:33

開(kāi)發(fā)代碼Swift

2024-06-13 10:08:51

2011-03-31 10:22:41

Java開(kāi)發(fā)

2022-09-12 15:51:38

JavaScrip開(kāi)發(fā)編程語(yǔ)言

2021-11-30 17:37:14

ReactRedux

2020-06-28 09:56:48

.NET開(kāi)發(fā)工具

2018-06-07 14:29:45

Windows電腦原因

2021-03-16 06:40:43

開(kāi)源工具開(kāi)源Node.js

2015-02-10 09:24:04

Web開(kāi)發(fā)JavaScript工具
點(diǎn)贊
收藏

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