路由元数据
通过 RouteMeta
类型可以为生成的路由配置添加额外的路由元数据。通过路由元数据可以定义页面标题,所需的 guards, resolvers, providers 以及其他选项。
定义路由元数据
import { Component } from '@angular/core';
import { RouteMeta } from '@analogjs/router';
import { AboutService } from './about.service';
export const routeMeta: RouteMeta = {
title: 'About Analog',
canActivate: [() => true],
providers: [AboutService],
};
@Component({
standalone: true,
template: `
<h2>Hello Analog</h2>
Analog is a meta-framework on top of Angular.
`,
})
export default class AboutPageComponent {
private readonly service = inject(AboutService);
}
重定向路由
可以定义一个路由,专门用于重定向到另一个路由。
在路由文件里添加 redirectTo
和 pathMatch
属性来创建一个重定向路由
// src/app/pages/index.page.ts
import { RouteMeta } from '@analogjs/router';
export const routeMeta: RouteMeta = {
redirectTo: '/home',
pathMatch: 'full',
};
以上的例子添加了一个从 /
重定向到 /home
的路由。
提示
重定向路由通常不导出任何组件。
还可以定义多层重定向路由。例如以下目录结构:
src/
└── app/
└── pages/
└── cities/
├── index.page.ts
├── new-york.page.ts
└── san-francisco.page.ts
以及 src/app/pages/cities/index.page.ts
中的 routeMeta
定义:
import { RouteMeta } from '@analogjs/router';
export const routeMeta: RouteMeta = {
redirectTo: '/cities/new-york',
pathMatch: 'full',
};
访问 /cities
将会重定向到 /cities/new-york
。
笔记
多层重定向必须使用绝对路径。
路由 meta 标签
RouteMeta
类型由一个 meta
属性可以用来为每一个路由定义一组 meta 标签:
import { Component } from '@angular/core';
import { RouteMeta } from '@analogjs/router';
import { AboutService } from './about.service';
export const routeMeta: RouteMeta = {
title: 'Refresh every 30 sec',
meta: [
{
httpEquiv: 'refresh',
content: '30',
},
],
};
@Component({
standalone: true,
template: `
<h2>Hello Analog</h2>
See you again in 30 seconds.
`,
})
export default class RefreshComponent {}
以上例子设置了一个 meta 标签 <meta http-equiv="refresh" content="30">
,将会强制浏览器每 30 秒刷新一次。
请访问官方文档了解标准的 meta 标签
Open Graph meta 标签
以上的 meta
属性还可以用来定义用于 SEO 和社交 app 优化的 OpenGraph meta 标签。
export const routeMeta: RouteMeta = {
meta: [
{
name: 'description',
content: 'Description of the page',
},
{
name: 'author',
content: 'Analog Team',
},
{
property: 'og:title',
content: 'Title of the page',
},
{
property: 'og:description',
content: 'Some catchy description',
},
{
property: 'og:image',
content: 'https://somepage.com/someimage.png',
},
],
};
这个例子将允许社交 app,例如 Facebook 或者 Twitter 以最佳方式显示标题,描述以及图片。