尽管我喜欢Rails,但它倾向于在文件系统中远远地分散特定视图的组件。这让人感到困惑。
Rails具有由布局,模板和部分驱动的网页视图。我认为这源于旧的PHP方式,即查看将页面视为文档的内容,并且文档的某些部分需要在其他文档中重新呈现。
然而,现代网页远不如文档,而是更多的网格,其中布置了一系列组件。每个组件都做不同的事情,并有自己的样式,逻辑和布局。组件也应该可以在其他地方轻松使用。
这类似于局部的概念,除了我们说部分还应该包含其样式和逻辑的细节,而不仅仅是HTML(我相信这就是React对世界的看法)。
为了简单起见,我要说实际的HTML视图由嵌套组件组成,其中每个组件都有:
目前,这些在我们的Rails项目中分散得很远,这使得很难大规模跟踪事物并确定与什么相关的内容
/helpers
(或者我们已开始使用ViewObjects,/view_objects/...
/assets/stylesheets/...
/spec/...
随着所有地方的到来,它很难确保逻辑,测试,样式和模板都很好地组合在一起,并且他们倾向于开始溢出彼此的责任。
我们的前端完全是Angular。多年来我们已经使它成为我们自己的自定义设置,但是每个Angular组件都有自己的目录,并且在目录中(比如联系表单):
contact_form/contact_form.js
- 组件的指令(逻辑)contact_form/contact_form.html
- 组件的HTML模板contact_form/contact_form.css.scss
- 组件的CSS
(理想情况下,我们也会在这里进行测试,但我们还没有那么远我想对我们使用的Rails组件做同样的事情。我想为每个组件创建一个目录(比如说一个联系表单),其中包括:
/contact_form/contact_form_view_object.rb
- 控制逻辑的ViewObject /contact_form/contact_form.html.haml
- HTML模板/contact_form/contact_form.css.scss
- 模板的CSS /contact_form/contact_form_spec.rb
- 组件的RSPEC文件通过这种方式,组件的责任以及相关的测试和样式更加明确,项目的发展变得更加容易,而不会陷入巨大的交叉责任。
这可能吗?