包含三大块内容:电商平台需求分析、架构设计、前后端配合方式及数据接口定义
一、电商平台需求分析
1.电商平台有什么
购买:展示、购物车、下单、支付、订单中心
用户:账号体系、会员、用户行为、等级体系 、用户信息、地址
运营: 用户管理、订单管理、 商品管理、 财务管理、 客服系统 、推荐系统 、广告系统
统计:访问情况 、 成单率、 成交量、用户增长、推广效果、 转化率
市场:优惠折扣 、SEM、 SEO、代理 、推广
......
2.提炼核心需求
用户端: 展示 、购物车 、 下单 、支付 、订单 、用户
后台管理: 商品管理 、品类管理 、订单管理 、管理员登录
3.电商功能拆分
a.用户端
商品: 首页、商品列表、商品详情
购物车:购物车数量、添加删除商品、购物车提交
订单:订单确认(地址管理)、订单提交、订单列表、订单详情
支付:支付
用户: 登录、注册、个人信息、找回密码、修改密码
b.管理后台
商品管理:添加/编辑商品、查看商品、下架
品类管理:添加品类、查看品类
订单管理:订单列表、订单详情、发货
权限:管理员登录
二、架构设计
1.分层架构
定义: 把功能相似、抽象级别相近的实现进行分层隔离
优势:松散耦合(易维护、易复用、易扩展)
常见分层方式:MVC、MVVM
2.模块化
定义:解决一个复杂问题时,自顶向下逐层把系统划分成若干模块的过程
意义:解耦、可并行开发
模块化方案
- AMD--------- require.js在推广过程中的规范化产出
- CMD---------CJ.js在推广过程中的规范化产出
- CommonJS---------模块化语法较少,和业务是分开的(电商推荐使用)
- ES6---------类似commonjs,但是对旧版本浏览器不太友好,所以可以考虑在对兼容性要求不高的情况下使用
3.架构设计
4.技术选型
①.软件过程模型(选择瀑布模型?螺旋模型?还是敏捷开发?)
意义: 软件过程的不同会导致开发的流程也不同
- 瀑布模型(Waterfall Model) 是一个项目开发架构,开发过程是通过设计一系列阶段顺序展开的,从系统需求分析开始直到产品发布和维护,每个阶段都会产生循环反馈,因此,如果有信息未被覆盖或者发现了问题,那么最好 “返回”上一个阶段并进行适当的修改,项目开发进程从一个阶段“流动”到下一个阶段,这也是瀑布模型名称的由来
- 螺旋模型是一种演化软件开发过程模型,它兼顾了快速原型的迭代的特征以及瀑布模型的系统化与严格监控。螺旋模型最大的特点在于引入了其他模型不具备的风险分析,使软件在无法排除重大风险时有机会停止,以减小损失。同时,在每个迭代阶段构建原型是螺旋模型用以减小风险的途径。螺旋模型更适合大型的昂贵的系统级的软件应用。
- 敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视、可集成和可运行使用的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。
敏捷开发(推荐使用) 使用的最多,因为互联网公司的项目都有一个特点,善变,而敏捷开发最大的优势就是特别适合变化较多的项目
定义:以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发(是一种迭代的意识和方法,而不是概念和工具)
优点:能够应对满足不断变化的需求
不足:对团队成员的能力要求比较高
②.前后端的分离方式
意义:分离方式的不同会影响到前后端的开发效率
- 不分离
- 前后端共用同一项目目录,甚至页面内嵌js、css
- 本地开发环境搭建成本高
- 共同维护成本高
- 发布风险高
- 部分分离
- 后端负责页面模板(JSP/Velocity/Freemarker)
- 本地开发环境搭建成本较高
- 更新页面模板仍需后端协助,效率不够高
- 需要前后端同时发布
- 完全分离1
- 方案1-----------velocity,发布的时候同步到后端
- 优点: 完全分离,能直接生成动态的模板,利于SEO
- 缺点: 系统复杂度高、需要前后端同时发布
- 完全分离2( 推荐使用)
- 方案2: 纯静态html、完全通过接口做数据交互
- 优点: 完全脱离后端模板,系统复杂度低
- 缺点: 不太利于SEO
- 优化方案: Server Render/蜘蛛定制页面
③.框架的选择
主流框架:jQuery、Angular、Avalon、Vue、React 、CSS 、Less、Sass
我们的选型:要兼容ie8且方便SEO
选用:jQuery和CSS(前端)
React和Sass(后台)
④.构建工具选择
主流的
- Grunt(太过庞大和复杂)
- Gulp
- Webpack(天生支持commonjs)
⑤.版本控制
- SVN
- Git
⑥.发布上线的方案
发布过程
- 从git拉取待发布的代码
- 把代码进行编译打包
- 把生成的文件发布到线上机器
域名分布
三、前后端配合方式及数据接口定义
1.前后端职责范围
后端
- 数据存储
- 文件服务
- 数据接口
前端
- 数据请求
- 数据处理
- 页面展示
2.接口文档规范
格式
请求和响应
接口文档示例