vue項目常用方法封裝,持續更新中。。。

来源:https://www.cnblogs.com/sgs123/archive/2020/01/16/12200454.html
-Advertisement-
Play Games

vue項目中可以直接使用 1、常用工具類untils.js中 2、本地存儲工具類storageUntils.js 項目中常用到的一些工具方法,持續更新中。。。 ...


vue項目中可以直接使用

1、常用工具類untils.js中

/*
* 驗證手機號是否合格
* true--說明合格
*/
export function isPhone(phoneStr){
    let myreg = /^[1][3,4,5,7,8,9][0-9]{9}$/;
    if (!myreg.test(phoneStr)) {
        return false;
    } else {
        return true;
    }
}

/*
* 驗證身份證號是否合格
* true--說明合格
*/
export function isIdCard(idCardStr) {
  let idcardReg = /^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$|^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/
  if (idcardReg.test(idCardStr)) {
    return true
  } else {
    return false
  }
}

/**
* 驗證車牌號是否合格
* true--說明合格
*/
export function isVehicleNumber(vehicleNumber) {
    let xreg=/^[京津滬渝冀豫雲遼黑湘皖魯新蘇浙贛鄂桂甘晉蒙陝吉閩貴粵青藏川寧瓊使領A-Z]{1}[A-Z]{1}(([0-9]{5}[DF]$)|([DF][A-HJ-NP-Z0-9][0-9]{4}$))/; 
    let creg=/^[京津滬渝冀豫雲遼黑湘皖魯新蘇浙贛鄂桂甘晉蒙陝吉閩貴粵青藏川寧瓊使領A-Z]{1}[A-Z]{1}[A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9掛學警港澳]{1}$/; 
    if(vehicleNumber.length == 7){
        return creg.test(vehicleNumber);
    } else if(vehicleNumber.length == 8){
        return xreg.test(vehicleNumber);
    } else{
        return false;
    }
}

/*
* 驗證字元串是否為空(也不能為純空格)
* true--說明為空, false--說明不為空
*/
export function isEmptyString(string) {
    if (string == undefined 
        || typeof string == "undefined"
        || !string
        || string == null 
        || string == ''
        || /^\s+$/gi.test(string) ) {
        return true;
    }else{
        return false;
    }
}

/*
* 生日轉為年齡(精確到月份)
*/
export function birsdayToAge(birsday) {
    let aDate = new Date();
    let thisYear = aDate.getFullYear();
    let bDate = new Date(birsday);
    let brith = bDate.getFullYear();
    let age = thisYear - brith;
    if(aDate.getMonth()==bDate.getMonth()){
        if(aDate.getDate()<bDate.getDate()){
            age = age -1;
        }
    }else{
        if(aDate.getMonth()<bDate.getMonth()){
            age = age -1;
        }
    }
    return age
}

/*
* 是否空數組
*/
export function isArrayEmpty(val) {
    if(val && val instanceof Array && val.length>0){
        return false;
    }else{
        return true;
    }
}

/*
* 獲取url參數字元串
* 沒有返回null
*/
export function getQueryString(name) {
  let reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i')
  let r = window.location.search.substr(1).match(reg)
  if (r != null) {
    return unescape(r[2])
  }
  return null
}

/*
* 遞歸深拷貝
*/
export function deepCopy(obj) {
    let result = Array.isArray(obj) ? [] : {};
    for (let key in obj) {
        if (obj.hasOwnProperty(key)) {
            if(typeof obj[key] === 'object' && obj[key] !== null) {
                result[key] = deepCopy(obj[key]);
            } else {
                result[key] = obj[key];
            }
        }
    }
    return result;
}

/**
* 去除參數空數據(用於向後臺傳遞參數的時候)
* @param {Object} obj [參數對象]
*/
export function filterEmptyData(obj){
  for (let prop in obj) {
    obj[prop] === '' ? delete obj[prop] : obj[prop]
  }
  return obj;
}

/**
* @desc  函數防抖,用於多次觸發,只執行 規定時間後再執行有且只有一次觸發 的情況。便於優化性能
* @param {function} func - 需要使用函數防抖的被執行的函數。必傳
* @param {Number} wait - 多少毫秒之內觸發,只執行第一次,預設1000ms。可以不傳
*/
export function debounce(func, wait) {
  let timeout = null
  wait = wait || 1000
  return function() {
    let context = this
    let args = arguments
    if (timeout) clearTimeout(timeout)
    let callNow = !timeout
    timeout = setTimeout(() => {
      timeout = null
    }, wait)
    if (callNow) func.apply(context, args)
  }
}

2、本地存儲工具類storageUntils.js

/**
* 設置本地localStorage
* @name {String} 數據對象的KEY
* @data {all} 對應key的數據
*/
export function setStorage(name, data) {
  let storage = window.localStorage;
  storage.setItem(name, JSON.stringify(data));
}
 
/**
* 拿到本地localStorage
* @name {String} 數據對象的KEY
*/
export function getStorage(name) {
  let storage = window.localStorage;
  let data = JSON.parse(storage.getItem(name));
  return data;
}
/**
* 設置本地sessionStorage
* @name {String} 數據對象的KEY
* @data {all} 對應key的數據
*/
export function setSessionStorage(name, data) {
  let storage = window.sessionStorage;
  storage.setItem(name, JSON.stringify(data));
}
 
/**
* 拿到本地sessionStorage
* @name {String} 數據對象的KEY
*/
export function getSessionStorage(name) {
  let storage = window.sessionStorage;
  let data = JSON.parse(storage.getItem(name));
  return data;
}

