vue項目常用方法封裝


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;
}

/**
 * 判斷數據類型
 * @param {any} val - 基本類型數據或者引用類型數據
 * @return {string} - 可能返回的結果有,均為小寫字符串
 * number、boolean、string、null、undefined、array、object、function等
 */
export function getType(val){
  //判斷數據是 null 和 undefined 的情況
  if (val == null) {
    return val + "";
  }
  return typeof(val) === "object" ?
      Object.prototype.toString.call(val).slice(8, -1).toLowerCase() :
      typeof(val);
}

/*
 * 驗證是否為數字
 */
export function isNumber(n) {
  return !isNaN(parseFloat(n)) && isFinite(n);
}

/*
 * 是否為數組
 */
export function isArray(obj) {
  return Object.prototype.toString.call(obj) === '[object Array]';
}

/*
 * 是否空數組
 */
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(fn, delay) {
  delay = delay || 1000; //默認1s后執行
  let timer = null;
  return function () {
    let context = this;
    let arg = arguments;
    if (timer) {
      clearTimeout(timer);
    }
    timer = setTimeout(() => {
      fn.apply(context, arg);
    }, delay);
  };
}

/**
 * 節流函數, 用於將多次執行變為每隔一段時間執行
 * @param fn 事件觸發的操作
 * @param delay 間隔多少毫秒需要觸發一次事件
 */
export function throttle2(fn, delay) {
  let timer = null;
  return function () {
    let context = this;
    let args = arguments;
    if (!timer) {
      timer = setTimeout(function () {
        fn.apply(context, args);
        clearTimeout(timer);
      }, delay);
    }
  };
}

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

  • 結合 vuex 使用
class Storage {
  constructor(keyValue) {
    this.key = keyValue;
  }
  get() {
    let value;
    try {
      return (value = window.localStorage.getItem(this.key)) &&
        typeof value !== 'undefined'
        ? JSON.parse(value)
        : undefined;
    } catch (err) {}
    return undefined;
  }
  set(data) {
    window.localStorage.setItem(this.key, JSON.stringify(data));
  }
  del() {
    window.localStorage.removeItem(this.key);
  }
}

//簡化了key值的輸入 方便統一管理
export const userInfo = new Storage('userInfo'); //登錄用戶信息
export const token = new Storage('token'); //登錄token


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM