相关扩展

  使用fmpp的最终目的是实现前后端开发分离,两端开发之后, 联调的解决方案之前并没有提到,到了联调的过程, 前后端又耦合到了一起,两端为了测试都需在本地启动一整套工程,如果此过程也能实现前后端分离,前后端都将各自的代码部署到第三方机器上,那就会很大程度上降低了本地开发环境的压力;

  通过google和个人的经验,下面给出一种解决方案:

Dest平台

  Dest平台的实现原理如下图:

Dest平台实现原理

  1. 用户打开浏览器,访问在RD机器上启动的WEB项目;
  2. RD机器从Database获取到数据;
  3. RD机器向FE机器请求VM、JS、CSS资源;
  4. RD机器渲染VM页面,绑定数据;
  5. RD机器将渲染结果返回给用户浏览器(FE机器的存在对于用户来说是透明的);

  后端有两台机器(当然可以是虚拟的),一台负责启动java服务(RD),但工程的静态资源文件重定向到FE机器, 联调过程中, 每次遇到前端修改,前端提交代码到FE环境, 无需重启java工程,就可以看到效果, 实现了和本地在ide中刷新一样的效果;

  由于Dest平台是百度内部使用的平台, 外部无法访问,只能通过Dest平台了解大概的实现; 为了实现前后端分离,首先前后端的代码工程一定要隔离, 前端的代码更新,不影响当前的服务端代码,各自提交各自的代码,从前端的角度看,如果服务端代码已较稳定,前端每次提交更新无需重启server即可看到效果;为了实现这样的目的,可借助Git Hook,对前端的提交做一些处理,Hook就是对对应git事件触发对应脚本实现一些功能;要实现类似Dest的功能,这里提出两种方案(还需验证):1.RD环境存放服务端Git工程,并且ignore webapp目录; webapp目录专门存放前端Git工程; 2. 前端工程与服务端工程位于两个不同的目录下,每次前端提交, 使用githook, 将需要的前端代码copy到对应的服务端webapp目录下去;以上的方案仅给出思路,具体细节还需实际使用过程中验证补充;