最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Typescript是必須要學習嗎?如何學習TS全棧開發(fā)

 更新時間:2022年12月30日 15:08:38   作者:pincman  
Typescript目前在前端,網站,小程序中的位置基本無可替代,同時也可以構建完美的CLI應用。在移動,桌面,后端方面,性能不是要求很高的情況下完全可以勝任,并且在區(qū)塊鏈,嵌入式,人工智能方面也開始茁壯成長。

Typescript目前在前端,網站,小程序中的位置基本無可替代,同時也可以構建完美的CLI應用。在移動,桌面,后端方面,性能不是要求很高的情況下完全可以勝任,并且在區(qū)塊鏈,嵌入式,人工智能方面也開始茁壯成長。

TS的全面性

目前來說前端基本是React,Vue,Angular這三框架占據(jù)主流。而現(xiàn)在這三個框架對TS基本是默認支持與推薦的。

接著我們再來說說移動方面。雖然Flutter目前的流行度非常高,但是需要學習Dart語言,這就多了一個學習成本,而React Native+TS的流行度依然跟Flutter不相上下,在性能方面對比Flutter有所差距,不過既然使用這種跨平臺開發(fā),那么基本都是社交,電商等或者展示類的APP,一般不會是系統(tǒng)型或者超大型APP的話,這個方面RN也足夠應付,如果是游戲或者系統(tǒng)型APP的話,我相信你也不會去選擇Flutter而會直接使用原生了。

接著說說桌面應用方面,Electron框架一直在低性能要求的跨平臺桌面應用這塊占據(jù)主流,如果你的桌面應用是以web頁面為主或者對性能要求不是非常高的話,Electron足夠應付,如果對性能要求比較高的話,那么同樣可以使用原生的c#,swift去開發(fā)。

在小程序方面毋庸置疑,無論是原生的微信小程序,還是跨平臺的Taro,Uniapp,肯定使用JS/TS來編寫的。在開發(fā)網站方面,擁有大量的SSR框架,最為占據(jù)主流的就是基于React的Nextjs和基于Vue的Nuxtjs。

而在編寫后端API這部分,Node.js的性能并不比傳統(tǒng)的PHP,Python,Ruby這類動態(tài)語言差,尤其在IO和高并發(fā)方面因為異步機制和自帶Cluster集群功能,性能表現(xiàn)非常優(yōu)秀,再加上Nestjs這種企業(yè)級的開發(fā)框架和越來越完善的生態(tài),完全可以作為和其它動態(tài)后端語言平分秋色。

當然與Java,C#尤其是Go這種編譯型的語言還是有一定差距,不過與RN,Electron一樣在性能要求并不是非常高的情況下完全可以應付,而99%的應用或網站是不需要這么高的性能的。在CLI構建方面,一個Yargs基本可以扛起所有,不用多做解釋。并且目前Node已經在區(qū)塊鏈,嵌入式甚至人工智能方面的生態(tài)也已經遍地開花,以前區(qū)塊鏈基本是go的天下,而嵌入式則是C,Rust這類占據(jù)主流,人工智能一般都是用Python。而現(xiàn)在大量的區(qū)塊鏈,嵌入式的招聘中開始出現(xiàn)Node.js的身影。就連人工智能也出現(xiàn)支持Node的框架。

TS的必學性

現(xiàn)在來說,Typescript已經成為一門必學的編程語言。

如果你是編程入門者,建議第一門語言就選擇TS,后面打算往職業(yè)后端發(fā)展可以增加學習一下Go或者Java Spring全家桶,或者往職業(yè)移動開發(fā)者方向發(fā)展,可以學習一下Swift或者Java,如果長期從事C/S系統(tǒng)開發(fā),則可以嘗試一下C#。

如果你已經對另一種技術棧掌握的比較深入,那么多學一門TS語言是非常有幫助的。比如說你是職業(yè)的Java Spring開發(fā)者,那么學習一下React+TS,瞬間可以成為一名全棧開發(fā)者,一個人可以把小程序,前端,APP客戶端,桌面應用等通通搞定

TS目前可以做這些事

  • 使用React等框架可以編寫Spa應用,比如中后臺,數(shù)據(jù)可視化等
  • 使用Nextjs等框架可以編寫SSR網站
  • 使用Electron可以開發(fā)C/S類的桌面應用
  • 使用React Native可以開發(fā)跨平臺的移動APP
  • 使用Taro等框架可以編寫跨平臺的小程序
  • 使用Nestjs可以編寫企業(yè)級高性能的后端API
  • 使用Yargs可以開發(fā)CLI工具
  • 并且目前已經開始在區(qū)塊鏈,嵌入式,人工智能方面出現(xiàn)一些高可用的框架

如何學習TS

我個人建議的入門方法是從ES6入手先學習ES6+,這是TS的基石,必須理解了這些底層的東西,再學習JS的超集語言TS才會事半功倍。否則如果你會感覺有些東西會很難理解,比如TS的類在底層JS上本身是一個對象,函數(shù)也是一個對象,萬物皆為對象。但是你像Java一樣去使用就很不靈活,類其實可以手動使用對象描述構建一個。又比如把裝飾器當成Java注解去理解,那么代碼又變得很生硬了,其實裝飾器本質上只是一個函數(shù)。還有像this,apply等,在ts中沒有直接學習的方案,必須從JS開始

那么如果一步步把TS全部學會呢?

小編提供一下自己的學習路徑供參考。

學習經歷

首先小編簡單介紹一下自己,我是從08年開始入手的php,前面學過delphi,從08-17年一直用的php,從18年開始轉的TS,在學習TS前,JS方面只會一些簡單的Jquery。我的學習路徑是這樣的

第一步學習ES6

看的是《阮一峰的ECMAScript6入門》這本電子書。大概瀏覽一遍做到心中有數(shù)后,接著學習了這本《Typescript入門教程》的電子書。

學習React

接下來就開始學習React,看的是官方文檔,因為當時的官方文檔默認是沒有Ts示例的,所以邊對著《深入理解Typescript》這本電子書查閱,邊寫React。期間學習了各種庫,比如Redux,Mobx,React-DND,Antd,React-Spring,Echarts等等,也爬了無數(shù)的坑,谷歌了無數(shù)次,看了無數(shù)次的StackoverFlow的問答和各種庫的Issue,這期間遇到的最老大難的問題就是配置vscode+eslint+prettier+stylelint,光這套學了很長一段時間。后來技術慢慢的開始熟練起來,以至于現(xiàn)在拿起React就變成一把利劍一樣好用了,比如對于狀態(tài)管理,可以直接自己寫或者使用一些輕量級的Zustand等,又比如說React默認沒有的keepalive功能,也是幾行代碼就能輕松實現(xiàn)。

學習Electron

在掌握了React后,又開始爬坑Electron,當然也有許許多多的問題,小編花了無數(shù)的時間和精力去解決,一開始使用的是webpack作為打包工具去編寫桌面應用,后面出來了一個極好的構建工具--vite。嘗試了使用vite+ts+electron+react的方式去構建,雖然當時的vite還不成熟,坑非常多,也把一個個問題通過自己思索或谷歌去解決了,隨著vite的不斷成熟,坑越來越少,這套技術棧也變得堅實,現(xiàn)在使用這套技術棧開發(fā)桌面應用已經非常熟練,足可以應付一般的業(yè)務需求。

學習Taro和React Native

因為小編家中一些原因,一段時期一直在自由職業(yè)的緣故,所以接到了一些各種各樣的單子。有一次客戶要求做一個SEO友好的電商網站,本來小編打算直接用熟練的jquery+laravel搞定,但是后來在各種反復考量下,小編決定采用一些新的技術棧。因為那時候,Remix還沒有出來,甚至同作者的React Router v6也沒發(fā)布,于是小編當時唯一的選擇就是Nextjs(Gatsby太過復雜,因為我不會vue所以直接排除Nuxtjs).然后開始嘗試使用Nextjs去構建這個網站,當然后端因為還沒學習Node,所以依舊使用擅長的PHP去編寫,沒想到竟然全程基本無坑,一氣呵成,可見React的基礎技能對于其生態(tài)是有多重要了。。。

后面隨著一個新的客戶需要開發(fā)一個小程序加APP,這并不在小編的技術棧范圍內,但是給出的報酬和支付訂金的爽快程度前所未見,所以沒辦法,為了生活也只能硬著頭皮上。

一開始去學微信的官方文檔,但是后來客戶說最好能支持某寶,小編沒有精力去學習兩套SDK。這時候我就開始各種搜索跨平臺小程序的開發(fā)框架,找到了兩個比較成熟的,一個是Uniapp,但是沒有Vue開發(fā)經驗再加上不喜歡他官網各種營銷式的文檔樣式和自帶的IDE,那么只能選擇另一個京東出的Taro。沒想到使用Taro構建小程序非常順利,除了官方的UI丑一點外(現(xiàn)在Taro已經有很多好看的生態(tài)庫了),基本無坑。這時,看到Taro也支持RN,于是乎抱著試一試的方式,邊學習React Native,邊使用Taro去構建APP,那么結果大家都知道了,坑是有多多。。。后面只能裸用React Native去寫APP,坑的確少了很多,APP也開發(fā)成功了,但是唯一的缺憾是UI方面無法和小程序統(tǒng)一了。畢竟瑕不掩瑜,希望Taro對RN的支持會越來越好吧,后面有APP開發(fā)還是會去嘗試Taro,而不是把它僅用于小程序開發(fā)。

學習Nestjs

