前端 前端
HTML、CSS 和 JavaScript 是必須掌握的,你還須要學習 React、Vue 或 Angular 等前端框架或庫。可是,你應該選擇哪個?對於一個真正的全棧開發者,你能夠在 2019 年選擇這三個框架中的任何一個。webpack
來自 React 16 的更新 git
你須要瞭解 React 的基礎知識及其基於單向數據流架構的組件。今年咱們看到了 React 16 的大量更新和 2019 年即將發佈的一些小版本更新。程序員
新的生命週期方法;web
React 16.6 中的 Suspense for Code Splitting(已發佈);算法
帶有 React Hooks 的 16.x 版本(2019 年第一季度);數據庫
帶有併發模式的 16.x 版本(2019 年第二季度);編程
帶有 Suspense for Data Fetching 的 16.x 版本(2019 年中)。json
這意味着你須要知道如何使用 React.lazy() 和 < React.Suspense> 進行代碼拆分,使用 React.memo 進行優化,並時刻關注新功能,如 React Hooks,它可能會給 React 生態系統帶來重大改變。後端
咱們如今還有標準化的 React Context API,你應該對它有一個基本的瞭解。
React 生態系統將在 2019 年繼續發展和演化。它這不只限於 Web,在移動、物聯網和 AR/VR 等不一樣平臺上移植和使用 React 的能力將使其變得愈來愈重要,並在 2019 年領先於其餘 2 個庫。
Vue 3.0
2018 年,Vue 持續得到開發者的青睞,2019 年將會繼續增加……但它是否足以超越其餘兩大玩家?咱們拭目以待。
Vue 生態系統正在不斷髮展,並且,隨着 Vue 3.0 的發佈極其改進的 Vue CLI,2019 年的開發者體驗將比以往更好。
開發者可使用 Vue Native 進行跨平臺開發(就像 React Native 那樣),咱們已經很接近 React 那樣的大型生態系統,但仍是有一大段距離。
Vue 有一個很是有趣的趨勢,它將在 2019 年繼續增加:阿里巴巴、百度、騰訊、小米和 DJI 等中國科技巨頭更喜歡 Vue。預計中國市場將繼續保持快速增加,由於 Vue 是一個獨立的開源庫,與西方的大型科技巨頭無關。
Angular Ivy 和 Angular Elements
新的渲染引擎 Ivy 即將推出,性能將會獲得大幅提高。
Ivy 將成爲 Angular 渲染引擎的第三個化身,它的目標是成爲更小、更快、更簡單的編譯器。
Angular Elements 將使咱們可以在 Angular 之外的其餘環境中使用 Angular 組件。簡單地說就是你能夠構建能夠被添加到不使用 Angular 的 HTML 頁面中的組件,有點像 Web 組件。如今,我可使用 Angular 建立世界上最好的組件,並將它交給個人朋友,她將它用在她的 React 應用程序中!
2019 年,Angular 將繼續作他們擅長的事情:提供一個功能齊全的框架,用於構建豐富的 Web 應用程序。
Angular、Vue、React——更小更快
總的來講,2019 年將看到這 3 個前端庫的發展。如前所述,你只要掌握其中一個,就已經爲進入新的一年作好了準備。預計在 2019 年,這些庫都會發生微小的變化,提升渲染速度並縮小庫的體積……但它們都不會帶來任何重大改進來壓倒其餘庫。
CLI 將會風靡
你必須使用 babel、webpack、eslint、測試庫和其餘工具搭建項目腳手架的日子已經一去不復返了。個人意思是,咱們仍然能夠這麼作,但 CLI 確實讓這種體驗變得更好了。
Angular CLI;
Create React App 2;
Vue CLI。
2019 年,咱們將在 CLI 中看到愈來愈多的改進體驗。
狀態管理
Vue 將繼續使用 Vuex 進行狀態管理。
Angular 將繼續主要使用 RxJS。
隨着新的 Context API 的問世和 GraphQL + Apollo 的普及,React 今年則遭遇了一點危機。很長一段時間以來,Redux 第一次被認爲不是狀態管理的明智選擇。你仍然須要學習 Redux,由於你能夠從 Redux 中學到一些有用的計算機科學原理,如事件溯源和 CQRS。
新的 Context API、Redux 和 GraphQL
Apollo 內置的離線客戶端緩存將使 Apollo + GraphQL 在 2019 年成爲 Redux 的一個重要替代品(固然,從技術上講,能夠同時使用它們)。新的 Context API 問世了,不少人稱它爲 Redux 終結者。
2019 年,你須要瞭解它們三者,瞭解它們的工做原理,以及它們能夠用來解決哪些問題。但若是從就業方面來看,學習 Redux 仍然是一個很好的選擇。
服務器端渲染
服務器端渲染在 JavaScript 領域仍然是一個待解決的問題。咱們知道,單頁應用程序和客戶端渲染很容易讓項目出現代碼膨脹,並且須要向客戶端發送太多的 JavaScript 代碼,並且可能會影響你的 SEO(但可能沒有你想象的那麼多)。
有一些方法能夠解決這個問題,例如:PRPL 模式、prerender.io,或者你能夠這麼想,其實谷歌機器人在抓取單頁應用程序時沒有那麼糟糕。
目前,若是要進行服務器端渲染,可使用:
用於 React 的 Next.js;
用於 Vue 的 Nuxt.js;
用於 Angular 的 Angular Universal。
靜態頁面正在從新颳起一陣流行風,你能夠看看 JAM Stack:
https://www.netlify.com/blog/2017/06/06/jamstack-vs-isomorphic-server-side-rendering/
它的主要思想是:預構建標記(靜態頁面),經過利用服務器的 API 在客戶端成爲動態單頁面應用程序。這將在 2019 年真正改變服務器端渲染,我預測會有更多人使用像 GatsbyJS 這樣的工具,而不是本身構建複雜的服務器端渲染邏輯。
Web 組件
瀏覽器採用的 Web 組件終於離咱們想要的標準愈來愈近了。2019 年,咱們將看到更多關於 Web 組件的討論,但它仍然不會在 2019 年達到臨界點。你能夠密切地關注它們,但不須要花費大量時間在掌握如何構建 Web 組件上。
你能夠了解 React、Angular、Vue 和普通 HTML 的組件,但很難說 Web 組件會在何時獲得大規模採用併爲咱們帶來主要的好處。
性能
每一個人都喜歡談論性能。2019 年,代碼拆分可能會成爲標準實踐,更多新的優化圖像格式(如 WebP)將會發揮愈來愈重要的做用。
人們仍然會討厭谷歌的 AMP。
你應該學習併爲 2019 年作好準備的是:
針對 Angular、React、Vue 的特定優化;
代碼拆分;
Tree Shanking;
只傳輸必要的 JavaScript 代碼;
更加關注你正在使用的 NPM 庫,並最大限度地減小庫的大小;
制定性能預算;
經過使用 CDN 和瀏覽器優先級工具更好地肯定資源優先級。
PWA
漸進式 Web 應用程序在 2019 年仍然會很熱門,但它最複雜的功能可能不會流行起來(即推送通知)。
大多數狀況下,你將使用 HTTPS、App Shell 和 Service Worker 來得到一些額外的脫機功能、安全性和性能。你應該學習如何構建 PWA,並使用像 Lighthouse 這樣的工具來測試它。
Safari 最終爲 PWA 添加了一些支持,實現漸進式 Web 應用程序功能可能會更容易一些。但說到底,你須要先學會使用 manifest.json 文件和 Service Worker。谷歌正在這方面努力推動,但不要期望在 2019 年會看到任何突破。
後 端
別擔憂!2019 年的後端世界並不會像前端世界那樣瘋狂。
HTTPS 無處不在
須要將用戶輸入的數據發送到服務器的網站必須使用 HTTPS。若是你沒有使用 HTTPS,谷歌將會懲罰你。幸運的是,HTTPS Everywhere 或 Gaddy 讓遷移到 HTTPS 變得更容易。
REST 與 GraphQL
RESTful API 在 2019 年還會存在,你須要學習如何實現和設計這些 API。你應該學會使用 Node.js 和 Express.js 來建立 API 服務器,在 2019 年,這兩個框架的組合仍然會佔主導地位。
如今出現了不少有關 GraphQL 的炒做,但它還不是能夠贏得全部市場的大贏家。瞭解 GraphQL 能夠解決哪些問題,以及如何在 RESTful API 中用它來進行路由優化。這將是 2019 年最重要的趨勢:不是如何單獨使用 GraphQL,而是如何在極少數狀況下使用 GraphQL 優化一些 RESTful API 路由。
HTTP2
HTTP2 變得愈來愈廣泛,你須要知道如何使用這個協議來優化內容的傳輸。此外,HTTP3 正在開發當中,你能夠關注它,但它並非你在 2019 年須要過度關注的東西。
基礎設施即服務
須要本身構建和管理服務器的場景愈來愈少,如下是 2019 年的主要選擇。
Digital Ocean——用於簡單的服務器。
Heroku——用於簡單和集成的服務器和部署。
Now——用於超級簡單的部署。
Firebase——用於託管基礎設施和數據庫。
AWS——幾乎任何你想要的東西,你能夠永遠不須要考慮本身管理服務器。
你須要學習 SQL
Firebase、AWS 等託管數據庫將繼續增加,但你仍是須要學習 SQL。2019 年,像 PostgreSQL 這樣的數據庫將繼續發展,而像 MongoDB 這樣的 NoSQL 數據庫彷佛會有所降低。你可能須要瞭解每種方案的優勢和缺點,由於在數據庫領域並無能夠解決全部問題的完美解決方案。
不要把搜索給忘了
搜索可能不是絕對必要的,但它是 Web 的重要組成部分。2019 年,全棧開發者能夠試着瞭解下面兩個平臺:
Elasticsearch;
Algolia Search;
你可能須要學習 Redis
瞭解使用 Redis 做爲緩存以及內存存儲的工做原理。緩存和內存存儲是 2019 年須要學習的重要概念,能夠用它們來優化你的系統。Redis 是理解這些概念的一個很好的起點。
測 試 學習三種測試類型
不少人都在討論這個話題,但爲了簡單問題,能夠將測試分解爲三種類型:
單元測試:給定輸入,測試輸出,用於測試單個函數或類。
集成測試:測試流程或組件是否按預期運行(包括反作用)。
端到端測試:測試用戶的實際行爲,不只僅是測試一個簡單的功能。
保持簡單
測試框架有不少選擇,但下面是 2019 年最好的兩個組合:
Jest(https://jestjs.io/)
Mocha + Chai + Sinon + Istanbul
將 Jest 視爲一體化的測試框架,就不須要像第二個選項那樣添加其餘工具和庫。若是你想要簡單些,只需使用 Jest。若是你想要更多可定製性和模塊化,請選擇 Mocha。
若是你還了解這些,那是錦上添花:Mock、Spy、存根和快照測試。
適當的端到端測試就能夠了
進行端到端測試須要公司投入大量的成本,因此在你的職業生涯中有可能會也有可能不會遇到這種測試。但無論怎樣,在 2019 年,你最好能夠學習這些框架,或至少能夠了解一下:
Cypress;
Nightwatch;
Protractor,適合 Angular 愛好者。
移動開發
移動開發在 2019 年的日子可能會有點難過。應用程序的下載量不像過去那麼多,並且最熱門的下載要麼是遊戲,要麼是大型科技公司的應用程序。2019 年,移動端 Web 瀏覽量將超過原生移動應用程序。所以,對於全棧開發者和移動開發者而言,他們應該將更多的關注點放在移動設備 Web 應用程序上(例如使用 PWA)。
iOS 和 Android 仍然是企業所須要的重要開發技能,但在過去幾年中對它們的需求一直在降低,彷佛出現了從原生移動開發到 React Native 引領的混合開發(或接近原生)的重大轉變。若是你看一下上面的圖表,React Native 已經取代了 Swift,它是原生 iOS 開發的主要編程語言。
如下是你須要關注的開發技術:
React Native 在 2018 年遭遇了一些挫折,一些大公司在博文說他們正在放棄它。但這些公司都曾經嘗試將 React Native 添加到他們現有的 iOS 或 Android 代碼庫中。若是你是這方面的新手,對於你來講,它仍然是 2019 年的一個很好的選擇。它將會繼續增加下去。
Flutter 在 2018 年很是火爆,但如今判斷它在 2019 年將會怎樣發展還爲時過早。你須要關注它,但到目前爲止,它並無帶來比 React Native 更顯著的優點。
工 具
你應該使用的 NPM 包
Prettier——讓你能夠專一於你正在寫的代碼,而不是去關心代碼的格式;
https://prettier.io/
eslint——保持代碼整潔;
https://eslint.org/
date-fns——moment.js 的輕量級替代品;
https://date-fns.org/
lodash——主要用於 throttle() 和 debounce() 函數;
https://lodash.com/
rambda——若是你真的喜歡函數式編程。
https://ramdajs.com/
JavaScript
JavaScript 是飽受爭議的編程語言之一。2018 年,靜態類型在 JavaScript 的動態類型領域變得愈來愈受歡迎。那麼競爭者有哪些?
TypeScript:能夠編譯爲 JavaScript 的 JavaScript 超集。
Flow:JavaScript 的靜態類型檢查器。
Reason:利用了 JavaScript 和 OCaml 生態系統的類型語言。
PureScript:一種強類型語言,能夠編譯爲 JavaScript,使用 Haskell 開發。
Elm:純粹的函數式編程語言,能夠編譯成 JavaScript。
關於靜態與動態類型語言的討論由來已久,不會很快就得出結論。以上這些都不會取代 JavaScript 做爲 Web 主要編程語言的主導地位。可是,Angular 和 Vue 都採用了 TypeScript,並將其做爲開發者社區的標準,所以,TypeScript 可能會繼續增加,並超越上述其餘語言。
你須要學習 TypeScript 的基礎知識及其原理(以及靜態類型的好處),但要注意,它並不是寫出好代碼的惟一方法。要寫出好代碼,能夠先關注如何寫出好的單元測試。
模塊捆綁器
Webpack 4 和 Parcel 是 2019 年的主要工具。它們都朝着下降複雜性和更多「爲用戶着想」的方向發展,不少前端庫都提供了 CLI。學習這兩個工具,但請記住,CLI 在項目開始時幫你消除掉最初 80%的複雜性。若是要發佈 NPM 包,請使用 Rollup。
計算機科學基礎 數據結構 + 算法
討論技術趨勢的文章不多會提到計算機科學基礎知識。但這多是最重要的主題,並且我能夠很是自信地說,這個趨勢具備 99.99999%的準確率:若是你想在 2019 年和將來幾年成爲一個全棧開發者,計算機科學基礎是很是重要的。計算機科學基本原理不怎麼會發生變化,而且已經存在了很長時間,不會像開發庫那樣,一旦有新東西出來就變得過期了。
容器和 serverless
容器爲咱們提供了與幾年前徹底不一樣的架構,其中的一個主要的想法是 serverless。serverless 並非說不須要服務器了,而是說有人爲你管理服務器(基礎設施),你能夠專一於本身的應用程序邏輯,無需擔憂擴展性等問題。
serverless 的流行始於 2017 年,並持續到了 2018 年。2019 年,咱們將看到一些相同的常見用例,好比 AWS API Gateway 與 AWS Lambda 的結合,供前端應用程序代碼調用。
在下降成本的同時提升性能是一個好主意,若是冷啓動問題在 2019 年能夠獲得解決,那麼它將變得愈來愈流行。
平臺即服務 / 後端即服務
亞馬遜、谷歌和 Azure 將在 2019 年爭奪服務器市場,它們當中的每個都提供了全託管的服務。
AppSync、Amplify、App Services、App Engine 等服務將繼續發展,但因爲程序員很難放棄如此多的控制權(除非是小型的我的項目),因此它們並不會真正有大轉機。
2019 年,Azure 將主導企業市場,AWS 將主導通常的開發者市場,而谷歌將主導機器學習市場。
機器學習
2019 年,你須要學習並瞭解如何經過如下 API 使用機器學習模型:
Google Cloud AI;
亞馬遜機器學習;
Azure 機器學習;
除了以前列出的平臺即服務和後端即服務,還會有更多的服務出現,這些大公司提供的機器學習 API 和模型將在 2019 年成爲一個更重要的趨勢。你應該學會在將來的項目中使用其中一些(不用擔憂,它們使用起來沒有那麼難,就像使用大多數其餘 API 同樣)。
2019 年,咱們將能夠看到機器學習 API 在 Web 上的應用,而不是從頭開始構建本身的機器學習模型。由於與上述大型科技巨頭不一樣,大多數人或公司沒法爲機器學習提供足夠的資源或數據。
WebAssembly
WebAssembly 集將繼續緩慢改進,但仍然只有一小部分開發者會使用它(主要用於遊戲、圖像處理)。你能夠先了解它,在幾年後等它成爲主流時你就是這方面的專家了。
以上是個人我的意見,無論怎樣,學習新東西毫不是一個壞主意。
英文原文
https://medium.com/zerotomastery/top-libraries-tech-to-learn-in-2019-for-full-stack-developers-f8c0331b8a00