2015-07-02 35 views
1

我正在構建一個網站,它是而不是SPA(單頁應用程序)。我可以在AngularJS中混合客戶端渲染和服務器端渲染嗎?如何?

它會有幾頁,我想改變當前頁部分。這就是爲什麼我想使用客戶端渲染。但是,它也有完全不同的頁面,將由服務器渲染。

每個頁面都會被客戶端渲染部分改變,當用戶想移動到另一個頁面時,服務器會渲染它。可能嗎?

所以,我的問題是,我可以在AngularJS中混合客戶端渲染和服務器端渲染嗎?

and 如何在服務器端渲染AngularJS?

+0

你不能在服務器端渲染AngularJS。 AngularJS在瀏覽器中運行!如果你真的想要混合,我會建議看看Jade Templating,並讓express.js將玉石渲染髮回給你的瀏覽器和/或角度。 – nottinhill

+0

@SirBenBenji謝謝你的好回答! – KimCrab

回答

0

是的,理論上你可以混合。不,您可能遇到安全問題 - 特別反映XSS - 如果不可信用戶的輸入 - 例如。 {{1 + 2}} - 作爲服務器響應的一部分返回並在Angular的模板中呈現,因爲該表達式將被不知情的角度解析。

請參閱:https://github.com/angular/angular.js/issues/5601 對於類似的討論

從角文檔: 一般情況下,我們不建議這樣,因爲它可以造成意想不到的XSS載體。

但是,只要用戶輸入無法在服務器上使用以輸出html,然後由Angular處理,就可以允許在引導模板(index.html)中混合使用服務器端模板用於任意代碼執行。例如,您可以使用服務器端模板來動態生成CSS,URL等,但不能用於生成由Angular自舉/編譯的模板。

相關問題