使用 Angular Universal 进行服务器渲染的完整指南

阅读时长 8 分钟读完

随着前端技术的发展,构建单页面应用已经成为了前端开发的必备技能之一。然而,由于单页面应用通常是由 JavaScript 动态渲染内容,这会导致搜索引擎很难理解页面内容,也会影响首次加载速度和 SEO。

为解决这些问题,服务器渲染(Server-Side Rendering)逐渐成为了前端开发的新热门技术。Angular Universal 是 Angular 团队开发的一款服务器端渲染框架,它提供了一种简单的方式来将 Angular 应用程序渲染到服务器上,并将已渲染的 HTML 返回到浏览器,这样搜索引擎可以获得正确的信息。

本文将介绍如何使用 Angular Universal 进行服务器渲染,并提供一些实用的示例。

准备工作

在开始之前,你需要安装以下环境:

  • Node.js
  • npm 或 yarn

我们将在 Angular CLI 的基础上搭建一个 Angular Universal 应用程序。如果你还没有安装 Angular CLI,可以使用以下命令安装:

需要注意的是,Angular Universal 目前只支持 Angular 8 和更高版本。如果你的项目是 Angular 7 或更早的版本,需要先升级到 Angular 8。

创建 Angular 应用程序

在开始之前,我们需要创建一个新的 Angular 应用程序。可以使用以下命令:

这将创建一个名为 my-app 的新 Angular 应用程序。默认情况下,这个应用程序是一个单页面应用程序,所有内容都是通过 JavaScript 动态渲染的。

添加 Angular Universal 支持

在创建应用程序后,我们需要添加 Angular Universal 支持。可以使用以下命令:

这将在应用程序中安装所有必要的依赖项,并将所需文件添加到项目中。

安装完成后,我们需要做一些额外的配置。首先,在项目的 tsconfig.app.json 文件中,将 "module" 属性设置为 "commonjs",以便在服务器端运行应用程序:

-- -------------------- ---- -------
-
  ---------- ------------------
  ------------------ -
    --------- ----------------
    -------- --
  --
  -------- -
    --------------
    ------------------
  --
  ---------- -
    ---------------
  --
  ------------------ -----
  ------------------------------- -----
  --------- ----------
-

其次,我们需要在项目的根模块(app.module.ts)中导入 BrowserTransferStateModule 和 ServerTransferStateModule,并将它们添加到 imports 数组中:

-- -------------------- ---- -------
------ - -------------- -------------------------- - ---- ----------------------------
------ - -------- - ---- ----------------
------ - ------------- ------------------------- - ---- ---------------------------
------ - ------------ - ---- ------------------
------ - ---------------- - ---- -----------------------
------ - ---------------- - ---- -----------------------

-----------
  ------------- -
    ------------
  --
  -------- -
    ------------------------------------ ------ -------- ---
    -------------
    -----------------
    -----------------
    ---------------------------
    -------------------------
  --
  ---------- ---
  ---------- --------------
--
------ ----- --------- - -
  • BrowserModule:这个模块负责在浏览器中渲染应用程序。
  • ServerModule:这个模块负责在服务器端渲染应用程序。
  • AppRoutingModule:这个模块负责处理应用程序的路由。
  • HttpClientModule:这个模块负责处理应用程序的 HTTP 请求。
  • BrowserTransferStateModule 和 ServerTransferStateModule:这两个模块负责在客户端和服务器端之间传输应用程序状态。

最后,我们需要创建一个名为 "server.ts" 的文件,并在其中编写服务器端代码。这个文件包含了一个基本的 Express 应用程序,它将 Angular 应用程序渲染到服务器上,并将渲染后的 HTML 返回给浏览器。以下是一个示例:

-- -------------------- ---- -------
------ -------------------------
------ -------------------
------ - -------------- - ---- ----------------
------ - ------------------- - ---- ---------------------------
------ - ---------------- - ---- -------------------------------------------
------ - -- ------- ---- ----------
------ - ------------ - ---- -----
------ - ---- - ---- -------

----- ---- - ---------------- -- -----
----- ----------- - ------------------- ------- ----------

-----------------

----- --- - ----------
----- -------- - ------------------------------ ---------- --------------------------
----- - ------------------------- --------------- - - ------------------------- --------- ---------

------------------ --- -------- --------- -- -
  ----- ---- - - --------- --------- ---- --------------- --
  --------------------------------------------- -----
    ---------- -- -------------- -------
---

------------- -------- --------
---------------- ----------------- ------------

-------------- -------------------------------- -------------

------------ ----- ---- -- -
  ------------------- - ---- -------- --------------------------------- ---
---

---------------- -- -- -
  ------------------- --------- -- ---- ----------
---

这段代码中,我们首先读取服务器应用程序的 HTML 模板文件。然后,我们使用 Angular 的 renderModuleFactory 函数将 Angular 应用程序渲染到模板中,并将渲染后的 HTML 返回给浏览器。

最后,我们使用 Express 应用程序监听请求并响应。所有其他请求都被重定向到 index.html,然后 Angular 应用程序负责处理这些请求。

运行应用程序

我们已经完成了所有必要的准备工作,现在可以运行应用程序。在命令行中使用以下命令:

这将首先构建应用程序的服务器版本,然后启动 Express 服务器。在浏览器中访问 http://localhost:4000,你应该能够看到应用程序在服务器上渲染的结果。

总结

Angular Universal 是一个非常有用的工具,它可以帮助我们将 Angular 应用程序渲染到服务器上,以便搜索引擎可以轻松地理解和索引页面内容。

在本文中,我们了解了如何使用 Angular CLI 和 Angular Universal 创建一个基本的服务器渲染应用程序。我们还编写了一些服务器端代码,将 Angular 应用程序渲染到服务器上,并将渲染后的 HTML 返回给浏览器。

最后,我们还提供了一些示例代码,可以帮助你更好地理解如何使用 Angular Universal。希望本文能够对你的前端开发工作有所帮助,谢谢!

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64f66c4bf6b2d6eab3eff1c0

纠错
反馈