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

vue,使用unplugin-auto-import避免反复import,按需自动引入

项目库:https://github.com/unplugin/unplugin-auto-import
参考:
https://juejin.cn/post/7012446423367024676
https://cloud.tencent.com/developer/article/2236166


背景:
vue3项目中,基本所有页面都会引入vue3框架的api,elementPlus手动引入组件也很麻烦
每个页面都import太繁琐了,有办法可以简化它吗
在这里插入图片描述

用到以下两个插件unplugin-auto-import和unplugin-vue-components


我的项目是vue3+vue-cli+webpack+js(如果是ts,自动导入组件还需要其他配置文件)

  • unplugin-auto-import
    自动识别代码中库或者API的调用,自动导入相应的模块,从而减少了手动导入的工作量,避免反复写import,但这也是按需自动引入,可以减少产物大小,方便很多

    unplugin-auto-import配置项
    imports: 自动导入的库列表,如 vue、vue-router
    dirs: 自动导入的目录
    dts: 生成的类型声明文件路径
    eslintrc: 生成的 ESLint 配置文件选项

    我的配置

    const AutoImport = require('unplugin-auto-import/webpack')
    const Components = require('unplugin-vue-components/webpack')
    const { ElementPlusResolver } = require('unplugin-vue-components/resolvers')
    const path = require('path')
    module.exports = defineConfig({
      configureWebpack: {
        plugins: [
          AutoImport({
            imports: ["vue", "vue-router","pinia"],//自动引入vue的ref、onmounted等,无需在页面中重复import
            dirs:['./src/api/modules/**','./src/store/**'],
    

    使用unplugin-auto-import前:

    <script setup>
    import { onMounted, nextTick, reactive, ref } from 'vue'
    import { useRouter } from 'vue-router'
    import { mainStore } from '@/store/pinia.js'
    import login from '@/api/modules/login'	 // 接口请求
    const store = mainStore()
    const router = useRouter()
    const data = reactive({
      isLoading: false,
      type: [
        { name: '1111', value: 0 },
        { name: '2222', value: 1 }
      ]
    })
    
    

    使用unplugin-auto-import后:

    <script setup>
    const store = mainStore()
    const router = useRouter()
    const data = reactive({
      isLoading: false,
      type: [
        { name: '1111', value: 0 },
        { name: '2222', value: 1 }
      ]
    })
    

    注意版本!!直接npm i安装的如下版本,按照官网配置会报错

    	//先前安装的版本
        "unplugin-auto-import": "^0.19.0",
        "unplugin-vue-components": "^0.28.0",
    

    Module build failed: Error [ERR_REQUIRE_ESM]: require() of ES Module
    在这里插入图片描述

    TypeError: AutoImport is not a function
    在这里插入图片描述
    网上查的解决办法都是说得降低版本,需要回退版本
    回退之后的确可以正常跑了,但我不懂为什么版本高就得降,难道没有高版本的写法吗

    npm install unplugin-vue-components@0.25.2 --save-dev
    
    npm install unplugin-auto-import@0.16.1 --save-dev
    

    重新安装后可正常使用

  • unplugin-vue-components:自动导入组件

    const { ElementPlusResolver } = require('unplugin-vue-components/resolvers')
    Components({
            resolvers: [
               ElementPlusResolver()
            ]
          })
    
    


http://www.kler.cn/a/465496.html

相关文章:

  • C++并发:并发操作的同步
  • JAVA构造方法练习
  • 什么情况会导致JVM退出?
  • C++和OpenGL实现3D游戏编程【连载19】——着色器光照初步(平行光和光照贴图)(附源码)
  • 苍穹外卖 项目记录 day01
  • 如何在 VSCode 中配置 C++ 开发环境:详细教程
  • Dpath之详解(Detailed Explanation of Dpath)
  • 借助 FinClip 跨端技术探索鸿蒙原生应用开发之旅
  • spring boot IDEA启动两个端口服务nginx负载
  • 如何使用Python自动化发送消息:用pynput库批量输入并发送文本
  • 网络安全:交换机技术
  • leetcode 面试经典 150 题:多数元素
  • 工信部电子标准院计算机视觉证书报考指南!
  • 项目引入MybatisPlus
  • npm提示Install fail! Error_ EBUSY_ resource busy or
  • STM32G431收发CAN
  • python的urllib模块和http模块
  • stm32f103zet6 ds18b20
  • openbmc sdk09.03 适配(一)
  • 内存卡乱码问题全解析与高效恢复方案
  • 【Java基础】Java数据类型阐述、基本数据类型的占用和范围、二进制的讲述
  • iOS 11 中的 HEIF 图像格式 - 您需要了解的内容
  • tomcat配置存放静态资源,实现网页访问并下载
  • node.js之---CommonJS 模块
  • Monolith - 大规模推荐建模的深度学习框架
  • C#Halcon交互绘制ROI