Angular 预先编译(Prerendering)是一种将 Angular 应用在构建时生成静态 HTML 页面的技术。这使得服务器在将应用发送到客户端之前,可以提前将应用的部分或全部页面渲染为静态 HTML。这有助于提高应用的初始加载性能,特别是对于搜索引擎爬虫和不支持 JavaScript 的用户。

以下是 Angular 预先编译的步骤:

1. 安装 Angular Universal

   Angular Universal 是 Angular 团队提供的一个用于服务器渲染的框架。首先,你需要在项目中安装 Angular Universal。
   ng add @nguniversal/express-engine

2. 创建预先编译配置

   在项目的根目录下,创建一个文件名为 prerender.js 的预先编译配置文件。这个文件将包含 Angular Universal 预先编译的设置。
   const { renderModuleFactory } = require('@angular/platform-server');
   const { AppServerModuleNgFactory } = require('./dist/your-app-name/server/main');

   const express = require('express');
   const fs = require('fs');
   const path = require('path');

   const app = express();

   app.get('*.*', express.static('./dist/your-app-name/browser'));

   app.get('*', (req, res) => {
     const indexPath = path.resolve('./dist/your-app-name/browser/index.html');
     const template = fs.readFileSync(indexPath, 'utf8');

     renderModuleFactory(AppServerModuleNgFactory, { document: template, url: req.url })
       .then(html => res.status(200).send(html))
       .catch(err => console.error(err));
   });

   app.listen(4000, () => {
     console.log('Angular app prerendered and listening on http://localhost:4000!');
   });

   请将 your-app-name 替换为你的实际应用名称。

3. 更新 package.json 文件

   在 package.json 文件中添加一个新的 npm 脚本,用于运行预先编译脚本。
   "scripts": {
     "prerender": "node prerender.js"
   }

4. 构建并预先编译

   使用 Angular CLI 构建应用,并运行预先编译脚本。
   ng build --prod
   npm run prerender

   这将生成优化的生产构建,并通过预先编译将应用的静态 HTML 渲染出来。

5. 部署和配置服务器

   部署构建后的应用,并确保服务器配置正确,可以在预先编译的 HTML 页面上提供服务。
   npm install -g serve
   serve -s dist/your-app-name/browser

   这将在默认端口上启动服务器,并允许你在浏览器中查看应用的预先编译版本。

通过这些步骤,你可以成功地使用 Angular 预先编译来提高应用的初始加载性能,并为搜索引擎爬虫提供可索引的静态 HTML 版本。


转载请注明出处:http://www.pingtaimeng.com/article/detail/5005/Angular