之前一直用 vue 做一些小項目,最近接觸了一個項目是用 react 做前端,雖然本身是做後端開發的,但是前端還是要瞭解一點的。 現在的項目基本上都是前後端分離的,後端就先不提了。前端的框架也是層出不窮,使用最多的就是 angular、vue、react 。angular 是前幾年用的比較多,最近好 ...
之前一直用 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」 。