概述

在Vue项目开发中,我们经常需要一些通用的工具函数来处理路径转换、链接判断、数据格式化等任务。本文将介绍一个实用的Vue工具类,包含多种常用功能,并演示如何在项目中使用它们。

工具函数详解

1. 路径转驼峰命名

import { pathToCamel } from './tool'const path = '/user/info'
console.log(pathToCamel(path)) // 输出: "userInfo"

2. 判断外链

import { isExternalLink } from './tool'console.log(isExternalLink('https://example.com')) // true
console.log(isExternalLink('//example.com')) // true
console.log(isExternalLink('/local/path')) // false

3. 文件大小格式化

import { convertSizeFormat } from './tool'console.log(convertSizeFormat(1024)) // "1.00 KB"
console.log(convertSizeFormat(1048576)) // "1.00 MB"

4. 字典数据操作

import { getDictLabel, getDictDataList } from './tool'const dictList = [{dictType: 'gender',dataList: [{ dictValue: '1', dictLabel: '男' },{ dictValue: '2', dictLabel: '女' }]}
]console.log(getDictLabel(dictList, 'gender', '1')) // "男"
console.log(getDictDataList(dictList, 'gender')) 
// 输出: [{ dictValue: '1', dictLabel: '男' }, { dictValue: '2', dictLabel: '女' }]

5. 根据ID获取名称

import { getNameById, getValByProjectId, getNameByUserId } from './tool'const projectList = [{ id: 1, name: '项目A' }]
const userList = [{ id: 1, username: 'admin' }]console.log(getValByProjectId(projectList, 1)) // "项目A"
console.log(getNameByUserId(userList, 1)) // "admin"
console.log(getNameById(projectList, 1)) // "项目A"

全局组件安装

工具类中还提供了一个withInstall方法,用于更方便地注册全局组件:

// 假设我们有一个组件 MyComponent
import MyComponent from './MyComponent.vue'
import { withInstall } from './tool'// 注册组件
const GlobalComponent = withInstall(MyComponent, '$myComp')// 在main.ts中使用
import { createApp } from 'vue'
import App from './App.vue'const app = createApp(App)
app.use(GlobalComponent)// 现在可以在任何地方使用MyComponent
// 并且可以通过this.$myComp访问组件实例(如果设置了alias)

完整示例

下面是一个综合使用这些工具函数的示例:

import { pathToCamel, isExternalLink, convertSizeFormat,getDictLabel,withInstall
} from './tool'// 1. 路径转换
const apiPath = '/user/account/info'
const camelName = pathToCamel(apiPath)
console.log(`API名称: ${camelName}`)// 2. 链接检查
const url = 'https://example.com/api'
if (isExternalLink(url)) {console.log('这是一个外部链接')
}// 3. 文件大小格式化
const fileSize = 5325821 // 5.08 MB
console.log(`文件大小: ${convertSizeFormat(fileSize)}`)// 4. 字典标签获取
const dictData = [{dictType: 'status',dataList: [{ dictValue: '0', dictLabel: '禁用' },{ dictValue: '1', dictLabel: '启用' }]}
]
console.log(`状态: ${getDictLabel(dictData, 'status', '1')}`)// 5. 组件注册
import CustomButton from './components/CustomButton.vue'
export const GlobalButton = withInstall(CustomButton, '$button')

总结

这个工具类提供了Vue开发中常用的功能,包括:

  1. 字符串处理(路径转驼峰)
  2. URL验证和处理
  3. 数据格式化(文件大小)
  4. 字典数据操作
  5. 全局组件安装

通过合理使用这些工具函数,可以大大提高开发效率,减少重复代码。特别是withInstall方法,为Vue的全局组件注册提供了便捷的方式。

在实际项目中,你可以根据需求扩展这些工具函数,或者将它们作为基础,构建更适合自己项目的工具库。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/94350.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/94350.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/94350.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

​Visual Studio + UE5 进行游戏开发的常见故障问题解决

从零开始,学习 虚幻引擎5(UE5),开始游戏开发之旅! 本文章仅提供学习,切勿将其用于不法手段! 有些项目在 Visual Studio 的 Unreal Engine 集成配置界面中,涉及 ​Unreal Engine 与 V…

MiniCPM-V4.0开源并上线魔乐社区,多模态能力进化,手机可用,还有最全CookBook!

今天,面壁小钢炮新一代多模态模型 MiniCPM-V 4.0 正式开源。依靠 4B 参数,在 OpenCompass、OCRBench、MathVista 等多个榜单上取得了同级 SOTA 成绩,且 实现了在手机上稳定、丝滑运行。此外,面壁团队也正式开源了 推理部署工具 Mi…

FCT/ATE/ICT通用测试上位机软件

在当今智能制造与电子产品快速迭代的背景下,功能测试(FCT)已成为确保产品质量的关键环节。然而,传统的测试上位机往往存在扩展困难、功能固化、二次开发成本高等问题。为此,我们提出一款模块化、可扩展、可脚本化的 FC…

IndexTTS介绍与部署(B站开源的工业级语音合成模型)

语音合成效果非常好,可作为自己日常文本转语音使用工具! 软件介绍 IndexTTS 是由哔哩哔哩(B 站)开源的工业级可控高效零样本文本转语音(TTS)系统,基于 XTTS 和 Tortoise 构建,采用 …

uniApp对接实人认证

前端代码部分<template><view class"wrap"><view class"box"><view class"item flex-row align-items-center space-between"><view class"name"><text style"color:#FF4D4D">*</te…

pytest 并发执行用例(基于受限的测试资源)

概要 本文主要介绍了如何在测试资源&#xff08;被测对象&#xff09;受限的情况下&#xff0c;使用 pytest 进行并发测试以减少总体测试时间的方法和过程。 背景 在软件开发过程中&#xff0c;我们通常使用测试用例来持续保证软件的质量&#xff08;例如&#xff0c;确保关…

