VuePress 配置中的前端默认值
Front-matter defaults in VuePress config
我正在尝试将我的文档站点从 GitBook 切换到 Vuepress,但遇到了 front-matter 变量问题。在 GitBook 中,你只需在配置中添加变量,然后在页面的任何地方使用它们作为 {{ book.variable_name }}
。在 Vuepress 中,乍一看,事情似乎更棘手。
我需要配置几个在整个站点中使用的变量,因此将它们添加到每个页面将是一场彻头彻尾的噩梦。该文档没有说明如何配置 front-matter 变量,但有一个 link 到 Jekyll 站点。在 Jekyll 站点上,我发现 this article 这正是我想要实现的。问题是我不知道如何在配置中使用此信息。
非常感谢任何帮助。我在 official repo 中问过这个问题,但没有帮助。
要定义一些您可以在站点的任何位置访问的变量,您可以将它们添加到主题配置中。
如果您还没有,请在 .vuepress/config.js
处创建一个 config.js
文件。
此文件应导出一个对象。
您想为此添加 themeConfig: {}
。
您在 themeConfig
对象上设置的属性将在 $themeConfig
的整个站点上可用。
//- .vuepress/config.js
module.exports = {
themeConfig: {
//- Define your variables here
author: 'Name',
foo: 'bar'
}
}
{{ $themeConfig.author }} //- 'Name'
{{ $themeConfig.foo }} //- 'bar
您还可以通过使用全局计算函数轻松地在本地/每页覆盖它。 (这也可以提供一种更简洁的方式来访问变量)
在与 config.js
相同的位置添加一个 enhanceApp.js
文件将使您能够访问 Vue 实例 - 您可以在其中为所有组件定义一个 mixin。
您可以在此 mixin 中定义一些计算属性,这些属性首先检查页面 frontmatter 数据中的值,然后返回到 themeConfig 中设置的值。允许您设置一些可以在每页本地覆盖的默认值。
//- .vuepress/enhanceApp.js
export default ({ Vue }) => {
Vue.mixin({
computed: {
author() {
const { $themeConfig, $frontmatter } = this
return $frontmatter.author || $themeConfig.author
},
foo() {
const { $themeConfig, $frontmatter } = this
return $frontmatter.foo || $themeConfig.foo
}
}
})
}
{{ author }} //- 'Name'
{{ foo }} //- 'bar
我正在尝试将我的文档站点从 GitBook 切换到 Vuepress,但遇到了 front-matter 变量问题。在 GitBook 中,你只需在配置中添加变量,然后在页面的任何地方使用它们作为 {{ book.variable_name }}
。在 Vuepress 中,乍一看,事情似乎更棘手。
我需要配置几个在整个站点中使用的变量,因此将它们添加到每个页面将是一场彻头彻尾的噩梦。该文档没有说明如何配置 front-matter 变量,但有一个 link 到 Jekyll 站点。在 Jekyll 站点上,我发现 this article 这正是我想要实现的。问题是我不知道如何在配置中使用此信息。
非常感谢任何帮助。我在 official repo 中问过这个问题,但没有帮助。
要定义一些您可以在站点的任何位置访问的变量,您可以将它们添加到主题配置中。
如果您还没有,请在 .vuepress/config.js
处创建一个 config.js
文件。
此文件应导出一个对象。
您想为此添加 themeConfig: {}
。
您在 themeConfig
对象上设置的属性将在 $themeConfig
的整个站点上可用。
//- .vuepress/config.js
module.exports = {
themeConfig: {
//- Define your variables here
author: 'Name',
foo: 'bar'
}
}
{{ $themeConfig.author }} //- 'Name'
{{ $themeConfig.foo }} //- 'bar
您还可以通过使用全局计算函数轻松地在本地/每页覆盖它。 (这也可以提供一种更简洁的方式来访问变量)
在与 config.js
相同的位置添加一个 enhanceApp.js
文件将使您能够访问 Vue 实例 - 您可以在其中为所有组件定义一个 mixin。
您可以在此 mixin 中定义一些计算属性,这些属性首先检查页面 frontmatter 数据中的值,然后返回到 themeConfig 中设置的值。允许您设置一些可以在每页本地覆盖的默认值。
//- .vuepress/enhanceApp.js
export default ({ Vue }) => {
Vue.mixin({
computed: {
author() {
const { $themeConfig, $frontmatter } = this
return $frontmatter.author || $themeConfig.author
},
foo() {
const { $themeConfig, $frontmatter } = this
return $frontmatter.foo || $themeConfig.foo
}
}
})
}
{{ author }} //- 'Name'
{{ foo }} //- 'bar