使用reactjs和rails资产管道的最佳方法是什么?

时间:2015-10-13 14:21:59

标签: javascript ruby-on-rails reactjs asset-pipeline refluxjs

我在rails(使用资产管道),reactjs(使用react-rails gem)和reflux上使用ruby。

目前我在javascript中将所有反应组件,反馈存储和操作定义为全局变量,因此它们在我的rails应用程序的每个页面中都被声明。

我担心当我有数百个组件和存储时,浏览器会出现内存问题,定义所有这些变量。

这真的是个问题吗?有没有更好的方法将此堆栈与资产管道一起使用?

1 个答案:

答案 0 :(得分:1)

一个好方法是将React的组件与Rails分开,只使用涉及npm和webpack的正常React生态,将已经转换的JS文件注入到Rails资产管道中。这样Rails仍然可以管理管道资产的整体使用,但不必从React直接生成JS。网页上有几个关于如何以这种方式使用webpack的描述。就个人而言,我使用了一个名为react_webpack_rails(https://github.com/netguru/react_webpack_rails)的netguru在GitHub上找到的一个,但如果你已经知道你正在用webpack做什么并做出反应,你可能不需要这样的帮助。还有其他像这样的辅助工具;您可以查看https://github.com/shakacode/react-webpack-rails-tutorialhttp://www.railsonmaui.com/blog/2014/10/03/integrating-webpack-and-the-es6-transpiler-into-an-existing-rails-project/进行其他讨论。

我根本不是Javascript中全局变量的粉丝,所以我发现使用像Netguru这样的单独但集成的React-and-Rails方法是处理它的最好方法而不会混乱我的JS实现或我的Rails视图。

至于你关于前端"重量的问题,我说它还不重要。像大多数速度或内存使用问题一样,最好避免预优化。当您遇到实际使用中的瓶颈时,请反复重构任何最大的瓶颈,直到性能再次被接受为止。无论如何,如果您在React中进行单页应用,您可能会在每次使用Rails'重新发送时对客户端施加尽可能多的负载。页面(忽略往返旅行的费用)。只需注意尽早分析并监控您正在做的事情,但不要过早优化,直到您需要这样做为止。