我的做品:一個技術棧koa2+ mysql+react + antd的我的博客

前言

此項目是我的博客,有前端界面+後臺管理系統;目的是當作react和node的練手項目,同時還能夠了解到服務器nginx部署web站點以及備案和域名的基本操做流程。前端


項目預覽地址

https://www.lxsblog.cnvue


GitHub地址

https://github.com/LinWeb/blognode


體驗地址

  • 博客主頁

http://39.105.133.130:8088/mysql

  • 後臺管理系統,管理員帳號密碼:admin/admin

http://39.105.133.130:8088/adminreact


界面截圖

  • 博客主頁

image.png

  • 後臺系統主頁

image.png


技術棧

前端技術棧

react + antd + react-router + react-redux + axioswebpack

後端技術棧

koa2 + koa-router + mysql + sequelizeios


項目結構詳解

後端項目結構

├── app                             //前端項目
├── config                          //項目配置
│   ├── db.js                       //數據庫配置文件
│   └── index.js                    //token的key名
├── controller                      //控制器
├── lib                             //工具
│   ├── bcrypt.js                   //密碼加密
│   └── token.js                    //登陸token
├── middlewares                     //中間件
│   ├── checkAuth.js                //檢查是普通用戶仍是管理員
│   ├── checkToken.js               //檢查是否已經登陸用戶
│   └── errorHandler.js             //錯誤中間件
├── model                           //數據表模型
├── router                          //路由配置
├── app.js                          //項目入口
└── README.md                       //項目說明

前端項目結構

└── src                             //項目主體
    ├── assets                      //資源文件夾
    ├── component                   //組件庫
    │   ├── web                     //前臺界面組件庫
    │   ├── common                  //公共組件庫
    │   └── admin                   //後臺管理系統組件庫
    ├── config                      //配置文件夾
    │   ├── api.js                  //接口配置文件
    │   └── routerConfig.js         //路由配置
    ├── lib                         //放置插件和工具
    │   ├── axios.js                //axios全局配置
    │   ├── checkAuth.js            //檢查是不是普通用戶仍是管理員
    │   └── marked.js               //markdown轉換器
    ├── router                      //路由
    │   ├── admin.js                //後臺路由
    │   ├── index.js                //路由入口
    │   ├── main.js                 //路由中間件
    │   └── web.js                  //前臺路由
    ├── service                     //接口請求
    ├── store                       //數據倉庫
    ├── view                        //前臺頁面
    │   ├── web                     //前臺界面頁面
    │   ├── common                  //公共頁面
    │   └── admin                   //後臺管理系統頁面
    └── index.js                    //項目入口

項目運行

  • 配置數據庫

安裝mysql,新建一個名稱叫「blog」的數據庫nginx

  • 安裝依賴

項目根目錄和根目錄的app目錄下分別安裝git

npm install
  • 啓動項目

項目根目錄和根目錄的app目錄下分別啓動github

npm start

後臺模塊

  • 文章

    • 文章列表
    • 文章詳情
    • 標籤篩選
    • 分類篩選
    • 新增文章
    • 刪除文章
    • 更新文章
  • 標籤

    • 標籤列表
  • 分類

    • 分類列表
  • 評論

    • 評論列表
    • 新增評論
    • 刪除評論
  • 回覆

    • 新增回覆
    • 刪除回覆
  • 用戶

    • 註冊用戶
    • 用戶登陸
    • 用戶列表
    • 刪除用戶
    • 更新用戶
    • 校驗用戶名是否已註冊過

項目優化

目前,已優化了一部分,首次加載須要3,4秒的時間,因爲目前租的雲服務器的寬帶只有1M。
到如今作的優化有如下幾點:

  • antd作按需加載
  • highlight.js高亮依賴包只引入須要的模塊
  • 前端webpack+nginx 使用GZIP壓縮,不採用koa後端壓縮,減小I/O的消耗
  • webpack配置splitChunks切割模塊代碼,生成多個模塊js文件
  • 採用自定義高階組件bundle.js+import(''),按需動態加載組件

持續優化中~


項目總結

  • 開始作這個項目的時候,先明確項目的需求,而後設計好數據表,考慮到數據表的聯繫
  • 由於項目是使用sequelize操做mysql,因此要提早了解開發文檔,否則會走不少坑
  • 我的來講,使用react的一個缺點是對數據監聽方面沒有vue用起來順暢
  • 使用antd這個react組件庫,帶來了界面設計方面的便利,本身只是再作一些樣式的優化便可
相關文章
相關標籤/搜索