我正在开发一个angular 2应用程序,我们需要使用Google Earth来运行这个应用程序。不幸的是,谷歌地球使用的是一个非常古老的Chrome版本,它对Angular 2一无所知。需要一种机制来在服务器上运行angular 2应用程序,并将angular已经执行/引导的初始html响应发送到此浏览器。
我正在考虑创建一个与谷歌地球浏览器通信的PHP服务器。因此,从本质上讲,Google Earth将从该PHP服务器请求页面。这个PHP服务器将发出CURL请求,从Angular2应用程序获取相应的页面,并将HTML返回给Google Earth浏览器。
但是,有一个问题。Curl确实从angular应用程序获得了响应,但不会等待angular应用程序完成引导,这意味着在ui-view被路由器内容填充之前,CURL会呈现它的响应,而在这种情况下,我没有得到任何有用的HTML。
我使用这个链接来检查CURL的响应:http://onlinecurl.com/,你可以选择任何角度的站点,并使用这个链接来查看它给出的响应。
有没有办法让curl等到angular bootstrap后再返回HTML?或者,有没有其他方法来解决这个问题?
我已经尝试过angular-universal,但它似乎太复杂,无法实现,而且我有很短的时间来解决这个问题。
欢迎所有解决方案。提前谢谢。
发布于 2017-05-26 21:31:33
Angular打破了Semantic Web,Tor在最大安全模式下的兼容性,以及任何其他类型的兼容性,除非是一个渲染的web浏览器。因此,我建议避免使用Angular,或者如果不是这样的话,可以选择创建一个更快、更小、更兼容的站点镜像,为每个页面提供一个html.gz文件。使用像Selenium IDE这样的代码是因为"Angular Universal“不支持窗口/文档/jquery/等,而phantomjs & nightmare使用的是老的错误代码。可以将2,361.07KB的example Angular页缩减为9.7KB的平面文件。另一种选择是,如果您只需要数据,并且使用或可以找到包含主体HTML的XHR JSON文件,则直接获取该文件。以上示例的curl -sL 'https://api.ontario.ca/api/drupal/page%2Fjobs-and-prosperity-fund-new-economy-stream?fields=body' > body.json
https://stackoverflow.com/questions/38497240
复制相似问题