# 页签规则
不同的页签维护着各自的页面缓存,而**页签规则**定义了不同的路由**打开页签的方式**。
## 内置规则
- `path` (默认规则)
- 规则:`route => route.path`
- 说明:相同route.params的路由共用页签
-
- `fullPath`
- 规则:`route => route.fullPath.replace(route.hash, '')`
- 说明:相同route.params和route.query的路由共用页签
-
## 全局页签规则
通过配置 `router-tab` 组件的 `alive-id` 属性,您可以定义全局的页签规则
**示例:**
``` html
```
例子中,配置 `alive-id` 为 `fullPath` 去除 `hash` 部分。
根据该规则,`page/1` 和 `page/1?query=2`、`page/2`、`page/2?query=2` 这四个地址都是打开**不同**的页签。而 `page/1` 和 `page/1#hash1` 是同一个页签,因为它们忽略 `hash` 后的路径一致。
该规则已经内置在 `RouterTab` 中了,因此,您也可以直接这样使用:
``` html
```
## 路由页签规则
通过配置**路由**的 `meta.aliveId` 属性,您可以针对特定路由定制页签规则
**示例:**
``` javascript {8,9,10}
const route = {
path: '/my-page/:catalog/:type',
component: {
template: '
定制规则:{{$route.params.catalog}}/{{$route.params.type}}
'
},
meta: {
title: '定制规则',
aliveId (route) {
return `/my-page/${route.params.catalog}`
}
}
}
```
根据示例中的页签规则,`/my-page/a/1` 和 `/my-page/a/2` 打开的是**同一个**页签。而 `/my-page/b/1` 和 `/my-page/b/2` 则打开另外一个页签