`
JackyCheng2007
  • 浏览: 253540 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Rails 架构学习笔记

    博客分类:
  • RoR
阅读更多
Rails给web应用的结构上强加了很多约束,而正是这些约束使得应用的开发变得很容易。也许是因为无规矩不成方圆,也许是因为规定好了道路是的开发者不用在选择面前纠结和徘徊,也许是从框架上植入了最佳实践,是的新手不那么容易犯前人的错误。。。

Models, Views, and Controllers
MVC是一个web开发中经典的甚至是事实上的标准模式。从struts的使用范围就可见一斑。

Models, 模型,负责维护应用的状态state。这个状态有时候是瞬间的,经过几个用户交互之后就消失了,有时候是持久的,需要存在应用以外的某个地方,比如DB。模型不只是data,它还包含加在data只是的业务规则rule。可以把模型看做是仓库和看守人的综合体。

Views, 视图,负责生成用户接口,通常是基于模型里的data来完成的。同样一个模型可以根据需求有不同的展示方式,这就是有视图来完成的。

Controllers,控制器,负责编织(orchestrate)整个应用,控制和指挥。控制器接收外部事件,通常是用户的输入,然后和模型交互,最后向用户展示合适的视图。

有了MVC,你就知道把自己的代码根据职责分成3个不同的方面,分别放到不同的地方。不用纠结,也不会出错。rails利用脚手架(scaffolding)来帮助我们生成这三个地方,供你放置MVC代码。
根据“约定大于配置的原则”,rails会根据MVC的约定到根据约定的规则到约定的地方找相应的MVC组建,所以无需配置。

Rails Model Support
对于需要持久化的数据,我们需要设计DB。DB是根据关系代数的集合理论来设计的,而我们的模型是根据OO来设计的。这就需要Object-Relational Mapping,对象关系映射。

ORM,就是将关系表和对象映射起来:一张表对应一个类,表里面的一条记录,就是类的一个实例对象,表的属性就是对象的一个属性。相应的,类的方法来操作表,对象的方法来操作它表达的那一条记录。

Active Record,rails提供的一个ORM层。还是基于约定,他负责映射工作,并且不用配置文件。Active Record的功能不仅如此,他还能与MVC中的其他组件很好的交互,比如将用户的输入映射到模型。他是rails的模型的一个强大的基础工具。

Action Pack: The View and Controller
rails提供了一个组件来支持视图和控制,这是应为他们联系很紧密。控制为视图准备数据,控制还从视图生成的页面中获取用户输入。这种紧密的集合并不意味着我们可以把这两部分代码混杂在一起。相反,rails让我们将他们清楚的分开。

View Support,作为view,可以是静态的内容也可以是动态的内容。我们的应用中当然需要大量的动态信息。怎么生成动态的信息呢?rails基于模板来生成动态信息。它提供3中模板技术,Embedded Ruby (ERb), XML Builder 和RJS。ERb就是在html里面潜入ruby代码,这个是最常用的,很灵活,但也有点违反MVC原则,很容易让你在view里面引入了很多逻辑,而这些逻辑本来应该在控制或模型里面的。所以要谨慎使用,毕竟分离关注也是程序员的一部分职责所在。

Controller Support,rails 的Controller是应用的逻辑中心,它协调着用户,视图和模型的交互。它提供了一些重要的辅助服务:
- 路由, 它负责根据url将用户的request路由到具体的action
- 缓存, 它管理缓存,帮助支持高负荷的性能
- 帮助模块, 它管理helper模块,以减少view的代码膨胀
- 会话, 它管理会话,给用户以持续性的交互体验







1
0
分享到:
评论

相关推荐

    rails查询学习笔记

    标题 "rails查询学习笔记" 涉及的是Ruby on Rails框架中的数据库查询技术。Ruby on Rails,简称Rails,是一款基于Ruby语言的开源Web应用程序框架,它遵循MVC(模型-视图-控制器)架构模式,使得开发Web应用更加高效...

    ruby on rails 笔记(陈刚)

    陈刚的Ruby on Rails学习笔记不仅提供了从零开始构建Rails项目的步骤指南,还深入浅出地讲解了MVC架构的基本原理,对于初学者来说是一份非常实用的参考资料。通过实践“Hello World”程序,读者可以亲身体验Rails的...

    Ruby_On_Rails笔记

    综上所述,Ruby on Rails的笔记内容涵盖了从安装Rails环境到创建和运行一个简单的Rails项目的基础知识,这些内容对于初学者来说是学习Rails框架的极好入门材料。通过对这些知识点的学习,初学者可以快速了解Rails的...

    Ruby_on_Rails笔记

    在《Ruby on Rails笔记》中,作者陈刚分享了他在学习Ruby on Rails过程中的经验与心得。这份笔记不仅包含了作者的学习历程和个人体会,还汇集了他在学习过程中遇到的问题及其解决方案。作者提到,“读不如做,做不如...

    ROR 学习笔记系列一 Windows XP下环境安装配置(2)

    在本篇ROR(Ruby on Rails)学习笔记中,我们将深入探讨如何在Windows XP操作系统上进行环境的安装和配置。Ruby on Rails是一个流行的开源Web应用框架,它基于Ruby编程语言,以其“DRY”(Don't Repeat Yourself)...

    ruby on rails 实践

    作者鼓励读者在学习过程中注册GitHub账号,建立学习笔记仓库,以便与他人分享学习成果。书中的代码示例遵循特定的命名规则,比如命令使用小写,而作为名词时首字母大写。 《Ruby on Rails 实践》一书的著作权归作者...

    Ruby on Rails心得

    陈刚撰写的《Ruby on Rails心得_V0.1》是一份非常宝贵的资料,旨在记录作者在学习Ruby on Rails过程中的所见所得,包括读书笔记、心得体会、自创教程及一些常见问题的解决方案。作者通过写作这种方式不仅加深了对...

    rubyinstaller-devkit-3.0.2-1-x64 and Ruby 学习笔记.7z

    总的来说,`rubyinstaller-devkit-3.0.2-1-x64 and Ruby 学习笔记.7z`文件包含了一个在Windows上开始Ruby编程所需的基本组件和学习资源。通过安装Ruby和DevKit,你可以轻松地编写、编译和运行Ruby代码,同时结合学习...

    后端语言的学习笔记.zip

    "后端语言的学习笔记.zip"这个压缩包很可能包含了关于各种后端编程语言的学习资源,特别是那些用于构建动态网站和Web服务的语言。尽管没有具体的标签提供额外信息,我们可以推测这可能涵盖了诸如Java、Python、Node....

    Ruby-on-Rails-101:Ruby on Rails 笔记摘自 WDI HKV 和其他来源。 比如,lynda的在线Rails教程

    本笔记摘录自WDI HKV以及lynda.com的在线Rails教程,旨在提供一个全面且深入的学习指南。 ### 1. **基础概念** - **MVC架构**:Rails采用Model-View-Controller(MVC)设计模式,将业务逻辑(Model)、用户界面...

    Agile Web Development with Rails 3nd 下载

    在描述中提到的“NULL”可能意味着该资源没有提供详细的介绍,但通过博文链接(https://hlee.iteye.com/blog/351357),我们可以推测这是一个关于学习和实践Rails 3的博客文章,可能包含了作者的学习笔记、示例代码...

    Rail笔记

    笔记中提到了几本关键书籍,这些资源对于深入学习Rails具有重要作用。例如,《Ruby on Rails快速Web应用开发实战》提供了实践指导;《RUBY语言入门教程》帮助读者掌握基础语法;《应用Rails进行敏捷Web开发》则从...

    我的ror的第一天

    压缩包中的文件"ror.txt"可能是作者记录的详细安装过程或者学习笔记,可能包含了遇到的问题、解决方法以及个人心得。 在学习Rails的过程中,理解其核心概念,如MVC架构、路由规则、ActiveRecord模型、 erb模板引擎...

    notes_about_rails:我关于Rails源代码的注释-ab source code

    Rails,全称Ruby on Rails,是由David Heinemeier Hansson创建的一个开源Web应用程序框架,它遵循MVC(模型-视图-控制器)架构模式。...通过这些笔记,开发者可以逐步加深对Rails框架的理解,提升自己的开发能力。

    Ruby:Ruby on Rails 书

    在“Ruby-master”这个文件夹中,很可能包含了与Ruby或Rails相关的源代码、笔记、练习或者项目。通常,一个GitHub仓库的主分支名为master,这里可能是作者学习过程中的主分支。通过浏览和分析这些文件,读者可以深入...

Global site tag (gtag.js) - Google Analytics