Sinatra

2010,09,05 zhangkaizhao

--

Sinatra 是基于 Ruby 的一个小巧的web框架, 感觉比较像 Python 中最近比较受关注的 bottle web框架。

Sinatra 入门可以看 Sinatra Book 一书。
我刚看的是 2010,08,30 时候的,发现其中有个小错误, 在 Handlers -> Cookies 一段, 因为 Sinatra 完全使用 rack ,故

set_cookie("thing", cookie)

应该是

response.set_cookie("thing", cookie)

才对。

Sinatra 完全不顾及命名空间的问题,所有 Sinatra 内置的变量函数等等均不需导入。 这个问题 Rails 中也应该存在?
有位老兄在其一篇批判 web2py 的文章, 说说 web2py 中指出的 web2py 的十宗“罪”的最后一宗也大概就是指这个问题。 该点中作者最后一句话“光凭这一点,web2py就可以去下地狱了。”我觉得说得比较狠了。 照其说法,创造和使用 Rails/Sinatra 等作品的开发人员都统统可以去下地狱了。。。:-(

不过,说真的,Java/Python 在命名空间这个问题上做得都非常好, 采用 import 方式并指明每个导入的变量命名的来源, 这确实能避免命名空间混乱的问题。
而像 PHP/Perl/Ruby 等这种导入了一个模块后就相当于把那个模块中的所有变量命名导入到当前上下文的做法实在欠妥。 也给调试和查看源代码带来了很多麻烦。
当然 Java 中可以使用

import foo.*;

而 Python 中可以使用

from foo import *

来实现这种劣质的模块导入使用机制。

在 Python 中的代码块缩进语法或是其令人称赞的 import 模块导入机制等等, 看上去都是为开发人员所考虑, 所以,我想之所以很多开发人员喜欢 Python ,这些大概也都是令人喜欢的原因。

Comments

Comment is disabled by administrator.