使用推状态在SEO的木偶应用程序

我做了我的功课,并阅读了关于pushstate的迷你系列:

http://lostechies.com/derickbailey/2011/09/26/seo-and-accessibility-with-html5-pushstate-part-2-progressive-enhancement-with-backbone-js/

从什么理解实施推状态的困难部分是确保我的服务器端将服务于相应的URL的实际页面。

我觉得这将是一个巨大的任务,以前我只是简单地发送一个简单的玉页:

body header section div#main footer.site-footer div.footer-icons.footer-element div.footer-element span.footer-link Contact Us span.footer-link Terms of Service script(src='/javascripts/lib/require.js', data-main='/javascripts/application.js') 

我正在用我的木偶布局和综合视图做所有的渲染,说实话这有点复杂。

所以从我的理解,我需要复制所有复杂的嵌套/渲染使用服务器端玉,使pushState正常工作?

我在客户端使用了下划线模板,在服务器端重用它们的简单方法是什么?

我要看你想做什么

要“只”使用pushState,唯一的要求是您的服务器为您的应用可以访问的每个URL返回一个有效的页面。 但是,服务器返回的内容不必匹配将呈现客户端的内容。 换句话说,您可以在服务器端使用“全部捕捉”路线,总是返回上面的页面,然后让Backbone / Marionette触发其path来处理渲染和显示。

也就是说,如果您想使用pushState进行search引擎优化,您可能希望在首次调用时获得服务器发送的静态HTML,然后使用Marionette应用程序开始增强交互性。 在这种情况下,它要复杂得多,您可能需要尝试使用选项来触发正确的行为(例如,在增强现有HTML时使用attachView,在初始情况之后正常显示视图)。

推送状态可以正常工作,而您的服务器不会按照build议的方式真正为您的应用程序提供服务。

推状态只是hashbang url的一种替代方式,在现代浏览器中被支持。 看看这里的历史文档 ,你会发现没有提到你的网站在应用程序的url上静态地提供你的应用程序(但要记住它是select性的)。

你参考的文章是说, 对于良好的SEO ,你应该这样做。 这是因为你不能保证当一个search引擎抓取你的网站,它会执行你的JavaScript,并拿起你的路线等静态服务的网站只是让search引擎的方式来获取您的内容,而不执行任何JavaScript。

就像你说的那样,通过这样做,你基本上并行地build立了两个站点,它确实增加了你需要做的工作量。 如果你正在构build一个充满静态内容的相对简单的网站,这可能是好的,但是如果你正在创build一个复杂的应用程序,那么在大多数情况下它可能太多了。

虽然我会补充说,如果你正在构build一个应用程序,那么SEO并不重要,所以这是一个空白点。