API 自动导入 setup语法让我们不用再一个一个的把变量和方法都return出去就能在模板上使用,大大的解放了我们的双手。然而对于一些常用的VueAPI,比如refcomputedwatch等,还是每次都需要我们在页面上手动进行import。 我们可以通过unplugin-auto-import实现自动导入,无需import即可在文件里使用Vue的API。 安装

npm i unplugin-auto-import -D
1

配置

// vite.config.ts
import { defineConfig } from 'vite'
import AutoImport from 'unplugin-auto-import/vite'

export default defineConfig({
  plugins: [
    AutoImport({
      // dts: 'src/auto-imports.d.ts', // 可以自定义文件生成的位置,默认是根目录下
      imports: ['vue']
    })
  ]
})
1
2
3
4
5
6
7
8
9
10
11
12

安装配置完会自动生成auto-imports.d.ts文件。

// auto-imports.d.ts
// Generated by 'unplugin-auto-import'
// We suggest you to commit this file into source control
declare global {
  const computed: typeof import('vue')['computed']
  const createApp: typeof import('vue')['createApp']
  const customRef: typeof import('vue')['customRef']
  const defineAsyncComponent: typeof import('vue')['defineAsyncComponent']
  const defineComponent: typeof import('vue')['defineComponent']
  const effectScope: typeof import('vue')['effectScope']
  const EffectScope: typeof import('vue')['EffectScope']
  const getCurrentInstance: typeof import('vue')['getCurrentInstance']
  const getCurrentScope: typeof import('vue')['getCurrentScope']
  const h: typeof import('vue')['h']
  const inject: typeof import('vue')['inject']
  const isReadonly: typeof import('vue')['isReadonly']
  const isRef: typeof import('vue')['isRef']
  // ...
}
export {}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

使用

<script lang="ts" setup name="OrderList">
// 不用import,直接使用ref
const count = ref(0)

onMounted(() => {
  console.log('mounted===')
})
</script>
1
2
3
4
5
6
7
8

上面我们在vite.config.ts的配置里只导入了vueimports: ['vue'],除了vue的你也可以根据文档导入其他的如vue-routervue-use等。 个人建议只对一些比较熟悉的API做自动导入,如vue的API我们在开发时都比较熟悉,闭着眼都能写出来,对于一些不大熟悉的像VueUse这种库,还是使用import更好一些,毕竟编辑器都有提示,不易写错。 解决eslint报错问题 在没有import的情况下使用会导致eslint提示报错,可以通过在eslintrc.js安装插件**vue-global-api**解决。

// 安装依赖
npm i vue-global-api -D

// eslintrc.js
module.exports = {
  extends: [
    'vue-global-api'
  ]
}
1
2
3
4
5
6
7
8
9
最后更新于: 2022/3/25 07:58:56
강남역 4번 출구
Plastic / Fallin` Dild