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

vite工程化搭建vue项目之自动按需导入

背景

当我们在使用vue3组合式开发的时候,大多数情况下我们的代码可能是这样的

<script setup lang="ts">
import { ref, reactive, toRefs, onMounted, computed } from 'vue';
defineProps({});
</script><template><div></div><div></div><div></div>
</template>

像是defineProps,defineEmits这些编辑器宏我们是不需要导入的,因为vue已经帮我们实现了,但是ref, reactive, toRefs, onMounted, computed 这些,如果我们项目中有很多vue文件,每个文件都手动引入的话也不太友好,虽然没啥问题。那么有没有方式能够让我们不需要手动引入就可以直接用呢,就像下面这样:

<script setup lang="ts">
type UserInfoType = {name: stringage: number,address?: string
}const name = ref("于十月666");const userInfo: UserInfoType = reactive({name: '狗子',age: 36,address: '北京市朝阳区'
})console.log(userInfo)
</script><template><div class="text-[red] text-24px text-stroke-emerald-50">{{ name }}</div><a-button type="primary">555</a-button><StepBackwardOutlined />
</template>

答案当然是可以的,我们需要安装两个插件

pnpm i -D unplugin-auto-import unplugin-vue-components
  • unplugin-auto-import 按需自动导入Vite、Webpack、Rspack、Rollup和esbuild的API。支持TypeScript。
  • unplugin-vue-components Vue的按需组件自动导入。
  • ui库 antd-design-vue,element-plus 官方文档都有介绍,如何实现组件的自动按需引入
    下面是用的antd-design-vue作为ui库做的相关配置
pnpm i ant-design-vue@4.x @ant-design/icons-vue

vite.config.ts

