最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Vue.js 中的實用工具方法【推薦】

 更新時間:2019年07月04日 14:06:01   作者:Coding and Fixing  
這篇文章主要介紹了Vue.js 中的實用工具方法,本文是小編日常開發(fā)中常用的一些工具方法,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下

收集日常開發(fā)中常用到的一些工具方法, 包含 vue 的公用過濾器、公用指令等 (PS: 懶人養(yǎng)成記)

公用自定義過濾器

import Vue from 'vue'
import moment from 'moment'

/**
 * @filter dateFormat 時間格式化
 * @param {String, Date} value 可被 new Date 解析的字符串
 * @param {String} formatStr moment 的 format 字符串
 * 使用方法 {{ 2019-1-1 | dateFormat() }}
 */
Vue.filter('dateFormat', (value, formatStr) => {
 return moment(value).format(formatStr || 'YYYY年MM月DD日 hh:mm:ss')
})

/**
 * @filter digitUppercase 人民幣金額轉成漢字大寫
 * @param {Number} value 金額數字
 * 使用方法 {{ 1111 | digitUppercase }}
 */
Vue.filter('digitUppercase', (value) => {
 if (Number(value)) {
 let fraction = ['角', '分']
 let digit = [
  '零', '壹', '貳', '叁', '肆',
  '伍', '陸', '柒', '捌', '玖'
 ]
 let unit = [
  ['元', '萬', '億'],
  ['', '拾', '佰', '仟']
 ]

 let head = value < 0 ? '欠' : ''
 value = Math.abs(value)
 let s = ''
 for (let i = 0; i < fraction.length; i++) {
  s += (digit[Math.floor(value * 10 * Math.pow(10, i)) % 10] + fraction[i]).replace(/零./, '')
 }
 s = s || '整'
 value = Math.floor(value)
 for (let i = 0; i < unit[0].length && value > 0; i++) {
  let p = ''
  for (let j = 0; j < unit[1].length && value > 0; j++) {
  p = digit[value % 10] + unit[1][j] + p
  value = Math.floor(value / 10)
  }
  s = p.replace(/(零.)*零$/, '').replace(/^$/, '零') + unit[0][i] + s
 }
 return head + s.replace(/(零.)*零元/, '元')
  .replace(/(零.)+/g, '零')
  .replace(/^整$/, '零元整')
 } else {
 return '零元整'
 }
})

公用自定義指令

import Vue from 'vue'
/**
 * @directive preventReClick 防止按鈕在短時間內多次點擊造成的多次請求(一般用于提交按鈕)
 * @param {Element} el 綁定的元素
 * @param {Number} binding 綁定的時間
 * 使用方式 <el-button v-prevent-replace-click></el-button>
 */
Vue.directive('preventReplaceClick', {
 inserted (el, binding) {
 el.addEventListener('click', () => {
  if (!el.disabled) {
  el.classList.add('is-disabled')
  const i = document.createElement('i')
  i.classList.add('el-icon-loading')
  el.prepend(i)
  el.classList.add('is-loading')
  el.disabled = true
  setTimeout(() => {
   el.disabled = false
   el.classList.remove('is-disabled')
   el.classList.remove('is-loading')
   el.removeChild(i)
  }, binding.value || 1000)
  }
 })
 }
})

實用方法

節(jié)流和防抖

/**
 * 應用場景
 * debounce(抖動)
 * search搜索聯(lián)想,用戶在不斷輸入值時,用防抖來節(jié)約請求資源。
 * window觸發(fā)resize的時候,不斷的調整瀏覽器窗口大小會不斷的觸發(fā)這個事件,用防抖來讓其只觸發(fā)一次
 *
 * throttle(節(jié)流)
 * 鼠標不斷點擊觸發(fā),mousedown(單位時間內只觸發(fā)一次)
 * 監(jiān)聽滾動事件,比如是否滑到底部自動加載更多,用throttle來判斷
 */
// 防抖
export function debounce (fn, delay = 200) {
 let timer
 return function () {
 let th = this
 let args = arguments
 if (timer) {
  clearTimeout(timer)
 }
 timer = setTimeout(function () {
  timer = null
  fn.apply(th, args)
 }, delay)
 }
}
// 節(jié)流
export function throttle (fn, interval = 200) {
 let last
 let timer
 return function () {
 let th = this
 let args = arguments
 let now = +new Date()
 if (last && now - last < interval) {
  clearTimeout(timer)
  timer = setTimeout(function () {
  last = now
  fn.apply(th, args)
  }, interval)
 } else {
  last = now
  fn.apply(th, args)
 }
 }
}

時間格式化處理

