動態

詳情 返回 返回

vite全局自動導入函數,全局函數 - 動態 詳情

globalProperties全局函數掛載

vue3項目中,一般使用globalProperties實現全局函數掛載

import { createApp } from "vue";
import "@/style.css";
import App from "@/App.vue";


const app = createApp(App);

// 這裏掛載
app.config.globalProperties.getTestFn = function () { console.log('測試函數') } 

app.mount("#app");

但是globalProperties有一個不方便的地方,那就是每個頁面都要手動導入一次getCurrentInstance才可以調用,如下:

<script setup lang="ts">
import { getCurrentInstance } from "vue";
const { proxy } = getCurrentInstance();

proxy.getTestFn(); // 調用
</script>

unplugin-auto-import自動按需引入

我們可以使用unplugin-auto-import來實現自動按需引入,關於unplugin-auto-import的使用,可以看文末的vite自定引入api,這裏主要講其中一個配置
vite.config.ts中配置

    AutoImport({
      // 省略其它...

      // 
      dirs: [
        'src/globals',
      ],
      vueTemplate: true, // 允許在模板中使用自動導入的函數
    }),

dirsunplugin-auto-import插件的核心配置項之一,用於指定本地目錄路徑。插件會掃描這些目錄下的所有模塊(如 .js、.ts、.vue 文件),並自動導入它們的導出內容(函數、變量、組件等),無需手動編寫import語句。
新建文件夾,路徑與配置一致: src -> globals

// globals/index.ts

export function testFn(path: string, query?: any) {
  console.log('測試函數')
}

然後在項目的任意位置調用

testFn(); // 測試函數
注意:配置完後需要重啓項目,否則調用會找不到該函數報錯

參考文章:
vite自動引入api(按需import)
vue3全局函數-用於全局使用getCurrentInstance

user avatar karuru 頭像
點贊 1 用戶, 點贊了這篇動態!
點贊

Add a new 評論

Some HTML is okay.