webpack项目篇(六十六):react 全家桶 和 webpack 开发 h5 商城项目的整体思路

简介: webpack项目篇(六十六):react 全家桶 和 webpack 开发 h5 商城项目的整体思路

说明

玩转 webpack 学习笔记



商城技术栈选型

前端:

  • react 全家桶 + webpack + axios + lib-flexible + slick-carousel

后端:

  • koa + mysql + sequelize



商城架构设计

image.png

商城界面 UI 设计

f4d74960d38e465598ad9367d7079ef7.png


React 全家桶环境搭建


1、初始化项目

npm init -y


2、创建项目目录

创建 actions、reducers、store 等


  • src/actions/ 放置所有的 actions
  • src/reducers 放置所有的 reducers
  • 使用 Provider 传递 store,Store 通过 Provider 传递给容器组件


0958100c07674f548ae15c6980406d54.png


3、安装依赖

安装 react、react-dom、redux、react-redux

npm i react react-dom redux react-redux -S


安装 @babel/core

npm i @babel/core -D


安装 geektime-builder-webpack 用于 webpack 的配置

npm i geektime-builder-webpack -D


这里的脚本都是用的 builder-webpack-geektime 里面的

package.json

{
  "name": "shopping-h5",
  "version": "1.0.0",
  "description": "shopping h5",
  "main": "index.js",
  "scripts": {
    "dev": "webpack-dev-server --config ./node_modules/builder-webpack-geektime/lib/webpack.dev.js --open",
    "build": "webpack --config ./node_modules/builder-webpack-geektime/lib/webpack.prod.js",
    "build:ssr": "webpack --config ./node_modules/builder-webpack-geektime/lib/webpack.ssr.js"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": {
    "axios": "^0.19.0",
    "lib-flexible": "^0.3.2",
    "react": "^16.8.6",
    "react-dom": "^16.8.6",
    "react-redux": "^7.1.0",
    "react-slick": "^0.25.2",
    "redux": "^4.0.4",
    "redux-logger": "^3.0.6",
    "redux-thunk": "^2.3.0",
    "slick-carousel": "^1.8.1"
  },
  "devDependencies": {
    "@babel/core": "^7.4.4",
    "@babel/plugin-proposal-class-properties": "^7.5.5",
    "@babel/plugin-syntax-dynamic-import": "^7.2.0",
    "@babel/preset-env": "^7.4.4",
    "@babel/preset-react": "^7.0.0",
    "builder-webpack-geektime": "^1.0.3",
    "webpack": "^4.31.0",
    "webpack-cli": "^3.3.2",
    "webpack-dev-server": "^3.3.1"
  }
}



数据库实体设计

部分表字段


5cb6f995ffc74ee0a2cf5d5cf1d5d57b.png



功能开发要点


浏览器端


  • 组件化,组件颗粒度尽可能小
  • 直接复用 builder-webpack-geektime 的构建配置,无需关注构建脚本

服务端

  • MVC 开发方式,数据库基于 Sequelize
  • Rest API 风格
  • 采用 JWT 进行鉴权


JSON Web Token 工作原理

a87e4e9f11c3402dbe581fa8a9e0c71e.png




谈谈 Web 商城的性能优化策略

渲染优化


  • 首⻚页、列列表⻚页、详情⻚页采⽤用 SSR 或者 Native 渲染
  • 个人中心页预渲染

弱网优化

  • 使用离线包、PWA 等离线缓存技术

Webview 优化

  • 打开 Webview 的同时并行的加载页面数据



代码

有部分代码,可以参考这个:https://github.com/kaimo313/webpack-demo


d0d25ba060b14b7d8f12d69ab06db954.png











目录
相关文章
|
4天前
|
设计模式 存储 前端开发
React开发设计模式及原则概念问题之自定义Hooks的作用是什么,自定义Hooks设计时要遵循什么原则呢
React开发设计模式及原则概念问题之自定义Hooks的作用是什么,自定义Hooks设计时要遵循什么原则呢
|
1月前
|
前端开发 JavaScript 安全
TypeScript在React Hooks中的应用:提升React开发的类型安全与可维护性
【7月更文挑战第17天】TypeScript在React Hooks中的应用极大地提升了React应用的类型安全性和可维护性。通过为状态、依赖项和自定义Hooks指定明确的类型,开发者可以编写更加健壮、易于理解和维护的代码。随着React和TypeScript的不断发展,结合两者的优势将成为构建现代Web应用的标准做法。
|
2天前
|
JSON 前端开发 JavaScript
使用vite搭建一个React项目!真香!
【8月更文挑战第13天】使用vite搭建一个React项目!真香!
12 3
使用vite搭建一个React项目!真香!
|
6天前
webpack——通过webpack-bundle-analyzer分析项目包占比情况
webpack——通过webpack-bundle-analyzer分析项目包占比情况
11 2
webpack——通过webpack-bundle-analyzer分析项目包占比情况
|
4天前
|
前端开发 C++
使用 Vite 创建 React+TS+SW 项目并整合 AntDesign 、Scss 等组件或插件
本文记录了如何使用Vite创建一个React+TypeScript+Service Workers(SW)项目,并整合AntDesign组件库和Scss等插件,包括项目的创建、配置问题解决、AntDesign和Scss的整合方法。
16 1
|
7天前
|
移动开发 前端开发 JavaScript
"跨界大战!React Native、Weex、Flutter:三大混合开发王者正面交锋,揭秘谁才是你移动应用开发的终极利器?"
【8月更文挑战第12天】随着移动应用开发的需求日益增长,高效构建跨平台应用成为关键。React Native、Weex与Flutter作为主流混合开发框架各具特色。React Native依托Facebook的强大支持,以接近原生的性能和丰富的组件库著称;Weex由阿里巴巴开发,性能优越尤其在大数据处理上表现突出;Flutter则凭借Google的支持及独特的Dart语言和Skia渲染引擎,提供出色的定制能力和开发效率。选择时需考量项目特性、团队技能及生态系统的成熟度。希望本文对比能助你做出最佳决策。
28 1
|
7天前
|
前端开发
React——开发调式工具安装【五】
React——开发调式工具安装【五】
10 0
React——开发调式工具安装【五】
|
21天前
|
JavaScript Windows
安装node.js与webpack创建vue2项目
安装node.js与webpack创建vue2项目
17 1
|
3天前
|
前端开发 JavaScript API
React学习-初始化react项目
【8月更文挑战第16天】
|
4天前
|
设计模式 前端开发 JavaScript
React开发设计模式及原则概念问题之什么是HOC(Higher-order component),HOC遵循的设计原则都有哪些
React开发设计模式及原则概念问题之什么是HOC(Higher-order component),HOC遵循的设计原则都有哪些