【发布时间】:2016-11-24 15:12:12
【问题描述】:
我正在开发一个 Angular 2 应用程序,我们需要使用 Google 地球来运行这个应用程序。不幸的是,谷歌地球使用的是一个非常古老的 Chrome 版本,它对 Angular 2 一无所知。需要一种机制来在服务器上运行 Angular 2 应用程序并将初始 html 响应与 Angular 已经执行/引导到该浏览器。
我正在考虑创建一个与 Google 地球浏览器通信的 PHP 服务器。所以本质上,谷歌地球将从这个 PHP 服务器请求页面。该 PHP 服务器将发出 CURL 请求以从 Angular2 应用程序获取相应的页面并将 HTML 返回到 Google 地球浏览器。
但是,有一个问题。 Curl 确实从 Angular 应用程序获得响应,但不等待 Angular 应用程序完成引导,这意味着在 ui-view 被路由器内容填充之前,CURL 呈现其响应,在这种情况下恰好没用我没有得到任何有用返回 HTML。
我使用此链接检查 CURL 响应:http://onlinecurl.com/ 您可以选择任何有角度的网站并使用此链接查看它给出的响应。
有没有一种方法可以让 curl 等到 angular bootstrap 然后返回 HTML?或者有没有其他方法可以解决这个问题?
我已经尝试过 angular-universal,但它似乎实现起来太复杂了,我有很短的时间来解决这个问题。
欢迎所有解决方案。提前致谢。
【问题讨论】:
-
你在尝试一些代码吗?
-
在我看来,在选择 Angular 作为应用程序平台之前,您应该考虑使用 Google 地球浏览器的要求? Curl 只会获取一个静态页面。它不像浏览器那样工作,它不运行任何 javascript(Angular 和类似框架所依赖的)。它只是从服务器获取初始响应。它不是“等待” Angular,因为 Angular(和任何其他脚本)没有运行,因为没有浏览器环境可以运行它。
-
PHP 和 curl 无能为力。解决问题的方法是使用 Phantomjs 或Nightmare 请求页面。我不能说这些解决方案不如 Angular Universal 复杂。
标签: javascript php angularjs node.js curl