2016-07-21 87 views
1

我正在處理角度2應用程序,我們需要使用Google地球來運行此應用程序。不幸的是,谷歌地球使用了一個古老的Chrome版本,它不知道Angular 2的任何內容。需要一種機制來在服務器上運行角度2應用程序,並將已經執行/引導的角度的初始html響應發送到該瀏覽器。捲曲以獲取角度頁面的內容

我正在考慮創建一個與Google Earth瀏覽器通信的PHP服務器。所以基本上,Google地球會從這個PHP服務器請求頁面。這個PHP服務器將使CURL請求從Angular2應用程序獲取相應的頁面,並將HTML返回到Google Earth瀏覽器。

但是,有一個問題。 Curl得到了角應用程序的響應,但並不等待角應用程序完成自引導,這意味着在ui-view被路由器內容填充之前,CURL呈現其響應,在這種情況下恰好無用,我沒有任何用處HTML返回。

我用這個鏈接來檢查CURL響應:http://onlinecurl.com/ 你可以拿起任何角度網站並使用這個鏈接來查看它給出的迴應。

有沒有一種方式,捲曲可以等到角引導,然後返回HTML?或者有什麼其他方法可以解決這個問題嗎?

我已經嘗試了角度通用,但它看起來太複雜了,我有很短的時間來解決這個問題。

歡迎使用所有解決方案。提前致謝。

+0

你是否嘗試了一些代碼? –

+0

聽起來像你應該考慮在你選擇Angular作爲應用程序平臺之前使用Google地球瀏覽器的要求? Curl只會獲取一個靜態頁面。它不像瀏覽器,它不運行任何JavaScript(Angular和類似的框架依賴)。它只是從服務器獲取初始響應。它不是「等待」角度,因爲Angular(和任何其他腳本)沒有運行,因爲沒有瀏覽器環境可以運行它。 – ADyson

+0

PHP和curl無法幫助。解決問題的方法是使用Phantomjs或[Nightmare](https://github.com/segmentio/nightmare)來請求頁面。我不能說這些解決方案不如Angular Universal那麼複雜。 – estus

回答

0

Angular在最大安全模式下打破Semantic Web,Tor,以及其他任何與渲染Web瀏覽器不兼容的兼容性。所以我建議避免使用Angular,或者如果這不是一個選項,可以創建一個更快,更小,更兼容的網站鏡像,每個頁面提供一個html.gz文件。使用類似Selenium IDE,因爲「Angular Universal」不支持window/document/jquery /等,並且使用舊的bug代碼。 A 2,361.07 KB example Angular頁面可以縮減爲9.7 KB的平面文件。另一個選擇是如果你只想要數據,並且你使用或者可以找到具有HTML正文的XHR JSON文件並且只是獲取它。 curl -sL 'https://api.ontario.ca/api/drupal/page%2Fjobs-and-prosperity-fund-new-economy-stream?fields=body' > body.json對於上面的例子