我试图在AngularJS中完成由SPA生成的完整html。
$.get('http://localhost:3388/' + d.response.path, function (d) {
$('#templateContainer').html(d);
});
但是它只重新调整了基本的html结构,而不是由AJAX生成SPA中的动态html(我想知道这是否是SPA对SEO不利的原因)。
我相信可能存在一些技巧/技巧来解决这个问题。例如,当您检查元素时,Chrome可以从AJAX渲染所有html。
也许我没有在谷歌上使用正确的关键字。人们一直在做什么来解决这个问题?
更新:
要清楚我的情况。我试图从此SPA获取完整的html,以向用户显示模板预览。
我有许多不同的SPA和不同的模板。我想通过AJAX而不是IFRAME显示这些实时模板。 IFRAME有效,但并不好。
答案 0 :(得分:0)
您可以在SPA中生成完整页面,但在这种情况下,您不应该使用SPA。
因为SPA的目标是仅获取页面的某些部分并在必要时加载它们,所以如果您关心像prerender.io这样的SEO爬虫,您应该尝试使用中间件,您可以使用它创建自己的服务器或使用他们的服务是开源的。
但在SPA中生成完整页面会导致您使用SPA的所有原因。最诚挚的问候:)
答案 1 :(得分:0)
您将获得原始html ,因为服务器无法呈现您的应用,这是预期的行为,没有错误。
S.P.A 通常是ClientSide应用程序,这意味着浏览器必须在rountime上呈现AngularApp!
当然浏览器没有渲染任何东西,因为你的代码被异步注入到dom中,因此,你需要手动编程AngularJS bootstrapping而不是通过 ng-app 指令。
顺便说一下,有很多方法可以对您的应用进行服务器端呈现,请查看https://prerender.io/ ...
如果你的目标是有一个好的索引 ...通过jQuery加载应用程序是一个糟糕的解决方案,因为搜索引擎爬虫不能处理javascript,这不是一个角度特定的问题,用javascript构建的每个应用都有这个问题。
最佳解决方案应该是一个完整的角度应用程序,并且只有爬虫才能实现服务器端预渲染(使用prerender.io)。
希望有所帮助!