成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

我的JavaScript工具鏈,6個(gè)改變了我的JavaScript的工具

開發(fā) 前端
我已經(jīng)用靜態(tài)類型語(yǔ)言編碼多年了,我從匯編開始,然后轉(zhuǎn)到C語(yǔ)言,經(jīng)過(guò)Visual Basic和C#,但是當(dāng)我轉(zhuǎn)到JavaScript時(shí),我對(duì)軟件的所有理解都改變了。

我已經(jīng)用靜態(tài)類型語(yǔ)言編碼多年了,我從匯編開始,然后轉(zhuǎn)到C語(yǔ)言,經(jīng)過(guò)Visual Basic和C#,但是當(dāng)我轉(zhuǎn)到JavaScript時(shí),我對(duì)軟件的所有理解都改變了。

在給出我現(xiàn)在的工具鏈之前,有一個(gè)建議:自己練習(xí)自己想掌握的語(yǔ)言,不受任何強(qiáng)加的限制,在這之后,找一份符合自己喜好的工作,否則,你可能最后會(huì)覺得很痛苦,因?yàn)槟銜?huì)用錯(cuò)了自己的工具,從而永遠(yuǎn)無(wú)法發(fā)揮出自己的潛力。

[[326577]]

1. TypeScript

 

[[326578]]

 

 

TypeScript

 

主頁(yè)上的介紹:

TypeScript是JavaScript的類型化超集,可編譯為純JavaScript。

是什么讓我在每個(gè)項(xiàng)目中都使用TypeScript?

(1) 編譯錯(cuò)誤

在編譯時(shí)發(fā)現(xiàn)錯(cuò)誤是一件好事,愚蠢的錯(cuò)誤,莫名其妙的運(yùn)行時(shí)錯(cuò)誤,顯示得太遲的錯(cuò)誤的無(wú)奈使我對(duì)這個(gè)職業(yè)的熱愛減少了,但是TypeScript再次帶來(lái)了歡樂(lè)。

(2) 類型

表現(xiàn)力和依從性,意圖和一致性,設(shè)計(jì)和力量,類型需要時(shí)間來(lái)掌握,但是,孩子們,他們是值得的。Every、Single、Time,我太想念那些類型了。TypeScript既兼容面向?qū)ο箢愋停布嫒莺瘮?shù)類型,非常棒。

當(dāng)你有類型的時(shí)候,你會(huì)省去很多時(shí)間給試圖理解和使用你的代碼的人,你會(huì)變得能夠在不看手冊(cè)的情況下發(fā)現(xiàn)整個(gè)庫(kù)的使用方法,而且由于類型的約束,你可以確定事情會(huì)被按他們應(yīng)該使用的那樣使用。

TypeScript中的類型還有很長(zhǎng)的路要走,但是今天的類型系統(tǒng)已經(jīng)為前端帶來(lái)了很多強(qiáng)大的功能。沒有類型系統(tǒng)的感覺就像試圖用腳跑過(guò)賽車一樣。它給人一種工程化的感覺,這是JavaScript所缺少的,我用類型來(lái)設(shè)計(jì)和強(qiáng)制執(zhí)行正確的接口使用,而我每花一個(gè)小時(shí)寫類型的時(shí)間就能讓我安全地度過(guò)幾天(好吧,這主要是我的看法)。

(3) 減輕我的挫敗感

有了TypeScript,我每小時(shí)的錯(cuò)誤以及因此而感到沮喪的機(jī)會(huì)大大減少了,僅此部分就值得了。

TypeScript也越來(lái)越好,它迅速采用了新的ECMAScript功能。

所以,我放棄了用普通的JavaScript進(jìn)行編碼,TypeScript有JavaScript的所有優(yōu)點(diǎn)。

2. Visual Studio Code

[[326579]]

這不是一個(gè)IDE,而是一個(gè)文本編輯器,最好的前端文本編輯器,來(lái)自他們的首頁(yè)的介紹:

代碼編輯。重新定義。免費(fèi)的。基于開放源碼構(gòu)建。可以在任何地方運(yùn)行。

為什么選擇VSCode?

(1) 到處運(yùn)行,無(wú)處不在

這句話是對(duì)的,我已經(jīng)在需要使用的每個(gè)操作系統(tǒng)上可靠地使用了VSCode,它速度很快,并且在所有地方都有很多優(yōu)點(diǎn),無(wú)需擔(dān)心平臺(tái)支持。

(2) IntelliSense

