“別更新了,學不動了” 之:全棧開發者 2019 應該學些什麼?

對於什麼是全棧開發者並沒有一個明確的定義。但是,有一件事是肯定的:2019 年對全棧開發者的需求量很大。在本文中,我將向你概述一些趨勢,你可以嘗試根據這些趨勢來確定你可能要投入的時間。

簡單地說,全棧開發者就是可以構建完整應用程序的人。他們瞭解前端和後端技術、工具和服務,並結合所有這些技能開發出可以在生產環境中運行的東西。

這是美國全棧開發者在 2019 年的工資走勢:

人生苦短,所以儘量少做無用功。如果你希望保持最新狀態併成爲全棧開發者,以下是你需要了解並考慮列入學習計劃的 2019 年技術趨勢。

前端

基礎

HTML、CSS 和 JavaScript 是必須掌握的,你還需要學習 React、Vue 或 Angular 等前端框架或庫。但是,你應該選擇哪一個?對於一個真正的全棧開發者,你可以在 2019 年選擇這三個框架中的任何一個。

來自React 16 的更新

你需要了解 React 的基礎知識及其基於單向數據流架構的組件。今年我們看到了 React 16 的大量更新和 2019 年即將發佈的一些小版本更新。

新的生命週期方法;


    • React 16.6 中的 Suspense for Code Splitting(已發佈);

    • 帶有 React Hooks 的 16.x 版本(2019 年第一季度);

    • 帶有併發模式的 16.x 版本(2019 年第二季度);

    • 帶有 Suspense for Data Fetching 的 16.x 版本(2019 年中)。

這意味着你需要知道如何使用 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

image

Firebase、AWS 等託管數據庫將繼續增長,但你還是需要學習 SQL。2019 年,像 PostgreSQL 這樣的數據庫將繼續發展,而像 MongoDB 這樣的 NoSQL 數據庫似乎會有所下降。你可能需要了解每種方案的優點和缺點,因爲在數據庫領域並沒有可以解決所有問題的完美解決方案。

不要把搜索給忘了

搜索可能不是絕對必要的,但它是 Web 的重要組成部分。2019 年,全棧開發者可以試着瞭解下面兩個平臺:


    • Elasticsearch;

    • Algolia Search;

你可能需要學習 Redis

瞭解使用 Redis 作爲緩存以及內存存儲的工作原理。緩存和內存存儲是 2019 年需要學習的重要概念,可以用它們來優化你的系統。Redis 是理解這些概念的一個很好的起點。

測試

學習三種測試類型

很多人都在討論這個話題,但爲了簡單問題,可以將測試分解爲三種類型:


    • 單元測試:給定輸入,測試輸出,用於測試單個函數或類。

    • 集成測試:測試流程或組件是否按預期運行(包括副作用)。

    • 端到端測試:測試用戶的實際行爲,不僅僅是測試一個簡單的功能。

保持簡單

測試框架有很多選擇,但下面是 2019 年最好的兩個組合:


    • Jest

    • Mocha + Chai + Sinon + Istanbul

將 Jest 視爲一體化的測試框架,就不需要像第二個選項那樣添加其他工具和庫。如果你想要簡單些,只需使用 Jest。如果你想要更多可定製性和模塊化,請選擇 Mocha。

如果你還了解這些,那是錦上添花:Mock、Spy、存根和快照測試。

適當的端到端測試就可以了

進行端到端測試需要公司投入大量的成本,所以在你的職業生涯中有可能會也有可能不會遇到這種測試。但不管怎樣,在 2019 年,你最好可以學習這些框架,或至少可以瞭解一下:


    • Cypress;

    • Nightwatch;

    • Protractor,適合 Angular 愛好者。

移動開發

跟移動開發說再見?

image

移動開發在 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 更顯著的優勢。

Ionic 和 NativeScript 的使用將在 2019 年逐漸減少,除非你正在使用 Angular,否則你不應該關注它們。

所以,在 2019 年,請繼續關注 React Native。

工具

你應該使用的 NPM 包

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 集將繼續緩慢改進,但仍然只有一小部分開發者會使用它(主要用於遊戲、圖像處理)。你可以先了解它,在幾年後等它成爲主流時你就是這方面的專家了。

以上是我的個人意見,不管怎樣,學習新東西絕不是一個壞主意。

但不論技術風向如何變化,葡萄城一直都秉承着爲開發者着想,賦能開發者的企業理念,同時爲開發者提供技術領先、功能可靠的一站式開發工具解決方案技術服務

在這裏順便給大家推薦一個架構交流羣:956058372,裏面會分享一些資深架構師錄製的視頻錄像:有Spring,MyBatis,Netty源碼分析,高併發、高性能、分佈式、微服務架構的原理,JVM性能優化這些成爲架構師必備的知識體系。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章