如何在 Angular 中加载没有 SSR 的功能模块(延迟加载模块)?
How to load a feature module (lazyloaded module) without SSR in Angular?
Angular 开发者!
我正在开发一个 Angular 应用程序,其中需要从服务器端呈现大量路由,在 angular 中称为 Angular Universal (SSR)。但是,在我的应用程序中,有很多私有路由和功能模块实际上不需要从服务器呈现。如果它们在客户端呈现就没问题。这些实际上是私人路线,如用户个人资料、用户个人资料编辑模块。
保护这些路由不被服务器渲染的方法是什么。或者如何让路由只在客户端呈现?
此答案来自 eneajaho 来自 reddit。
嗨,我 运行 几个月前进入你的用例,我“找到”了一个解决方案,并且还在 angular 回购中打开了一个问题,以添加解决方案在文档中,但没有成功。无论如何,这是问题所在:https://github.com/angular/angular/issues/41187
解决方案:您应该编辑发生服务器端路由的 server.ts
文件,并添加一组您不想在服务器端呈现的路由。示例:
const EXCLUDED_ROUTES: string[] = [
'/test',
'/auth(/)?*',
'/back(/)?*',
];
然后,您应该在文件中添加一个带有排除路由的get,在服务器呈现应用程序的路由之前。而这条路由会直接return index.html 文件,所以它不会渲染它,而是将它作为一个静态文件来服务,就像客户端渲染一样。
server.get(EXCLUDED_ROUTES, (req, res) => {
res.sendFile(join(distFolder, 'index.html'));
});
全部代码:
/**
* EXCLUDED_ROUTES contains all the paths that we don't want to render on the server
* Examples:
* '/test'
* '/back(/)?*' // regex: string starts with /back, '/' is optional, '*' it can be anything
*/
const EXCLUDED_ROUTES: string[] = [
'/test',
'/auth(/)?*',
'/back(/)?*',
];
/**
* Is used to exclude the routes from rendering on the server. Ex. Auth Page, Admin Page
* To add or remove excluded routes modify the EXCLUDED_ROUTES array
*/
server.get(EXCLUDED_ROUTES, (req, res) => {
res.sendFile(join(distFolder, 'index.html'));
});
Angular 开发者! 我正在开发一个 Angular 应用程序,其中需要从服务器端呈现大量路由,在 angular 中称为 Angular Universal (SSR)。但是,在我的应用程序中,有很多私有路由和功能模块实际上不需要从服务器呈现。如果它们在客户端呈现就没问题。这些实际上是私人路线,如用户个人资料、用户个人资料编辑模块。
保护这些路由不被服务器渲染的方法是什么。或者如何让路由只在客户端呈现?
此答案来自 eneajaho 来自 reddit。
嗨,我 运行 几个月前进入你的用例,我“找到”了一个解决方案,并且还在 angular 回购中打开了一个问题,以添加解决方案在文档中,但没有成功。无论如何,这是问题所在:https://github.com/angular/angular/issues/41187
解决方案:您应该编辑发生服务器端路由的 server.ts
文件,并添加一组您不想在服务器端呈现的路由。示例:
const EXCLUDED_ROUTES: string[] = [
'/test',
'/auth(/)?*',
'/back(/)?*',
];
然后,您应该在文件中添加一个带有排除路由的get,在服务器呈现应用程序的路由之前。而这条路由会直接return index.html 文件,所以它不会渲染它,而是将它作为一个静态文件来服务,就像客户端渲染一样。
server.get(EXCLUDED_ROUTES, (req, res) => {
res.sendFile(join(distFolder, 'index.html'));
});
全部代码:
/**
* EXCLUDED_ROUTES contains all the paths that we don't want to render on the server
* Examples:
* '/test'
* '/back(/)?*' // regex: string starts with /back, '/' is optional, '*' it can be anything
*/
const EXCLUDED_ROUTES: string[] = [
'/test',
'/auth(/)?*',
'/back(/)?*',
];
/**
* Is used to exclude the routes from rendering on the server. Ex. Auth Page, Admin Page
* To add or remove excluded routes modify the EXCLUDED_ROUTES array
*/
server.get(EXCLUDED_ROUTES, (req, res) => {
res.sendFile(join(distFolder, 'index.html'));
});