2012-07-02 56 views
0

假設您要構建一個功能強大的單頁客戶端應用程序,該應用程序可偵聽URL更改以瀏覽應用程序。假設用戶(或搜索引擎機器人)通過它的url加載一個頁面,而不是像傳統的那樣傳遞靜態的JavaScript文件並點擊api,我們想要預先計算服務器端和交付的所有內容DOM與js狀態一起。預計算客戶端Javascript執行

我想知道是否有現有的工具或技術來持續執行狀態到客戶端。

我知道我可以像phantom JS那樣執行腳本並輸出DOM元素,但是事件處理程序,控制器和js內存狀態將無法正確連接。我可以嗅出我們的用戶代理,只將預先計算好的內容發送給機器人,但我恐怕谷歌會爲此付出懲罰,而且我們也失去了將所有事先預先計算好的速度優勢。

回答

0

所以,你想編譯,服務器端,併發送到客戶端請求在特定的URL資源的結果?你的後端是用什麼書寫的?

我們有一個在GAE上運行的API。我們的應用程序是一個單頁面應用程序,我們使用HTML5歷史對象,因此我們必須對前端的實際URL進行「真實迴應」。

要處理這個問題,我們使用JSP預先緩存頁面中的數據,因爲它從服務器加載併發送到客戶端。

在我們使用骨幹前端,所以我們修改Backbone.sync尋找它在本地尋找頁面上的數據的副本,如果它不存在,只有從服務器作爲一個AJAX調用請求它。

所以,是的,這幾乎是每個網站在做AJAX之前所做的。訣竅在於編寫應用程序,以便數據可以在頁面中本地化(甚至可以在localStorage中),如果不是則請求數據。然後確保你的頁面是在服務器端建立的(所以我們實際上將數據填充到服務器端的HTML元素中,這樣頁面就不需要客戶端上的JS)。

如果你去別的地方,數據是動態的,頁面不會重新加載。