它在JavaScript中的效果非常好,但在TypeScript中,它就像神一樣,快速,可靠,并且在編譯之前就能發(fā)現(xiàn)錯(cuò)誤!我認(rèn)為這是VSCode最好的功能之一。我認(rèn)為這是VSCode最好的功能之一,它就像多了一雙眼睛。

(3) 減輕我的挫敗感

當(dāng)年Sublime的每一個(gè)插件都很慢,而且缺乏IntelliSense,VSCode的速度很快,而且越發(fā)布越快,說(shuō)實(shí)話,我很驚訝這么好的軟件竟然是免費(fèi)的。

一切都按預(yù)期運(yùn)行,它有我能想到的所有功能,那些不應(yīng)該是核心的,都是擴(kuò)展,說(shuō)實(shí)話,掌握它是值得的。

最后,用一句話來(lái)形容我的VSCode代碼體驗(yàn):我沒有任何怨言。

3. React

[[326580]]

他們的主頁(yè)的介紹:

一個(gè)用于構(gòu)建用戶界面的JavaScript庫(kù)

如前所述,我開始使用AngularJS,全功能強(qiáng)大的前端框架,但轉(zhuǎn)到React對(duì)我來(lái)說(shuō)是不可避免的,下面是原因。

(1) 不是框架

沒錯(cuò),這不是框架,而這是我最喜歡的事情之一,我通常編寫小型程序,不需要大量的框架,只需要一點(diǎn)幫助我就可以構(gòu)建小型UI。

(2) 擁抱函數(shù)式編程

最好的賣點(diǎn)是,React接受了函數(shù)式編程,與我對(duì)JavaScript的新認(rèn)識(shí)保持一致。

React在簡(jiǎn)潔方面做了很大的努力,我很欣賞這一點(diǎn);React用最小的語(yǔ)法表達(dá)了復(fù)雜的概念,像 useState 和高階組件這樣的東西就是一個(gè)例子,說(shuō)明了擁有正確的抽象比擁有一堆可能最終會(huì)用錯(cuò)的工具要好得多。

(3) 全部加起來(lái)+TypeScript

我不使用Svelte或Vue的原因是我不喜歡模板,而我喜歡類型。在模板文件中,你沒有TypeScript,也沒有JavaScript,你有模板腳本,一些特殊的標(biāo)記,可以幫助你做一些事情,無(wú)類型的,用不同的推理。

我確實(shí)喜歡React的整體特性。也就是說(shuō),我用JSS代替了CSS,而不是HTML+JS,我用TSX,所有的CSS、HTML、JS都在一個(gè)文件中的TypeScript中,我喜歡它,所有的東西都有IntelliSense,編譯錯(cuò)誤,類型,沒有上下文切換。

在我看來(lái),小的組件是CSS+HTML+JS的混合體,將它們?nèi)亢喜⒌絋ypeScript中,對(duì)我來(lái)說(shuō)是有利的。

它更優(yōu)秀的一面是?它的性能很好,而且每一個(gè)新版本都在不斷地改進(jìn),更多的JSS被移植到靜態(tài)CSS中,更多的TSX被優(yōu)化,等等,所以你可以用它來(lái)編程,隨著時(shí)間的推移,移植器的輸出也會(huì)越來(lái)越好。

在我工作過(guò)的公司里,我們?cè)谛〉某绦蛑芯幊龈邔哟蔚母拍睿皇堑蛯哟蔚臇|西,我相信公司在大多數(shù)時(shí)候并不是花錢給程序員優(yōu)化什么,他們要的是可用的、可靠的、快速的軟件。

4. Ramda

[[326581]] 

Ramda是一款實(shí)用的 JavaScript 函數(shù)式編程庫(kù)。

(1) 代碼可重用性

我在上面抱怨過(guò)重復(fù)的代碼,大部分的代碼都是一些小的實(shí)用程序函數(shù),當(dāng)我成功地?fù)碛辛艘粋€(gè)文件夾,如果我開始了另一個(gè)項(xiàng)目,我必須重新編寫它們,所以我一直在尋找一個(gè)好的實(shí)用程序庫(kù)。

現(xiàn)在,我在抽象函數(shù)的時(shí)候,幾乎沒有想到要讓函數(shù)變得更可重用,因?yàn)樗械耐ㄓ每芍赜煤瘮?shù)都在Ramda中,有一個(gè)非常強(qiáng)大的函數(shù)優(yōu)先的接口。

(2) 純函數(shù),無(wú)副作用且不變

一個(gè)實(shí)用程序應(yīng)該包含純粹的函數(shù),這意味著這些函數(shù)需要:無(wú)副作用,并將數(shù)據(jù)視為不可變的。這些東西與實(shí)用程序庫(kù)不一致,哎呀,甚至在JavaScript內(nèi)置Array函數(shù)中也不一致,不相信我嗎?看這個(gè):