這幾年,接到的后端業(yè)務越來越多,但是因為PHP的口碑撲街(其實個人認為PHP并沒這么差),很多客戶也是人云亦云直接來一句PHP的不要。。。那么沒辦法,要么學習Java這個巨無霸體系,要么入手生態(tài)很差的Golang。一次在逛某乎的時候,看到有一名作者在布道一個node框架--Nestjs。憑我對10來年前,node剛出現(xiàn)時嘗試過的express框架的記憶,想著node不就是slim這種微框架嗎?這些項目得多累。但是鑒于當時也沒有更好的選擇,并且TS語言也熟悉,然后抱著試一試的心態(tài)去嘗試Nestjs,沒想到沒試不知道,試了就知道撿到寶了。這個框架生態(tài)非常健全,ORM,消息列隊,websockets,微服務等通通完美支持,然后測試了一下性能,對比swoole+symfony/laravel也不遑多讓。立馬拿來構建第一個項目。因為當時的nestjs還是5.0版本,問題頗多,大多集中在Typeorm方面,再加上Nestjs本身一大堆概念,比如DTO,驗證器,攔截器,過濾器等等,在開發(fā)第一個CRM項目的時候還是踩了非常多的坑,導致項目延期無數(shù)次,過了半年終于把項目開發(fā)好,當然報酬也少了許多。。。但是個人認為這一切是值得的,后面就可以使用一種語言打遍天下了。

等到第二個項目來臨時,Nestjs已經使用地非常成熟了,這時候遇到一個老客戶,他需要一個帶后臺的小程序,這是我發(fā)現(xiàn)了一個比較好的庫--lerna,可以用一種叫做monorepo的方式,把所有前后端的TS包放在一個倉庫里,接口能相互調用,還能一鍵發(fā)布一些主應用之外的包到npm的倉庫里,甚至能按照依賴順序對TS進行編譯,非常實用,所以直接使用lerna構建起了整個應用。

學習CLI構建

后面發(fā)現(xiàn)了更加輕量的pnpm,然后pnpm不支持lerna,但是它本身沒有發(fā)布功能,并且無法按依賴順序執(zhí)行編譯命令,所以在空余時間我慢慢的嘗試自己編寫一個命令行工具去使pnpm可以自己按順序執(zhí)行編譯和一鍵發(fā)布。于是發(fā)現(xiàn)了一個好用的node的命令行工具--yargs。當然圍繞yargs還發(fā)現(xiàn)了execa,ora等好用CLI生態(tài)庫。并且同時深入整個Node重新學習了一遍,比如在使用CLI構建長時間命令式,使用fork開子進程等。同時發(fā)覺在開發(fā)時nestjs的重啟速度實在太慢,于是在我的工具庫里添加了一個nodemon+swc熱更新nestjs的命令。

后面發(fā)現(xiàn)客戶部署上去的Nestjs應用總是在進程出現(xiàn)錯誤后就掛掉,于是乎學習了一下cluster,使用PM2+Cluster的方式去部署應用,當然目前基本使用docker來部署了。

推薦給大家

小編以上的學習過程是非常痛苦且漫長的,花了大概2年多,因為都是普通人,并非天賦異稟。但是這么長的學習和爬坑過程,甚至還是全職的情況下,是并不是誰都有時間和精力去做的。尤其有些庫遇到的各種問題去查官網文檔,不僅只有英文文檔,甚至大量還是語焉不詳?shù)那闆r下,只能不停地去查詢stackoverflow以及那些庫的issue,去github的discussions或者discord用英語提交問題。這會浪費大量的學習和工作時間。然后去各種QQ群提問基本就是答非所問,各種灌水,去一些問答社區(qū)提問則大概率得不到想要的答案。

所以為了幫助大家能更快的解決開發(fā)與工作中遇到的問題。小編開始做一套TS全系列的視頻教程并包含各個技術棧。目前以React18和Nestjs開始制作,慢慢地涵蓋所有TS的技術棧,在學習和開發(fā)過程中遇到問題也可以讓小編幫助解決。但是視頻教程只針對已經有一定基礎的同學來進階學習。

如果沒有任何基礎,可以找小編進行基礎性學習,幫助你盡快地掌握這個TS開發(fā)體系。

總結

學會TS全棧開發(fā)不僅有助于提升求職競爭力,同時也可以成為一名完全自由的開發(fā)者,比起需要長期996的一端開發(fā)者來說優(yōu)勢不可為不大。尤其在某些編程語言和框架非常內卷的情況下,還是非常有幫助的。同時希望我個人能幫助到一些同學快速掌握這套技術棧。

到此這篇關于Typescript是必須要學習嗎?如何學習TS全棧開發(fā)的文章就介紹到這了,更多相關Typescript學習內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

最新評論

千阳县| 阜新| 闽清县| 德保县| 资中县| 突泉县| 昭苏县| 东安县| 贡嘎县| 宁城县| 安乡县| 廉江市| 民乐县| 清徐县| 朔州市| 洮南市| 元氏县| 灵武市| 玉门市| 田东县| 巴东县| 辽源市| 彩票| 沐川县| 上蔡县| 自治县| 西乡县| 罗山县| 阜康市| 东安县| 区。| 夏邑县| 皮山县| 林州市| 河间市| 驻马店市| 永福县| 行唐县| 抚远县| 丹棱县| 永平县|