前端项目指南 - 旨在写出一份指导前端工程师掌握快速开发前端项目的文档指南。
如果你是一位战士,那么把项目当成你的敌人。 你想快速高效的解决它,同时一次比一次快,一次比一次快完美。 所以,在开战之前,努力做到百分百了解它。 知己知彼,百战百胜。
取决于你对开源项目的态度,及空闲时间饱和程度。
某位名人讲过一句话," 公司或者团队的工作效率,必定与其组织架构存在关系。 "
跟产品经理\UI沟通,一起整体的过一次项目,了解项目的业务需求和流程。对业务理解得越发深入细致,会让后续的修改越来越少。
-
项目业务与需求
-
沟通需求 与产品经理\UI\客户沟通项目的业务需求。构思业务的流程图。
-
整理需求 需求的不明确,不合理,冗余都需要沟通细节,拒绝不合理、无实用性质的需求。复杂的需求根据其业务流程步骤,如果能够delay就放到后面实现,否则在一起开始就要做好详细的应对措施和Plan B。
- 不明确 - 产品或者客户无法给出准确业务场景的,既是不明确的。
- 不合理 - 需求也必定是结合用户、业务场景的,否则是无意义,无实用性质的。
- 冗余 - 过度设计
-
流程设计 画业务流程图,可以用大脑,也可以借助工具。
-
-
项目的计划时间 项目经理给出的时间,是否合理?项目经理在规划时间时,如果项目经理不熟悉前端技术,给出的时间通常会考虑你的看法。但如果你自己没有合理的计划时间,那么压力也得自己扛了 - 悲剧。
- 根据业务流程图中各个环节的复杂度计划业务的时间 - 需要尽量考虑到不可控因素带来的影响。
- 业务流程图越仔细,则时间的计划也能更精准。
- 由于你不可能一直全身心的投入项目,不要逼自己太紧,有过大的压力 - 加班太晚容易死得早,压力太大容易对自己失去信心。
- 项目经理非要不合理的压榨你的时间,辞职吧。
-
项目中需求的优先级
- 根据业务流程和复杂度评估业务的优先级
- 先实现简单和拿手的业务,再解决你不熟悉的业务
- 当你觉得自己写得真正慢时候
- 压力?心事?
- 空气?缺氧?
- 环境?
- 业务流程图中难点有哪些?
- 还有疑问的地方?是不管/delay,还是必须弄明白?
- 整个项目开始构建,开始跑起来。
-
UI 设计 对业务流程的理解,除了PM之后,那么剩下的应该是合格的UI了。然后就是开发者。 所以此时应该是 PM -> UI -> Dev -> UI -> PM -> UI -> Dev ...
与一名优秀的UI合作,和与一名思路清晰的开发者合作的感觉一致。
-
数据库\接口的设计
- 业务是产品的核心,而前端需要和后端一起了解和设计产品的业务数据模型。它的好处有很多:
- 是对业务的认识理解更深
- 对业务的整体框架理解更全面
- 对业务的数据结构更熟悉,更得心应手
- 开发时的帮助很大,能清晰的反馈后台接口的错误
- 业务是产品的核心,而前端需要和后端一起了解和设计产品的业务数据模型。它的好处有很多:
-
前端架构设计
后端的架构师是技术选型、语言选型�、分布式、数据库、微服务、公用接口的设计。那么前端的架构师,就是�框架选型、业务逻辑、业务流程、构建工具、前后端沟通与合作模式、中后台及其公用组件的�系列设计。
-
是否需要自己构建?
- 你的构建目标?
- 这个构建工具需要做哪些事情?
- 它构建单页面or多页面应用?
- 选择哪个构建技术?webpack,gulp, �或再撸一个?
- 设计中你可能会用到的工作流(work flow)?
- 如何设计切换工作流时(staging, development, test, production)的变量?例如:API_URL在不同环境是不一样的。例如 CRA 使用的是
.env
文件。 - 让构建工具尽可能高效的工作。
- 你的构建目标?
-
选择现有的构建工具
- React
create-react-app
- Vue
vue-cli
- Angular
ng-cli
- React
2 框架选择
1. React - 写React的体验,就是在写JavaScript
2. Vue - Vue快速开发,最爽的 MVVM,渐进式体验
3. Angular - 无话可说,�适合后端程序员�快速上手的前端框架
3 技术调研
1. 业务中的难点,不熟悉的技术场景,牛逼的组件等
2. 会用到的三方库,评估和选择,与当前技术栈的接入成本,维护成本
3. 是否要自己造?时间、技术、投机成本
4 技术确定
1. 技术栈
2. 组件库
3. 三方库
4. 造轮子
具体业务的落地和实现,在前端业务中是界面、交互、流程、逻辑的实现。
-
界面
- 这个是UI水平的体现,也是前端基本功的体现。
- 通常码界面是简单,尽管对后端程序员来讲CSS有一点难受。
-
交互
-
流程
-
逻辑
-
复杂的前端特效
- 理出清单,想出对应解决思路。 1.1 能否自己写出来? 1.2 是否必须使用三方库? 1.3 三方库的维护成本? 1.4 借助第三方库自己造?
- 无法实现?这是真的吗?
- 技术的无法实现?
- 还是没人实现过?