当前位置: 首页 > 面试题库 >

Angular2 SEO-如何使Angle 2应用程序可抓取

黄英韶
2023-03-14
问题内容

我正在使用Angular-Meteor框架构建Angular 2应用程序。

我想实现快速和一致 的索引 谷歌和其他搜索引擎,让Facebook的分享者和其他 刮削器 生成我的JS生成内容的预览。

通常,SPA使用PhantomJS在服务器端呈现页面并将静态HTML发送给html" target="_blank">客户端。

当然,当我拦截_escaped_fragment_或看到google或scraper用户代理时,我可以自己生成PhantomJS,但是当我直接在流量较大的网站上生成PhantomJS时,我总是遇到内存泄漏和孤立的Phantom实例的情况(我使用NodeJS和此模块)。

对于Angular 1应用程序,我曾经使用Angular-SEO之类的角度模块来解决此问题,但似乎很难将此类模块转换为angular 2。

我还没有找到合适的 Angular 2 模块。我应该自己构建它,还是有其他好的方法可以实现这一目标?


问题答案:

Angular2的伟大之处在于,启动后,根应用程序元素中的所有内容都会消失。这意味着您可以将想要从爬虫抓取的服务器中的任何内容放入其中。

您可以通过使用应用程序中内容的服务器呈现版本来生成此内容,或者具有自定义逻辑。

您可以在此处找到更多信息:https : //angularu.com/VideoSession/2015sf/angular-2-server-
rendering
以及此处:https :
//github.com/angular/universal



 类似资料:
  • 然后,我应该如何以反应式的方式将查询结果提取到Kotlin数据类(或Java Jooq的POJO)中?

  • 问题内容: libGDX应用程序必须实现.resize(int width,int height)方法,因此我认为调整libGDX应用程序的大小并不重要,但是我发现没有办法制作实际的应用程序JFrame或与JFrame一样可拖动的东西。 setResizable(true)。libGDX根本不可能吗? 问题答案: 如果您将gdx-backend-lwjgl用于桌面应用程序,则可以使用: 使用来自S

  • 创建一个基于Django3的全栈项目似乎是最佳实践(或至少一种常用方法),该项目使用特定于项目的Django应用程序(而不是独立的Django应用程序),其结构如下(参见此处): 应用程序(此处:)通过以最基本的形式(没有规则、视图等)集成 和 在另一个应用程序(例如)中使用一个应用程序的逻辑(例如)可以很好地工作(例如通过中的)。 但是,如果我试图在app2的逻辑中访问app1的模型,我会得到。

  • 问题内容: 使用JNA的文档说: 使目标库可用于Java程序。有两种方法可以执行此操作:首选方法是将系统属性设置为目标库的路径。此属性类似于但仅适用于JNA加载的库。 这到底是什么意思?如何设置系统属性?我的应用程序需要参考 谢谢 问题答案: 在命令行上调用Java虚拟机时,可以使用参数“ -D”来设置系统属性: 当从例如配置文件中读取代码时,也可以在应用程序启动时在代码中以编程方式进行设置: 我

  • 我是JavaFX新手。我使用Maven创建了一个Hello World项目。当我在Eclipse中运行时,它工作得很好。 当我试图使用build.fxbuild构建应用程序时,我得到了这个错误。

  • 如果1要更新应用程序,请从控制台执行操作。。1.单击部署。2.选择应用程序名称并单击更新选项。3、在这里,他可以改变: 现在在我的应用程序中没有指定计划路径,所以要更新应用程序,我只更改源路径。应用程序已成功更新。 我想通过提供新的源路径,使用wlst命令更新应用程序。有可能吗? 喜欢 updateApplication('backoffice','path\ to\ the\ ear\ file