在開發主題的時候,關於 config.js 、 theme/index.js 以及 .md 當中的 Front Matter 都是非重要的資訊,又或者安裝了某些增加強組件功能的 plugins 時,又該如何在 Vue 組件當中使用呢?
這時候就要讓 VuePress 的全域計算屬性出場啦!
全站屬性的使用非常非常簡單直觀,就是在進行 Vue 組件的開發時,全域所有組件都可以在不用進行任何引入、設定的情況下,直接使用 this.$site 、 [this.$page](http://this.page) 、 this.$frontmatter 、 this.$themeConfig 等方式直接讀全域計算屬性。
全域計算屬性不只這四個,但這些是我認為使用率最高的。
在
<script>中需要使用this.作為指標,但在<template>中需要省略this.
$site 全站屬性這是在 VuePress 中重要性非常高的一個屬性,提供了非常非常多的資訊在其中,可以抓到整體網站的標題、描述、語言設定等等資料,最關鍵的是 $site.pages 這個屬性了。
$site.pages 這個屬性用 Array 的格式提供了全站的所有頁面資料,不但可以得到所有頁面的路由、標題,連內文都完整包含,就連想自己處理網站內文的搜尋都可以做到。
何況內容中也包含了該頁面的 frontmatter 資料,這在處理部落格文章列表的部分,是非常重要的資訊。
$page 目前頁面屬性與 $frontmatter 目前頁面的 Front Matter跟 $site.pages 不一樣的地方是, $page 不會提供所有頁面,僅僅是提供目前頁面的相關資料,主要就是可以取得目前頁面的相關資料。
但其實這個屬性在使用上,使用率最高的場景就是要抓取 Front Matter 設定,因此 VuePress 直接就多抽了一個 $frontmatter 來方便開法者使用。
$themeConfig 主題設定參數這個設定應該也不難理解,就是將專案設定檔 config.js 中設置的 themeConfig 暴露出來,好讓我們能在組件中直接使用相關的設定囉。