2014-05-25 36 views
3

所以,我想要关于angularjs的社区建议接管已经服务器端呈现的页面。angularjs接管已经服务器端呈现的页面

angularjs很棒!但是当它涉及到首页加载性能和SEO时,存在一个真正的缺点。显然,angularjs与服务器端渲染不兼容。

长话短说,我想在服务器端渲染一个页面,并尽可能快地将它返回到用户/机器人所有的数据。然后在后台引导角度以应用页面行为。当有请求加载新数据时,我只想加载数据并绑定到内容,而不刷新所有内容并往返获取html。

目前,我使用Velocity作为服务器端模板引擎来创建渲染页面,然后使用angular.bootstrap异步来应用角度。

问题的解决方案:

  1. 双视角技术 - 我渲染页面的两倍(尽管在第二时间没有什么事,但我写的代码两次)

  2. 速度不属于最简单的写意见方式。这是相当古老的技术,我不太喜欢它。

那么,你的意见是什么? 在此先感谢!

回答

1

对于搜索引擎优化,我认为最好的方法是将预渲染的HTML快照提供给搜索引擎爬虫。

基本上,搜索引擎抓取工具会用一些特殊的查询字符串参数打你的页面,以将自己标识为抓取工具而不是真正的用户。当您检测到网址格式时,您可以为网页提供预渲染的无JavaScript快照。

退房谷歌的解释在这:https://developers.google.com/webmasters/ajax-crawling/docs/html-snapshot

至于第一页加载时,如果你的双花括号显示引导之前,应使用NG绑定指令(https://docs.angularjs.org/api/ng/directive/ngBind)。如果您不喜欢在检索数据之前显示您的页面的方式,请在您的控制器上使用解决方案或显示适当的加载指示器(微调器,“加载...”或任何您喜欢的内容)以通知用户加载是进行中。

Resolve由默认的Angular路由器和ui路由器支持。你可以在网上找到如何使用它们的例子。

+0

你是否熟悉更多的技术用于服务器端渲染,角度良好?客户端和服务器呈现的代码重用如何? – alonn24