用Rendertron優化Angular網站的SEO
[我的預設標題(table of contents)]
- 標題一
- 標題二
- 標題三
- 標題四
- 標題五
- 標題六
- 標題七
- 標題八
- 標題九
- 標題十
標題一
今天我要向你展示一些前所未有的內容:我將會以Angular 5的Progressive Web App作為範例,進行100%最佳化的搜尋引擎配置;讓所有路由對於社交媒體連結機器人來說可讀取;並使其能完全與AngularFire - 或任何其他非同步資料來源相容。這一切,將不需要使用Angular Universal,我們將使用Google Chrome團隊的一個全新庫,叫做Render Tron。如果您對於無頭Chrome或Render Tron不熟悉,我建議觀看Sam Lee在2017年Polymer Summit的演講,內容真是令人瞠目結舌。如果您曾經為了客戶端JavaScript框架而與搜尋引擎最佳化掙扎過,我今天要向您展示的是如何與Angular 5和Firebase Cloud Functions一起使用這個工具,您將會對實現現有Angular應用程式與之整合的容易性感到非常驚訝。我在Firebase Hosting上部署了一個完整的工作示例供您測試和驗證,並且我也將分享在angularfirebase.com上的所有原始碼。如果您是新來的,請務必訂閱,如果您希望保持這種內容的免費和頻繁,請考慮成為專業支持者。讓我們詳細看看系統將如何運作:我們有一個普通的部署在Firebase Hosting上的Angular Progressive Web App,然後我們在右邊有我們的Render Tron應用程式。Render Tron只是一個可以在伺服器上運行的Chrome瀏覽器,這意味著它可以像普通用戶一樣呈現您的網站,並將數據返回給想要讀取的機器人。然後,我們將設置一個雲端函數作為中間層,用於確定用戶是機器人還是實際的人。假設有人分享一個鏈接,而在Facebook機器人想要爬取您的網站以顯示該鏈接的預覽,那麼雲端函數將把請求路由到Render Tron,然後用完全渲染的頁面回應Facebook機器人。這意味著您可以動態創建元標籤或非同步加載數據,而任何類型的機器人仍然可以讀取它們。如果一個普通的人訪問您的網站,它將跳過Render Tron,直接提供Angular應用程式。如果該用戶決定在社交媒體上分享您的應用鏈接,它將顯示與該頁面相關的任何元標籤。Chrome團隊部署了一個Render Tron的實例,您現在可以為自己的應用程序使用它,但不建議用於生產環境。我將向您展示如何克隆該項目並將其部署到App Engine,以便如果您想在生產環境中使用它,這是一個具有Docker支持的容器,所以您實際上可以將其部署到任何後端。但是,為了測試,您可以使用Google部署的實例。它提供了一個非常簡單的API,您只需要將要讀取的URL傳遞給它,它將渲染並序列化該URL。它監聽初始頁面加載以及任何非同步事件和網路呼叫來加載額外的數據到頁面中。它提供多達10秒的時間來渲染該頁面,但一旦頁面完成渲染,它就會發送響應。現在我們知道Render Tron如何運作了,讓我們繼續構建一個能夠實際應用這個功能的Angular應用程式。第一件事我要做的是生成一個新的應用程式,並確保包含路由模組。然後,我會進入index.html文件,並為Twitter和Open Graph添加一些元標籤。如果您不熟悉元標籤,它們只是告訴連結機器人如何顯示您的頁面。對於Twitter Card,我們只需給它一個標題、描述和圖片。如果有人分享這個頁面,Twitter將會確切地知道要顯示哪個圖片和在Twitter平台本身顯示的描述。我在這裡展示的元標籤旨在作為默認回落,如果我們無法動態生成它們,它們應該傳達有關您應用程式首頁的一般信息。現在,我們希望這些元標籤為由路由加載的每個單獨組件更改,因此我們將通過生成一個SEO服務來實現這一點。我首先要做的是從Angular中引入該元服務,該服務可以在文檔的Head中動態設置元標籤,然後我們將在構造函數中注入它,並設置一個配置對象。您可能需要根據自己的應用程式自定義這些配置,但它只需要一些用於覆蓋您自己配置對象的命名參數,這個方法的目的就是為了避免在每個單獨組件中重複這些元標籤設置,我這裡快速介紹一下,因為每個更新標籤方法完全相同,現在讓我們將此服務應用於一個組件中。我生成了一個名為About Page的新組件,我也創建了其他一些組件,我們將在路由中加載這些組件。首先,我們導入每個組件,然後將它們添加到路由數組中,每個路由都有一個路徑,在瀏覽器中導航到該路徑,然後使用該路徑進行完全渲染,現在我們需要設置一些鏈接,以便用戶可以實際導航到這些路徑。我們可以使用App組件來實現這一點,在底部應該看到路由出口,然後我們只需為我們的每個路徑添加一個路由鏈接,現在對於每個組件,我們可以動態生成元標籤,所以我們只需進入組件的類文件中引入SEO服務,然後在ngOnInit中調用generateTags方法並傳遞我們想要設置的配置選項,所以對於首頁,我們將設置標題,然後說明是我的SEO友好首頁在Angular 5上,同樣,我們可以切換到About Page的操作也是一樣的,這樣就為每個由路由加載的組件動態設置了元標籤,您可以通過打開您的應用程式並進入文檔的定位標籤中來驗證它是否起作用,您應該可以看到每次導航到新的路徑時,元標籤的變化。這很酷,但我想更進一步,動態生成從Firebase數據庫加載的元標籤,我創建了一個名為Firebase Demo的組件,這個組件的代碼與其他組件完全相同,但在這個組件中,我們將導入Firebase數據庫,為此需要一個Firebase帳戶以及已安裝的AngularFire,您可以遵循主倉庫上的官方說明,我將引入Firebase數據庫,您還可以使用Firestore,然後我們需要RxJS可觀察對象以及take操作符,第一次設置AngularFire對象的引用,然後我們將數據作為一個可觀察對象獲取,然後我們將在構造函數中注入我們的SEO服務以及AngularFire數據庫,為了獲取數據,我們只需調用valueChanges,然後我們可以通過訂閱它來獲取數據 這樣,我們可以將元標籤設置為我們從firebase中獲取的數據,所以我們設置標題,說明以及圖片元標籤。這樣,Angular方面的部分就完成了,接下來輪到Render Tron和Firebase Cloud Functions來使其支援SEO,首先,我要向您展示如何部署您自己的Render Tron實例,以便您可以在生產環境中使用。Google可能會在未來提供Render Tron作為一項服務,我希望會這樣,但目前我們需要部署自己的Render Tron實例進行測試。這一步是完全可選的,所以如果您想跳過此步驟,可以直接進入Firebase Cloud Functions,這個演示中,我只是直接在我的Angular項目中克隆了Render Tron,但是您可能希望將其作為一個獨立的項目與Angular分離,我還想指出,您需要安裝Docker,系統要求有所不同,所以我無法在這裡逐步展示這一步。下一步是進入該目錄,然後運行docker build命令,構建容器可能需要幾分鐘的時間,一旦完成,您應該能夠運行docker run並在本地系統上提供服務,如果您導航到端口8080,您應該看到Render Tron應用程式在那裡運行,這對於自定義Render Tron源代碼來說是一個很好的優點,只要您的項目中已經有了Firebase,您就可以使用App Engine部署容器,只需使用一個命令,首先,您需要進入app.yaml文件,設置CPU核數和內存,如果您已經安裝了Google Cloud Platform命令行工具,您只需使用firebase deploy --only functions命令,然後還需要為您的Angular應用程式創建一個生產構建,運行ng build --prod,然後運行firebase deploy --only hosting,就像魔術一樣,您的Progressive Web App現已優化為搜索引擎,並可供鏈接機器人使用,而您在這個過程中並沒有破壞您的Angular應用。所有這些都是非常尖端的,所以我建議您在我的工作示例中查看它,並在Slack上提問如果有任何問題。對於每個在演示中的頁面,都有一個URL,如果您將其粘貼到任何社交媒體平台上,您應該可以得到鏈接預覽,或者如果您以機器人的形式提取它,您應該可以看到完全渲染的HTML。以上就是關於使用Render Tron進行Angular SEO的全部內容。如果這個視頻對您有所幫助,請點贊並訂閱,如果您想獲得與這些主題相關的高級獨家內容,請考慮在angularfirebase.com上成為專業訂戶,您將獲得我的書的免費副本以及一對一的項目咨詢。感謝您觀看,我們很快再見!
標題二
Step-by-step Guide on Optimizing Angular Apps for Search Engines with Render Tron
基於先前的內容,本文將提供一個逐步指南,詳細介紹如何使用Render Tron對Angular應用程式進行搜索引擎優化。提供了該過程的每個步驟,以及一些實用的技巧和技巧。讀完本文後,您將能夠充分利用Render Tron並將其應用於自己的Angular應用程式,從而實現更好的搜索引擎可見性和用戶體驗。
步驟一:生成一個新的Angular應用程式
首先,我們需要生成一個新的Angular應用程式,並確保包含Angular的路由模組。路由模組是實現Render Tron的關鍵,因為它允許我們根據不同的URL路徑加載不同的組件。
步驟二:在index.html中設置預設的元標籤
在index.html文件中,我們需要為我們的Angular應用程式設置一些預設的元標籤,這樣搜索引擎機器人在讀取我們的頁面時就能夠瞭解頁面的內容。這些元標籤通常是用於描述頁面的標題、描述和圖片。
步驟三:生成一個SEO服務
生成一個名為SEO服務的Angular服務,這個服務將負責動態生成與每個組件相關的元標籤。在這個服務中,我們將使用Angular的MetaService來動態設置元標籤。
步驟四:在組件中動態設置元標籤
對於每個需要動態設置元標籤的組件,我們需要將SEO服務注入到組件中,並在ngOnInit生命周期鉤子中調用generateTags方法來設置元標籤。根據組件的具體內容,我們可以動態設置標題、描述和圖片元標籤。
步驟五:設置Render Tron
現在,我們需要配置Render Tron,以便將渲染的頁面返回給搜索引擎機器人。我們可以使用Google提供的Render Tron實例,或者您也可以部署自己的Render Tron服務。這里介紹了兩種選項的步驟。
步驟六:創建Firebase Cloud Function
Firebase Cloud Function將根據URL路由來定義我們的中間件。在這個步驟中,我們將創建一個Cloud Function,該Function將檢測請求的User-Agent標頭以確定是否為搜尋引擎機器人。如果是機器人,我們就將請求轉發到Render Tron,並返回渲染後的頁面;否則,我們將返回原始的Angular應用程式。
步驟七:部署Angular應用程式和Cloud Function
最後,我們需要將我們的Angular應用程式和Cloud Function部署到Firebase。這樣,我們的應用程式就可以進行搜索引擎優化,並且可以被搜索引擎機器人正確解析。
這些是使用Render Tron進行Angular SEO的基本步驟。細節和實現細節可能需要更多的解釋和代碼示例,但這個指南應該可以幫助您入門和理解如何為您的Angular應用程式實現更好的搜索引擎可見性。
[我的預設標題(Highlights)]
- 使用Render Tron進行Angular應用程式的搜索引擎優化
- 動態設置元標籤以提高搜索引擎可見性
- 使用Firebase Cloud Functions中的中間件來檢測機器人
- 部署Angular應用程式和Cloud Function至Firebase
[我的預設標題(FAQ)]
Q: Render Tron是否是Google Chrome團隊的官方庫?
A: 是的,Render Tron是Google Chrome團隊開發的庫,專為使機器人能夠正確讀取以JavaScript為基礎的網頁而設計。
Q: Render Tron是否可以用於生產環境?
A: 雖然Google提供了一個Render Tron實例,但它目前不建議用於生產環境。如果您想在生產環境中使用Render Tron,最好是將其部署為獨立的服務。
Q: Render Tron是否與所有類型的Angular應用程式兼容?
A: 是的,Render Tron與所有類型的Angular應用程式兼容。無論您使用哪個版本的Angular或您的應用程式的規模如何,Render Tron都可以完美適用。
Q: Firebase Cloud Functions是否是唯一與Render Tron兼容的中間件?
A: 不,Firebase Cloud Functions並不是唯一與Render Tron兼容的中間件。您也可以使用其他中間件來檢測機器人並將請求轉發到Render Tron。
Q: Angular的SEO優化是否只涉及元標籤的設置?
A: 不只如此。元標籤設置是Angular的SEO優化的一部分,但還有其他方面需要考慮,例如頁面速度、內容結構和鏈接建設等。
Q: 我需要具備什麼樣的技術背景才能進行Angular的SEO優化?
A: 進行Angular的SEO優化需要基本的Angular和Web開發知識。如果您熟悉Angular和Firebase,那麼您應該能夠很容易地進行優化。
Q: Angular應用程式的SEO優化是否會影響用戶體驗?
A: 正確的Angular的SEO優化應該不會對用戶體驗產生負面影響。相反,它可以提高頁面的可見性和性能,從而提高用戶體驗。
Q: Angular的SEO優化是否有其他優點和缺點?
A: Angular的SEO優化可以提高您的應用程式在搜索引擎中的可見性,從而提高流量和用戶參與度。然而,它可能會增加開發和維護的工作量。
Q: Render Tron是否支持其他JavaScript框架?
A: 是的,Render Tron不僅支持Angular,還支持其他JavaScript框架,例如React和Vue等。
Q: Angular的SEO優化是否需要進行定期維護?
A: 是的,Angular的SEO優化需要進行定期維護,以確保您的應用程式保持最佳的搜索引擎可見性。這可能涉及更新元標籤和優化頁面速度等工作。