我已将我的网站从angular 6转换为Angular Universal。 但是现在面临一个问题 Angular Universal仅适用于网站首页,而不适用于内页
有人可以让我知道如何将内部页面转换为通用角度的,因此应该对SEO友好吗?
主页:
内部页代码:
等待您的答复。
答案 0 :(得分:1)
这就是角度通用的工作原理。
服务器端渲染的角度通用概念。这意味着您的角度应用程序的URL首次点击。首先,内部服务器应用程序(Express)将呈现您请求的页面。其背后的原因是允许在服务器应用程序中使用javascript,并且您可以动态更改元标记,这将改善您的SEO。
现在,如果您在应用服务器内部使用哈希分配策略,则会首先呈现APP组件,因此,如果您动态更改元标记,它将无法正常工作。
我对你的建议是...
1)。如果您使用的是HashLocation策略,则将其删除。
2)。如果您正在执行任何dom操作(jQuery)或使用任何浏览器提供的ngOnInit()中的对象(窗口,本地存储),请将其移至ngAfterViewInit()。
答案 1 :(得分:0)
您需要创建一个名为static.paths.ts的文件,并列出要在此处呈现的所有所需页面。示例:
export const ROUTES = [
'/',
'/your-route',
'/your-route/child-route'
];
执行此操作后,请在prerender.ts文件中引用它,如下所示:
let previousRender = Promise.resolve();
// Iterate each route path
ROUTES.forEach(route => {
const fullPath = join(BROWSER_FOLDER, route);
// Make sure the directory structure is there
if (!existsSync(fullPath)) {
mkdirSync(fullPath);
}
// Writes rendered HTML to index.html, replacing the file if it already exists.
previousRender = previousRender.then(_ => renderModuleFactory(AppServerModuleNgFactory, {
document: index,
url: route,
extraProviders: [
provideModuleMap(LAZY_MODULE_MAP)
]
})).then(html => writeFileSync(join(fullPath, 'index.html'), html));
});
对于Angular 6,我强烈推荐,紧跟this video