之前一直用 vue 做一些小專案,最近接觸了一個專案是用 react 做前端,雖然本身是做後端開發的,但是前端還是要了解一點的。
現在的專案基本上都是前後端分離的,後端就先不提了。前端的框架也是層出不窮,使用最多的就是 angular、vue、react 。angular 是前幾年用的比較多,最近好像用的人沒那麼多了。vue 是華人開發的專案,也是這三個框架裡上手最簡單的。react 是 fecebook 開源的框架,市場佔有率也是最高的,國外的公司和國內的一些大公司用的比較多。
我也不是專業前端,學習 react 也是一時興起,講不了什麼高深的東西,就來說說入門 react 的一個過程,僅僅是入門而已。
前期準備
不光學習 react 需要儲備一些前端的知識,學習 vue 等前端框架同樣需要。
稍微瞭解一下 nodejs ,前端框架的原理是這樣的,並不是像我們之前那樣直接寫操作 DOM 的 js 指令碼或者使用 jquery,而是用 ES5、ES6 、TypeScript 等標準去組織專案程式碼,這其中需要用到 nodejs 的很多包,最後編譯的時候,把用這些標準組織的程式碼編譯成我們通常意義上的 js 程式碼,然後在瀏覽器執行。
會使用 npm ,這是一個包管理工具,對比 Java 來說,它就類似於 maven,可以方便的管理專案中使用的包。
webpack 瞭解一點,webpack 是一個現代 JavaScript 應用程式的靜態模組打包器,我們專案開發和編譯使用的命令 dev、start、build 最後都是由 webpack 幫我們完成的。
學習過程
我這裡只是說一下我學習的過程。開啟 Google,先去找 react 官網,有英文的和中文的,因為英文的看著費勁,所以就看了中文官網 https://react.docschina.org/。 花大概兩個小時,把每個小結都看完,也就是做個大概瞭解,瞭解 react 到底是怎麼一個機制,具體到寫程式碼的時候肯定還是要返回來查的。學任何東西其實都是一樣的,不能上來就拿一個 demo 開始改,肯定要先巨集觀的瞭解一下這項技術優缺點、運轉機制,然後再鑽到細節裡。
看完官方文件後,開始建立一個小專案寫寫簡單的程式碼。 react 為了方便入門,提供了一個腳手架工具,create-react-app,只需要執行簡單的命令就能建立一個 react 專案出來。
先用 npm 全域性安裝 create-react-app 包。
npm install -g create-react-app
然後執行命令建立專案,執行之前先 cd 到你想建立專案的目錄
create-react-app my-app
create-react-app 已經出到了 2.x 的版本,它幫助我們省去了一些配置上的東西,它其實是把 webpack 做了比較好的封裝,大大節省了我們配置 webpack 的時間,可以另我們專注的寫程式程式碼。如果不適用它的話,你從頭到尾的配置專案結構和webpack,中間會有很多坑在等著你,恐怕還沒開始寫程式碼就已經中途放棄了。
然後執行 npm start 就可以把最簡單的專案跑起來。
跑起來之後,可以根據官方文件來寫兩個簡單的頁面,建立一下自信。
如果你之前用過 vue,會發現 react 和 vue 差別是非常大的。vue 是非常直接 MVVM 模式,通俗點來說就是資料雙向繫結,改變檢視也就改變了 model ,改變 model 也就改變了檢視。
而 react 是在每個檢視中維護一個 state ,每次只能操作當前檢視的 state ,每次頁面載入需要初始化 state ,state 繫結到檢視上,但是檢視的修改,需要通知 state 。這是最基本的執行模式。如果是做一個比較小的系統,互動不是很複雜的那種,可以用這些足夠了。
繼續說看文件這件事,只看官方文件基本上可以寫一些簡單的頁面了,但是還不夠,我們通過搜尋引擎繼續搜尋,各種各樣的技術部落格、文件進去看,會陸陸續續的發現更多的資訊,比如 router 、redux、mobx 等等,繼續根據新的關鍵詞還能挖掘出更多的東西。以 react 為例,除了 react 核心的功能,還有一些擴充套件的框架,如果我們想把這些都瞭解,從早到晚看一天的文件恐怕也是不夠的。
router 路由器,如果頁面很多,專案很大的情況下,就需要路由器來管理頁面路徑了,訪問哪個路徑要載入哪個頁面,這些還是統一管理起來比較好。
redux 和 mobx 是資料管理的擴充套件包 ,我們如果只用 state 來管理和維護資料,當有不同的頁面需要有資料互動或共享的時候,就很吃力了,redux 或 mobx 就提供了資料統一管理的功能,把資料獨立出來,這樣就可以在不同的頁面、不同的元件之間來回流轉了。
比起 mobx 來,redux 相對來說就麻煩的多,mobx 提供了裝飾器的語法功能,就像 Java 中的註解、Python中的裝飾器一樣。
寫的非常亂,但這就像開始學習 react 一樣,有些東西就是在你各種翻文件的過程中才發現的,比如 redux 和 mobx ,大多數時候,開始你並不知道有這些東西。
學習的過程中,我用 react + router + mobx 搭了一個腳手架專案,有想要用的可以關注公眾號,回覆 「react」 。