1. 程式人生 > >心得分享:前端框架搭建參考( vue、react )

心得分享:前端框架搭建參考( vue、react )

從工作之初的requirejs,又經歷了nwjs、nodejs,到現在的vue、react-redux、react-native,也走過了一段不長不短的前端開發之路。本篇將分享一下我的前端框架的一點理解。現在最流行的前端框架要數 vue 和 react。按經驗,偏中、小型、要短時間內看到成果的我一般選擇使用 vue 開發;偏大型,對效能和維護要求較高的我會選擇用 react,個人偏好是更喜歡 react 的。針對vue 和 react 框架,我分別搭建了一套vue+vuex+router+stylus 和 react+redux+router+stylus 的參考框架例項,同時,裡面還封裝了基本的mvc模型、路由、代理、token驗證、懶載入、http請求、iconfont管理還有css樣式管理等模組,目錄結構請參考原始碼,如有不正確的地方請多多指正,原始碼 GitHub 地址:

react+redux+router+stylus 框架:https://github.com/smallH/react-web-project.git

vue+vuex+router+stylus 框架:https://github.com/smallH/vue-web-project.git

  • mvc模型和路由

vue目前較好的自然是 vuex 模型,而react一般選用是 redux。vuex 和 redux 都有一套規範的實現流程,對照著官網的語法和規範寫就好。這裡想講講的是路由,路由一般分Hash和History兩種模式,它們都屬於瀏覽器自身的特性。Hash模式下在訪問時地址中會帶‘#’號,如

https://music.163.com/#/my/ ,它的原理是監聽onhashchange事件,當url發生變化時,瀏覽器會記錄下來,因此前進後退都可以使用,在該模式下,由於請求頁面時‘#’號前面的真實路徑其實並沒有發生變化,僅Hash值改變了(#後面那串),所以瀏覽器沒有請求伺服器,如網易雲音樂就是Hash模式。History模式在訪問時地址不帶‘#’號,這種模式,還需要後臺的配置支援,如果後臺沒有正確的資源配置,當用戶在瀏覽器訪問就有可能沒有找到資源並返回 404,所以呢,這種模式要在服務端增加一個覆蓋所有情況的候選資源:當url匹配不到任何靜態資源,則應該返回同一個提示頁面。至於選擇何種模型,其實關係並不大,按照官網的推薦是使用History模式。

  • 重置瀏覽器樣式

前端開發除錯一般使用谷歌或火狐瀏覽器,在專案開發前要注意一定要重置瀏覽器預設樣式,否則進入質保測試階段很多麻煩就來了,各種由瀏覽器預設樣式差異引起的Bug,所以在開發專案前都應該注意:匯入一個樣式檔案,實現各類瀏覽器初始樣式都一致。

  • 代理服務

開發階段一般是前後端分離,前端在local本地除錯,這時請求服務端介面API通常會發生跨域異常,幸運的是,vue和react都提供可代理服務的模組,通過代理服務解決這類的跨域請求的問題。關於代理,vue的服務代理在config/index.js中配置,react在package.json中配置。

  • token和許可權驗證

token驗證一般在兩個地方,一個是發起http請求時,另一個是路由切換頁面時。發起http請求可以使用axios模組或fetch模組,以axios為例,在請求前進行攔截,把token新增到請求頭Header中並一起帶給服務端,讓伺服器去驗證token有效性。其次在路由切換頁面時,可以驗證當前token值是否存在或該頁面本使用者是否有許可權開啟,許可權配置可以從服務端獲取。react專案一般使用fetch 替代 axios 。

  • json-server

json-server是一個模擬後端資料介面的模組,當後端團隊的api介面還沒完成時,前端可以通過json-server由自己來模擬後臺資料,這樣就可以實現部分功能的前後端聯調。

  • 元件庫

開發團隊比較大的一般可以按需自己開發元件庫。我們也可以選擇第三方元件庫,vue通常會選擇ElementUI或IView,ElememntUI的維護更新團隊會比IView的大,ElememntUI當遇到大資料對部分元件(如樹狀列表)渲染時效能較好,故我會使用ElementUI。react 通常會使用 ant.design。

  • 圖示管理

圖示可以使用iconfont管理,它可以進行團隊協作製作和程式碼匯出、svg匯出,同時還有大批量的可參考樣式設計,非常適合作為前端專案的圖示管理。

  • 樣式管理

通常引用stylus作為樣式的預編譯,vue直接模板檔案中使用<style lang="stylus" rel="stylesheet/stylus" scoped>寫樣式即可,react可以通過react-css-modules來模組化管理樣式,也可以通過命名樣式常量,通過內嵌的方法管理樣式。

總之,文字在程式碼面前是多麼的蒼白,程式設計師最實在的還是看原始碼吧!希望這兩個框架模型能給一些初學 vue 和 reacr 搭建框架的朋友會有所幫助和參考作用,一起加油噢!!!