以前一直用 vue 作一些小項目,最近接觸了一個項目是用 react 作前端,雖然自己是作後端開發的,可是前端仍是要了解一點的。前端
如今的項目基本上都是先後端分離的,後端就先不提了。前端的框架也是層出不窮,使用最多的就是 angular、vue、react 。angular 是前幾年用的比較多,最近好像用的人沒那麼多了。vue 是華人開發的項目,也是這三個框架裏上手最簡單的。react 是 fecebook 開源的框架,市場佔有率也是最高的,國外的公司和國內的一些大公司用的比較多。vue
我也不是專業前端,學習 react 也是一時興起,講不了什麼高深的東西,就來講說入門 react 的一個過程,僅僅是入門而已。node
不光學習 react 須要儲備一些前端的知識,學習 vue 等前端框架一樣須要。react
稍微瞭解一下 nodejs ,前端框架的原理是這樣的,並非像咱們以前那樣直接寫操做 DOM 的 js 腳本或者使用 jquery,而是用 ES五、ES6 、TypeScript 等標準去組織項目代碼,這其中須要用到 nodejs 的不少包,最後編譯的時候,把用這些標準組織的代碼編譯成咱們一般意義上的 js 代碼,而後在瀏覽器執行。jquery
會使用 npm ,這是一個包管理工具,對比 Java 來講,它就相似於 maven,能夠方便的管理項目中使用的包。webpack
webpack 瞭解一點,webpack 是一個現代 JavaScript 應用程序的靜態模塊打包器,咱們項目開發和編譯使用的命令 dev、start、build 最後都是由 webpack 幫咱們完成的。web
我這裏只是說一下我學習的過程。打開 Google,先去找 react 官網,有英文的和中文的,由於英文的看着費勁,因此就看了中文官網 https://react.docschina.org/。 花大概兩個小時,把每一個小結都看完,也就是作個大概瞭解,瞭解 react 究竟是怎麼一個機制,具體到寫代碼的時候確定仍是要返回來查的。學任何東西其實都是同樣的,不能上來就拿一個 demo 開始改,確定要先宏觀的瞭解一下這項技術優缺點、運起色制,而後再鑽到細節裏。shell
看完官方文檔後,開始建立一個小項目寫寫簡單的代碼。 react 爲了方便入門,提供了一個腳手架工具,create-react-app,只須要運行簡單的命令就能建立一個 react 項目出來。npm
先用 npm 全局安裝 create-react-app 包。redux
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」 。