我想知道是否有人找到了这个问题的解决方案。有没有办法让两全其美:
我看到一些主要网站能够管理这个(gmail,stackoverflow),我看到Jeff's new site在noscript标记中构建了一个简单的网站版本。
我认为#{3}大脑认为#1就是答案。
(我关注AngularJs的原因是我喜欢它支持html模板,声明式样式,以及它修复js范围的尝试.Ember和其他框架也很棒;也许其中一个更适合混合网站?)
答案 0 :(得分:14)
这个问题有点细致,因为答案是“它取决于”。例如,您提到Gmail,没有任何理由要求像Gmail这样的应用程序需要为SEO编制索引,但取决于您想要或需要支持的内容可能希望确保您可以支持没有Javascript。
然而,即使是“没有javascript”的论点现在也变得疲惫不堪,至少在“网络应用程序”类中是这样。如果我想使用Windows应用程序,我需要Windows,如果我想使用javascript驱动的Web应用程序,那么假设我需要一个没有残缺的浏览器来使用它是不合理的。
然而回到你的问题我只能和AngularJS说话,因为我最熟悉它。在大多数情况下,它确实允许您支持渐进增强方法,但如果您希望支持,则不要使用URL路由之类的东西。你可以做的是使用AngularJS控制器,绑定和指令,类似于你如何使用jQuery来增强页面的交互和行为。
请记住,这种方法将严重限制你可以用Angular(或Ember)做的事情,并且你可能会开始有争议的是你从这种方法得到的,你不能单独使用jQuery。
这些天的替代方案是做Twitter之类的网站。对于初始加载的任何视图,这基本上是从服务器提供完全呈现的HTML,然后使用Javascript进行后续加载和增强的UI行为。如果您确实需要支持使用和不使用Javascript进行浏览,并且具有改进第一个请求的呈现/加载时间的额外好处,那么这非常有效(尽管实现可能非常具有挑战性)。再次“它取决于”,因为它很大程度上取决于您的网站如何实际工作,如果可以使用它。你必须为它设计,它不会是微不足道或容易的。
更新
我们正在采取Year of Moo方法,并使用PhantomJS渲染需要搜索引擎优化的页面,并将缓存的初始状态保留在某个地方为他们提供服务。我们在部署上运行了一个rake任务来更新它。这只是初始状态,但它现在有助于解决问题。
事情总是在变化,我相信我会在一年左右的时间内改变主意。
答案 1 :(得分:2)
您是否阅读了Google的Making AJAX Applications Crawlable。您可以拥有JavaScript单页应用和可抓取内容。
如果你坚持使用棱角分明,那就有一篇有趣的文章:Turns out it is possible to have your AngularJS application indexed