iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 24
1

24. VuePress : theme/enhanceApp.js 主題增強術

上一篇說明了主題在需要安裝 plugins 外掛套件時需要配置的 theme/index.js 主題配置檔,但有時我們的需求並不是 plugins 可以解決的,需要更直接的在專案中引入模組時該怎麼辦呢?


theme/enhanceApp.js 的用處

theme 資料夾中,還有一個約定檔案叫做 enhanceApp.js 這個檔案可以 export default 一個 function 來引入一些模組進入系統、設置路由 hooks 等等行為,具備了很強的功能。

這個 hooks function 被 VuePress 呼叫時會帶入一個物件作為參數,這個物件中具有 VueoptionsroutersiteDate 四個重要的屬性,而我們在使用上習慣直接使用 JavaScript 的解構技巧來取出這些屬性進行使用:

export default ({
  Vue, // VuePress 正在使用的 Vue 構造函數
  options, // 附加到根實例的一些選項
  router, // 當前應用的路由實例
  siteData // 站點元數據
}) => {
  // ...做一些其他的應用級別的優化
}

在 VuePress 中安裝 Element UI

這邊就示範一下透過 theme/enhanceApp.js 來將 Vue 常用的 Element UI 這個 UI 套件安裝進專案中吧。

首先當然要先進行安裝: yarn add element-ui

然後就可以在檔案中將所需的模組引入,接著用解構出來的 Vue 實例來進行 Element UI 的安裝步驟就完成啦!

import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';

export default ({
    Vue, // the version of Vue being used in the VuePress app
    options, // the options for the root Vue instance
    router, // the router instance for the app
    siteData // site metadata
}) => {
    Vue.use(ElementUI);
}

上一篇
VuePress : `theme/index.js` 主題配置文件
下一篇
VuePress 的全域計算屬性
系列文
透過 VuePress 建構 JAMstack 網站來肆意玩弄 Markdown 30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
hms5232
iT邦新手 5 級 ‧ 2021-10-17 14:50:58

這邊說一下我實作上碰到的一個問題,在安裝完成並註冊 Element UI 後,畫面會變成一片空白,主控台會說:Cannot find module 'core-js/library/xxx' when import element-ui

原先以為是我註冊 component 的方式有誤,後來用關鍵字搜尋才找到一篇文章(來自中國 csdn 所以是簡體字)說明:原來是 core-js 相依的版本號不同出問題。也有提到官方 Github 上有一個 issue 是關於這件事的。

目前測試額外安裝一個套件可以解決:

yarn add async-validator@1.11.5

提供給有碰到相同問題的人參考。

我要留言

立即登入留言