前端的产品形态

一直以来都在寻找前端的开发路线,始终没有个明确的答案
今天偶然看见玉伯关于前端模式的思考,遂记录之

目前前端的产品形态


  • 前端涉及的产品形态在业界可分为两大类:Web Pages 和 Web Apps 。
  • Web Pages 是浏览类的,用户主要是来看的:以内容展现为主,辅有少量交互。前端提供基础类库,开发工具化、外包化。典型:首页、营销活动、频道等等。
  • Web Apps 则以交互为主,用户主要是来用的。可分为两种:
    • 体验类:包含大量交互,同时用户体验很重要。比如 GMail, 支付宝收银台、淘宝购物车等等。
    • 功能类:包含大量交互,以功能为主,体验不是第一位的。比如后台系统、认证流程等。

目前遇到的问题


  • Web Apps 的开发,前端投入了大量人力,但前端资源依旧存在潜在的瓶颈(比如新增加一条业务线时,很可能无前端去支持)。现有前后端配合的开发模式,沟通协作成本偏高,可维护性不够方便。在现有的研发模式下,前端自身的价值点也很难体现出来(花了大量时间在业务上,但得到的认可不多)。
  • 最核心的问题,依旧是前后端的解耦:如何让前后端的工作彼此更独立,如何让更合适的人做更合适的事,把事情做得更好。
  • 对于体验类,目前业界有很多新兴的解决方案:Backbone, Ember, Knockout 等等,包括 YUI 的 App framework 等。这些解决方案,都希望后端专注于提供 REST 接口,其他的都交给前端来搞定。
  • 对于功能类的,目前业界解决方案依旧是比较老的一套,比如 GWT 等,包括 ExtJS 也是希望能让后端搞定一切。

解决问题的初步思路


  • 前端组件化,包括两部分:
    • 基础组件:通用的 Utilities + Widgets,比如 Cookie, Calendar, TabView 等等
    • 业务组件:针对具体的业务,由该业务线的前端,抽取出业务线的通用组件
  • 后端接口化,将数据抽象化、模型化,可输出为 REST 接口
  • 耦合框架化:
    • 将后端提供的 REST 接口封装成 Model 层(或者直接在模板层同步输出数据,将数据输出标准化)。
    • 将设计师提供的视觉产出转换成 Template 和 Style 。
    • 使用前端组件实现展现层的通用交互。可通过 data-attribute api 或 handlebars helper 在 template 配置完成。
    • 非标准化 View 层的开发,包括 Actions 等行为脚本的开发,含展现层的业务逻辑。