【React】基於Express與React製作的pwa小電商

基於Express與React製作的pwa小電商


項目介紹

  • 此項目有2部分組成,前端倉庫地址爲 https://github.com/yehuozhili/shop100frontend ,後端倉庫地址爲 https://github.com/yehuozhili/shop100backend 。
  • 前後端都由我一個人完成,無設計稿,圖片自己網上找的,使用rem適配,css寫的有點亂,後端測試部分未寫完。
  • 寫這個主要也是自己學習用,因爲我自己在裏面也手寫了很多功能,下面項目特色會展示出來。
  • 項目最後部署我是使用https發揮pwa威力,不然在http下pwa沒有多少意義。部署後感覺第一次訪問網站有點墨跡,跟一開始本地跑速度差的有點多,還有很大優化空間。不過後續訪問會有serviceworker執行緩存就會快很多了。
  • 這裏還要感謝下教我技術的老師,特別是張仁陽老師和姜文老師,我的react和張仁陽老師學的,基礎部分和姜文老師學的,本來我連個手寫promise都搞不懂到底怎麼回事,以爲自己可能不適合搞這個,後來一次公開課聽了姜文老師那節promise給我很大的信心。

項目特色

  • 手寫的虛擬化列表組件,在歷史記錄和首頁處使用了這組件

  • 登錄註冊,地址功能,收藏功能,購物車小動畫,加載頁面動畫等,爲了方便改造,註冊完可以直接登錄。



  • 搜索帶自動補全功能,雖然我感覺我這實現沒寫好。

  • pwa安裝應用


  • pwa離線緩存

  • 手寫分片上傳,後來沒有采用,但是前後端代碼都保留着。

  • 自定義hook解決安卓機鍵盤遮擋

線上體驗地址

https://www.yehuozhili.xyz:5677/#/

項目使用

  • 下載前後端項目後進行npm install安裝,命令在package.json裏都有。
  • 後端需要建立.env文件,照着.env.example配置一些信息。
  • 前端src下有個env.tsx文件,寫了後端地址。
  • 另外如果不使用https,html上的一個http轉https的meta標籤可以去了,serviceworker也可以不用。將其剝離出去就行。
  • 我部署項目使用的是docker,後端項目基於pm2鏡像製作,前端項目基於nginx製作。https是申請的免費證書。自簽名證書瀏覽器不認的。

項目結構

  • 前端主要使用react,redux,thunk完成主要邏輯,pwa部分靠workbox。
  • 目錄結構:
|─api     ------- 後端請求
├─assets  ------- 資源文件
│  ├─images 
│  └─style  ----- 公用樣式
├─components ---- 公用組件
│  ├─CityPicker
│  ├─hooks   ---- 自定義鉤子
│  ├─Loader
│  ├─Nav
│  ├─Search
│  ├─Tabs
│  ├─Upload
│  └─Virtualize
├─routes      ---- 路由組件
│  ├─Cart 
│  ├─Home
│  │  └─components
│  │      ├─HomeHeader
│  │      ├─HomeProduct
│  │      └─HomeSlider
│  ├─Login
│  ├─ProductDetail
│  ├─Profile
│  │  └─component
│  │      └─ProfileCollection
│  ├─ProfileCollection
│  ├─ProfileEdit
│  ├─ProfileForget
│  ├─ProfileHistory
│  ├─ProfilePackage
│  ├─ProfileReceive
│  ├─ProfileReceiveAdd
│  ├─Register
│  ├─Search
│  └─Settle
│      └─components
│          └─AddressSelect
├─store 
│  ├─actions  ----派發action
│  └─reducers ----reducer邏輯
├─typings   ------ 聲明文件
└─utils      -----公用函數
  • 後端主要使用express完成。
  • 目錄結構:
├─controllers  ---控制器
├─exceptions  --- 錯誤處理
├─middlewares ----中間件
├─models      ----模型
├─public       ---靜態資源
│  ├─detail
│  ├─images
│  │  └─uploads --上傳目錄
│  ├─products
│  └─sliders
└─utils        --- 通用邏輯

需要改造點

  • 1、登錄註冊部分未驗證郵箱。
  • 2、首頁圖片太大太多以及邏輯太多,需要精簡,加快首頁渲染時間。
  • 3、支付後面邏輯未寫。
  • 4、包裹查詢邏輯未寫。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章