vue3+vite按需导入API、组件

2024-09-06 05:28

本文主要是介绍vue3+vite按需导入API、组件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Vue API自动导入

1.我们在每个.vue文件中使用vue3的ref、reactive等API都需要导入一次:

import {ref, reactive} from "vue";
const str= ref("");

2.使用unplugin-auto-import插件自动导入

2.1安装unplugin-auto-import

npm i -D unplugin-auto-import

2.2 vite.config.ts配置

import { defineConfig } from "vite"
import path from "path"
import vue from "@vitejs/plugin-vue"
import VueI18nPlugin from "@intlify/unplugin-vue-i18n/vite"
import AutoImport from "unplugin-auto-import/vite"
export default defineConfig({base: "./",plugins: [vue(),VueI18nPlugin({ runtimeOnly: false }),AutoImport({imports: [{"vue-i18n": ["useI18n"]},"vue","vue/macros","@vueuse/core","vue-router",],vueTemplate: true,dts: path.resolve("types", "auto-imports.d.ts") // 指定自动导入函数TS类型声明文件路径}),],
})

重新启动项目:npm run dev,会在根目录/types/目录下生成一个auto-imports.d.ts文件。

  • "vue-i18n": ["useI18n"]: 不需要通过import { useI18n } from "vue-i18n"导入UserI18n方法;
  • "vue": 把import { onMounted, reactive } from "vue"等vue中的API自动导入
  • "vue/macros": 导入vue语法糖的,比如:const str = ref(""), 需要通过str.value访问到str的值,而const str = $ref(""),可直接通过str访问到str的值。
  • "@vueuse/core": 暂时不知道作用,欢迎补充。
  • "vue-router": 导入useRouteuseRouter等APi。

2.3 打包时可能会用到vue-tsc对typescript进行类型检查,这时控制台可能会报错:
Cannot find name 'ref'.

tsconfig.js:

{"files": [],"references": [{"path": "./tsconfig.node.json"},{"path": "./tsconfig.app.json"}]
}

tsconfig.node.json:

{"extends": "@tsconfig/node18/tsconfig.json","include": ["vite.config.*","vitest.config.*","cypress.config.*","nightwatch.conf.*","playwright.config.*"],"compilerOptions": {"moduleResolution": "node","composite": true,"module": "ESNext","types": ["node"]}
}

解决方法:在从tsconfig.app.json中include加入auto-import.ts, 这里使用匹配的方式——"./types/*.ts"

{"extends": "@vue/tsconfig/tsconfig.dom.json","include": ["env.d.ts", "src/**/*", "src/**/*.vue", "./types/*.ts"],"exclude": ["src/**/__tests__/*"],"compilerOptions": {"moduleResolution": "node","composite": true,"baseUrl": ".","paths": {"@/*": ["./src/*"]}}
}

3.配置通用组件自动导入

npm install  -D unplugin-vue-components

3.1 vite.config.ts配置

import { defineConfig } from "vite"
import path from "path"
import Components from 'unplugin-vue-components/vite'
export default defineConfig({base: "./",plugins: [Components({dirs: ['src/public'], // 指定组件位置,默认指定文件夹是src/componentsextensions: ['vue'], // 组件的有效文件扩展名deep: true, // 搜索子目录dts: path.resolve("types", "components.d.ts") // 指定自动导入函数TS类型声明文件路径}),],
})

如果src/public目录下有一个SvgIcon.vue组件,后面在任何.vue文件中使用SvgIcon,都不需要通过import SvgIcon from "@/public/SvgIcon.vue"导入。

附上npm地址:https://www.npmjs.com/package/@dafenqi/unplugin-vue-components

4.自动注册自定义icon组件

npm install  -D vite-plugin-svg-icons

vite.config.ts配置:

import { createSvgIconsPlugin } from "vite-plugin-svg-icons"
import path from "path"
export default defineConfig({base: "./",plugins: [createSvgIconsPlugin({iconDirs: [path.resolve(__dirname, "src/assets/svg")], // 指定存放 SVG 图标的目录symbolId: "icon-[name]", // 设置生成的 Vue 组件的 ID 格式inject: "body-first",customDomId: "__svg__icons__dom__"}),],
})

在 Vue 组件中使用 SVG 图标:

<template><svg aria-hidden="true"><use :xlink:href="symbolId" /></svg>
</template>
<script setup lang="ts">
const props = withDefaults(defineProps<{prefix?: stringname: string}>(),{prefix: "icon",name: "",}
)
const symbolId = computed(() => `#${props.prefix}-${props.name}`)
</script>

这篇关于vue3+vite按需导入API、组件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1141125

相关文章

Java实现TXT文件导入功能的详细步骤

《Java实现TXT文件导入功能的详细步骤》在实际开发中,很多应用场景需要将用户上传的TXT文件进行解析,并将文件中的数据导入到数据库或其他存储系统中,本文将演示如何用Java实现一个基本的TXT文件... 目录前言1. 项目需求分析2. 示例文件格式3. 实现步骤3.1. 准备数据库(假设使用 mysql

Go语言使用net/http构建一个RESTful API的示例代码

《Go语言使用net/http构建一个RESTfulAPI的示例代码》Go的标准库net/http提供了构建Web服务所需的强大功能,虽然众多第三方框架(如Gin、Echo)已经封装了很多功能,但... 目录引言一、什么是 RESTful API?二、实战目标:用户信息管理 API三、代码实现1. 用户数据

Python用Flask封装API及调用详解

《Python用Flask封装API及调用详解》本文介绍Flask的优势(轻量、灵活、易扩展),对比GET/POST表单/JSON请求方式,涵盖错误处理、开发建议及生产环境部署注意事项... 目录一、Flask的优势一、基础设置二、GET请求方式服务端代码客户端调用三、POST表单方式服务端代码客户端调用四

SpringBoot结合Knife4j进行API分组授权管理配置详解

《SpringBoot结合Knife4j进行API分组授权管理配置详解》在现代的微服务架构中,API文档和授权管理是不可或缺的一部分,本文将介绍如何在SpringBoot应用中集成Knife4j,并进... 目录环境准备配置 Swagger配置 Swagger OpenAPI自定义 Swagger UI 底

SpringBoot集成EasyExcel实现百万级别的数据导入导出实践指南

《SpringBoot集成EasyExcel实现百万级别的数据导入导出实践指南》本文将基于开源项目springboot-easyexcel-batch进行解析与扩展,手把手教大家如何在SpringBo... 目录项目结构概览核心依赖百万级导出实战场景核心代码效果百万级导入实战场景监听器和Service(核心

基于Python Playwright进行前端性能测试的脚本实现

《基于PythonPlaywright进行前端性能测试的脚本实现》在当今Web应用开发中,性能优化是提升用户体验的关键因素之一,本文将介绍如何使用Playwright构建一个自动化性能测试工具,希望... 目录引言工具概述整体架构核心实现解析1. 浏览器初始化2. 性能数据收集3. 资源分析4. 关键性能指

使用Python的requests库调用API接口的详细步骤

《使用Python的requests库调用API接口的详细步骤》使用Python的requests库调用API接口是开发中最常用的方式之一,它简化了HTTP请求的处理流程,以下是详细步骤和实战示例,涵... 目录一、准备工作:安装 requests 库二、基本调用流程(以 RESTful API 为例)1.

批量导入txt数据到的redis过程

《批量导入txt数据到的redis过程》用户通过将Redis命令逐行写入txt文件,利用管道模式运行客户端,成功执行批量删除以Product*匹配的Key操作,提高了数据清理效率... 目录批量导入txt数据到Redisjs把redis命令按一条 一行写到txt中管道命令运行redis客户端成功了批量删除k

SpringBoot监控API请求耗时的6中解决解决方案

《SpringBoot监控API请求耗时的6中解决解决方案》本文介绍SpringBoot中记录API请求耗时的6种方案,包括手动埋点、AOP切面、拦截器、Filter、事件监听、Micrometer+... 目录1. 简介2.实战案例2.1 手动记录2.2 自定义AOP记录2.3 拦截器技术2.4 使用Fi

Olingo分析和实践之OData框架核心组件初始化(关键步骤)

《Olingo分析和实践之OData框架核心组件初始化(关键步骤)》ODataSpringBootService通过初始化OData实例和服务元数据,构建框架核心能力与数据模型结构,实现序列化、URI... 目录概述第一步:OData实例创建1.1 OData.newInstance() 详细分析1.1.1