摘要:引言兩個月前用全家桶實現過一次酷狗音樂,最近又用全家桶重構了下,最終成果和的實現基本一致,放個圖手機預覽戳版本版本。的行為結構表現分離,很明顯,而的分離雖然不是很明顯,但實際上也是有的。發送指令,最終會到里合并數據,與中的類似。
引言
兩個月前用 Vue 全家桶實現過一次 酷狗音樂,最近又用 React 全家桶重構了下,最終成果和 Vue的實現基本一致,放個圖:
手機預覽戳 Vue 版本, React 版本。
demo 選擇本來想用 React 全家桶重新選個項目,但是沒有找到合適的,最終就重構了下,因為這個項目難度適中,非常適合練手。
接近 10 個單頁,內容不多不少,需要 router
音樂播放作為全局組件,數據全局共享增刪改,需要 redux, vuex
好幾個公共組件,可以封裝復用
項目源碼在 這里,歡迎大家 star、fork
項目對比我從根目錄開始分析,左邊 vue 右邊 react
根目錄 src 目錄這里有幾個區別:
React 版本并沒有 router 文件,因為它支持 path 和 component 屬性,來定位要渲染的組件,就像這樣:
而 Vue router 似乎并沒有提供 path 和 component API ,所以必須要到 Router 配置里去讀取 path 和 component 屬性。
React 也沒有 mixins, 因為用 HOC 取代了 mixins。以我放在 components/HOC/index.js 里的代碼為例:
而且,你也可以在里面加上生命周期鉤子等等,實際上,React 之前也是采用 mixins 實現的,不過后來改了。
一個 .vue 組件對應 React 中三個文件?在很多情況下,是這樣子。Vue 的行為結構表現分離,很明顯,而 React 的分離雖然不是很明顯,但實際上也是有的。以 App.vue 為例
App.vue 里的 style 對應 React 里的 App.less ,毫無疑問
App.vue 里的 template 和 props 對應 React 里的 App.js ,React 稱為 Presentational Components,一般只有一個 render 方法 return html, 譬如:
App.vue 里剩余的部分,包括 ajax, mapState, 狀態的變更,以及生命周期鉤子等等,都是對應 React 里的 AppContainer.js ,React 稱為 Container Components. 如圖:
實際上, AppContainer.js 負責行為邏輯,而 App.js 負責結構展示, App.less 負責樣式表現,依舊是 行為/結構/表現 的分離。只不過與 Vue 稍有不同而已。這一點上,React 多費些腦力和膠水代碼。
Vuex 和 redux 目錄這里跟我的實現有關系,redux 可能是比 Vuex 麻煩些,但不至于圖示如此夸張。因為我重構的時候改了邏輯。
selectors 和 Vue 中的 getters 有相似,但底層原理不同。舉個例子,我們如果要從一個巨量的 array 里找到某個數據,比較耗性能怎么辦?很明顯可以對參數做個緩存,如果查詢 id 和上一次一樣,就返回上次的結果,不查詢了。selectors 做的就是這個事。
React 的 actions 和 Vuex 中的 actions 類似,都是發送指令,但不操作數據。
actions 發送指令,最終會到 reducers 里合并數據,與 Vue 中的 mutations 類似。
如果你注意的話,就會發現,reducers 里合并數據總是返回一個新對象。而 Vuex 中,我們是直接修改 state 的數據的。
這里其實牽涉到了 Vue 和 React 中的一個大不同。
總結總體的目錄和架構是類似的,不過具體用起來差別還不小。
技術棧的廣度Vue 全家桶只要加上 Vuex 和 Vue-router 就可以了,而 React 在讀完 redux, react-redux, react-router 文檔之后,會發現他們還拆分、引出了不少東西,譬如 reselect, redux-thunk 等等,并且 redux, reselect還不是局限于 React 的。
API實踐過程中,發現 Vue 中的一些類似的 API 在 React 中被進行了重構,比如 React 用 createRef 取代了 ref="string",用 HOC 取代了 mixins 等等,雖然有些不習慣,但是感覺還好。
求職本人最近正在找工作,有興趣的歡迎私信哦,坐標上海,半年經驗,比較了解 Vue+es6,了解一點 React,具體簡歷 戳這里
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/101409.html
摘要:,在聽音樂的時候忽然想聽騰格爾的鋼鐵之翼隱形的翅膀,在網易云上卻找不到,就很氣。于是想到了做一個,音樂搜索的功能,把所有想聽的歌,能夠一次性在酷狗網易云蝦米等平臺上找找完。本項目非常適合新手練習熟悉全家桶,歡迎哦。 React-music React Music WebApp,在聽音樂的時候忽然想聽騰格爾的鋼鐵之翼(隱形的翅膀),在網易云上卻找不到,就很氣。于是想到了做一個,音樂搜索的...
摘要:調用鉤子渲染一波,然后把渲染后的元素賦值給并取代。大和小同為漸進式框架,提供了大量的對數據視圖去進行處理。微信小程序我選擇用原生主要是因為預覽還要再開一個很不開心。 前言 刷了一波 react 文檔,想找個東西練練手,在網上一看,什么實現一個 網易云、酷狗音樂、豆瓣 感覺找接口都夠費神了,之前做過 vue 實現餓了么的一個系統,圖片資源,mock 數據齊全,再加之樣式寫過了,所以直接就...
摘要:學習成本很低,另外官方有比較完善的中文文檔。簡單本身是沒有錯誤,一個東西能以簡單的方式解決難道不好嗎關于這個中文文檔居然還有人噴那些喜歡用的是不是英文能力差,我就再報以呵呵一笑。本身擁有中文文檔就是一個優勢,結果還成了被噴的地方。 前言 由于這段時間工作上也是挺忙的,就沒有時間去寫這個項目,中間一直都是寫寫停停,進度也是非常慢的。正好前幾天都還比較空,就趕緊抓著空閑時間去寫這個項目,最...
摘要:哪吒別人的看法都是狗屁,你是誰只有你自己說了才算,這是爹教我的道理。哪吒去他個鳥命我命由我,不由天是魔是仙,我自己決定哪吒白白搭上一條人命,你傻不傻敖丙不傻誰和你做朋友太乙真人人是否能夠改變命運,我不曉得。我只曉得,不認命是哪吒的命。 showImg(https://segmentfault.com/img/bVbwiGL?w=900&h=378); 出處 查看github最新的Vue...
閱讀 3062·2021-10-12 10:12
閱讀 1569·2021-09-09 11:39
閱讀 1845·2019-08-30 15:44
閱讀 2339·2019-08-29 15:23
閱讀 2898·2019-08-29 15:18
閱讀 2960·2019-08-29 13:02
閱讀 2688·2019-08-26 18:36
閱讀 733·2019-08-26 12:08