2014-01-19 85 views
0

我的問題是如何在使用AngularJs時隱藏模板標籤。我的意思是index.html中我有這樣的:編譯並隱藏頁面源代碼中的AngularJs模板

<!doctype html> 
<html lang="en" data-ng-app="myApp"> 
    <head data-ng-controller="CtrlHead"> 
     <meta charset="utf-8"> 
     <title>{{title}}</title> 
    </head> 
    <body>    
     <div data-ng-view></div> 
     <script type="text/javascript" src="js/js.min.js"></script> 
    </body> 
</html> 

當我看到在瀏覽器頁面,然後點擊右鍵>查看源文件,我可以看到所有的代碼,看到的頁面究竟怎麼了建。

有什麼方法可以編譯AngularJs模板,並且只能在視圖源中顯示完成的html(添加{{title}}和實際視圖,而不是data-ng-view)?

請注意我不是在談論ngCloak,它可以防止{{tag}}在模板編譯之前閃現。

謝謝。

+0

你爲什麼要這麼做?它增加了什麼價值? – iamyojimbo

+0

主要原因是客戶要求它。他的推理是他只是想盡可能多地隱藏我們正在做的事情,而我們使用一些精心製作的模板,他不希望「他們」「竊取」:)順便說一句,這是一段時間以前,我沒有說服他擔心它。 – RachelC

回答

2

這裏沒有簡單的角度魔術。你將需要讓你的服務器提供html快照。這不適合你爲真實的人服務,因爲不會涉及JavaScript。這只是在JavaScript運行後頁面完成輸出的轉儲。

您可以使用模擬瀏覽器像PhantomJS您的服務器上運行的「訪問」你的時間表網頁,捕獲編譯的HTML,將HTML保存到文件,然後將服務於那些文件SEO爬蟲。

我做的是對我的情況有點更好。我建立了一個內容管理系統,所以對網站的所有改變都是通過它進行管理的。無論何時做出更改,該站點都會加載到管理面板本身(iframe)中,並從那裏捕獲輸出並保存快照。

告訴爬蟲,一個頁面是基於Ajax和其他地方尋找一個快照,把這個文檔的頭:<meta name="fragment" content="!">告訴谷歌尋找www.example.comwww.example.com?_escaped_fragment_=。然後,您將設置您的服務器來爲該請求提供主頁的快照。 信息從谷歌的位置:https://developers.google.com/webmasters/ajax-crawling/docs/getting-started

還有這種服務,可以爲你做這個:https://ajaxsnapshots.com