浏览 1716 次
锁定老帖子 主题:浅析rails体系结构
精华帖 (0) :: 良好帖 (0) :: 新手帖 (4) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-02-23
ActionController是rails的控制中心,它本身是一个module,module 里面有一个base类,所有的controller,包括ApplicationController都继承base。 base的主要职责是,解析请求的参数,执行filter,执行action,最后,也是关键的一步, 调用ActionView.base.new得到一个解析template的对象,由ActionView.base完成template的解析。 在ActionController这个module之中由很多其他相关的module被base mixin。ruby就是这种风格,class+module. class是对象的抽象, module是对象中相关功能的集合,是功能的抽象。有的时候感觉两个不相干的对象有类似或同样的功能,但是通过抽取基类的方式把他们搞到一起又有一点勉强。这样的功能最好放到module面。还有的时候觉得一个类太大了,包好若干个大块的功能,每一块的功能也可以抽取出一个module。ActionView::Base只是实现了主干的功能,其他的一些附加的功能,比如:flash,就是用module来实现的。 再得瑟一下ActionView::Base,和controller一样,base里只是主干,根据template的后缀找相应的template的handler,handler负责处理template的解析。其中,base在执行的过程中会load一系列view helper,其中包括application_view_helper. view helper 被base mixin 以后,里面的方法就可以直接在template上使用。 .html.erb的解析使通过ruby 的ERB template 解析器完成的。 对不对的先这样吧 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |