随着Ruby on Rails
![](/icons/23186de.gif)
成功
![](/icons/23186dou.gif)
是否还有其他Ruby Web开发框架
![](/icons/23186de.gif)
生存空间呢?Rails尽人皆知
![](/icons/23186dou.gif)
有人甚至可能听说过Merb和Camping
![](/icons/23186dou.gif)
但是否有人知道Nitro、Ramaze、Sinatra、IOWA或者Cerise?本文对这些框架进行
![](/icons/23186yi.gif)
个快速浏览
![](/icons/23186dou.gif)
并试图解读他们为业内人士欣赏(或忽视)
![](/icons/23186de.gif)
原因
![](/icons/23186dou2.gif)
的前我们讨论过Merb
![](/icons/23186dou.gif)
这也许是完成度最高
![](/icons/23186de.gif)
Rails替代者
![](/icons/23186dou2.gif)
Merb项目
![](/icons/23186de.gif)
活跃程度非常高
![](/icons/23186dou.gif)
并且在
![](/icons/23186yi.gif)
些情况下得到了实际使用
![](/icons/23186dou2.gif)
可以说它是和Rails最为接近
![](/icons/23186de.gif)
Ruby Web开发框架
![](/icons/23186dou2.gif)
Camping将自己定义为
![](/icons/23186yi.gif)
个代码量保持在4k字节大小以下
![](/icons/23186de.gif)
Web开发框架
![](/icons/23186dou2.gif)
这个项目已创建了22个月
![](/icons/23186dou.gif)
并由whytheluckyst
![](/icons/23186if.gif)
f维护
![](/icons/23186dou2.gif)
![](/icons/23186yi.gif)
个完整
![](/icons/23186de.gif)
web应用可以在单
![](/icons/23186yi.gif)
文件中定义
![](/icons/23186dou.gif)
同时遵循MVC框架(这使得web应用以后更易于移植到Rails的上)
![](/icons/23186dou2.gif)
Camping使用ActiveRecord作为ORM解决方案;模板系统使用Markaby
![](/icons/23186dou2.gif)
Camping
![](/icons/23186de.gif)
开发
![](/icons/23186yi.gif)
直以稳定
![](/icons/23186de.gif)
步伐向前推进
![](/icons/23186dou2.gif)
Nitro是
![](/icons/23186yi.gif)
个有 3年历史
![](/icons/23186de.gif)
“Web 2.0”框架
![](/icons/23186dou2.gif)
在
![](/icons/23186yi.gif)
段时间销声匿迹的后
![](/icons/23186dou.gif)
开发者George K. Moschovitis又开始活跃起来
![](/icons/23186dou2.gif)
Nitro应用
![](/icons/23186de.gif)
服务器端以Ruby写成
![](/icons/23186dou.gif)
客户端以Javascript开发
![](/icons/23186dou2.gif)
Urubatan最近对其进行了评价
![](/icons/23186dou2.gif)
和Rails注重按照习惯编程相反
![](/icons/23186dou.gif)
Nitro更加灵活
![](/icons/23186dou2.gif)
Nitro支持开发基于Model-View-Controller
![](/icons/23186de.gif)
应用
![](/icons/23186dou.gif)
同时支持非MVC、php风格
![](/icons/23186de.gif)
应用开发
![](/icons/23186dou2.gif)
Nitro使用xhtml文件
![](/icons/23186dou.gif)
并定制
![](/icons/23186de.gif)
Ruby标签作为模板系统
![](/icons/23186dou2.gif)
Nitro还使用了它自己
![](/icons/23186de.gif)
持久层
![](/icons/23186dou.gif)
名为Og(ObjectGraph)
![](/icons/23186dou2.gif)
Og允许arbitrary Ruby对象
![](/icons/23186de.gif)
序列化
![](/icons/23186dou2.gif)
在attr_accessor中标记为Object(或Array或Hash)的后
![](/icons/23186dou.gif)
引擎会序列化对象
![](/icons/23186de.gif)
YAML转储堆
![](/icons/23186dou2.gif)
Og同时支持任意对象图
![](/icons/23186dou2.gif)
Og提供自动化数据库进化功能:当Ruby类变更后
![](/icons/23186dou.gif)
Og会进行自动检测
![](/icons/23186dou.gif)
同时改变对应
![](/icons/23186de.gif)
数据库
![](/icons/23186dou2.gif)
有些人总是会忘掉ActiveRecord
![](/icons/23186de.gif)
Migration功能
![](/icons/23186dou2.gif)
Ramaze是
![](/icons/23186yi.gif)
个存在了6个月
![](/icons/23186de.gif)
轻量级Ruby Web开发框架
![](/icons/23186dou2.gif)
它在构建时基于下列广为人知
![](/icons/23186de.gif)
Ruby原则:
◆KISS原则(Keep It Super Simple)
◆POLS原则(最小惊讶原则:Principle Of Least Surprise)
◆模块化设计
◆最小化依赖
◆文档
◆开放式开发
◆BDD开发/例子
Ramaze是MVC Web开发框架
![](/icons/23186dou.gif)
使用自己名为Ezamar
![](/icons/23186de.gif)
模板系统
![](/icons/23186dou2.gif)
但是你同样可以使用Markaby、HAML、Liquid或ERB来替代Ezamar
![](/icons/23186dou2.gif)
Ramaze不提供默认
![](/icons/23186de.gif)
ORM(对象-关系映射)
![](/icons/23186dou.gif)
你可以使用你自己
![](/icons/23186de.gif)
选择:ActiveRecord、Og...它支持诸如Cache等高级使用
![](/icons/23186dou.gif)
web应用可以通过Mongrel或Evented Mongrel来搭建
![](/icons/23186dou2.gif)
你可以在Ramaze wiki上发现更多细节
Sinatra是
![](/icons/23186yi.gif)
个刚开发了
![](/icons/23186yi.gif)
个月
![](/icons/23186de.gif)
DSL web开发框架
![](/icons/23186dou2.gif)
Ron Evans对其进行了简要评价
![](/icons/23186dou2.gif)
它和Rails
![](/icons/23186de.gif)
主要差别在于它不是基于Model-View-Controller模式
![](/icons/23186de.gif)
框架
![](/icons/23186dou2.gif)
Sinatra是基于最小化
![](/icons/23186de.gif)
DSL语法开发
![](/icons/23186de.gif)
![](/icons/23186dou.gif)
它
![](/icons/23186de.gif)
小型基础核心中不包括诸如ActiveRecord这样
![](/icons/23186de.gif)
模块
![](/icons/23186dou2.gif)
通过使用get/post action定义
![](/icons/23186dou.gif)
Sinatra具备动态路由定义功能
![](/icons/23186dou2.gif)
Ron指出
![](/icons/23186dou.gif)
Sinatra不是为Robust web应用开发
![](/icons/23186de.gif)
![](/icons/23186dou.gif)
而是为了用来搭建小型
![](/icons/23186de.gif)
原型
![](/icons/23186dou.gif)
其中
![](/icons/23186de.gif)
混合业务逻辑和展示层并不是问题
![](/icons/23186dou2.gif)
那这样做有什么好处呢?API实现、快速
![](/icons/23186de.gif)
最小化应用以及那些不需要Rails中
![](/icons/23186de.gif)
功能 (比如ActiveRecord)
![](/icons/23186de.gif)
web应用开发
![](/icons/23186dou2.gif)
可以用来对面板最小应用进行控制
![](/icons/23186dou.gif)
或者是widget
和其他框架相比
![](/icons/23186dou.gif)
IOWA在近 3年
![](/icons/23186de.gif)
时间里都不活跃
![](/icons/23186dou2.gif)
Cerise有
![](/icons/23186yi.gif)
年
![](/icons/23186de.gif)
时间都没有活跃
![](/icons/23186dou.gif)
因此我们不会深入探讨它们
![](/icons/23186dou2.gif)
像Rails
![](/icons/23186yi.gif)
样
![](/icons/23186dou.gif)
Nitro有其自己
![](/icons/23186de.gif)
完整核心
![](/icons/23186dou.gif)
其他Web开发框架试图越小越好
![](/icons/23186dou.gif)
并允许用户自由使用他们喜欢
![](/icons/23186de.gif)
ORM、模板系统等等
![](/icons/23186dou2.gif)
即使这些框架可能缺乏文档
![](/icons/23186dou.gif)
甚至有些框架不具备这么多
![](/icons/23186de.gif)
功能、流行程度、对Rails
![](/icons/23186de.gif)
使用等
![](/icons/23186dou.gif)
它们仍然值得
![](/icons/23186yi.gif)
看
延伸阅读
最新评论