前言
假设接到一个新项目,首先考虑以下几点
- 使用何种类库,如何考虑技术选型?分别从哪几个维度去考虑?
- 项目目录如何组织(按角色还是按功能)
- dev和prod不同环境如何配置
- 团队内部其他系统都用了什么
- 多人合作开发,团队环境和代码规范问题如何解决?是否需要统一编辑器
- 是否需要出文档,教其他团队成员配置环境、安装依赖等
- 如果每个项目皆是如此,请考虑效率?(脚手架、cli)
- 如何稳定高效的推动项目,请考虑成本收益比,并考虑项目所需的人力、物力的各项支持
技术框架选型
考虑以下几个问题:
- 框架自身成熟度?
- 框架生态圈
- 框架主要解决什么问题?
- 团队:学习成本
- 项目周期:
- 项目维护成本
结论:最终决定在中小型项目中使用Vue,而大中型项目中使用React,而对于金融科技公司而言,中台复杂项目较多,从而选定以React为主,当项目周期短且交付压力大时仍采用使用Vue的策略。
项目目录
按角色
reducers/ #包含所有Redux 的reducer;
todoReducer.js
actions/ #包含所有action 构造函数;
todoActions.js
components/ #包含所有的傻瓜组件;
todoList.js
containers/ #包含所有的容器组件。
todoListContainer.js
“按照角色组织”的方式非常不利于应用的扩展。当你需要对一个功能进行修改,虽然这个功能只是针对某一个具体的应用模块,但是却牵扯到多个角色,而不得不在多个目录间跳转。
按功能
todoList/
actions.js #定义action 类型;
actionTypes.js #定义action 构造函数,决定了这个功能模块可以接受的动作;
index.js #导出该组件需要导出的所有内容,每个文件夹下都包含一个index文件也有利于直接引用文件夹名称就可以导出模块
reducer.jS #定义这个功能模块如何对应actions.js 中定义的动作;
views/ #包含这个功能模块中所有的React 组件
component.js #傻瓜组件
container.js #容器组件
filter/
actions.js
actionTypes.js
index.js
reducer.js
views/
component.js
container.js
每个功能模块对应一个目录,每个目录下包含同样名字的角色文件。当需要修改某个功能模块的代码时,只要关注对应的目录即可,所有需要修改的代码文件都能在当前目录下找到。
脚手架
为什么不用create-react-app
不满足当前团队的需求
不可以定制化,需要二次修改配置
没有开发组件的能力
结论:为什么不自己开发一个cli工具呢??
yeoman
npm install yo -g
把全局环境node_modules包下面的模板工程 copy 到你的当前项目路径文件夹下