星期一, 十月 16, 2006

尝试写一个类似 RoR 的快速开发框架(1)

最近受 RoR 的影响颇深,导致人逐渐变懒......

同样是写程序,用 RoR 的确可以有效的减少代码量同时又可以快速开发出所要的东西,有什么不好呢?现在类似 RoR 的框架层出不穷,随着 JSR-223 的升温,使我感觉是否可以用 JavaScript 写一个类似 RoR 的快速框架出来呢,于是着手开始尝试。

JSR-223 和 BSF 实在太像了,以至于参考实现的代码基本上直接取自 BSF,虽然 JSR-223 提供了 http 支持,但是要用 JavaScript 实现一个类似 RoR 的框架,靠这点 http 支持毕竟还是有点局限,所以首先要在Servlet上下点功夫。

URL 是一个很重要的部分,RoR 里面使用 routes.rb 来实现自定义的 URL 规则,这一点在 Java Web 开发中能够做到的话也只能用 Filter 了。我的思路是通过 Filter 获取 URL,然后将 URL 分解,拆出 Controller、Method、Params 部分,然后用 RequestDispatcher 分发到专门处理 Scripts 的 Servlet 来处理,其中这些过程变量放在 request 中带过去。

ScriptServlet 部分应该是读取指定目录的 js 文件,按照 RoR 的约定,应该是在 app/controllers 目录下面按照 xxx_controller.js 开始找,然后根据 request 传过来的 Method 进行调用,最后搜索模版,路径在 views/xxx/ 目录下,用函数调用返回的结果渲染模版。

大致的流程估计应该是这样,下面考虑一下所用的框架。觉得很有可能需要自己实现一个基于脚本的 MVC 框架,除了 Filter 处理 URL 之外,还需要一个 ScriptsServlet 充当 ApplicationController 的角色,用来将请求分发给不同的 js 去处理,然后再加在模版进行渲染。模版引擎考虑才用 FreeMarker,虽然用 js 也可以做,但总觉得功能上不如 FreeMarker 来的强大。

大概思路先是这点,打算做做看先。

没有评论: