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

Can I mix Client-Side-Rendering and Server-Side-Rendering in AngularJS? and How?

我正在构建一个网站,该网站不是 SPA(单页应用程序)。

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

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

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

如何在服务器端呈现AngularJS?

是的,理论上可以混合。

不,您可能会遇到安全问题 - 具体反映为 XSS - 如果用户的输入不受信任 - 例如{{1+2}} - 作为服务器响应的一部分返回并在 Angular 的模板中呈现,因为该表达式将被 angular 无意中解析。

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

来自 angular 文档: 通常,我们不建议这样做,因为它会创建意外的 XSS 向量。

但是,可以在 bootstrap 模板 (index.html) 中混合服务器端模板,只要用户输入不能在服务器上用于输出 html然后由 Angular 以允许任意代码执行的方式进行处理。

例如,您可以使用服务器端模板动态生成 CSS、URL 等,但不能生成 bootstrapped/compiled by Angular 的模板。