欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

vue實現(xiàn)手機號碼的校驗實例代碼(防抖函數(shù)的應用場景)

 更新時間:2019年09月05日 10:11:26   作者:有夢想的咸魚前端  
這篇文章主要給大家介紹了關于vue實現(xiàn)手機號碼的校驗的相關資料,主要是防抖函數(shù)的應用場景,文中通過示例代碼介紹的非常詳細,對大家學習或者使用vue具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧

前言

上一篇博文我們講到了節(jié)流函數(shù)的應用場景,我們知道了節(jié)流函數(shù)可以用在模糊查詢、scroller、onresize等場景;今天這篇我們來講防抖函數(shù)的應用場景::

通過上一篇博文的學習,我們知道了防抖函數(shù)的原理:只有在事件觸發(fā)的時候才會延遲加載,如果在延遲加載之前再次觸發(fā),則會刷新延遲時間重新延遲,觸發(fā)次數(shù)有且只有觸發(fā)一次;

如果對防抖函數(shù)原理有疑惑,請點擊鏈接跳轉到關于防抖函數(shù)講解的博文:http://www.dbjr.com.cn/article/169350.htm

防抖函數(shù)一般是用于頻繁觸發(fā)事件,而我們只需要它觸發(fā)一次的場景,比如:輸入框的oninput事件、button按鈕點擊事件、點贊等操作場景;

今天我們講的demo場景是防抖函數(shù)實現(xiàn)手機號碼校驗:

HTML視圖層代碼:

  <div id="app">
  <input type="text" placeholder="請輸入手機號碼" v-model="val" @keyup="check"/>
  <div class="box" v-show="statu==true">您輸入的手機號碼格式正確</div>
 </div>

首先我們視圖層代碼是一個輸入框后面加上一個div作為提示信息,HTML代碼很簡單就不過多講解了;

JS數(shù)據(jù)邏輯層代碼:

 //這里我們要引入一個文件,文件里面是防抖函數(shù)的是實現(xiàn)
  <script src="test.js"></script>
 <script>
 // 實例化 vue對象
  new Vue({
   el:"#app",
   data:{
        //val是雙向數(shù)據(jù)綁定綁定輸入框的值
    val:"",
        //此處狀態(tài)值是根據(jù)狀態(tài)值的變化來修改后面div的提示信息
    statu:false
   },
  mounted(){

  },
  methods:{
        //check是我們綁定的輸入框的@keyup事件,注意這里不能是函數(shù),不然不會觸發(fā),必須要是對象
   check:debounce(function(){
          //這里是我們調用方法,也就是我們要做的事情
    this.handle();
    console.log(new Date())
    }),
    handle(){
          //此處輸入是為了統(tǒng)計handle事件觸發(fā)的次數(shù)
     console.log(“函數(shù)防抖”);
     //這里定義校驗規(guī)則
     let reg = /^1[3|4|5|7|8][0-9]{9}$/; 
     //校驗手機號規(guī)則
           //如果校驗不通過會返回false,如果校驗通過會返回true
     if(reg.test(this.val)){
              //修改狀態(tài)值方便上面的視圖層判斷展示
      this.statu=true;
              //動態(tài)的修改提示信息
      document.getElementsByClassName("box").innerHTML="您輸入的手機號碼格式錯誤";
     }else{
      this.statu=false;
      document.getElementsByClassName("box").innerHTML="您輸入的手機號碼格式錯誤";
     }
    },
  }
 })

test.js

 function debounce(fn) { //默認300毫秒
  var timer;
  return function() {
   if(timer) {
    clearTimeout(timer);
   }
   timer = setTimeout(() => {
        定時器必須要更改this指向,可以用apply、bind、或者上面用變量轉換等方式來進行更改this指向
  
    fn.apply(this); // this 指向vue
   }, 1000);
  };
 }

最后,我們的效果圖如下(這里只是簡單的模擬效果,視圖層搭建的不是很美觀):

   

我們可以看到我們打印的結果只輸出了一次,如果不使用防抖函數(shù),這里是會觸發(fā)11次的,因為一共輸入了11個字符;假設我們的方法體中是發(fā)送ajax和操作DOM呢?為了一個手機號碼校驗,難道我們要進行11次甚至更多次的ajax請求或者DOM操作嗎?如果是那樣,我們的程序性能可想而知,所以說防抖函數(shù)是一種性能提升方案;

