vue3.x学习笔记之项目实战 — 自动导入composition-apiI和组件

  • • vue3 自动导入composition-api和组件

      • • api的自动导入

        • • 插件 unplugin-auto-import 

      • • 组件的自动导入

        • • 插件 unplugin-vue-components

    vue3 自动导入composition-api和组件

api的自动导入

常规写法:

<script setup>
    import { ref, reactive,  onMounted, computed ,watch } from 'vue';
    import { useRouter } from "vue-router";
    const router = useRouter();
    const person= reactive ({
        name:'张三'
        age:20
);
</script>

使用插件后:

<script setup>
    const router = useRouter();
    const person= reactive ({
        name:'张三'
        age:20
);
</script>

插件 unplugin-auto-import

官网地址:https://www.npmjs.com/package/unplugin-auto-import

安装插件:

npm i -D unplugin-auto-import

vite.config 配置:

import { defineConfig } from "vite"
import AutoImport from 'unplugin-auto-import/vite' //引入api自动导入插件
 
export default defineConfig({
//imports 数组中加入其它的三方件
  plugins: [
    AutoImport({ imports: ['vue''vue-router','xxx'] }),
    // 在src目录下生成一个指令文件存放各种全局指令
   // dts: 'src/auto-import.js'
  ]
})

auto-import.js

// 'src/auto-import.js'

/* eslint-disable */
/* prettier-ignore */
// @ts-nocheck
// noinspection JSUnusedGlobalSymbols
// Generated by unplugin-auto-import
export {}
declare global {
  const EffectScopetypeof import('vue')['EffectScope']
  const acceptHMRUpdatetypeof import('pinia')['acceptHMRUpdate']
  const computedtypeof import('vue')['computed']
  const createApptypeof import('vue')['createApp']
  const createPiniatypeof import('pinia')['createPinia']
  const customReftypeof import('vue')['customRef']
  const defineAsyncComponenttypeof import('vue')['defineAsyncComponent']
  const defineComponenttypeof import('vue')['defineComponent']
  const defineStoretypeof import('pinia')['defineStore']
  const effectScopetypeof import('vue')['effectScope']
  const getActivePiniatypeof import('pinia')['getActivePinia']
  const getCurrentInstancetypeof import('vue')['getCurrentInstance']
  const getCurrentScopetypeof import('vue')['getCurrentScope']
  const htypeof import('vue')['h']
  const injecttypeof import('vue')['inject']
  const isProxytypeof import('vue')['isProxy']
  const isReactivetypeof import('vue')['isReactive']
  const isReadonlytypeof import('vue')['isReadonly']
  const isReftypeof import('vue')['isRef']
  const mapActionstypeof import('pinia')['mapActions']
  const mapGetterstypeof import('pinia')['mapGetters']
  const mapStatetypeof import('pinia')['mapState']
  const mapStorestypeof import('pinia')['mapStores']
  const mapWritableStatetypeof import('pinia')['mapWritableState']
  const markRawtypeof import('vue')['markRaw']
  const nextTicktypeof import('vue')['nextTick']
  const onActivatedtypeof import('vue')['onActivated']
  const onBeforeMounttypeof import('vue')['onBeforeMount']
  const onBeforeRouteLeavetypeof import('vue-router')['onBeforeRouteLeave']
  const onBeforeRouteUpdatetypeof import('vue-router')['onBeforeRouteUpdate']
  const onBeforeUnmounttypeof import('vue')['onBeforeUnmount']
  const onBeforeUpdatetypeof import('vue')['onBeforeUpdate']
  const onDeactivatedtypeof import('vue')['onDeactivated']
  const onErrorCapturedtypeof import('vue')['onErrorCaptured']
  const onMountedtypeof import('vue')['onMounted']
  const onRenderTrackedtypeof import('vue')['onRenderTracked']
  const onRenderTriggeredtypeof import('vue')['onRenderTriggered']
  const onScopeDisposetypeof import('vue')['onScopeDispose']
  const onServerPrefetchtypeof import('vue')['onServerPrefetch']
  const onUnmountedtypeof import('vue')['onUnmounted']
  const onUpdatedtypeof import('vue')['onUpdated']
  const providetypeof import('vue')['provide']
  const reactivetypeof import('vue')['reactive']
  const readonlytypeof import('vue')['readonly']
  const reftypeof import('vue')['ref']
  const resolveComponenttypeof import('vue')['resolveComponent']
  const setActivePiniatypeof import('pinia')['setActivePinia']
  const setMapStoreSuffixtypeof import('pinia')['setMapStoreSuffix']
  const shallowReactivetypeof import('vue')['shallowReactive']
  const shallowReadonlytypeof import('vue')['shallowReadonly']
  const shallowReftypeof import('vue')['shallowRef']
  const storeToRefstypeof import('pinia')['storeToRefs']
  const toRawtypeof import('vue')['toRaw']
  const toReftypeof import('vue')['toRef']
  const toRefstypeof import('vue')['toRefs']
  const toValuetypeof import('vue')['toValue']
  const triggerReftypeof import('vue')['triggerRef']
  const unreftypeof import('vue')['unref']
  const useAttrstypeof import('vue')['useAttrs']
  const useCssModuletypeof import('vue')['useCssModule']
  const useCssVarstypeof import('vue')['useCssVars']
  const useLinktypeof import('vue-router')['useLink']
  const useRoutetypeof import('vue-router')['useRoute']
  const useRoutertypeof import('vue-router')['useRouter']
  const useSlotstypeof import('vue')['useSlots']
  const watchtypeof import('vue')['watch']
  const watchEffecttypeof import('vue')['watchEffect']
  const watchPostEffecttypeof import('vue')['watchPostEffect']
  const watchSyncEffecttypeof import('vue')['watchSyncEffect']
}
// for type re-export
declare global {
  // @ts-ignore
  export type { ComponentComponentPublicInstanceComputedRefExtractDefaultPropTypesExtractPropTypesExtractPublicPropTypesInjectionKeyPropTypeRefVNodeWritableComputedRef } from 'vue'
}

组件的自动导入

使用前:

<template>
  <HelloWorld />
</template>
<script setup>
import HelloWorld from "@/components/HelloWorld.vue";
</script>

使用插件后:

<template>
  <HelloWorld />  //直接使用组件 不用import引入
</template>
<script setup>
</script>

此插件也可以直接使用其他组件,比如常用的UI框架,如elementPlus

可以支持这些插件:

vue3.x学习笔记之项目实战 -- 自动导入composition-apiI和组件

插件unplugin-vue-components

npm地址:https://www.npmjs.com/package/unplugin-auto-import

安装插件:

npm i -D unplugin-vue-components

vite.config配置:

import { defineConfig } from "vite"
 
import Components from 'unplugin-vue-components/vite' // 按需加载自定义组件
import { ElementPlusResolverfrom 'unplugin-vue-components/resolvers'
export default defineConfig {
  plugins: [
    vue(),
    Components({
      dtstrue,
      //设置自动加载 组件的文件夹
      dirs: ['src/components'], // 按需加载的文件夹
      //设置UI框架自动加载 ,注意不要向main.js中导入UI框架了
      resolvers: [
           ElementPlusResolver()  // ElementPlus按需加载
     ] 
    })
  ],
}

参考文档:

  • • https://blog.csdn.net/m0_63701303/article/details/134325990

原文始发于微信公众号(前端爱好者):vue3.x学习笔记之项目实战 — 自动导入composition-apiI和组件

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/267259.html

(0)
李, 若俞的头像李, 若俞

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!