当前位置: 首页 > news >正文

vue3 自动导入composition-apiI和组件

1.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>

安装插件:

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

/* eslint-disable */
/* prettier-ignore */
// @ts-nocheck
// noinspection JSUnusedGlobalSymbols
// Generated by unplugin-auto-import
export {}
declare global {const EffectScope: typeof import('vue')['EffectScope']const acceptHMRUpdate: typeof import('pinia')['acceptHMRUpdate']const computed: typeof import('vue')['computed']const createApp: typeof import('vue')['createApp']const createPinia: typeof import('pinia')['createPinia']const customRef: typeof import('vue')['customRef']const defineAsyncComponent: typeof import('vue')['defineAsyncComponent']const defineComponent: typeof import('vue')['defineComponent']const defineStore: typeof import('pinia')['defineStore']const effectScope: typeof import('vue')['effectScope']const getActivePinia: typeof import('pinia')['getActivePinia']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 mapActions: typeof import('pinia')['mapActions']const mapGetters: typeof import('pinia')['mapGetters']const mapState: typeof import('pinia')['mapState']const mapStores: typeof import('pinia')['mapStores']const mapWritableState: typeof import('pinia')['mapWritableState']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 setActivePinia: typeof import('pinia')['setActivePinia']const setMapStoreSuffix: typeof import('pinia')['setMapStoreSuffix']const shallowReactive: typeof import('vue')['shallowReactive']const shallowReadonly: typeof import('vue')['shallowReadonly']const shallowRef: typeof import('vue')['shallowRef']const storeToRefs: typeof import('pinia')['storeToRefs']const toRaw: typeof import('vue')['toRaw']const toRef: typeof import('vue')['toRef']const toRefs: typeof import('vue')['toRefs']const toValue: typeof import('vue')['toValue']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']
}
// for type re-export
declare global {// @ts-ignoreexport type { Component, ComponentPublicInstance, ComputedRef, ExtractDefaultPropTypes, ExtractPropTypes, ExtractPublicPropTypes, InjectionKey, PropType, Ref, VNode, WritableComputedRef } from 'vue'
}

2.组件的自动导入

使用前:

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

使用插件后:

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

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

可以支持这些插件:

安装插件:

npm i -D unplugin-vue-components

vite.config配置:

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

http://www.lryc.cn/news/225410.html

相关文章:

  • LeetCode15-三数之和
  • 安全物理环境(设备和技术注解)
  • 箭头函数 跟匿名函数this的指向问题
  • Java Stream:List分组成Map或LinkedHashMap
  • vue2+elementui使用MessageBox 弹框$msgbox自定义VNode内容:实现radio
  • OC 实现手指滑动拖动View
  • 多级缓存之实现多级缓存
  • React【axios、全局处理、 antd UI库、更改主题、使用css module的情况下修改第三方库的样式、支持sass less】(十三)
  • 在gitlab中指定自定义 CI/CD 配置文件
  • (论文阅读22/100)Learning a Deep Compact Image Representation for Visual Tracking
  • 浅谈设计模式
  • 企业年会/年终活动如何邀请媒体记者报道?
  • C语言如何执行HTTP GET请求
  • .Net 6 Nacos日志控制台疯狂发输出+Log4Net日志过滤
  • Libra R-CNN: Towards Balanced Learning for Object Detection(2019.4)
  • Redis的内存淘汰策略分析
  • git命令之遭遇 ignore罕见问题解决
  • torch DDP多卡训练教程记录
  • Jenkins CICD过程常见异常
  • Java11新增特性
  • 安卓常见设计模式13------过滤器模式(Kotlin版)
  • 使用spark进行递归的可行方案
  • Spring -Spring之依赖注入源码解析(下)--实践(流程图)
  • 前端设计模式之【单例模式】
  • 设备零部件更换ar远程指导系统加强培训效果
  • 文本生成高精准3D模型,北京智源AI研究院等出品—3D-GPT
  • Netty入门指南之NIO 网络编程
  • LeetCode(6)轮转数组【数组/字符串】【中等】
  • 华为云Ascend310服务器使用
  • 【poi导出excel模板——通过建造者模式+策略模式+函数式接口实现】