在ROR中使用小部件(或可重用组件)开发Web应用程序

时间:2014-02-19 19:32:07

标签: ruby-on-rails ruby-on-rails-3

我有编写代码的经验......但是对开发Web应用程序不熟悉。

我正在为我的项目选择框架。根据我的初步研究,几乎所有内容都是以VIEW为中心的,在执行完所有业务逻辑之后,模型会填充数据并传递给VIEW。

因此,最低级别的粒度是VIEW。

但是,如果我想开发可重用的小部件或控件,我想知道什么是正确的技术。然后在多个VIEWS中重复使用它们。

我更喜欢控件是在JavaScript中,然后可以轻松地跨页面重复使用。

因此,如果我选择Ruby on Rails ...它是否有任何东西可以帮助我在可重复使用的小部件中编写代码......或者它只是要求我编写与模型提供的数据一起使用的VIEWS?

对不起,如果这是新手问题。

您在ROR中使用什么来编写可重用的小部件?

详细说明我对小部件的意思。

假设我正在编写一个讨论论坛Web应用程序。我想写一个名为post的小部件,它有3个视图。视图1是编辑模式。视图2是摘要模式。视图3是详细模式。

我在名为QuestionStream的页面中抛出此小部件,在此页面中,小部件将显示在摘要视图中。我执行数据绑定,以便获得问题列表。

我在名为ThreadView的页面中输入此小部件,在此页面中小部件显示在详细视图中。我执行数据绑定,我得到了问题的所有细节。

我在名为NewQuestion的页面中抛出此小部件,在此页面中,小部件显示在编辑视图中。

所以它是一个自包含的控件......但是可以在不同模式的多个地方重复使用(可以这么说)。

1 个答案:

答案 0 :(得分:1)

好的,我希望我能正确理解你的问题。

首先,我想首先说网络应用程序往往非常“以视图为中心”,因为这是(以非常抽象的方式)REST架构(即Internet)的基础。这是关于无国籍资源。您可以想象资源是打印在文档上的表单。我已经生成了我需要的所有字段,然后我将它打印出来并递给你一张纸。在这一点上,我真的不知道或不关心你将如何填写表格或使用什么数据。我只关心数据的有效性,一旦你把表格交给我,我就可以开始检查了(为简单起见,我忽略了AJAX概念,它给你实时验证/交互)。我认为正是这种“无国籍状态”使它看起来非常“以观点为中心”,但不要被愚弄,还有很多事情要发生。

据说,在您的应用程序中共享代码有三种常用方法。

PARTIALS - 可重复使用的视图代码 - 这些是可在您的视图中使用的可重复使用的代码段 - 例如:亚马逊上列出的每个项目都具有相同的格式(缩略图,标题,作者/制造商,评级和放大器) ; 价钱)。将此View片段编写一次并传递一个对象数组是有意义的,其中每个对象的属性然后单独传递到相同的部分并排放置

帮助 - 可重复使用的方法 - 在视图中再次使用帮助程序。基本上它是已经合并到一个方法中的常见功能,因此它可以多次重复使用,并且通过传入不同的参数,您可以根据情况(即当前登录用户或当前控制器,使您的方法响应不同)触发了这种观点)。示例:我可以创建一个帮助方法,可以将我的产品列表从详细视图切换到列表视图(不是最好的示例,但我希望它能得到消息)。

CONCERNS - 跨模型的可重用代码 - Concers旨在“提取常见和/或特定于上下文的代码块,以便清理模型并避免它们变得太胖和混乱”。有关示例,请参阅this link

你的问题有点棘手,但我希望我的回答有助于为你澄清一些事情。

至于你的例子,3个不同的视图可能是3个不同的部分。然后,您可以编写一个查看当前控制器的辅助方法,并确定应加载哪个部分。深入挖掘,然后您可以使用关注点来保持模型的代码干(不要重复自己) - 假设您有多个具有类似功能的模型。