前端 -- jQuery

来源:https://www.cnblogs.com/wenxin1120/archive/2019/07/15/11191348.html
-Advertisement-
Play Games

jQuery引入 下載鏈接: [jQuery官網](https://jquery.com/),首先需要下載這個jQuery的文件,然後在HTML文件中引入這個文件,就可以使用這個文件中幫我們提供的jquery的介面了。 引入: <script src = 'jquery.js'> </script> ...


jQuery引入

  • 下載鏈接: [jQuery官網](https://jquery.com/),首先需要下載這個jQuery的文件,然後在HTML文件中引入這個文件,就可以使用這個文件中幫我們提供的jquery的介面了。

  • 引入: <script src = 'jquery.js'> </script>

jQuery對象和dom對象

  • jQuery找到的對象稱為 --> jQuery對象

  • 原生js找到的標簽稱為 --> dom對象

  • dom對象只能使用dom對象的方法,不能使用jquery對象的方法,jquery對象也是,它不能使用dom對象的方法

  • dom對象和jquery對象互相轉換:

    • jquery對象轉dom對象 -- jquery對象[0] 示例: $('#d1')[0]

    • dom對象轉jquery對象 -- $(dom對象)

 

jQuery選擇器

基本選擇器(同css一樣)

  • 不管找什麼標簽,用什麼選擇器,都必須要寫$(""),引號裡面再寫選擇器,通過jQuery找到的標簽對象就是一個jQuery對象,用原生JS找到的標簽對象叫做DOM對象

  • 通過 .text() 可以拿到標簽裡面的文本內容

  1. id選擇器

    • $("#id值")

  2. 標簽選擇器

    • $("標簽名")

  3. class選擇器

    • $(".類名")

  4. 配合使用

    • $("div.c1") 找到有c1 class類的div 標簽

  5. 所有元素選擇器

    • $("*")

  6. 組合選擇器

    • $("#id, .className, tagName")

  7. 層級選擇器

    • x和y可以為任意選擇器

    • $("x y"); x的所有後代y(子子孫孫)

    • $("x > y"); x的所有兒子y(兒子)

    • $("x + y"); 找到所有緊挨在x後面的y(一個)

    • $("x ~ y"); x之後所有的兄弟y

  • 選擇器找到的可能是多個標簽,會放到數組裡面,但還是jquery對象,能夠直接使用jquery的方法,意思是找到的所有標簽進行統一設置,如果要單獨設置選中的所有標簽中的某個標簽,可以通過索引取值的方式找到,然後註意,通過索引取值拿到的標簽,是個dom對象

基本篩選器(選擇之後進行過濾)

<ul>
    <li id="1">南山</li>
    <li id="2">
        <a href="">百度</a>
        寶安
    </li>
    <li id="3">坪山</li>
    <li id="4">羅湖</li>
    <li id="5">
        <a href="">華為</a>
        福田
    </li>
    <li id="6">龍崗</li>
</ul>
​
:first  -- 示例:$('li:first')  // 第一個
:last       // 最後一個
:eq(index)  // 索引等於index的那個元素
:even     // 匹配所有索引值為偶數的元素,從 0 開始計數
:odd        // 匹配所有索引值為奇數的元素,從 0 開始計數
:gt(index)     // 匹配所有大於給定索引值的元素
:lt(index)     // 匹配所有小於給定索引值的元素
:not(選擇器)    // 排除所有滿足not條件的標簽
:has(選擇器)    // --$('li:has(.c1)')  找到後代中含有滿足has裡面選擇器的那個標簽
:not(:has(.c1)) -- $('li:not(:has(.c1))') 排除後代中含有滿足has裡面選擇器的那個標簽

 

屬性選擇器

  • [attribute = value] 屬性等於

  • [attribute != value] 屬性不等於

    // 示例,多用於input標簽
    <input type="text">
    <input type="password">
    <input type="checkbox">
    $("input[type='checkbox']");  // 取到checkbox類型的input標簽
    $("input[type!='text']");     // 取到類型不是text的input標簽

     

表單篩選器

  • 多用於找form表單裡面出現的input標簽,當然通過屬性選擇器找肯定沒有問題的,這樣就是寫著簡單一點

    找到的是type屬性為這個值的input標簽中
    :text
    :password
    :file
    ​
    :radio
    :checkbox
    ​
    :submit
    :reset
    :button
    ​
    // 例子:
    $(":checkbox")  // 找到所有的checkbox

     

表單對象屬性篩選器

  • :enabled 可用的標簽

  • :disabled 不可用的標簽

  • :checked 選中的input標簽

  • :selected 選中的option標簽

    // 找到可用的input標簽
    <form>
      <input name="email" disabled="disabled" />
      <input name="id" />
    </form>
    ​
    $("input:enabled")  // 找到可用的input標簽
    // 找到被選中的option:
    <select id="s1">
      <option value="beijing">北京市</option>
      <option value="shanghai">上海市</option>
      <option selected value="guangzhou">廣州市</option>
      <option value="shenzhen">深圳市</option>
    </select>
    ​
    $(":selected")  // 找到所有被選中的option

     

篩選器方法

  • 選擇器或者篩選器選擇出來的都是對象,而篩選器方法其實就是通過對象來調用一個進一步過濾作用的方法,寫在對象後面加括弧,不再是寫在選擇器裡面的了。

  • 下一個元素

    $('#l3').next();  找到下一個兄弟標簽
    $('#l3').nextAll(); 找到下麵所有的兄弟標簽
    $('#l3').nextUntil('#l5');  直到找到id為l5的標簽就結束查找,不包含它

     

  • 上一個元素

    $("#id").prev()   找到上一個兄弟標簽
    $("#id").prevAll()  找到上面所有的兄弟標簽
    $("#id").prevUntil("#i2") 直到找到id為i2的標簽就結束查找,不包含它

     

  • 父親元素

    $("#id").parent()   // 查找一級父類                   
    $("#id").parents()  // 查找當前元素的所有的父輩元素(爺爺輩、祖先輩都找到)       
    $("#id").parentsUntil('body') // 查找當前元素的所有的父輩元素,直到遇到匹配的那個元素為止,這裡直到body標簽,不包含body標簽,基本選擇器都可以放到這裡面使用。 

              

  • 兒子和兄弟元素

    $('ul').children();       // 找所有的兒子們標簽
    $('ul').children('#l3');  // 找到符合後面這個選擇器的兒子標簽
    ​
    $('#l5').siblings();      // 找到所有的兄弟們標簽,不包含自己
    $('#l5').siblings('#l3'); // 找到符合後面這個選擇器的兄弟標簽

     

  • 查找

    • 搜索所有與指定表達式匹配的元素。這個函數是找出正在處理的元素的後代元素的好方法

    • $("div").find("p") 找到div後代中的p標簽,相當於 `$('div p')

  • 篩選

    • 篩選出與指定表達式匹配的元素集合。這個方法用於縮小匹配的範圍。用逗號分隔多個表達式

      $("div").filter(".c1")  // 從結果集中過濾出有c1樣式類的,從所有的div標簽中過濾出有class='c1'屬性的div,和find不同,find是從div標簽的子子孫孫中找到一個符合條件的標簽 等價於 $("div.c1")--> 找到類值等於c1的div標簽
      .first() // 獲取匹配的第一個元素
      .last()  // 獲取匹配的最後一個元素
      .not()   // 從匹配元素的集合中刪除與指定表達式匹配的元素$('li').not('#l3');
      .has()   // 保留包含特定後代的元素,去掉那些不含有指定後代的元素。
      .eq()    // 索引值等於指定值的元素

       

標簽操作

樣式操作

  1. 樣式類操作

    • addClass(); 添加指定的css類名

    • removeClass(); 移除指定的css類名

    • hasClass(); 判斷樣式是否存在

    • toggleClass(); 切換css類名,有就移除沒有就添加

      示例代碼
          $('.c1').addClass('c2');
          $('.c1').removeClass('c2');
          $('.c1').hasClass('c2');
          $('.c1').toggleClass('c2');

       

  2. css樣式

    • 原生js: 標簽.style.color = 'red';

    • jquery: $('.c1').css('background-color','red')

      同時設置多個css樣式:
      $('.c1').css({'background-color':'red','width':'200px'})
  3. 位置操作

    • position() 查看相對位置,不能設置位置

    • offset() 查看距離視窗左上角的絕對位置

      查看位置:
      $('.c2').position();  //查看相對位置
      $('.c2').offset();    //查看距離視窗左上角的絕對位置
      設置位置:
      $('.c2').offset({'top':'20','left':'40'});
  4. jQuery綁定點擊事件的寫法

    //原生js綁定點擊事件:
        $('.c1')[0].onclick = function(){
            this.style.background = 'red';
        }
    ​
    // jquery綁定點擊事件
        $('.c1').click(function () {
            $(this).css('background-color','green');
        })

     

  5. $(window).scrollTop() // 滾輪向下移動的距離

    $(window).scrollLeft() // 滾輪向右移動的距離

    // 滾動事件.監聽滾動事件來顯示或者隱藏標簽
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
            .c1{
                background-color: green;
                height: 4000px;
                width: 100px;
            }
            .s1{
                position: fixed;
                left:20px;
                bottom:20px;
                height: 30px;
                width: 70px;
                background-color: black;
                text-align: center;
                line-height: 30px;
            }
            .s1 a{
                color: white;
                font-size: 14px;
                text-decoration: none;
            }
            .hide{
                display: none;   // 隱藏標簽
            }
        </style>
    </head>
    <body>
        <span>頂部位置</span>
        <div class="c1"></div>
        <span class="s1 hide">
            <a href="#top">回到頂部</a>
            // <span>返回頂部</span>
        </span>
        <script src="jqu.js"></script>
        <script>
            $(window).scroll(function () {
                console.log($(window).scrollTop());
                if ($(window).scrollTop()>200){  
                    $('.s1').removeClass('hide') // 當滑動的距離超過200的時候,就顯示標簽
                }else{
                    $('.s1').addClass('hide')
                }
            })
    ​
        // 回到頂部,scrollTop設置值
        // $('.s1').click(function(){
        //     $(window).scrollTop(0)
        // })
        </script>
    </body>
    </html>
    View Code

     

  6. 尺寸

    $('.c1').height();      //content 高度
    $('.c1').width();       //content 寬度
    $('.c1').innerHeight(); //content高度+padding高度
    $('.c1').innerWidth();  //content寬度+padding寬度
    $('.c1').outerHeight(); //content高度+padding高度 + border高度
    $('.c1').outerWidth();  //content寬度+padding寬度+ border寬度

     

     

文本操作

  • html() 取得第一個匹配元素的html內容,包含標簽內容

  • html(val) 設置所有匹配元素的html內容,識別標簽,能夠表現出標簽的效果

  • text() 取得所有匹配元素的內容,只有文本內容,沒有標簽

  • text(val) 設置所有匹配元素的內容,不識別標簽,將標簽作為文本插入進去

    $('.c1').html('<h1>你好</h1>');  // 將你好插入文本中
    $('.c1').text('<h1>你好</h1>');   // 無法識別標簽,所以將標簽作為文本插入進去

     

值操作

獲取值
input type='text'的標簽--$('#username').val();
    input type='radio'標簽獲取被選中的標簽的值 --- $(':radio:checked').val();
    input type='checkbox'標簽獲取被選中的標簽的值 --- 直接$(':checkbox:checked').val();是不行的,只會拿到一個值,需要迴圈取值  
        var d = $(':checkbox:checked');
        for (var i=0;i<d.length;i++){
            console.log(d.eq(i).val());
        }
        
    單選select --- $('#city').val();  拿到value設置的值
    多選select --- $('#author').val(); // ["2", "3"]  

 



設置值
input type='text'的標簽 --- $('#username').val('李傑');
    input type='radio'標簽 ---  $('[name="sex"]').val(['3']);
            如果 $('[name="sex"]').val('3'),所有標簽的值都變成了'3';
    input type='checkbox'設置值 --- $('[name="hobby"]').val(['2','3'])
    單選select --- $('#city').val('1');  option value='1'
    多選select --- $('#author').val(['2','3'])

 

屬性操作

attr(attrName)// 返回第一個匹配元素的屬性值
attr(attrName, attrValue)// 為所有匹配元素設置一個屬性值
attr({k1: v1, k2:v2})// 為所有匹配元素設置多個屬性值
removeAttr(attrName)// 從每一個匹配的元素中刪除一個屬性

 



示例:
    設置單個屬性
        $('.c1').attr('xx','oo');
    設置多個屬性
        $('.c1').attr({'age':'18','sex':'alex'});
    查看屬性
        $('.c1').attr('屬性名');
        $('.c1').attr('xx');
    刪除屬性
        $('.c1').removeAttr('xx');
​
prop -- 針對的是checked\selected\disabled..
​
查看標簽是否有checked屬性,也就是是否被選中
        attr $(':checked').attr('checked'); //checked --沒被選中: undefined
        prop $(':checked').prop('checked'); //true  -- 沒被選中 : false
        
        通過設置屬性的方式來設置是否選中:
            $(':radio').eq(2).prop('checked',true);  true和false不能加引號
            $(':radio').eq(2).prop('checked',false);
​
簡單總結:
    1.對於標簽上有的能看到的屬性和自定義屬性都用attr
    2.對於返回布爾值的比如checkbox、radio和option的是否被選中或者設置其被選中與取消選中都用prop。
    具有 truefalse 兩個屬性的屬性,如 checked, selected 或者 disabled 使用prop(),其他的使用 attr()

 

 

文檔處理

添加到指定元素內部的後面
    $(A).append(B)     // 把B追加到A
    $(B).appendTo(A)   // 把B追加到A
    // 添加字元串照樣能識別標簽  *****
    $('#d1').append('<a href="http://www.jd.com">京東</a>');
​
添加到指定元素內部的前面
    $(A).prepend(B)    // 把B前置到A
    $(B).prependTo(A)  // 把B前置到A
    示例
        $('a').prependTo($('div'));
​
添加到指定元素外部的後面
    $(A).after(B)        // 把B放到A的後面
    $(B).insertAfter(A)  // 把B放到A的後面
​
添加到指定元素外部的前面
    $(A).before(B)         // 把B放到A的前面
    $(B).insertBefore(A)   // 把B放到A的前面
    
移除和清空元素
    remove()    // 從DOM中刪除所有匹配的元素,包括自己也刪除
    empty()     // 刪除匹配的元素集合中所有的子節點,包括文本被全部刪除,但是匹配的元素還在
    $('div').remove();   // 清空包括div自己的數據
    $('div').empty();    // 清空div標簽裡面的數據
​
替換
    replaceWith()
    replaceAll()
    示例:
        var a = document.createElement('a')
        a.href = 'http://www.baidu.com';
        a.innerText = 'xxx';
        
        $('span').replaceWith(a);  // 用a標簽替換span標簽
        $(a).replaceAll('span');   // 用a標簽替換span標簽
        
clone()克隆
    <button class="btn">屠龍寶刀,點擊就送!</button> 
​
    $('.btn').click(function () {
        // var a = $(this).clone();   // 克隆標簽
        var a = $(this).clone(true);  // 括弧內加一個true,連帶事件一起克隆
        $(this).after(a);
​
    })

 

事件

事件綁定方式

<script>
    // 方式一
    $('.c1').click(function () {
        $(this).css({'background-color':'purple'})
    })
​
    // 方式二
    $('.c1').on('click',function () {
        $(this).css({'background-color':'purple'})
    })
</script>

 

常用事件

click  左鍵點擊事件
    //獲取游標觸發的事件
    $('[type="text"]').focus(function () {
        $('.c1').css({'background-color':'black'});
    });
    //失去游標(焦點)觸發的事件
    $('[type="text"]').blur(function () {
        $('.c1').css({'background-color':'purple'});
    });
​
    //域內容發生改變時觸發的事件
    $('select').change(function () {
        $('.c1').toggleClass('cc');
    });
​
    //滑鼠懸浮觸發的事件
    // $('.c1').hover(
    //     //第一步:滑鼠放上去
    //     function () {
    //         $(this).css({'background-color':'blue'});
    //     },
    //     //第二步,滑鼠移走
    //     function () {
    //         $(this).css({'background-color':'yellow'});
    //     }
    // )
// 滑鼠懸浮  等同於hover事件
    // 滑鼠進入
    // $('.c1').mouseenter(function () {
    //     $(this).css({'background-color':'blue'});
    // });
    // 滑鼠移出
    //  $('.c1').mouseout(function () {
    //     $(this).css({'background-color':'yellow'});
    // });
    
    // $('.c2').mouseenter(function () {
    //     console.log('啦啦啦啦');
    // });
    // 滑鼠懸浮事件
    // $('.c2').mouseover(function () {
    //     console.log('啦啦啦啦');
    // });
    // mouseover 和 mouseenter的區別是:mouseover事件是如果該標簽有子標簽,那麼移動到該標簽或者移動到子標簽時會連續觸發,mmouseenter事件不管有沒有子標簽都只觸發一次,表示滑鼠進入這個對象
​
​
//鍵盤按下觸發的事件  e\event事件對象
    $(window).keydown(function (e) {
        // console.log(e.keyCode); //每個鍵都有一個keyCode值,通過不同的值來觸發不同的事件
        if (e.keyCode === 37){
            $('.c1').css({'background-color':'red'});
        }else if(e.keyCode === 39){
            $('.c1').css({'background-color':'green'});
        }
        else {
            $('.c1').css({'background-color':'black'});
        }
    })
    // 鍵盤抬起觸發的事件
    $(window).keyup(function (e) {
        console.log(e.keyCode);
    })
​
    
    input事件:
        22期百度:<input type="text" id="search">
        <script src="jquery.js"></script>
        <script>
            $('#search').on('input',function () {
                console.log($(this).val());
            })
​
        </script>
View Code

 

事件冒泡

  • 冒泡的意思就是因為html可以嵌套,如果你給兒子標簽綁定了點事件或者沒有綁定點擊事件,父級標簽綁定了點擊事件,那麼你一點擊子標簽,不管子標簽有沒有綁定事件,都會觸發父級標簽的點擊事件,如果有,會先觸發子標簽的點擊事件,然後觸發父級標簽的點擊事件,不管子標簽有沒有點擊事件,都會一級一級的還往上找點擊事件

<style>
    #d1{
        background-color: red;
        height: 200px;
    }
    #d2{
        background-color: green;
        height: 100px;
        width: 100px;
    }
</style>
<div id="d1">
    <div id="d2"></div>
</div>
<script src="jquery.js"></script>
<script>
    $('#d1').click(function () {
        alert('父級標簽');
    });
    $('#d2').click(function () {
        alert('子級標簽');
    });
</script>

 

阻止後續事件發生

    $('#d1').click(function () {
        alert('父級標簽');
    });
    $('#d2').click(function (e) {
        alert('子級標簽');
        return false;
        // e.stopPropagation();
    });

 

事件委托

  • 事件委托是通過事件冒泡的原理.利用父級標簽捕獲子標簽的事件,將未來添加進來的某些子標簽自動綁定上事件

    <div id="d1">
        <button class="c1">xin</button>
    </div>
    <script src="jqu.js"></script>
    <script>
        // 將button按鈕選擇器選中的標簽的點擊事件委托給了$('#d1')
        $('#d1').on('click','.c1',function () {
            alert('未成年禁入');
            var btn = document.createElement('button');
            $(btn).text('xin');
            $(btn).addClass('c1');
            console.log(btn);
            console.log($(this));  // this還是點擊的那個button按鈕
            $('#d1').append(btn)   // 添加到div標簽裡面的後面
        })
    </script>

     

 

 

 


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

-Advertisement-
Play Games
更多相關文章
  • 近期發現C盤空閑空間剩餘不多了,經過檢查發現在C:\Users\<電腦用戶名>\的目錄下,有這兩個文件夾空間比較大,這兩文件夾分別是 .AndroidStudioPreview3.2(不同版本的android studio名稱會不一樣) 和 .gradle,AndroidStudioPreview3 ...
  • 版權聲明:本文為xing_star原創文章,轉載請註明出處! 本文同步自http://javaexception.com/archives/169 使用Jitpack發佈自己的Android Library 寫本篇文章是為了總結成一個教程,自己使用Jitpack已經很久了,用它處理過好多開源項目。感 ...
  • 本文微信公眾號「AndroidTraveler」首發。 背景 最近部門有新入職員工,作為規劃技術路線的導師,這邊給新員工安排了學習路線。 除了基本的學習路線之外,每次溝通,我都留了一個小問題,讓小伙伴去思考。 這些問題有些是剛接觸 Android 開發的小伙伴所不熟悉的,有些則是部分初級工程師都沒有 ...
  • <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title></head><body> <!--註釋內容--> <h1>你好</h1> <p>&nbsp;&nbsp;&nbsp;&nbsp;這是一行 ...
  • <!doctype html> <html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, ...
  • <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title></head><body> <!--註釋內容--></body></html> 標簽的意義: 1、<!DOCTYPE html> 指明這是 ...
  • 問題一:node_gyp使用版本不對 問題:明明裝的是5.0.2版本,使用的卻是3.9.2版本。 原因:命令上已經寫明,在npm_config_node_gyp未配置情況,node_gyp使用的版本。 解決:刪掉前者路徑的node-gyp。 問題二:無法找到 v140 的生成工具 問題:依賴的c++ ...
  • a.純後端渲染:頁面發送請求,後端伺服器中將數據拼成完整DOM樹,並轉換成一個位元組流作為HTTP Response的body返回給瀏覽器。優點在於 返回的HTTP Response是包含著全部頁面內容,可以讓用戶更加快捷的看到頁面的主體部分。也方便了網站的seo(搜索引擎優 化)。 b.純前端渲染 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...