vue3的unplugin-auto-import自动引入
Posted 程序员小白Aven
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vue3的unplugin-auto-import自动引入相关的知识,希望对你有一定的参考价值。
vue3日常项目中定义变量需要引入ref,reactive等等比较麻烦,可以通过unplugin-auto-import给我们自动引入
1、安装
npm i -D unplugin-auto-import
2、在vite.config.ts中引入
import AutoImport from 'unplugin-auto-import/vite'
并在plugins中配置:
export default defineConfig(
plugins: [
......
AutoImport(
imports: ['vue'],
dts: 'src/auto-import.d.ts',
)
]
)
AutoImport中可以有很多配置项,可以到github中看详细配置:
GitHub - antfu/unplugin-auto-import: Auto import APIs on-demand for Vite, Webpack and Rollup
注:dts是帮我们生成的类型声明文件,直接使用会找不到
上面配置完毕后会在src目录下生成一个auto-import.d.ts文件,里面帮我们自动引入vue相关内容,我们可以在项目中直接使用。
注意:上面配置完毕dts后可能并不会自动生成auto-import.d.ts文件,可以重新运行一下项目,或者关闭编辑器重新打开运行即可。
使用如下:
<script setup lang="ts">
// 这里我们不用引入ref直接使用
const msg = ref<string>('Hello Vue3')
</script>
<template>
msg
</template>
<style scoped lang="scss"></style>
unplugin-auto-import的使用
1、unplugin-auto-import插件的解决的问题
unplugin-auto-import 这个插件是为了解决在开发中的导入问题,比如经常不清楚相对路径的问题,这个插件就是解决这个问题
这个插件会在根目录生成一个auto-import.d.ts,这个文件会将所有的插件导入到global中,这样在使用的时候直接就可以使用了
2、插件安装
在终端执行命令
npm i -D unplugin-auto-import
配置文件vite.config.ts
import defineConfig from 'vite'
import vue from '@vitejs/plugin-vue'
// import AutoImport from "@vitejs/plugin-vue"
import AutoImport from 'unplugin-auto-import/vite'
// https://vitejs.dev/config/
export default defineConfig(
plugins: [
vue(),
AutoImport(
imports:["vue","vue-router"],
dts:'src/auto-import.d.ts' // 路径下自动生成文件夹存放全局指令
),
],
)
这样生成的auto-import.d.ts 在设置的目录下
// Generated by 'unplugin-auto-import'
export
declare global
const EffectScope: typeof import('vue')['EffectScope']
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 getCurrentInstance: typeof import('vue')['getCurrentInstance']
const getCurrentScope: typeof import('vue')['getCurrentScope']
const h: typeof import('vue')['h']
const inject: typeof import('vue')['inject']
const isProxy: typeof import('vue')['isProxy']
const isReactive: typeof import('vue')['isReactive']
const isReadonly: typeof import('vue')['isReadonly']
const isRef: typeof import('vue')['isRef']
const markRaw: typeof import('vue')['markRaw']
const nextTick: typeof import('vue')['nextTick']
const onActivated: typeof import('vue')['onActivated']
const onBeforeMount: typeof import('vue')['onBeforeMount']
const onBeforeRouteLeave: typeof import('vue-router')['onBeforeRouteLeave']
const onBeforeRouteUpdate: typeof import('vue-router')['onBeforeRouteUpdate']
const onBeforeUnmount: typeof import('vue')['onBeforeUnmount']
const onBeforeUpdate: typeof import('vue')['onBeforeUpdate']
const onDeactivated: typeof import('vue')['onDeactivated']
const onErrorCaptured: typeof import('vue')['onErrorCaptured']
const onMounted: typeof import('vue')['onMounted']
const onRenderTracked: typeof import('vue')['onRenderTracked']
const onRenderTriggered: typeof import('vue')['onRenderTriggered']
const onScopeDispose: typeof import('vue')['onScopeDispose']
const onServerPrefetch: typeof import('vue')['onServerPrefetch']
const onUnmounted: typeof import('vue')['onUnmounted']
const onUpdated: typeof import('vue')['onUpdated']
const provide: typeof import('vue')['provide']
const reactive: typeof import('vue')['reactive']
const readonly: typeof import('vue')['readonly']
const ref: typeof import('vue')['ref']
const resolveComponent: typeof import('vue')['resolveComponent']
const resolveDirective: typeof import('vue')['resolveDirective']
const shallowReactive: typeof import('vue')['shallowReactive']
const shallowReadonly: typeof import('vue')['shallowReadonly']
const shallowRef: typeof import('vue')['shallowRef']
const toRaw: typeof import('vue')['toRaw']
const toRef: typeof import('vue')['toRef']
const toRefs: typeof import('vue')['toRefs']
const triggerRef: typeof import('vue')['triggerRef']
const unref: typeof import('vue')['unref']
const useAttrs: typeof import('vue')['useAttrs']
const useCssModule: typeof import('vue')['useCssModule']
const useCssVars: typeof import('vue')['useCssVars']
const useLink: typeof import('vue-router')['useLink']
const useRoute: typeof import('vue-router')['useRoute']
const useRouter: typeof import('vue-router')['useRouter']
const useSlots: typeof import('vue')['useSlots']
const watch: typeof import('vue')['watch']
const watchEffect: typeof import('vue')['watchEffect']
const watchPostEffect: typeof import('vue')['watchPostEffect']
const watchSyncEffect: typeof import('vue')['watchSyncEffect']
可以看到基本上所有的可能使用的都生成出来了
注意:上面配置完毕dts后可能并不会自动生成auto-import.d.ts文件,可以重新运行一下项目,或者关闭编辑器重新打开运行即可。
3、测试
在使用的时候会有一个hook,检测到使用的对象是global,则直接导入
import Home from "../components/Home.vue";
import Page1 from "../components/Page1.vue";
import createRouter, createWebHistory from "vue-router";
import testAuto from "../components/TestAuto.vue";
const router = createRouter(
history: createWebHistory(),
routes :[
path: "/home", component: Home,
path: "/page1", component: Page1,
path: "/page2", component: testAuto
]
);
export default router;
4、总结
作为一个刚刚入手的后端同学来说,这些插件还是不太熟悉
查了下d.ts的概念
d.ts大部分编辑器能识别d.ts文件,当你写js、ts代码的时候给你智能提示
.d.ts可以理解成API版本的代码, 只包含基本的类, 函数, 变量类型, 参数类型, 返回值等,用于给编译器以及IDE识别是否符合API定义类型,发布之后就可以看不到了。
本书共有10章内容,以认识Unity引擎开始,从0到1突破,循序渐进地介绍了Unity游戏开发的方方面面。本书采用知识点讲解、经验技巧与相应的动手练习相结合的方式,将一个完整的游戏案例以章节任务的形式贯穿其中,系统地讲解如何从最基本的熟悉Unity界面操作开始,一步步搭建起游戏场景,让其逐渐丰富生动起来,并能与玩家进行交互,然后添加UI界面完善游戏流程,增强游戏的画面效果和视听体验及游戏的真实性,最终形成一款相对完整的成品游戏,并将游戏成品打包发布到不同的平台,供其他玩家上线体验的全过程。
京东自营购买链接:https://item.jd.com/13507605.html
以上是关于vue3的unplugin-auto-import自动引入的主要内容,如果未能解决你的问题,请参考以下文章
unplugin-auto-import 和 unplugin-vue-components
vue3简介——升级Vue的版本 vue2.9.6升级到vue3.0——创建Vue3.0工程-——vue3_devtool开发者工具的下载安装