`unplugin-auto-import`自动引入插件

举报
林太白 发表于 2025/07/28 10:40:58 2025/07/28
【摘要】 `unplugin-auto-import`自动引入插件

unplugin-auto-import自动引入插件

认识

“esModuleInterop”: true 是 TS配置中的一个选项,作用是使TypeScript在导入 ES 模块时,能够与 CommonJS 模块兼容

解决了在使用 CommonJS 模块时,如何正确地导入默认导出和命名导出的问题。

介绍

有时候我们在项目需要频繁的引入下面这种,如何做到直接全局使用呢

import { ref, computed } from 'vue';

🍎 方式一(额外封装引入)

import { ref, computed } from 'vue';

export const gRef = ref;
export const gComputed = computed;

然后再需要的地方进行引入

import { gRef, gComputed } from '@/utils/vueGlobal';

const count = gRef(0);
const double = gComputed(() => count.value * 2);

看到这里,你肯定懂了,这还不如我直接引入呢,直接丢弃

🍎 方式二(全局挂载到 app.config.globalProperties

// 全局挂载到 app.config.globalProperties

// ... 其他引入
import { ref, computed } from 'vue';

const app = createApp(App);

app.config.globalProperties.$ref = ref;
app.config.globalProperties.$computed = computed;

app.mount('#app');

在项目之中使用的时候

const count = this.$ref(0);
const double = this.$computed(() => count.value * 2);

这种方式倒是可以稍微考虑一下

🍎 方式三(unplugin-auto-import自动引入插件)

查看详细看我关于这个插件的解释文章

 // 没有引入之前直接使用报错
Uncaught (in promise) ReferenceError: ref is not defined

//引入以后直接使用
无输出

安装引入

☞ 安装插件

yarn add unplugin-auto-import -D

配置

☞兼容CommonJS模块导入路径配置

"esModuleInterop": true,

☞ 在 vite.config.js 中进行配置

import AutoImport from 'unplugin-auto-import/vite'; // 自动导入插件

// ...其他配置
plugins: [
  AutoImport({
    imports: [
      'vue', // 自动引入 Vue 函数
      'vue-router', // 自动引入 vue-router 的函数
    ],
    dts: true,  // 生成类型声明文件
  }),
],


// 优化配置
plugins: [
  // ...其他插件
  AutoImport({
    imports: ['vue'], // 自动导入vue的API
    dts: 'src/auto-imports.d.ts', // 自动生成类型声明
  }),
],

报错处理

确保你的tsconfig.json文件下有如下配置

"esModuleInterop": true,

// 放置位置
{
  "compilerOptions": {
    "esModuleInterop": true,
    "moduleResolution": "node",
    "strict": true,
    "jsx": "preserve",
    "lib": ["esnext", "dom"]
  }
}

作用

使用 lodash(一个 CommonJS 模块),没有开启esModuleInterop

import * as _ from 'lodash';

开启esModuleInterop后

import _ from 'lodash';
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。