我建立使用aspnetcore水療反應,Redux的樣板(可在http://blog.stevensanderson.com/2016/05/02/angular2-react-knockout-apps-on-aspnet-core/可以看出)如何禁用asp.netcore-spa應用程序上的服務器端呈現?
但是在服務器端渲染需要大量的時間(約30秒),我想將其禁用我的應用程序。你能告訴我如何禁用服務器端渲染而不破壞代碼嗎?
我建立使用aspnetcore水療反應,Redux的樣板(可在http://blog.stevensanderson.com/2016/05/02/angular2-react-knockout-apps-on-aspnet-core/可以看出)如何禁用asp.netcore-spa應用程序上的服務器端呈現?
但是在服務器端渲染需要大量的時間(約30秒),我想將其禁用我的應用程序。你能告訴我如何禁用服務器端渲染而不破壞代碼嗎?
該模板將asp-prerender-module
標籤助手添加到Home\Index.cshtml
中的<div id="react-app"...>
標籤。如果你刪除標籤助手,你將禁用服務器端渲染。
標記輔助導入在/Views/_ViewImports.cshtml
:
@addTagHelper "*, Microsoft.AspNetCore.SpaServices"
您運行的應用程序之前,你可以做的命令行捆綁...
> webpack --config webpack.config.vendor.js
> webpack
在悉尼國家會議中心,史蒂夫桑德森給了presentation。
aspnet-prerender-module
標記助手是SpaServices
的一部分,它是Yeoman aspnetcore-spa
模板生成的所有項目的基礎。因此,您可以在任何模板中啓用/禁用預渲染,其中包括Angular 2
,Aurelia
,Knockout
和React (with Redux)
。這同樣適用於您使用Node
包aspnet-prerendering
和上述標籤助手創建的任何自定義項目或模板。
我已經關注了Steve Sanderson的博客,併爲數據表添加了primeng,但只有在我的index.cshtml文件中從
@sohaibjaved你的情況可能值得自己的問題。我有一些解決方法,但我不認爲他們會適用於特定的libarary。有些庫現在不兼容同構渲染。我遇到了幾種不同的情況,其中服務器預渲染看起來不太可能,但已設法找到涉及以下一種或多種組合的解決方法: –
@sohaibjaved 1.'angular2-universal''的import {isBrowser}(應該可能現在來自核心),並有條件地允許/推遲某些功能,直到您知道您處於客戶端環境中。 2.如果您需要爲副作用加載npm包(不適用於您的情況),您可以在'boot-client.ts'中執行此操作。 3。聲明一個對象來保存你想要使用的符號。然後,不是使用'import',而是有條件地使用'require'來覆蓋之前聲明的內容。不幸的是,我不認爲其中的任何一種都適用於您的特定情況。 –
對於Angular 2項目,我通過從Index.schtml中的<app>
標記中刪除asp-prerender-module
屬性來解決此問題。
您確定服務器端渲染處於活動狀態?在Firefox中點擊F12,進入網絡標籤,查看下載的文件。聽起來更像是服務器端渲染沒有啓用,你的角度應用下載每一個文件(而不是捆綁),這導致發送到服務器的400-800個請求,這需要大約30-60秒。當啓用調試器時,從ASP.NET Core獲取文件的速度也很慢,所以需要更長的時間。也許在這裏發佈你的'System.config.js'文件 – Tseng
感謝@Tseng,我在Release模式下運行我的應用程序,實現只有第一個請求花了很長時間,因爲webpack在約16秒內生成了捆綁包。之後,它運行得很快。 – Hasan