10

我们正在研究一个相当大且广泛的应用程序。 该网站将有很多不同的部分,有一些非常不同的用户界面要求和行为。展望未来,Rails 4将资产管道划分为独立的宝石,因此我们可以选择是否包含它。 turbolinks可能会发生同样的情况。来自Rails 4的Asset-Pipeline/Turbolinks对于大型应用程序有什么优点和缺点?

这些天我一直问自己的问题,无法找到答案是:我应该在我们的项目中使用这些库吗?

我反思的主要问题是,一体化文件策略可能无法正常工作,我们必须在应用程序的不同部分使用文件包。 turbolinks会如何对此做出反应,因为它必须假设所有的js/css已经被加载了?这种配置的优点是否克服了管道和涡轮链路所隐含的代码复杂性?

我不期待是/否的答案,只是对此事的一些意见。

+0

Turbolinks已经是一个宝石。 https://github.com/rails/turbolinks – emrahbasman

+0

嗡嗡声真实,但他们仍然可以决定默认不包含它。 –

回答

11

这两者都是不一定相互抵消的有效工具。

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

优点:

  • 跳过的完全呈现一个新的页面,从而消除“空白页”时在浏览器无响应的浏览器的任务。
  • 与以前相关:如果您的行为可能会因加载新页面而受到影响,例如播放歌曲,turbolinks不会影响它(请参阅下一节的soundcloud)。
  • 不重新加载文档头,因此不加载相同的标签/内容两次(如果它是相同的)。
  • 使您仍可以在服务器端缓存视图内容。

缺点:

  • 一拖,如果标题标签真的需要更新(新的js文件,新的css文件,元标签更新中...)
  • 如果要使用客户端查看渲染,它只是不是它的工具。
  • 禁用行为的默认行为只是很痛苦(使用css类来禁用一个节内的锚标签?)。

这实际上是一个什么样的应用程序体系结构的问题,它的目标是什么。

关于资产流水线,我对它有不同的结果,尽管我认为它有更多的优点而不是缺点。总体而言,预处理工具增强了跨浏览器开发的生产力,但不要依赖于生产。但在资产流水线的情况下,它必须与你想要的一样好。您可以预处理SASS,Coffeescript,您拥有像罗盘或波本威士忌这样的优秀图书馆,但这也会增加您的性能开销。因此,请对其进行基准测试,看看它们是否适合您。

2

让我们先从一个关于缺点后:http://eviltrout.com/2013/01/06/turbolinks-and-the-prague-effect.html

如果这不是你一个问题:http://geekmonkey.org/2012/09/introducing-turbolinks-for-rails-4-0/

为了总结的东西了:Turbolinks将提高你的页面加载 显著如果您页面共享JavaScript和CSS样式。当服务器端性能出现问题时,PJAX 就派上用场了。

  • 希望这有助于:)
+0

关于这些缺点的博客文章非常清楚不使用turbolinks的原因(我认为我肯定在其中),所以是的,它帮助:) –

相关问题