程序员心理看WEB开发框架

以下只能说是我的个人开发的感悟。

从做网站到现在做WEB端的应用,我度过了三个时期:

一、使用框架来搭建自己需要的系统。一开始是大框架如drupal(这里我更倾向于称drupal是框架而不是cms),后来觉得过于笨重。于是改用codeignitor等小框架。

二、不再完全使用框架的MVC。而是用框架做服务端数据接口,只提供纯数据,由前端进行逻辑处理和渲染。

三、前端从简单的“分模块,渲染与逻辑混合”,到“分模块,面向页面元素的MVC”,再到“分模块,事件驱动的,面向切面的MVC”(稍后详述)。

为什么会有这三个时期的转变,实际上很大程度是由我对开发过程的希望驱使的。这些希望是这样的:

  1. 当需求确定好以后,首先我希望在前后台单独开发,只要约定好数据接口就行,这样如果有人来帮我,可以很快的互不打扰地进行。而且可以很灵活的各自用虚拟数据测试。
  2. 当我开发前端时,我想要渲染和逻辑完全分离,这样我就可以写逻辑的时候专心于逻辑。保持代码整洁。最重要的是随便页面怎么改,只要业务大体不变,逻辑就可以写好了不用再管。这就引进了前端MVC,实际上就是简单的数据集和渲染的关系。
  3. 我希望逻辑事件的触发是由页面来决定的,并且怎么变都不用再动写好的逻辑层(本质意义上的不动,连文件都不用打开)。这就引入了事件驱动,逻辑层只用监听感兴趣的事件(包括和服务器端的通信也可以用事件驱动),只用触发自己完成后的事件,什么都不用管。渲染层也是如此。
  4. 我希望页面的事件如click, dblclick等能和逻辑事件分离,最好我在这些元素上指定一个特定的属性,它就能给我自动转换并去触发逻辑事件。这样我写js的时候就只用管特效就够了。这就引入了页面事件代理(详见上一篇关于ace-engine)。这样可以随便采用什么页面模板就没关系。

以上四点的希望就是我目前开发的理想状态,重点是“简单、重用”,这里的重用实际上指的是“容易加新功能”,“容易应对需求修改”,“容易找bug”。心有余力的话才是“下次还能用”。我想这也是很多和我同样的程序员所迫切需求的吧,虽然我觉得这个层次很低啊,哈哈。下面简单讲如何实现。

  1. 前后分离很容易,做好约定就行了。
  2. 前端mvc可以采用backbone,也可以采用简单的数据集和模板来做。
  3. 对于spa来说,通过定义一个全局事件,各个模块用自己的模块名作命名空间就行了。建议全部事件都通过这个全局的来驱动。使用了backbone的话,不建议直接使用backbone的模型的事件。
  4. 建议采用ace-engine的ace-template,也可以自己写。
原文地址:https://www.cnblogs.com/sskyy/p/2530718.html