我可以在AngularJS中混合使用客户端渲染和服务器端渲染吗?如何?

时间:2015-07-02 04:40:47

标签: angularjs server rendering single-page-application

我正在建立一个不是SPA (单页应用)的网站。

它会有多个页面,我想更改当前页面部分。这就是我想使用客户端渲染的原因。但是,它也有完全不同的页面,将由服务器呈现。

每个页面将通过客户端呈现部分更改,当用户想要移动到另一个页面时,服务器将呈现它。有可能吗?

所以,我的问题是我可以在AngularJS中混合使用客户端渲染和服务器端渲染吗?

如何在服务器端呈现AngularJS?

1 个答案:

答案 0 :(得分:0)

是的,理论上你可以混用。

不,如果不受信任的用户输入-e.g,您可能会遇到安全问题 - 特别是反映XSS。 {{1 + 2}} - 作为服务器响应的一部分返回,并在Angular的模板中呈现,因为该表达式将在不知不觉中被角度解析。

请参阅:https://github.com/angular/angular.js/issues/5601 对于类似的讨论

从角度文档: 通常,我们建议不要这样做,因为它可能会创建非预期的XSS向量。

但是,只要无法在服务器上使用用户输入输出html然后由Angular以某种方式处理,就可以在引导模板(index.html)中混合使用服务器端模板这将允许任意代码执行。

例如,您可以使用服务器端模板动态生成CSS,URL等,但不能生成由Angular引导/编译的模板。