Sté*_*ane 9 javascript ruby-on-rails reactjs react-rails
我正在寻找使用gem react-rails实现ReactJS作为我的Rails应用程序的视图.到目前为止,我只使用标准.erb在我的RoR应用程序中呈现我的视图,我想知道如何使用React做一些问题.
例如,当您想在RoR中为模型创建表单时,您只需使用以下命令创建表单:
<%= form_for(@product) do |f| %>
<%= f.text_field :name %>
...
<%= f.submit %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
而这个自动使用正确的路线,产生CSRF令牌,使用正确的CSS id和class等...
现在,如果我使用React,我必须照顾所有这些吗?并以老式的方式在渲染中创建JSX中的表单?
# My view .html.erb
<%= react_component 'Form', {} %>
# My js.jsx file
var Form = React.createClass({
render: function () {
return (
<form className="new_my_model" onSubmit={this.handleSubmit}>
<input style={inputStyle} type="text" className="my_model_name" />
...
<input type="submit" value="Post" />
</form>
);
}
});
Run Code Online (Sandbox Code Playgroud)
没有像Ruby for React这样的"自动生成功能"?
我已经发现了一些ressources网上关于教程阵营与铁轨(1,2,3),但大多数时候,他们说不同的东西.有些人使用JSX,一些咖啡,而官方的React网站建议使用JSX.一些使用refs,其他人使用states,就像这一切!
是否有一个很棒的教程可以作为参考使用React构建我的应用程序的基础?
rdn*_*man 26
简短的回答是,您在JSX中编写的React组件与传统视图中编写的DOM元素分开.React需要完全控制它管理好的DOM元素才能正常工作,否则你将会全力以赴(虽然有限的使用可能会成功,但它可能很脆弱).
冒着我没有真正回答你的意思,这里有一些可能会有所帮助的想法:
你可能有三种主要方法:
毫无疑问,这些主题有很多变化,但这些可能是主要的变化.
我只参与了几个这样做的应用程序,所以我的评论就是一丝不苟.不过,对于新的应用程序,我倾向于单独的服务层方法,因为工具更容易.我倾向于只在现有应用程序中使用ReactJS,如果我有一个特别是JS重要的视图部分并且该功能是有限的.
最小的ReactJS
在经典的Rails视图中,我们倾向于使用JS来增强具有客户端行为的视图:大多数视图计算都是在服务器端完成的,然后我们让JS只是为了某些目标而操纵DOM的各个方面.使用React可能会很困难,因为React负责其DOM的元素以保持状态更新.但是你仍然可以将ReactJS用于页面的元素,就像你在Rails中部分视图呈现一样,只要"部分"是有界限的.
使用React-Rails gem,只需让你的视图渲染一个React组件就像你要使用partial一样,然后让该组件直接处理它的组成元素,如果你在客户端使用期间需要更多来自服务器的话,可以使用AJAX调用.这会在您的视图中创建一个有限的,集中的关注点分离,您可以使用传统的JS技术来收集组件周围的其他页面DOM信息(尽管如果您执行的操作非常有限,可能会变得非常困难和混乱 - - 如果你做了很多,可能应该重新考虑一下).
这种方法的主要优点是您可以开始将ReactJS引入现有应用程序,并在您发现它有用时开始迁移功能.对于某些客户端密集型事物,比如说一些具有大量客户端交互的表单字段,但是这些技术是有限的,这种技术可能是一个很好的选择.
来自Rails的ReactJS视图
在这种方法中,我们可以使用Rails渲染视图布局(即HTML包装但没有内容),然后让特定视图为ReactJS或更传统的ERB/Haml/Slim视图.在这种方法中,Rails视图只是为页面建立一个主要的React组件,然后在ReactJS中完成其余部分来管理它自己的JSX中的那个部分(通常是整个内容窗格).通过这种方式,您的JSX仍然可以从您的资产管道中提供服务,但实际上您已经从React处理了页面的核心表示,并且只使用Rails来实现布局的最小目的,并允许一些视图基于ReactJS.其他人以Rails为基础.
正如我所描述的那样,我宁愿假设一个多页应用程序.如果您正在编写单页应用程序,这种技术可能只是以简单的方式使用Rails进行演示.
仍然有一些优点:
单独的服务层
这种方法完全将视图与后端服务分开.将您的Rails应用程序编写为完全呈现JSON的API服务器.所有核心逻辑仍然在控制器和模型中处理,因此设计的一部分基本上完好无损.实际上,您不需要经典的Rails.其他框架,如Grape或rails-api gem可能更合适,因为它们重量较轻,因为您不会呈现任何视图或需要这些帮助程序.
然后你编写一个单独的基于ReactJS的应用程序(记住ReactJS也可以是服务器端),它只关注表示,只使用你的RoR API服务来获取和发布信息.
对这种方法的考虑:
祝好运!
更新(2015年9月2日) 你可能会发现这篇博文有点照亮:http: //www.openmindedinnovations.com/blogs/3-ways-to-integrate-ruby-on-rails-react-flux by Blaine Hatab(3/2015年).该帖子概述了三种方法,这些方法与我上面提供的高级概述有些相似,但旨在更全面地了解如何进行.他们列出的三种方法是
您可能会发现此描述更有用,并提供参考以查看其他详细信息.
| 归档时间: |
|
| 查看次数: |
2921 次 |
| 最近记录: |