"Asset-Pipeline/Turbolinks在大型Rails 4应用中有哪些优缺点?"

12
我们正在开发一个非常庞大、范围广泛的应用程序。 这个网站将包含许多不同的部分,具有非常不同的用户界面需求和行为。
展望未来,Rails 4 将资产管道分离成了一个独立的 gem,因此我们可以选择是否包含它。turbolinks 也可能发生同样的事情。
我现在一直在问自己的问题,并且找不到答案:我应该在我们的项目中使用这些库吗?
我反思时主要问题是全合一文件策略可能不起作用,我们必须在应用程序的不同部分中使用文件包。turbolinks会如何处理这种情况,因为它必须假设所有的js/css已经加载完毕?这种配置的优点是否超过了由管道和turbolinks带来的代码复杂性?
我并不指望得到一个肯定或否定的答案,只是想听听大家的意见。

Turbolinks已经是一个宝石了。https://github.com/rails/turbolinks - emrahbasman
是的,但他们仍然可以决定默认情况下不包括它。 - Pierre Schambacher
2个回答

11

两者都是有效的工具,它们并不一定互相抵消。

Turbolinks:使您能够仅加载页面的主体,从而使其作为AJAX请求工作(这种行为的示例是Facebook的行为之一)。

优点:

  • 跳过浏览器完全渲染新页面的任务,从而消除了浏览器无响应的“空白页面”时间。
  • 与先前相关:如果您的行为可能会受到加载新页面的影响,例如播放歌曲,Turbolinks将不会影响它(参见soundcloud next)。
  • 不重新加载文档头,因此不会重复加载相同的标签/内容(如果是相同的)。
  • 使您仍然可以在服务器端缓存视图内容。

缺点:

  • 如果真的需要更新标题标签(新的js文件、新的css文件、元标记更新...),这个工具就很烦人。
  • 如果您想使用客户端视图渲染,则该工具根本不适用。
  • 默认禁用行为的行为只是痛苦的(使用CSS类来禁用节内的锚标签?那太糟糕了)。

实际上,这是您的应用程序架构和目标的问题。

关于资产管道,我对其效果有好有坏,尽管我认为它的优点多于缺点。总体而言,预处理工具提高了跨浏览器开发的生产力,但在生产中不要依赖它。但是,在资产管道的情况下,它也与您想要的内容有关。您可以预处理SASS、Coffeescript,拥有像compass或bourbon这样的强大库,但这也可能增加性能开销。因此,请对其进行基准测试并查看是否应该成为您的工具。


2

博客文章讲述了为什么不应该使用turbolinks的缺点,解释得非常清楚(我个人也是这样认为),所以它确实有帮助 :) - Pierre Schambacher

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接