Vue工具類使用指南:實用函數與全局組件安裝

概述

在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的二進制日志…