React製作個人部落格小結

williamslau發表於2018-07-09

身為一個工作三年的前端萌新,怎能沒有自己的個人部落格,初中高中也都是三年時間,做一個人部落格,也當給自己這三年交一份作業。

廢話少說,進入正題

部落格連結:http://dazhi.zbzero.com(因為域名還沒又通過備案,先從朋友那裡解析出來了一個)

整個專案中:

後臺用的egg.js

資料庫用的mongodb+mongoose,

前端用的react+redux+react-router-dom

antd.js做UI庫

這篇文章主要講的是前端的部分

首先先貼一下專案目錄解構

React製作個人部落格小結

如圖所示,

pages - 所有的頁面資料夾

components - 放元件的資料夾

service - 統一管理介面的資料夾

store - redux狀態管理資料夾

style - 靜態資原始檔夾 (後期上線之前將所有圖片放到了阿里雲oss物件儲存中,在頁面直接引入的網路連線)

因為引入了antd.jsUI庫所以首先要先按照官網上的配置一下

首先我們需要按需引入

mport {Row, Col, Layout} from 'antd';複製程式碼

然後配置按需載入,

安裝 react-app-rewired

cnpm i react-app-rewired -S複製程式碼

再將package.json中的scripts修改為

"scripts": {
  "start": "react-app-rewired start",
  "build": "react-app-rewired build",
  "test": " react-app-rewired test --env=jsdom",
  "eject": " react-app-rewired eject"
},複製程式碼

專案根目錄建立一個 config-overrides.js 用於修改預設配置。

配置自定義主題

安裝 babel-plugin-import 

cnpm i babel-plugin-import -D複製程式碼

安裝react-app-rewire-less

cnpm i react-app-rewire-less -D複製程式碼

編輯 config-overrides.js

const {injectBabelPlugin} = require('react-app-rewired');
const rewireLess = require('react-app-rewire-less');
module.exports = function (config, env) {
    config = injectBabelPlugin(['import', {libraryName: 'antd', style: true}], config);
    config = rewireLess.withLoaderOptions({
        modifyVars: {"@primary-color": "#dbd3af"},  // 配置的主題顏色
    })(config, env);
    return config;
};複製程式碼

之後再重啟react

配置路由

React製作個人部落格小結

React製作個人部落格小結

React製作個人部落格小結


頁面最外城包一層router,history可以控制路由跳轉事件,中間可以做一些判斷(本人沒用上)

redux配置

如路由上的圖所示,我用了react-redux的Provider,connect進行資料傳輸,將store繫結到props上,這樣無論是父子元件資料傳輸,孫爺元件傳輸,還是同級元件資料傳輸,react-redux全部搞定。

在redux中引入外掛

主要用到了logger和promise promise主要是用來做非同步操作的,thunk能做到的promise同樣也能做到,所以thunk就沒怎麼用,logger是用來列印的

React製作個人部落格小結

在頁面中呼叫connect,這樣看其實connect就是函式執行返回另一個函式,函式裡面巢狀的元件,其實就是高階元件的用法。(元件巢狀元件)

React製作個人部落格小結

介面配置

在redux的actions中請求介面

React製作個人部落格小結

在元件中呼叫介面

React製作個人部落格小結

然後資料就會通過connect繫結到props上,可以直接用了

React製作個人部落格小結

介面用的axios,再index中講介面做了封裝,因為用的egg,所以增刪該查方法都是寫死的method.

React製作個人部落格小結

介面的二次封裝

React製作個人部落格小結

在元件的編寫中儘量的可複用化,同時也用到了高階元件,上面提起過,高階元件就是函式呼叫以及類的繼承。

React製作個人部落格小結

React製作個人部落格小結

其實整個部落格像我這麼搭建起來實在是過於的繁瑣了,如果在真實專案中是完全沒必要的,怎麼簡單怎麼來,但是基於學習的目的,我還是想將我學到的東西經過這次機會進行總結和實踐,整個專案下來,使我對redux的理解變得非常的深刻,同時也對vuex有了一些其他的靈感,有可能過一陣閒下來我會在以同樣的方式寫一版vue的部落格頁面或者別的,總之這樣的學習方式雖然很痛苦,還是比較慣用的。


相關文章