我的JavaScript工具鏈,6個(gè)改變了我的JavaScript的工具 

原生數(shù)組的sort方法改變了原始數(shù)據(jù),而 Ramda的sort方法不會(huì)。

(3) 轉(zhuǎn)換器(Transducers)/

實(shí)事求是地描述轉(zhuǎn)換器:轉(zhuǎn)換器消除了組合多個(gè)數(shù)組函數(shù)的性能損失。

我認(rèn)為圖像勝于文字,轉(zhuǎn)換器難以理解:

我的JavaScript工具鏈,6個(gè)改變了我的JavaScript的工具

Ramda充滿了轉(zhuǎn)換器函數(shù),這意味著性能非常好,您可以堆疊多個(gè) filter,map 和21個(gè)其他功能,它將僅迭代數(shù)組并應(yīng)用一次功能,而不是N次。

(4) 缺點(diǎn)

Ramda很棒,但是所有的好東西都是有代價(jià)的……如果你正在考慮使用TypeScript。

Ramda的類型、類型推理和類型解析的復(fù)雜度是非常高的;;除此之外,主要的貢獻(xiàn)者對(duì)TypeScript根本不感興趣。

他們似乎是一群了不起的開發(fā)人員,他們?cè)跊]有TypeScript的情況下就馴服了JavaScript,并且對(duì)將這個(gè)令人驚嘆的庫(kù)移植到TypeScript的興趣為零。

盡管如此,Ramda仍然是我樂(lè)于使用的最精良的實(shí)用程序庫(kù)之一,在我馴服JavaScript的過(guò)程中,它讓我非常感動(dòng)。

5. FP-TS

雖然Ramda是一個(gè)很好的解決方案,只要我們停留在JavaScript領(lǐng)域,一旦我完全采用了TypeScript,它就會(huì)變得...........使用起來(lái)很尷尬,類型推理也不是很好,所以我尋找了其他考慮到TypeScript的解決方案,或者說(shuō)最好是用TypeScript寫的。

幸運(yùn)的是,我從他們的主頁(yè)上找到了fp-ts,這是庫(kù)的奇跡,他們的主頁(yè):

  • TypeScript中的類型化函數(shù)式編程。
  • fp-ts為開發(fā)者提供了TypeScript中的類型化函數(shù)式語(yǔ)言中的流行模式和可靠的抽象。

老實(shí)說(shuō),fp-ts是一個(gè)杰作,它為TypeScript帶來(lái)了很多好處,并且以一種不引人注目的方式,它的類型也是完全慣用語(yǔ)的。

為什么我在100%的項(xiàng)目中使用fp-ts?

(1) 管道(Pipe)

我故意避免談?wù)揜amda的管道,因?yàn)轭愋头治鰪淖蟮接业男再|(zhì),fp-ts版本更……是TypeScript和IntelliSense的慣用語(yǔ)。

這是沒有管道的代碼:

我的JavaScript工具鏈,6個(gè)改變了我的JavaScript的工具

在 main 中,我需要使用中間變量來(lái)分配中間結(jié)果,在 main2 中,要從右到左讀取執(zhí)行順序是很尷尬的。

有了管道,我們不需要中間變量,所有的數(shù)據(jù)都是流動(dòng)的,但是,TypeScript在使用Ramda的管道時(shí),大多數(shù)時(shí)候會(huì)產(chǎn)生錯(cuò)誤,因?yàn)檩斎胫捣旁谧詈螅圆荒芡茢喑鍪裁词禽斎氲牡谝粋€(gè)函數(shù),以此類推,因?yàn)門ypeScript從左到右推斷。而Ramda的管道要起作用,推理應(yīng)該從左到右和從右到左,Ramda的管道類似于Haskell、OCalm和F#等函數(shù)式語(yǔ)言的類型推理系統(tǒng)中的常見特征,但在TypeScript中卻沒有,雖然在JavaScript中完全不是問(wèn)題。

現(xiàn)在看一下fp-ts版本的管道:

我的JavaScript工具鏈,6個(gè)改變了我的JavaScript的工具

不同的是,fp-ts 將pipe的輸入放在第一位,讓TypeScript的推理變得很開心。在JavaScript領(lǐng)域,Ramdas的方法是100%有效的慣用代碼,但TypeScript缺乏從右到左的推理,使得它 "無(wú)效 "或者說(shuō)一般情況下很難使用,所以我一般傾向于使用fp-ts版本的pipe,而不是Ramda的。

