共计 1287 个字符,预计需要花费 4 分钟才能阅读完成。
import {existsSync} from 'fs';
server.get(['/shop/*','/shop'], (req, res) => {
res.render(indexHtml, {
req,
providers: [{provide: APP_BASE_HREF, useValue: req.baseUrl}],
});
});
server.set('views', distFolder + '/shop);
const fs = require("fs");
fs.copyFileSync('dist/spartacusstore/browser/index.html', 'dist/spartacusstore/browser/shop/index.html');
这段代码是在应用 Node.js 进行 Angular 利用的服务器端渲染(Server-side rendering,简称 SSR)时,针对特定路由门路进行了一些额定的解决。
- 代码中应用 Node.js 内置模块 fs 中的 existsSync 办法,判断 indexHtml 文件是否存在。如果文件不存在,则应该返回 404 谬误页面。
- 代码中的 server.get 办法监听了 /shop/* 和 /shop 两个路由门路,并在申请这两个门路时渲染利用的主模板 indexHtml。在渲染模板时,通过 providers 属性将 APP_BASE_HREF 的值设置为以后申请的门路 req.baseUrl,这样 Angular 利用就可能正确地依据申请门路进行路由匹配了。
- 代码中的 server.set 办法设置了应用程序的视图文件夹,即通知服务器应该从哪里加载视图文件。在这个例子中,视图文件夹的门路是 distFolder + ‘/shop’,也就是应用程序的构建输入目录 dist 下的 shop 文件夹。
- 代码中应用了 Node.js 内置模块 fs 中的 copyFileSync 办法,将 Angular 利用的构建输入目录 dist/spartacusstore/browser 下的 index.html 文件复制到视图文件夹 dist/spartacusstore/browser/shop 下,以便在渲染 /shop 和 /shop/* 路由门路时应用。
·ng build –base-href /shop/· 是一个 Angular CLI 的命令,用于构建 Angular 应用程序,并设置应用程序的根本 URL。
具体来说,–base-href 参数用于指定应用程序在 Web 服务器上的根本 URL,也就是说,应用程序将被部署在 http://server.com/shop/ 这个 URL 下。这个参数的值应该是以斜杠结尾和结尾的相对路径,例如 /shop/。
当应用程序加载各种资源文件时,都会以这个根本 URL 作为前缀来加载资源。例如,如果应用程序中有一个 favicon.ico 的图标文件,那么浏览器会申请 http://server.com/shop/favicon.ico 来获取这个文件。
通过指定根本 URL,能够让应用程序在部署时更加灵便。例如,能够将应用程序部署在不同的子目录下,或者在同一个 Web 服务器上部署多个应用程序而不会发生冲突。
正文完