iT邦幫忙

2024 iThome 鐵人賽

DAY 18
0

昨天終於引入了第一個 button 元件🎉

為了讓元件都可以順利運作,接下來先安裝元件需要的工具~

還記得在製作 tooltip 時安裝的 vue-tippy 嗎?

當初是用 plugins 的方法引入的~因此在這邊會利用 addPlugin() 這個 function 來引入

Step 1: 首先安裝 vue-tippy

npm i vue-tippy

Step 2: 接著從 @nuxt/kit 引入 addPlugin()

import { addPlugin } from '@nuxt/kit'

Step 3: 再透過 createResolver() 這個 function 來引入 vue-tippy.ts 這個檔案

並指定他在 server 或是 client 都可以執行

addPlugin({
   src: resolver.resolve('./runtime/plugins/vue-tippy.ts'),
   mode: 'all'
})

感覺完成了呢~~ ╰(〞︶〝) ╯
結果一 run 下去失敗了

terminal 噴出了這樣的錯誤

 Pre-transform error: Failed to resolve import "vue-tippy" from "src/runtime/plugins/vue-tippy.ts". Does the file exist?     

副檔名 .ts 沒錯啊??? 🤔
昨天引入 component 時有寫副檔名有( .vue) 也可以引入呀?

這時候要回到一個重要概念… TypeScript 是編程語言*,* 他會被編譯成 .mjs.d.ts
所以這時候就要用 createResolver() 的特性啦!他可以在檔名或副檔名不確定的情況下依然正確引入檔案。

所以,應該要這樣寫:

addPlugin({
  src: resolver.resolve('./runtime/plugins', 'vue-tippy'),
   mode: 'all'
})

OK~這樣一來,問題應該解決了!引入 tooltip 元件也完成啦~

// module.ts
addComponent({
      name: 'tooltip',
      filePath: resolver.resolve('./runtime', 'components', 'global', 'tooltip')
    })
// app.vue
<Tooltip
        title="Tooltip on bottom"
        content="Tooltip on bottom!"
        placement="bottom"
        btn-class="btn-outline-dark"
        arrow
      />

image.png


addPlugin: https://nuxt.com/docs/api/kit/plugins


上一篇
tailwind 與 css 設定
下一篇
addComponentsDir
系列文
蓋一個自己的 Nuxt 3 UI Module30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言