【问题标题】:what is server side rendering using angular2?什么是使用 angular2 的服务器端渲染?
【发布时间】:2024-01-17 13:38:02
【问题描述】:

我知道 angular2 用于服务器端渲染。 所以我想了解更多。

我有以下关于这种现象的问题。

1.什么是服务端渲染?

2.它解决了什么问题?

3.它有哪些应用?

4.为什么使用服务器端渲染?

5.支持服务器端渲染的技术有哪些?

6.在angular2中,服务器端渲染有助于实现哪些目标?

7.客户端和服务器端渲染的主要区别是什么?

8.服务器端渲染可以使用哪些工具或框架?

在此先感谢大家。

【问题讨论】:

    标签: angular server-side-rendering


    【解决方案1】:

    Angular2 是客户端库,不用于服务器端渲染。但是,有一个项目 Angular Universal 旨在允许服务器处理 Angular 代码和模板。

    1. 一般而言,服务器端渲染 /SSR/ 是指使用服务器创建可供浏览器(或其他客户端)使用的内容。

    2. 对于单页应用程序 /SPA/,与 Angular2 应用程序类似,初始加载是一大问题。 SPA 必须加载所有供应商和应用程序脚本,(可能从数据库加载内容)处理内容,最后渲染它。这可能需要很长时间,因此您的想法是使用 SSR 创建或“预呈现”初始页面。

    3. 使用它是因为服务器比客户端更快,因此它可以大大提升应用程序的性能。这对搜索引擎机器人也很有帮助——当他们请求没有 SSR 的网站页面时,他们只会看到没有任何内容的空白页面(某些搜索引擎会加载并执行您的脚本)。

    4. Angular Universal 在nodejs 服务器上工作。我相信还有一个 PHP 版本,但它非常新鲜(我认为是 alpha 版......)

    5./6.见上文。

    【讨论】:

    • 仅使用前端是否可以使用 angular2 通用的 SSR?比这里使用服务器和哪个服务器更重要?这里有没有简单的工作代码/回购清楚地教过 angualr2 通用?
    【解决方案2】:

    1) 服务器端渲染在交付给客户端之前渲染已经在服务器上的视图。这意味着数据绑定表达式之类的东西已经在服务器上解析好了,并且生成的 HTML 被传递给客户端,因此它可以立即由浏览器显示,而不是先执行 JS。

    2) - 从加载到首次显示的时间更快
    - 搜索引擎优化

    3) 见 2)

    4) - Angular2
    - 反应 AFAIK
    - 可能还有很多人

    5) 见 2

    6) 前者呈现在服务器上,后者呈现在客户端:p 为了能够在客户端呈现,代码需要浏览器的抽象,而服务器代码需要像浏览器一样生成 HTML。在 Angular 中,这是通过完全抽象浏览器来完成的(这也使得应用程序更容易在 WebWorker 中运行,因为那里的代码也没有(或只有有限的)对浏览器 API 的访问权限)

    【讨论】:

    • 仅使用前端是否可以使用 angular2 通用的 SSR?比这里使用服务器和哪个服务器更重要?这里有没有简单的工作代码/回购清楚地教过 angualr2 通用?
    • 我认为仅使用前端的 SSR 是不可能的。似乎使用 --mobile 选项使用 Angular CLI 创建一个新项目会创建一个具有通用性的项目。我自己还没有尝试过 SSR,因为它还不适用于 Dart。
    • 是的,也不适用于 angular2 中的新路线,即仅适用于 @router-deprecated
    • 看来我们需要多一点耐心:-/
    • 是的,正是@Gunter先生
    【解决方案3】:

    虽然这个问题已经解决了两次,而且很漂亮,但我只是想为仍在使用它的用户添加一些东西。

    • SSR 主要解决抽象和更快、更安全的内容交付到浏览器。

    • 状态\会话管理、用户帐户管理、用于 Web 服务的密码\令牌、支付网关详细信息等内容是您希望避免放在浏览器\客户端的内容。

    • 解决此问题的主要技术\框架有:MEAN.IO MEAN.JS、express.js、nodes.js、meteor.js

    • 如果您来自 .net 世界,那么 MVC 是保持良好框架的最佳选择。

    希望这能更清楚地说明这一点。

    丹克。

    【讨论】: