Q&A about FED

##前后端开发解耦Q&A

  1. Mock文件怎么写?麻烦吗?写Mock文件是不是会增加开发成本?数据不是可以写死在页面进行交互效果测试吗?

FED的Mock写起来非常简单的,示例如下:

Mock 文件改动会立即生效,并且Mock中的数据可被重复利用。这就是所谓的Mock Controller全部,可以使用coffee编写,语法灵活简洁。Mock将前端的页面与数据分离,更加方便开发和调试,抽离出的数据可以被重复使用,同时Mock作为前后端接口的完整描述,使前端更易于易手和读懂项目,还要“将数据写死在页面”吗?

  1. 让前端参与前后端接口设计,对前端是不是要求太高了?人员上是不是耦合了?后端不能完全抛开JS。
    我认为后端没必要修改前端代码,包括JS、FTL。前后端开发不应互相依赖。后端负责提供数据,前端负责界面展现,后端不需要关心前端代码如何组织、页面结构怎样及怎样与用户交互。“对前端要求太高”吗?我认为让后端改前端代码要求也很高,而且前端写的代码还要保证让后端看得懂而且会改,这样问题就不仅仅是工程开发问题了。还是让更合适的人做更合适的事吧。

页面的交互效果跟数据是耦合的,将这里作为切入点进行解耦,最终结果可能是多人共同编写同一个文件中的代码,由于互相的依赖,这无法实现并行开发。前后端修改同一个JS文件,我觉得这样才是“人员上耦合了”。

前端内部是可以再细分的,但前端与后端,应该像是两个函数之间的关系——彼此只关注输入的参数及输出的结果。FED让前端开发不再依赖后端的环境和代码,通过明确的接口约定,免去了后端修改前端代码的痛苦,明确了协作的界限,“后端不能完全抛开JS”的BUG我们解决了。

  1. 是不是前端人员不在,后端人员要改一下css或者js都很难?希望小项目流程不要搞得太复杂。

同意小项目流程不搞太复杂,流程和工具的选择也应根据项目周期、业务模式、人员配置、后期维护特点等进行综合选择。这套方案主要为优化和改进前后端开发人员分工合作及联调的工作流程,希望通过工具的使用和流程的规范,能够解决现有流程中会影响开发效率、降低开发质量和增加维护成本的问题。如果一个项目仅由几个人完成,而项目的分工又是每个人从前端做到后端,那可能完全不需要此套流程规范。

前端同样需要合理的架构和规划,及使用一些代码压缩优化策略,同时为提高开发效率及降低代码维护成本,前端会用一些编译、构建等自动化工具,使最终生产代码执行效率更高,更省带宽。通常情况下,我们是修改源码而非经过构建后的代码。因此,让后端人员修改前端代码,此时会变得稍复杂些,同时也要求后端了解前端的工具和环境。

  1. 这套方案不灵活不经济,徒增了开发复杂度?

    1. 摒弃了静态HTML页这种“副产物”,让前端开发的代码直接成为最终“产品代码”。
    2. 简化了前端开发环境,使前端开发调试更加迅速、高效、可靠。
    3. 不依赖后端代码,实现真正的并行开发。
    4. Mock作为统一的后端接口描述,使前端更容易易手项目,降低人员变动成本。
    5. 测试可以通过Mock模拟的接口测试前端页面,提高了测试效率。

    而这一切所需要做的就是:事先约定下接口,然后彼此各不相干地开发。

  2. 引入了新的Mock作为中间件,是不是分散大家精力?

前端开发过程中,不可能不依赖数据;前后端对接一定会需要约定接口。新的流程让接口约定更明确,让彼此开发更隔离,前端专注于页面,后端专注于数据,于是更高效。

前后端耦合开发,就像软件中耦合的设计架构一样,存在很多问题;通过解耦和流程优化,可以让项目开发更加灵活,前后端协作更加顺畅,并且降低成本,提高效率。