上述講述的是我們之前常見的cdn方式引入vue,那么我們?nèi)绾卧趘ue-cli腳手架中使用防抖函數(shù)來進行提升性能呢?

vue-cli:

首先我們可以在build文件夾中新建一個js文件,這里我們定義common.js:

common.js

// 函數(shù)防抖
export function debounce(fn, delay) {
 // 記錄上一次的延時器
 var timer = null;
 var delay = delay || 200;
 return function() {
 // var args = arguments;
  var that = this;
  // 清除上一次延時器
  clearTimeout(timer)
  timer = setTimeout(function() {
   fn.apply(that)
  }, delay);
 }
 }

注意:我們在vue-cli中自定義方法必須要export拋出,不然組件讀取不到

然后我們到我們需要用的文件中來進行引入和使用:

需要使用的組件:

import {debounce} from "../../build/common"

有拋出就一定有引入,我們這里用import來引用common.js文件里面的方法,這里的debounce就是我們用來接收common.js里面方法的變量;

調用方式跟上面的一樣:

這里的search是視圖層綁定的觸發(fā)事件,注意這里也需要是對象的形式來調用
methods:{
 Search:debounce(function(){console.log(1234);},1000), 
}

總結:

1、防抖函數(shù)和節(jié)流函數(shù)均屬于一種性能優(yōu)化方案,有效的使用可以提升程序性能,提升用戶體驗;

2、防抖函數(shù)可適用于點贊、輸入框校驗、取消點贊、創(chuàng)建訂單等不可讓用戶同一時間內(nèi)頻繁進行操作的場景;

好了,以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。

相關文章

  • Vue手動控制點擊事件Click觸發(fā)方式

    Vue手動控制點擊事件Click觸發(fā)方式

    這篇文章主要介紹了Vue手動控制點擊事件Click觸發(fā)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • 詳解Vue文檔中幾個易忽視部分的剖析

    詳解Vue文檔中幾個易忽視部分的剖析

    針對Vue文檔中部分大家可能不會去研讀的內(nèi)容,這篇文章主要介紹了詳解Vue文檔中幾個易忽視部分的剖析,非常具有實用價值,需要的朋友可以參考下
    2018-03-03
  • 使用vue實現(xiàn)猜謎卡片游戲

    使用vue實現(xiàn)猜謎卡片游戲

    這篇文章主要為大家詳細介紹了如何使用vue實現(xiàn)簡單的猜謎卡片游戲,文中的示例代碼講解詳細,具有一定的學習價值,感興趣的小伙伴可以參考一下
    2023-09-09
  • VUE 自定義取色器組件的實現(xiàn)

    VUE 自定義取色器組件的實現(xiàn)

    本文主要介紹了VUE 自定義取色器組件的實現(xiàn),文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • element表格翻頁第2頁從1開始編號(后端從0開始分頁)

    element表格翻頁第2頁從1開始編號(后端從0開始分頁)

    這篇文章主要介紹了element表格翻頁第2頁從1開始編號(后端從0開始分頁),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-12-12
  • vue element-ui使用required進行表單校驗時自定義提示語問題

    vue element-ui使用required進行表單校驗時自定義提示語問題

    這篇文章主要介紹了vue element-ui使用required進行表單校驗時自定義提示語問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • Vue2+SpringBoot實現(xiàn)數(shù)據(jù)導出到csv文件并下載的使用示例

    Vue2+SpringBoot實現(xiàn)數(shù)據(jù)導出到csv文件并下載的使用示例

    本文主要介紹了Vue2+SpringBoot實現(xiàn)數(shù)據(jù)導出到csv文件并下載,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-10-10
  • el-menu修改item顏色的實現(xiàn)

    el-menu修改item顏色的實現(xiàn)

    本文主要介紹了el-menu修改item顏色的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-04-04
  • vue通過cookie獲取用戶登錄信息的思路詳解

    vue通過cookie獲取用戶登錄信息的思路詳解

    這篇文章主要介紹了vue通過cookie獲取用戶登錄信息的思路詳解,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-10-10
  • vue面試之new Vue的時候到底做了什么

    vue面試之new Vue的時候到底做了什么

    這篇文章主要介紹了vue面試之new Vue的時候到底做了什么原理及vue加載流程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-05-05

最新評論