结构化智能编程:用树形向量存储重构AI代码理解范式

结构化智能编程:用树形向量存储重构AI代码理解范式 告别暴力embedding,通过分层存储策略让AI精准理解百万行代码库 在AI编程助手日益普及的今天,开发者面临一个新的困境:当项目规模达到数万甚至数百万行代码时,传统的暴力向量化方法不仅效率低下,而且往往导致AI理解偏差。…

GPT5 / 深度研究功能 无法触发

具体表现为&#xff1a; 1.没有GPT5标识2.回答是GPT43.无法触发深度研究功能请问如何解决&#xff1f;

一键脚本:自动安装 Nginx + Certbot + HTTPS(Let‘s Encrypt)

创建脚本文件​&#xff1a; vi setup_nginx_https.sh脚本内容&#xff1a; #!/bin/bash# # 一键安装 Nginx Certbot HTTPS (CentOS 7) # 功能&#xff1a;自动安装 Nginx、Certbot&#xff0c;配置 HTTPS&#xff0c;自动续期 # 使用方法&#xff1a;./setup_nginx_https.s…

SpringAI与MCP

MCP是什么&#xff1f;MCP 服务 代理服务&#xff08;Proxy&#xff09; 标准化接口 自动化适配MCP 的目的&#xff0c;就是让 AI 应用不再“为每个工具定制对接 ”&#xff0c;而是像使用 USB-C 一样&#xff0c;“插上即用”任何外部工具。没mcp之前不同的工具入参和出参千…

Coze用户退出登录流程分析-后端源码

前言 本文将深入分析Coze Studio项目的用户退出登录功能后端实现&#xff0c;通过源码解读来理解整个退出登录流程的架构设计和技术实现。退出登录作为用户认证系统的重要组成部分&#xff0c;主要负责清理用户会话状态&#xff0c;确保用户账户安全。 退出登录功能虽然相对简单…

【应急响应工具教程】Unix/Linux 轻量级工具集Busybox

1、工具简介BusyBox 是一个将常用 Unix/Linux 工具打包在单一可执行文件中的轻量级工具集&#xff0c;被称为 “嵌入式 Linux 的瑞士军刀”。 它将多个精简版的命令行工具&#xff08;如 ls、cat、cp、mv、grep 等&#xff09;集成到一个二进制文件中&#xff0c;并通过不同的调…

【React】案例:B站评论

目录 一、核心功能实现 二、id处理和时间处理 三、清空内容并重新聚焦 一、核心功能实现 1.获取评论内容&#xff1a;表单受控绑定 2.点击发布按钮发布评论 二、id处理和时间处理 1.rpid要求一个唯一的随机数id -uuid库 npm install uuid 使用方法&#xff1a;import {v4 as…

sqlite创建数据库,创建表,插入数据,查询数据的C++ demo

sqlite的API可参考&#xff1a;SQLite – C/C | 菜鸟教程 sqlite的官网API可参考&#xff1a;Introduction #include <iostream> #include <sqlite3.h> #include <string>// 回调函数&#xff0c;用于查询结果的输出 static int callback(void* data, int …

部分CSS笔试题讲解

1. box-sizing: border-box 的作用问题&#xff1a; 默认的 CSS 盒模型 (content-box) 中&#xff0c;元素的 width 和 height 属性只指定了内容区域的尺寸。如果你给元素添加了 padding 或 border&#xff0c;这些值会被加在 width/height 之上&#xff0c;导致元素的实际占用…

雅菲奥朗SRE知识墙分享(二):『SRE对智能运维的升级模型』

SRE深度结合AI创新&#xff0c;雅菲奥朗专家刘峰老师总结了近期人工智能运维领域的突破&#xff0c;合计以下15个关键点:一、领域1&#xff1a;Dev&Ops 深度融合• 关键点1. 组织&#xff1a;Google “SREScale” 最新论文提出「单一故障域 单一 SRE 小组」原则&#xff0…

前端 Promise 全面深入解析

一、Promise基础概念 1、什么是Promise? Promise是一个表示异步操作最终完成或失败的对象。它允许你为异步操作的成功结果和失败原因分别绑定相应的处理方法。 2、Promise的三种状态 pending(等待中): 初始状态,既不是成功,也不是失败 fulfilled(已成功): 操作成功完…

【LIN】2.LIN总线通信机制深度解析:主从架构、五种帧类型与动态调度策略

参考文章&#xff1a; Lin总线通信在STM32作为主机代码以及从机程序 基于STM32的LIN总线的实现 STM32F0-LIN总线通讯程序代码 主从调试OK LIN协议通信DEMO及源码剖析 前文已讲解关于LIN帧代码如何实现&#xff1a;【LIN】1.LIN通信实战&#xff1a;帧收发全流程代码实现 帧类型…

Maven的概念与Maven项目的创建

MavenMaven的概念依赖管理项目构建Maven安装Maven项目的创建Maven的第一个项目Maven的第二个项目Maven的概念 Maven 是 Apache 基金会推出的跨平台的项目管理工具&#xff0c;主要服务于基于Java平台的项目构建、依赖管理和项目信息管理&#xff0c;目前是 Java 生态中最主流的…

Mysql之binlog日志说明及利用binlog日志恢复数据操作记录

众所周知,binlog日志对于mysql数据库来说是十分重要的。在数据丢失的紧急情况下,我们往往会想到用binlog日志功能进行数据恢复(定时全备份+binlog日志恢复增量数据部分),化险为夷! 废话不多说,下面是梳理的binlog日志操作解说: 一、初步了解binlog MySQL的二进制日志…