跳到主要内容

路由元数据

通过 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);
}

重定向路由

可以定义一个路由,专门用于重定向到另一个路由。

在路由文件里添加 redirectTopathMatch 属性来创建一个重定向路由

// 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 以最佳方式显示标题,描述以及图片。