我正在学习Sinatra,我想知道是否有人知道为Sinatra项目制作MVC结构的好方法.我有一些想法,但对我来说似乎太麻烦了.
解决方法
Sinatra已经是“VC” – 您有与路线(控制器)分离的视图.你可以选择将它分成多个文件,如果你喜欢;对于更多,请看这个答案(我的):
Using Sinatra for larger projects via multiple files
Using Sinatra for larger projects via multiple files
要添加一个“M”(模型),选择一个数据库框架.有些人喜欢ActiveRecord.有些人喜欢DataMapper.还有更多的你可以选择.我个人喜欢,强烈推荐Sequel.我上面的回答也提到了一个包含模型的目录结构和shell.一旦您在模型和控制器之间分配了适当的逻辑,就可以使用“MVC”.
请注意,MVC不是关于单独的文件,而是分离问题.如果您按照我上面的建议设置了一个Sinatra应用程序,但是您的视图从模型中获取数据,或者您的路由直接生成HTML(而不是通过“帮助”),那么您并没有真正拥有MVC.相反,您可以在单个文件中执行上述所有操作,但仍然有一个MVC应用程序.只需将数据完整性逻辑放在模型中(更重要的是在数据库本身中),您的视图和可重用帮助程序中的表示逻辑,以及控制器中的映射逻辑.