```javascript
// 格式化 startDate 和 endDate
import moment from ‘moment'
import _ from ‘lodash'
/**
@method timerByAdd 計算相對當前時間后N個單位時間的日期(加法)
@param num {Number} 相對于幾個時間點
@param timer {String} 時間單位 ‘days' ‘months' ‘years‘ 更多時間單位參考moment官方文檔
@param formatStr {String} moment 的 format 字符串
@return {Object} {startDate,endDate}
*/
export function timerByAdd ({
num,
timer = ‘days'
} = {}, formatStr = ‘YYYY-MM-DD') {
let startDate
let endDate = moment().format(formatStr)
num ? startDate = moment().add(num, timer).format(formatStr) : startDate = endDate
let result = {
startDate,
endDate
}
return result
}
/**
@method timerBySubtract 計算相對當前時間前N個單位時間的日期(減法)
@param num {Number} 相對于幾個時間點
@param timer {String} 時間單位 ‘days' ‘months' ‘years‘ 更多時間單位參考moment官方文檔
@param formatStr {String} moment 的 format 字符串
@return {Object} {startDate,endDate}
*/
export function timerBySubtract ({
num,
timer = ‘days'
} = {}, formatStr = ‘YYYY-MM-DD') {
let startDate
let endDate = moment().format(formatStr)
num ? startDate = moment().subtract(num, timer).format(formatStr) : startDate = endDate
let result = {
startDate,
endDate
}
return result
}
/**
@method timerFormat 將對象時間轉成數組形式
@param {Object} timer {startDate, endDate} 
*/ 
export function timerFormat (timer) { 
if (
.isObject(timer)) {
return
.values(timer) 
} 
} 

總結

以上所述是小編給大家介紹的Vue.js 中的實用工具方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!
如果你覺得本文對你有幫助,歡迎轉載,煩請注明出處,謝謝!

相關文章

  • 前端新手小白的Vue3入坑超詳細指南

    前端新手小白的Vue3入坑超詳細指南

    這篇文章主要介紹了如何使用Vite安裝和啟動Vue3項目,并推薦了一些常用的第三方庫,如js-tool-big-box、less或sass預處理器、axios請求庫以及Element?Plus?UI庫,需要的朋友可以參考下
    2024-12-12
  • vite打包出現?"default"?is?not?exported?by?"node_modules/...問題解決辦法

    vite打包出現?"default"?is?not?exported?by?"

    這篇文章主要給大家介紹了關于vite打包出現?"default"?is?not?exported?by?"node_modules/...問題的解決辦法,文中通過代碼將解決的辦法介紹的非常詳細,對同樣遇到這個問題的朋友具有一定的參考借鑒價值,需要的朋友可以參考下
    2024-06-06
  • 詳解Vue中一種簡易路由傳參辦法

    詳解Vue中一種簡易路由傳參辦法

    本篇文章主要介紹了詳解Vue中一種簡易路由傳參辦法,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • Vue2+ElementUI利用計算屬性實現搜索框功能

    Vue2+ElementUI利用計算屬性實現搜索框功能

    這篇文章主要為大家詳細介紹了Vue2和ElementUI如何利用計算屬性實現搜索框功能,文中的示例代碼講解詳細,感興趣的小伙伴可以了解一下
    2024-11-11
  • Vue中引入bootstrap.min.css的正確姿勢分享

    Vue中引入bootstrap.min.css的正確姿勢分享

    這篇文章主要介紹了Vue中引入bootstrap.min.css的正確姿勢,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • 初試vue-cli使用HBuilderx打包app的坑

    初試vue-cli使用HBuilderx打包app的坑

    這篇文章主要介紹了初試vue-cli使用HBuilderx打包app的坑,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-07-07
  • Vue路由History模式分析

    Vue路由History模式分析

    Vue-router是Vue的核心組件,主要是作為Vue的路由管理器,Vue-router默認hash模式,通過引入Vue-router對象模塊時配置mode屬性可以啟用history模式,本文將通過代碼示例給大家詳細分析Vue路由History模式
    2023-06-06
  • 如何使用Vue3+Vite+TS快速搭建一套實用的腳手架

    如何使用Vue3+Vite+TS快速搭建一套實用的腳手架

    Vite是一個面向現代瀏覽器的一個更輕、更快的?Web?應用開發(fā)工具,下面這篇文章主要給大家介紹了關于如何使用Vue3+Vite+TS快速搭建一套實用腳手架的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-10-10
  • 詳解vue-cli項目在IE瀏覽器打開報錯解決方法

    詳解vue-cli項目在IE瀏覽器打開報錯解決方法

    這篇文章主要介紹了詳解vue-cli項目在IE瀏覽器打開報錯解決方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-12-12
  • Vue中Mixin的正確用法詳解

    Vue中Mixin的正確用法詳解

    眾所周知,vue 的 mixins 是個非常靈活,但又很容易帶來混亂的 API,Mixins 本該是一種強大的重用代碼的手段,但使用之后往往帶來更多的混亂,代碼變得不易維護,本文就詳細介紹Vue Mixin的正確用法,需要的朋友可以參考下
    2023-06-06

最新評論

西乌珠穆沁旗| 吉安县| 临朐县| 凤凰县| 都昌县| 丁青县| 杭州市| 保山市| 南昌县| 拜城县| 安徽省| 天峨县| 达拉特旗| 玉林市| 桂林市| 舟曲县| 台北市| 博乐市| 军事| 黄陵县| 澄城县| 浦北县| 广元市| 铅山县| 永康市| 宁陕县| 师宗县| 桓台县| 山西省| 麦盖提县| 迁安市| 高雄市| 枞阳县| 白山市| 正镶白旗| 南华县| 永新县| 郁南县| 宝清县| 曲阳县| 华宁县|