import { defineConfig } from "vite";
import vue from "@vitejs/plugin-vue";
import UnoCss from "unocss/vite";
import AutoImport from 'unplugin-auto-import/vite'
import Components from 'unplugin-vue-components/vite'
// 官方预设好的AntDesignVue ui库的工具方法
import { AntDesignVueResolver } from 'unplugin-vue-components/resolvers'export default defineConfig({plugins: [vue(), UnoCss(),AutoImport({include: [/\.[tj]sx?$/, // .ts, .tsx, .js, .jsx/\.vue$/,/\.vue\?vue/, // .vue/\.md$/, // .md],imports: [// 插件预设好包'vue','vue-router',// 自定义要自动按需引入的npm包{'axios': [// default imports['default', 'axios'], // import { default as axios } from 'axios',],}],eslintrc: {// 为true的时候,每次启动项目都会生成 auto-imports.d.ts 以及 .eslintrc-auto-import.json、// .eslintrc-auto-import.json这个我们需要在.eslintrc.cjs的extends里面去引入,否则会报错enabled: true},dts: './auto-imports.d.ts', // 插件给自动生成的声明文件,需要我们手动导入resolvers: [AntDesignVueResolver()]}),Components({dts: './components.d.ts', // 插件给自动生成的声明文件,需要我们手动导入dirs: [], // 如果我们自己的业务组件,如`src/components`下面写的组件也想实习那自动按序导入的话,可以在这里面配置上路径resolvers: [AntDesignVueResolver({importStyle: false, resolveIcons: true}),],})]
});

.eslintrc.cjs

{...extends: ["airbnb-base", // eslint-config-airbnb-base"airbnb-typescript/base", // eslint-config-airbnb-typescript"plugin:vue/vue3-recommended", // eslint-plugin-vue 具体为什么这么配置可以参考文档"eslint-config-prettier",'./.eslintrc-auto-import.json'],...
}

tsconfig.app.json (或者tsconfig.json)中配置上./auto-imports.d.ts

 "include": ["src/**/*.ts", "src/**/*.tsx", "src/**/*.vue", "types/*.d.ts", "./auto-imports.d.ts"]

通过这些配置我们就可以实现在vue组件中想用哪个api,或者组件就用哪个api以及组件
在这里插入图片描述
在这里插入图片描述

关于icon

现在流行的库是iconify iconify
其实关于antd-design-vue,element-ui等ui库的图标都是可以在这里面找到的
在这里插入图片描述
我们完全可以不使用@ant-design/icons-vue,直接去使用iconify上的,关于iconify在vite中结合vue如何使用可以参考vite搭建之优雅的使用icon图标这篇文章,因为我现在没有用到

vite使用iconify的话会用到unplugin-icons下面unplugin-icons/vite以及unplugin-icons/resolver这些包,总之来说可以实现用官方提供的图标集,能实现按需自动引入,也能实现自定义svg等。

实现自定义svg图标的话也可以使用vite-plugin-svg-icons这个插件,如何使用官方都有详细介绍
在这里插入图片描述
总之用不用还是要看情况而定,做一个了解或者储备方案,主要看ui配合不配合~

相关文章:

vite工程化搭建vue项目之自动按需导入

背景 当我们在使用vue3组合式开发的时候&#xff0c;大多数情况下我们的代码可能是这样的 <script setup lang"ts"> import { ref, reactive, toRefs, onMounted, computed } from vue; defineProps({}); </script><template><div></di…...

yolo-inference多后端+多任务+多算法+多精度模型 框架开发记录(python版)

先贴出github地址&#xff0c;欢迎大家批评指正&#xff1a;https://github.com/taifyang/yolo-inference 不知不觉LZ已经快工作两年了&#xff0c;由于之前的工作内容主要和模型部署相关&#xff0c;想着利用闲暇时间写一些推理方面的经验总结&#xff0c;于是有了这个工程。其…...

uniapp使用vue3语法构建自定义导航栏,适配小程序胶囊

具体代码 <template><view class"nav-wrapper-container" :style"height:navBarHeight px"><view class"nav-status-container" :style"height:navstatusBarHeight px;" /><view v-if"isCustom" clas…...

wpf、winform 监听USB拔插时触发

C# USB拔插监听 C#查找设备管理器中所有的 USB 设备 wpf、winform 监听USB拔插时触发 监听Windows USB 拔插时触发 private void MainWindow_Loaded(object sender, RoutedEventArgs e){FleckWebSocketConfig.OpenSocketConfig().GetAwaiter(); //websocket 服务开启用于监听W…...

C语言:指针笔试题

// 输入某一年的第几天&#xff0c;计算并输出它是这一年的第几月第几日。 /* 函数功能: 对给定的某一年的第几天&#xff0c;计算它是这一年的第几月第几日。 函数入口参数: 整形变量year,存储年&#xff1b; 整形变量yearDay,存储某一年的第几天&am…...

搜维尔科技:Movella旗下的Xsens在人形机器人开发中得到广泛应用

人形机器人的发展正在全球范围内受到广泛关注。作为机器人领域的重要分支&#xff0c;人形机器人因其具备高度仿真的外观和动作&#xff0c;以及更贴近人类的行为模式&#xff0c;有望逐渐成为人们日常生活和工业生产中的得力助手。在中国&#xff0c;这一领域的发展尤为引人注…...

k8s学习--kubernetes服务自动伸缩之水平伸缩(pod副本伸缩)HPA详细解释与案例应用

文章目录 前言HPA简介简单理解详细解释HPA 的工作原理监控系统负载模式HPA 的优势使用 HPA 的注意事项应用类型 应用环境1.metircs-server部署2.HPA演示示例&#xff08;1&#xff09;部署一个服务&#xff08;2&#xff09;创建HPA对象&#xff08;3&#xff09;执行压测 前言…...

Mock数据

Mock 数据 引入依赖 <dependency><groupId>com.github.jsonzou</groupId><artifactId>jmockdata</artifactId><version>4.3.0</version></dependency>mock 数据 MockConfig mockConfig new MockConfig().sizeRange(1, 1);A.…...

【MySQL】性能分析

https://www.bilibili.com/video/BV1Kr4y1i7ru/?p78 查看执行频次 查看当前数据库的 INSERT, UPDATE, DELETE, SELECT 访问频次&#xff1a; SHOW GLOBAL STATUS LIKE Com_______; 或者 SHOW SESSION STATUS LIKE Com_______; 慢查询日志 慢查询日志记录了所有执行时间超过指…...

MyBatis插件机制

MyBatis插件机制是该框架提供的一种灵活扩展方式&#xff0c;允许开发者在不修改框架源代码的情况下对MyBatis的功能进行定制和增强。这种机制主要通过拦截器&#xff08;Interceptor&#xff09;实现&#xff0c;使得开发者可以拦截和修改MyBatis在执行SQL语句过程中的行为。 …...

NVIDIA Jetson Linux 35.3.1-开发指南-导言

原文地址&#xff1a;Welcome — Jetson Linux Developer Guide documentation (nvidia.com) 欢迎 本开发人员指南适用于 NVIDIA Jetson Linux版本 35.3.1 GA 。 最后更新: 2023年5月19日 NVIDIA Jetson是世界领先的边缘AI平台。其高性能、低功耗计算 深度学习 &#xff0c;…...

14. fastLED调色板

Color Palettes Functions and class definitions for color palettes.调色板的函数和类定义。 RGB palettes map an 8-bit value (0-255) to an RGB color. You can create any color palette you wish; a couple of starters are provided: ForestColors_p, CloudColors_p…...

bugku---misc---赛博朋克

1、下载附件解压之后是一个txt文本&#xff0c;查看文本的时候看到头部有NG的字样 2、把txt改为png后缀得到一张图片 3、binwalk没发现奇怪的地方&#xff0c;分离出来还是图片 4、stegslove分析&#xff0c;切换图片没有发现奇怪地方 5、将通道rgb置为0。出现了flag但是flag不…...

vue+elementplus模拟“山野愚人居”简单实现个人博客

目录 一、项目介绍 二、项目截图 1.项目结构图 2.项目首页 3.文章详情 4.留言 5.读者 三、源码实现 1.项目依赖package.json 2.项目启动 3.读者页面源码 四、总结 一、项目介绍 模仿原博客&#xff1a;山野愚人居 - 记录我的生活、所见、所闻、所想…… 本项目参考以…...

ComfyUI 完全入门:Refiner精炼器

在 SDXL基础模型1.0版本发布时&#xff0c;Stability AI 公司同时发布了一个名为SDXL Refiner的模型。这个Refiner模型是专门设计用来对基础模型生成的图像进行进一步优化和细化的&#xff0c;所以大家也经常称之为精炼器或者精修器。 Refiner模型的主要目的是提升图像的质量&…...

FastAPI操作关系型数据库

FastAPI可以和任何数据库和任意样式的库配合使用&#xff0c;这里看一下使用SQLAlchemy的示例。下面的示例很容易的调整为PostgreSQL&#xff0c;MySQL&#xff0c;SQLite&#xff0c;Oracle等。当前示例中我们使用SQLite ORM对象关系映射 FastAPI可以与任何数据库在任何样式…...

数字化那点事:一文读懂智慧城市

一、智慧城市的定义 一个城市信息化发展历程主要包括数字城市、信息城市、智慧城市、互联城市等阶段&#xff0c;现就我们当前所处的智慧城市阶段做个简要介绍。 智慧城市是利用先进的信息和通信技术&#xff08;ICT&#xff09;、物联网&#xff08;IoT&#xff09;、大数据分…...

RabbitMQ-topic exchange使用方法

RabbitMQ-默认读、写方式介绍 RabbitMQ-发布/订阅模式 RabbitMQ-直连交换机(direct)使用方法 目录 1、概述 2、topic交换机使用方法 2.1 适用场景 2.2 解决方案 3、代码实现 3.1 源代码实现 3.2 运行记录 4、小结 1、概述 topic 交换机是比直连交换机功能更加强大的…...

6-11 函数题:某范围中的最小值

6-11 函数题&#xff1a;某范围中的最小值 分数 5 全屏浏览 作者 雷丽兰 单位 宜春学院 有n(n<1000)个整数&#xff0c;从这n个整数中找到值落在&#xff08;60至100之间&#xff09;的最小整数。 函数接口定义&#xff1a; int min ( int arr[], int n); 说明&#xf…...

Flask基础2-Jinja2模板

目录 1.介绍 2.模板传参 1.变量传参 2.表达式 3.控制语句 4.过滤器 5.自定义过滤器 6.测试器 7.块和继承 flask基础1 1.介绍 Jinja2:是Python的Web项目中被广泛应用的模板引擎,是由Python实现的模板语言,Jinja2 的作者也是 Flask 的作 者。他的设计思想来源于Django的模…...

PROJECT MOGFACE自动化运维:服务器监控日志分析与告警报告生成

PROJECT MOGFACE自动化运维&#xff1a;服务器监控日志分析与告警报告生成 每天凌晨&#xff0c;当运维工程师小李被手机告警铃声惊醒&#xff0c;睡眼惺忪地打开电脑&#xff0c;面对几十台服务器海量的监控图表和日志文件时&#xff0c;他总在想&#xff1a;有没有一种方法&…...

任天堂Switch大气层系统终极指南:7步完成自定义固件安装与虚拟系统配置

任天堂Switch大气层系统终极指南&#xff1a;7步完成自定义固件安装与虚拟系统配置 【免费下载链接】Atmosphere-stable 大气层整合包系统稳定版 项目地址: https://gitcode.com/gh_mirrors/at/Atmosphere-stable 大气层系统&#xff08;Atmosphere&#xff09;是任天堂…...

AI 使用过程中遇到的问题及解决方案

////////////////////////////////////////////////////////////////////////////////////////////////////////context_management: Extra inputs are not permitted Received Model Groupclaude-sonnet-4-6错误原因这是 Claude API 的 context management&#xff08;上下文管…...

源码级重构与低代码交付:企业级 AI 视频管理平台的二次开发实战

作为一位在安防行业摸爬滚打 10 年的架构师&#xff0c;我经常被集成商朋友的灵魂拷问&#xff1a;“有没有一套代码&#xff0c;既能直接拿去给客户演示&#xff08;低代码&#xff09;&#xff0c;又能让我根据客户需求改得‘面目全非’&#xff08;深度定制&#xff09;&…...

二手车价格预测:特征工程比调参重要10倍!我的天池赛从800分降到490分的实战复盘

二手车价格预测实战&#xff1a;如何通过特征工程将MAE从800降到490 二手车市场向来以信息不对称为特点&#xff0c;价格波动大、影响因素复杂。对于数据科学家来说&#xff0c;准确预测二手车价格不仅是一个有趣的机器学习挑战&#xff0c;更是一个极具商业价值的实际问题。在…...

现在不升级Polars 2.0清洗栈,你的ETL将在Q3面临300%延迟增长——基于AWS Graviton+Arrow 15.0实测基准报告

第一章&#xff1a;Polars 2.0清洗栈升级的必要性与Q3延迟危机预警Polars 2.0 的清洗栈重构并非功能叠加式演进&#xff0c;而是面向真实数据工程场景的范式重置。随着企业级ETL流水线中非结构化日志、嵌套JSON、时序传感器数据占比突破68%&#xff0c;旧版基于LazyFrame单通道…...

告别手动截图!用Python脚本从ROS bag文件里精准提取带时间戳的图片(附完整代码)

告别手动截图&#xff01;用Python脚本从ROS bag文件里精准提取带时间戳的图片&#xff08;附完整代码&#xff09; 在计算机视觉和机器人研究中&#xff0c;从ROS bag文件中高效提取带时间戳的图像数据是构建数据集的关键步骤。传统方法依赖ROS自带工具&#xff0c;但常面临提…...

Gurobi优化求解器状态码全解析:从model.status到对偶变量获取

Gurobi优化求解器状态码深度实战指南 当你在深夜调试一个复杂的供应链优化模型时&#xff0c;控制台突然弹出"STATUS: 3"的提示——这意味着什么&#xff1f;该如何快速定位问题&#xff1f;又该如何提取关键诊断信息&#xff1f;作为数学优化领域的工业级求解器&…...

为什么conda装不上opencv-python?深入解析conda与pip的包管理差异

为什么conda装不上opencv-python&#xff1f;深入解析conda与pip的包管理差异 在Python生态系统中&#xff0c;conda和pip是最常用的两种包管理工具。许多开发者习惯使用conda创建和管理虚拟环境&#xff0c;但在安装某些特定包如opencv-python时&#xff0c;却常常遇到"P…...

记一次攻防演练复盘(蓝队)

事件&#xff1a;某省大数据局主导的一次攻防演练中午时段遭受大量攻击。 告警信息&#xff08;TOP 5&#xff09;&#xff1a;[疑似目录穿越攻击URI] [漏洞攻击: Apache log4j RCE Attempt (http ldap) (CVE-2021-44228)] [web路径遍历漏洞攻击-Linux环境] [XSS跨站脚本攻击U…...