6. XState

我的JavaScript工具鏈,6個(gè)改變了我的JavaScript的工具

讓我來(lái)介紹一下XState這個(gè)應(yīng)該已經(jīng)取代Redux的庫(kù)。主頁(yè)介紹:

用于現(xiàn)代web的JavaScript和TypeScript有限狀態(tài)機(jī)和狀態(tài)轉(zhuǎn)換。

很長(zhǎng)時(shí)間以來(lái),我的Redux商店都缺少一些東西,我試圖制作一些小的中間件來(lái)幫助我馴服Redux,但是感覺……不完整。直到我找到XState。

為什么我在100%的React項(xiàng)目中使用XState?

我的問(wèn)題是Redux是一半,不知不覺中我在每個(gè)React組件中都在做小狀態(tài)機(jī),用Redux做擴(kuò)展?fàn)顟B(tài)(或者說(shuō)是無(wú)限狀態(tài)),一旦我發(fā)現(xiàn)XState,所有設(shè)計(jì)問(wèn)題都遇到了有價(jià)值的競(jìng)爭(zhēng)者。

是否應(yīng)該顯示一個(gè)按鈕?啟用?顯示文字A還是B? 所有這些 "域" 的規(guī)格都不外乎是幾個(gè)狀態(tài),有限的,事先指定好的;如果明確寫出這樣的狀態(tài),讀取和升級(jí)組件就成了一件樂(lè)事。

用AngularJS和模板,我的狀態(tài)是由一堆交織在一起的變量組成的,無(wú)法讀取,用React和Redux,所有的數(shù)據(jù)都在一個(gè)地方,但狀態(tài)沒有任何表示,是對(duì)數(shù)據(jù)的一種解釋,但用XState,我的狀態(tài)其實(shí)是顯式的。

 

責(zé)任編輯:趙寧寧 來(lái)源: 今日頭條
相關(guān)推薦

2021-05-25 16:34:06

JavaScript前端

2023-01-10 14:54:19

2014-07-22 10:51:02

密碼安全

2021-01-05 14:44:39

比特幣加密貨幣黃金

2022-05-09 15:43:34

JavaScriptRust開發(fā)

2018-10-17 09:00:00

JavaScript工具前端

2019-10-23 15:53:16

JavaScript可選鏈對(duì)象

2015-06-26 11:27:25

javascript檢驗(yàn)工具

2019-08-20 08:00:00

JavaScript測(cè)試工具前端

2015-01-14 10:26:30

JavaScript編程技巧

2012-02-24 09:25:20

JavaScript

2020-11-09 06:51:46

開源工具開源

2017-03-22 11:22:04

JavaScript函數(shù)式編程

2014-02-14 09:16:51

JavaScript工具

2016-05-06 10:02:33

CSSJavaScript工具

2020-09-27 12:26:47

avaScript嵌套對(duì)象開發(fā)

2019-08-28 10:53:35

JavaScriptOptional Ch代碼

2019-10-30 10:44:31

區(qū)塊鏈比特幣去中心化

2021-04-13 16:05:02

程序員工具軟件

2019-08-07 15:08:48

開發(fā)者技能工具
點(diǎn)贊
收藏

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

主站蜘蛛池模板: 国产精品久久一区 | 久久精品一区二区三区四区 | 911网站大全在线观看 | 成人在线观看免费视频 | 97精品超碰一区二区三区 | 久久在线视频 | 欧美大片久久久 | 懂色av一区二区三区在线播放 | 欧美一二三| 一区二区三区四区av | 亚洲国产aⅴ成人精品无吗 综合国产在线 | 2018中文字幕第一页 | 成人三区四区 | 99精品国产一区二区三区 | 国产精品一区二区三 | 午夜视频在线 | 在线看av网址 | 久久91av | 一区二区三区四区电影 | 亚洲欧洲中文日韩 | 国产精品毛片av一区 | 婷婷色综合 | 男人的天堂亚洲 | 亚洲天堂一区二区 | 国产一区二区高清在线 | 古装人性做爰av网站 | 给我免费的视频在线观看 | www.亚洲免费 | 最新国产精品视频 | 午夜视频在线免费观看 | 在线日韩欧美 | 精品九九久久 | 国产精品成人69xxx免费视频 | 久久国产精品色av免费观看 | 华人黄网站大全 | 91 在线| 欧洲一区视频 | 亚洲精品乱码久久久久久按摩观 | 天天操天天干天天爽 | 国产欧美一区二区三区久久人妖 | 国产精品久久久久久 |