項目中常用到的一些工具方法,持續更新中。。。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一個小案例,鞏固有狀態組件和無狀態組件的使用 通過for迴圈生成多個組件 1. 數據: 入口 評論列表組件 使用CSS模塊化 1. 可以在webpack.config.js中為css loader啟用模塊化: 2. 使用 定義全局樣式 webpack中的配置 style樣式 評論項的組件 ...
  • react中的組件組件 react組件介紹 在React中,構造函數,就是一個最基本的組件 如果想要把組件放到頁面中,可以把 構造函數的名稱,當作 組件的名稱,以 HTML標簽形式引入頁面中即可 註意:React在解析所有的標簽的時候,是以標簽的首字母來區分的,如果標簽的首字母是小寫,那麼就按照 普 ...
  • JSX語法 1. 如要要使用 JSX 語法,必須先運行 ,然後再 中添加 語法配置; babelrc配置 webpack中配置 2. JSX語法的本質:還是以 React.createElement 的形式來實現的,並沒有直接把 用戶寫的 HTML代碼,渲染到頁面上; 3. 如果要在 JSX 語法內 ...
  • 實現mini版react redux 1. 理解react redux模塊 1). react redux模塊整體是一個對象模塊 2). 包含2個重要屬性: Provider和connect 3). Provider 值: 組件類 作用: 向所有容器子組件提供全局store對象 使用: 4). co ...
  • 實現mini版redux 1. 理解redux模塊 1). redux模塊整體是一個對象模塊 2). 內部包含幾個函數 createStore(reducers) // reducers: function(state, action){ return newState} combineReduce ...
  • React中幾個核心的概念 虛擬DOM(Virtual Document Object Model) + DOM的本質是什麼:就是用JS表示的UI元素 + DOM和虛擬DOM的區別: DOM是由瀏覽器中的JS提供功能,所以我們只能人為的使用 瀏覽器提供的固定的API來操作DOM對象; 虛擬DOM:並 ...
  • JS 百度地圖-右鍵菜單 /* 標註右鍵刪除 */ var markerMenu = new BMap.ContextMenu(); markerMenu.addItem(new BMap.MenuItem('刪除標註 ', function () { map.removeOverlay(marke ...
  • 標題中的 Cascading 亦可以理解為級聯。 進入正文,這是一個很有意思的現象。可以直接跳到 總結一下 部分,看完再回過頭來閱讀本文。 引子 假設我們有如下結構: 上面的 p 標簽只有一個內聯 CSS,很明顯,在沒有其他樣式的干預下,文本 .txt 的顏色肯定就是紅色的。 如果此時,我們希望改變 ...
一周排行
    -Advertisement-
    Play Games
  • Dapr Outbox 是1.12中的功能。 本文只介紹Dapr Outbox 執行流程,Dapr Outbox基本用法請閱讀官方文檔 。本文中appID=order-processor,topic=orders 本文前提知識:熟悉Dapr狀態管理、Dapr發佈訂閱和Outbox 模式。 Outbo ...
  • 引言 在前幾章我們深度講解了單元測試和集成測試的基礎知識,這一章我們來講解一下代碼覆蓋率,代碼覆蓋率是單元測試運行的度量值,覆蓋率通常以百分比表示,用於衡量代碼被測試覆蓋的程度,幫助開發人員評估測試用例的質量和代碼的健壯性。常見的覆蓋率包括語句覆蓋率(Line Coverage)、分支覆蓋率(Bra ...
  • 前言 本文介紹瞭如何使用S7.NET庫實現對西門子PLC DB塊數據的讀寫,記錄了使用電腦模擬,模擬PLC,自至完成測試的詳細流程,並重點介紹了在這個過程中的易錯點,供參考。 用到的軟體: 1.Windows環境下鏈路層網路訪問的行業標準工具(WinPcap_4_1_3.exe)下載鏈接:http ...
  • 從依賴倒置原則(Dependency Inversion Principle, DIP)到控制反轉(Inversion of Control, IoC)再到依賴註入(Dependency Injection, DI)的演進過程,我們可以理解為一種逐步抽象和解耦的設計思想。這種思想在C#等面向對象的編 ...
  • 關於Python中的私有屬性和私有方法 Python對於類的成員沒有嚴格的訪問控制限制,這與其他面相對對象語言有區別。關於私有屬性和私有方法,有如下要點: 1、通常我們約定,兩個下劃線開頭的屬性是私有的(private)。其他為公共的(public); 2、類內部可以訪問私有屬性(方法); 3、類外 ...
  • C++ 訪問說明符 訪問說明符是 C++ 中控制類成員(屬性和方法)可訪問性的關鍵字。它們用於封裝類數據並保護其免受意外修改或濫用。 三種訪問說明符: public:允許從類外部的任何地方訪問成員。 private:僅允許在類內部訪問成員。 protected:允許在類內部及其派生類中訪問成員。 示 ...
  • 寫這個隨筆說一下C++的static_cast和dynamic_cast用在子類與父類的指針轉換時的一些事宜。首先,【static_cast,dynamic_cast】【父類指針,子類指針】,兩兩一組,共有4種組合:用 static_cast 父類轉子類、用 static_cast 子類轉父類、使用 ...
  • /******************************************************************************************************** * * * 設計雙向鏈表的介面 * * * * Copyright (c) 2023-2 ...
  • 相信接觸過spring做開發的小伙伴們一定使用過@ComponentScan註解 @ComponentScan("com.wangm.lifecycle") public class AppConfig { } @ComponentScan指定basePackage,將包下的類按照一定規則註冊成Be ...
  • 操作系統 :CentOS 7.6_x64 opensips版本: 2.4.9 python版本:2.7.5 python作為腳本語言,使用起來很方便,查了下opensips的文檔,支持使用python腳本寫邏輯代碼。今天整理下CentOS7環境下opensips2.4.9的python模塊筆記及使用 ...