公司项目思考

本文是我的对于现有项目的一些思考,仅作参考。前端

背景

  • 因为公司内部项目较多,项目组之间成员缺少沟通,前端框架不统一,同一框架下UI框架选择也不尽相同。
  • 不一样的业务系统相同的功能模块重复开发,致使人力成本增长,效率低下。
  • 相同项目组成员水平良莠不齐,代码风格不统一,缺少必定的规范。
  • 缺少项目经验积累、开发规范、新人培训,试炼引导。
  • 开发过程当中各部门缺少沟通约定,各节点的产出没有必定的验收标准,不能保证每一个环节的质量。

目的

  • 统一项目(后台管理系统)架构
  • 规范开发流程
  • 项目生命周期各个环节都要有相关的标准(文档规范、验收标准、项目评估机制、上线流程等)
  • 完善成员内部的培训机制、项目试练、技术分享、头脑风暴等方式提升成员的实力
  • 提升成员的主人翁意识,精益求精的态度,提升眼界,知识面。

方案

因为本人是作前端项目开发出生,而且长期作后台业务系统开发,全部的思考也基于此展开。vue

从以往的工做经验来看业务系统能够概括为单/多业务系统聚合业务系统node

  • 单/多业务系统:指通常的后台管理系统
  • 聚合业务系统:项目一般由不少业务系统组成,各个系统开发技术不必定相同,可是都有统一的UI,做为iframe嵌入到公共外壳系统中。

聚合型适用于业务复杂,多条业务线同时独立开发,不少电商网站后台都采用这种方式。vue-cli

业务系统通用模块

这里列举了后台管理系统通用的模块及其细分类npm

权限模块

权限.gif

  • 登陆

用户登陆方式有不少种,像企业内部的Sass系统基本上都是员工在入职时分配好帐号,初次登陆后直接跳转到更改密码的页面。一些电商网站后台只要在外
登陆后内部系统一般就不须要再次登陆了。通常的网站后台则须要用户注册帐户后再登陆。小程序

登陆或者注册时的验证方式有不少种,大体概括以下:后端

登陆.gif

  • 受权

受权分为第三方受权,一般是微信、QQ、微博、知乎等常见应用直接共享信息登陆系统后再完善一些用户信息。对于Sass系统来说一般是直接分配帐号,用户直接登陆,从同一个入口进入的各业务子系统共享登陆状态。数组

  • 权限分类与角色

角色一般来讲就是管理员用户的区分,根据业务场景、地域跨度、公司人事体系的不一样又能够细分出不少角色。不一样的角色所能看到的,操做的功能是有所区别的。通常来讲权限主要是从路由、功能点来控制的。安全

  • 验证

为了保证系统的安全性,须要必定的机制来保证系统不被恶意、非法登陆修改信息。常见的手段为验证用户的邮箱、手机号、身份证验证、生物特征(面部)验证、常在登陆地验证及各类形式的验证码验证。前端框架

会员模块

会员管理对于电商系统来讲是很重要的一个功能点。不少电商项目都是围绕微信生态圏,所以会员也帖上了不少微信相关的标签。下面是一个常见会员信息的简单概括:

会员.gif

评论模块

评论模块常见于CMS系统、商品评论。对于评论而主要的操做就是发表评论、回复评论、删除评论、评论点赞、评论审核、喜欢评论、收藏评论等。

营销模块

有了会员固然少不了各类营销手段来留住会员,得到手续收益和吸引更多会员。常见的线上营销方式以下:

营销.gif

消息模块

这里把短信、通知、公告信息所有归在一块儿。

分销模块

分销主要是电商的微商中,按照国家规定最多3级分销。

支付管理模块

支付系统主要是管理支付帐单、支付流水记录、帐单的投诉等。

订单管理

商品下单管理。

统计模块

主要是在客户端进行打点统计各pv, uv信息,以可视化图表展现用户增加、用户访问量等。

素材管理模块

各类商品图片、字体图标管理。

客服模块

客服系统,商户与用户聊天。

库存模块

页面生成模块

使用拖拽方式动态构建页面,适用于H5页面,微信公众号、小程序。

其它模块

特定行业、特殊需求功能模块。

实现方案

统一架构,前端采用 “脚手架 + 业务组件库 + 可视化配置”,中间考虑到各上业务系统的灵活对接能够采用nodejs做为中间层做调度,后端服务能够灵活选择。

前端基于Vue框架体系,采用 "Vue + Vuex + Typescript + GraphQL + Yarn + Lerna",脚手架使用 npm + vue-cli 来生成带有基础功能的基础项目,业务组件库在必定的规范和契约下单独成库进行开发,作到插件的形式载入和卸载。因为项目为Web端,不是桌面应用,所以可视化配置生成项目代码的可行性不切实际,只能生成配置数组,经过前端已有的功能组件来解析数组生成页面。

中间nodejs层主要负责认证、接口的转发与合并、资源的调度、后台系统的对接、日志的统计等。

基于这个方案能够将一些适用于多个项目的低层功能融入脚手架中,开发新的业务系统时能够直接开发特定的功能,一些通用的模块直接引入。

业务组件库能够直接放在主项目仓库做为一个package,也能够在公司内部自建npm仓库管理后台托管项目代码。

难点:

  • 插件式业务组件如何实现才能保证扩展性、灵活性、完整性
  • 脚手架生成的项目的粒度多大
  • 产品和设计师要严格按照UI规范设计产品
  • 项目代码如何保证统一的规范
  • 创建完整的业务组件开发流程文档
  • 各业务组件系统之间如何互通
  • 可视化配置生成的页面灵活性和适用性
相关文章
相关标签/搜索