【问题标题】:Can I mix Client-Side-Rendering and Server-Side-Rendering in AngularJS? and How?我可以在 AngularJS 中混合使用客户端渲染和服务器端渲染吗?如何?
【发布时间】:2015-09-19 11:02:24
【问题描述】:

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

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

每个页面都会被客户端渲染部分改变,当用户想要移动到另一个页面时,服务器会渲染它。有可能吗?

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

以及如何在服务器端渲染 AngularJS?

【问题讨论】:

  • 你不能在服务器端渲染 AngularJS。 AngularJS 在浏览器中运行!如果您真的想混合,我建议您查看 Jade Templating,并让 express.js 将翡翠效果图发送回您的浏览器和/或 Angular。
  • @SirBenBenji 谢谢你的好回答!

标签: angularjs server rendering single-page-application


【解决方案1】:

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

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

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

来自角度文档: 一般来说,我们建议不要这样做,因为它会创建非预期的 XSS 向量。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-06
    • 2021-08-27
    • 2023-04-09
    • 2018-01-05
    • 2016-11-10
    • 1970-01-01
    • 2019-08-07
    相关资源
    最近更新 更多