由于项目要考虑搜索引擎优化,也就是 SEO 功能,而本身 Vue.js 是单页面应用,但据说现在的搜索引擎已经可以爬取 JS 渲染的功能了,甚至连 AJAX 请求数据也可以抓取。
那么页面的标题、关键字、描述都是跟路由挂勾,并且考虑到国际化的问题,我们使用 Vue Meta 插件来完成 SEO TDK 的设置,结合 Vue I18n 来完成国际化,我们把这个配置放到路由配置中 src/config/router.js
中去,字段分别为:
meta.title
页面标题meta.keywords
页面关键字meta.description
页面描述
并且可以配置为语言包的 key ,这样就解决了国际化问题。整个 TDK 输出是在 src/App.vue
中完成。
- 注入
<html data-layout="Layout 名称">
方便全局布局覆盖 - 注入
<html lang="语言-地区">
- 多语言时添加
<link rel="alternate" hreflang="zh-CN" href="https://xuexb.com/zh-cn/">
支持语言列表让搜索引擎更友好,需要配置src/config/site.js
中url
字段 - 多语言时添加
<link rel="alternate" hreflang="x-default" href="https://xuexb.com/zh-cn/">
当前站点默认语言让搜索引擎更友好,需要配置src/config/site.js
中url
字段
由于我们配置的语种为全小写,而 语言-地区
中地区在页面输出时应该是大写,所以写了个 src/utils/tools.js
中 transformLang
方法。