鋒利的jQuery第2版學習筆記1~3章

来源:http://www.cnblogs.com/TwinklingZ/archive/2016/03/31/5342775.html
-Advertisement-
Play Games

第1章,認識jQuery 目前流行的JavaScript庫 Prototype(http://www.prototypejs.org),成型早,面向對象的思想把握不到位,導致結構鬆散 Dojo(http://dojotoolkit.org),學習曲線陡,文檔不全,最嚴重的是API不穩定 YUI(ht ...


第1章,認識jQuery

註意:使用的jQuery版本為1.7.1

目前流行的JavaScript庫

Prototype(http://www.prototypejs.org),成型早,面向對象的思想把握不到位,導致結構鬆散 Dojo(http://dojotoolkit.org),學習曲線陡,文檔不全,最嚴重的是API不穩定 YUI(http://developer.yahoo.com/yui/) Ext JS(http://www.extjs.com),側重界面,比較臃腫,用於商業用途需要付費 MooTools(http://mootools.net/) jQuery(http://jquery.com

jQuery優勢

1、輕量級 2、強大的選擇器 3、出色的DOM操作 4、可靠的事件處理機制 5、完善的Ajax 6、不污染頂級變數 7、出色的瀏覽器相容性,支持IE6.0+、Firefox3.6+、Safari5.0+、Opera、Chrome 8、鏈式操作方式 9、隱式迭代 10、行為層與結構層的分離 11、豐富的插件支持 12、完善的文檔 13、開源

jQuery代碼的編寫

在jQuery庫中,$就是就jQuery的一個簡寫形式,$("#foo")和jQuery("#foo")是等價的 規範: 1、對於同一個對象不超過3個操作的,可以直接寫在一行 2、對於同一個對象的較多操作,建議每行寫一個操作 3、對於多個對象的少量操作,可以每個對象寫一行,涉及子元素的,可以考慮縮進 建議:jQuery對象使用$開頭,例:var $variable = jQuery對象,var variable= DOM對象

jQuery對象和DOM對象的相互轉換

1、jQuery對象轉成DOM對象 jQuery對象不能使用DOM中的方法,jQuery提供了兩種方法將jQuery對象轉成DOM對象,即使用[index]和get(index) (1)jQuery對象是一個類似數組的對象,可以通過[index]得到相應DOM對象
var $cr = $("#cr");     //jQuery對象
var cr = $cr[0];          //DOM對象
(2)通過get(index)得到
var $cr = $("#cr");     //jQuery對象
var cr = $cr.get(0);     //DOM對象
2、DOM對象轉成jQuery對象 只需要使用$()將DOM對象包裝起來即可得到jQuery對象
var cr = document.getElementById("cr");          //DOM對象
var $cr = $(cr);                                 //jQuery對象
註:DOM對象只能使用DOM方法,jQuery對象只能使用jQuery的方法 註:平時用到的jQuery對象都是通過$()函數製造出來的,$()就是一個jQuery對象製造工廠,也可以使用jQuery()函數,因為$和加jQuery等價

解決jQuery和其它庫的衝突

註:預設情況下,jQuery用$作為自身的快捷方式 1、jQuery庫在其他庫之後導入 (1)在其他庫和jQuery庫載入完畢之後,可以在任何時候調用jQuery.noConflict()函數將變數$的控制權移交其他的JavaScript庫 例:
<!-- 引入prototype庫 -->
<script type="text/javascript" src="lib/prototype.js"></script>
<!-- 引入jQuery庫 -->
<script type="text/javascript" src="lib/jQuery.js"></script>
<script type="text/javascript">
    jQuery.noConflict();    //將變數$的控制權移交給prototype.js
    jQuery(function(){      //使用jQuery
        jQuery("p").click(function(){
            alert(jQuery(this).text());
        });
    });
    $('pp').style.display = 'none'; //使用prototype.js隱藏元素
</script>

(2)想確保jQuery不與其他庫衝突,又想自定義快捷方式:

<script type="text/javascript">
    var $j = jQuery.noConflict();   //自定義快捷方式
    $j(function(){                  //使用jQuery,利用自定義快捷方式  $j
        $j("p").click(function(){
            alert.($j(this).text());
        });
    });
    $('pp').style.display = 'none'; //使用prototype.js隱藏元素
</script>
(3)若不想自定義備用名稱,又想使用$,還希望不衝突 <1>
<script type="text/javascript">
    jQuery.noConflict();                 //將變數$的控制權移交給prototype.js
    jQuery(function($){                  //使用jQuery設定頁面載入時執行的函數
        $("p").click(function(){         //函數內部繼續使用$()
            alert.($(this).text());
        });
    });
    $('pp').style.display = 'none';      //使用prototype.js隱藏元素
</script>

<2>

<script type="text/javascript">
    jQuery.noConflict();                 //將變數$的控制權移交給prototype.js
    (function($){                        //定義匿名函數
        $(function(){                    //匿名函數內部的$均為jQuery
            $("p").click(function(){
                alert.($(this).text());
            });
        });
    })(jQuery);                          //執行匿名函數且傳遞實參jQuery
    $('pp').style.display = 'none';      //使用prototype.js隱藏元素
</script>
2、jQuery在其他庫之前導入 直接使用jQuery而非$來做jQuery的工作,$()方法作為其他庫的快捷方式,無需調用jQuery.noConflict()方法

第2章,jQuery選擇器

jQuery選擇器的優勢

1、簡潔的寫法 使用$("#ID")代替document.getElementById(),使用$("tagName")代替document.getElementsByTagName()函數 2、支持CSS1到CSS3選擇器 3、完善的處理機制,即,使用jQuery獲取不存在的元素也不會報錯 註:$("#tt")獲取的永遠是對象,即使網頁上沒有元素,因此當要使用jQuery檢查某個元素在網頁上是否存在,不能使用如下代碼:
if($("#tt")){   /* do something */   }

應根據獲取的元素長度來判斷:

if($("#tt").length > 0){   /* do something */   }

或轉換成DOM對象:

if($("#tt")[0]){   /* do something */   }
基本選擇器
選擇器 描述 返回 示例
#id 根據給定id匹配一個元素 單個元素 $("#test")選取id為test的元素
.class 根據給定類名匹配元素 集合元素 $(".test")選取所有class為test的元素
element 根據給定元素名匹配元素 集合元素 $("p")
* 匹配所有元素 集合元素 $("*")
selector1,selector2... 將每個選擇器匹配到的元素合併後一起返回 集合元素 $("div,span,p.myClass")
  層次選擇器
選擇器 描述 返回 示例
$("ancestor descendant") 選取ancestor元素里所有descendant(後代)元素 集合元素 $("div span")選取div里所有span元素
$("parent>child") 與CSS的子選擇器一樣 集合元素 $("div>span")
$("prev+next") 與CSS的相鄰同胞選擇器一樣 集合元素 $(".one+div")
$("prev~sibling") 與CSS的通用的同胞組合選擇器一樣 集合元素 $("#two~div")
可以使用next()方法代替$('prev+next') $(".one+div");  ==> $(".one").next("div"); 使用nextAll()代替$('#prev~sibling") $("#prev~div"); ==> $("#prev").nextAll("div"); 基本過濾選擇器
選擇器 描述 返回 示例
:first 選取第一個元素 單個元素 $("div:first")選取所有<div>元素中第1個<div>元素
:last 選取最後一個元素 單個元素 $("div:last")解釋類似:first
:not(selector) 去除所有與給定選擇器匹配的元素 集合元素 $("input:not(.myClass)")
:even 選取索引是偶數的元素,索引從0開始 集合元素 $("input:even")
:odd 選取索引是奇數的元素,索引從0開始 集合元素 $("input:odd")
:eq(index) 選取索引是index的元素,index從0開始 單個元素 $("input:eq(1)")
:gt(index) 選取索引大於index的元素,index從0開始 集合元素 $("input:gt(1)")
:lt(index) 選取索引小於index的元素,index從0開始 集合元素 $("input:lt(1)")
:header 選取所有標題元素,例h1,h2 集合元素 $(":header")
:animated 選取正在執行動畫的元素 集合元素 $("div:animated")
:focus 選取獲得焦點的元素 集合元素 $(":focus")
  內容過濾選擇器
選擇器 描述 返回 示例
:contains(text) 選取含有文本內容為“text”的元素 集合元素 $("div:contains('me')")選取所有含有文本"me"的div元素
:empty 選取不包含子元素或文本的空元素 集合元素 $("div:empty")
:has(selector) 選取含有選擇器所匹配的元素的元素 集合元素 $("div:has(p)")選取含有p元素的div元素
:parent 選取含有子元素或文本元素的元素 集合元素 $("div:parent")
  可見性過濾選擇器
選擇器 描述 返回 示例
:hidden 選取所有不可見元素 集合元素 $(":hidden")選取所有不可見元素
:visible 選取所有可見元素 集合元素 $("div:visible")選取可見的div元素
  屬性過濾選擇器
選擇器 描述 返回 示例
[attribute] 選擇擁有此屬性的元素 集合元素 $("div[id]")選取擁有id屬性的div元素
[attribute=value] 選擇擁有屬性值為value的元素 集合元素 $("div[title=test]")
[attribute!=value] 選擇屬性值不等於value的元素 集合元素 $("div[title!=test]"),沒有屬性title的元素也會被選取
[attribute^=value] 選擇屬性值以value開始的元素 集合元素 $("div[title^=test]")
[attribute$=value] 選擇屬性值以value結束的元素 集合元素 $("div[title$=test]")
[attribute*=value] 選擇屬性值含有value的元素 集合元素 $("div[title*=test]")
[attribute|=value] 選擇屬性等於給定字元串或以該字元串為首碼(該字元串後
跟一個連字元‘-’)的元素
集合元素 $("div[title|="en"]")選取title屬性等於en
或以en為首碼的元素
[attribute~=value] 選取屬性用空格分隔的值中包含一個給定值的元素 集合元素 $("div[title~="uk"]")
[attribute1]
[attribute2]
...
用屬性選擇器合併成複合選擇器,滿足多個條件,縮小範圍 集合元素 $("div[id][title$="test"]")選取擁有屬性
id並且屬性title以"test"結束的div元素
  子元素過濾選擇器
選擇器 描述 返回 示例
:nth-child(index/even
/odd/equatioin)
選取每個父元素下第index個子元素或奇偶元素,
index從1開始
集合元素 將為每一個父元素匹配子元素
:first-child 選取每個父元素的第一個子元素 集合元素 將為每一個父元素匹配子元素
:last-child 選取每個父元素的最後一個子元素 集合元素 將為每一個父元素匹配子元素
:only-child 若某個元素是其父元素唯一的子元素,則被匹配 集合元素 $("ul li:only-child")在<ul>中選取是唯一
子元素的<li>元素
:nth-child()選擇器功能如下: 1、:nth-child(even)選擇索引是偶數的元素 2、:nth-child(2)選擇索引是2的元素 3、:nth-child(3n+1)選擇索引是(3n+1)的元素,n從1開始 表單對象屬性過濾選擇器
選擇器 描述 返回 示例
:enabled 選取所有可用元素 集合元素 $("#form1 :enabled")
:disabled 選取所有不可用元素 集合元素 $("#form1 :disabled")
:checked 選取所有被選中元素,單選,覆選 集合元素 $("input:checked")
:selected 選取所有被選中選項元素,下來列表 集合元素 $("select option:selected")




:input 選取所有<input><textarea><select><button> 集合元素 $(":input")
:text 選取所有單行文本框 集合元素 $(":text")
:password 選取所有密碼框 集合元素 $(":password")
:radio 選取所有單選框 集合元素 $(":radio")
:checkbox 選取所有覆選框 集合元素 $(":checkbox")
:submit 選取所有提交按鈕 集合元素 $(":submit")
:image 選取所有圖像按鈕 集合元素 $(":image")
:reset 選取重置按鈕 集合元素 $(":reset")
:button 選取所有按鈕 集合元素 $(":button")
:file 選取所有上傳域 集合元素 $(":file")
:hidden 選取所有不可見元素 集合元素 $(":hidden")

選擇器中的註意事項

1、選擇器中含有".","#","(","]"等特殊符號,需要轉義,例:$("#id\\#b") 2、屬性選擇器中的@符號需要去掉

第3章,jQuery中的DOM操作

DOM操作分類

1、DOM Core(核心) 2、HTML-DOM 3、CSS-DOM

jQuery中的DOM操作

1、查找節點 (1)查找元素節點,使用選擇器 (2)查找屬性節點,再找到元素之後,可以使用attr()方法獲取元素屬性 2、創建節點 (1)創建元素節點 使用工廠函數$()來完成,$(html),根據傳入的HTML標記字元串,創建一個DOM對象,並轉成jQuery對象返回 例:$("<li></li>") (2)創建文本節點,與(1)類似,將文本內容一起包含在HTML標記字元串中 (3)創建屬性節點,與(1)類似,將節點屬性一起包含在HTML標記字元串中 3、插入節點
方法 描述 示例
append() 向每個匹配的元素內部追加內容 <p>我想說:</p>
$("p").append("<b>你好</b>");
<p>我想說:<b>你好</b></p>
appendTo() 將所有匹配元素追加到指定元素中,與append方法顛倒 <p>我想說:</p>
$("<b>你好</b>").appendTo("p");
<p>我想說:<b>你好</b></p>
prepend() 向每個元素內部前置內容 <p>我想說:</p>
$("p").prepend("<b>你好</b>");
<p><b>你好</b>我想說:</p>
prependTo() 將所有匹配元素前置到指定元素中,與prependTo方法顛倒 <p>我想說:</p>
$("p").prependTo("<b>你好</b>");
<p><b>你好</b>我想說:</p>
after() 在每個匹配元素之後插入內容 <p>我想說:</p>
$("p").after("<b>你好</b>");
<p>我想說:</p><b>你好</b>
insertAfter() 將所有匹配元素插入到指定元素之後 <p>我想說:</p>
$("<b>你好</b>  ").insertAfter("p");
<p>我想說:</p><b>你好</b>
before() 在每個匹配的元素之前插入內容 <p>我想說:</p>
$("p").before("<b>你好</b>");
<b>你好</b> <p>我想說:</p>
insertBefore() 將所有匹配元素插入到指定元素之前 <p>我想說:</p>
$("<b>你好</b>  ").insertBefore("p");
<b>你好</b> <p>我想說:</p>
這些方法不只能將新建節點插入到文檔中,也能移動原有節點 4、刪除節點 (1)remove方法 刪除節點,及所有後代節點,並清除綁定的事件、附加的數據,返回被刪除節點的引用,在之後可以繼續使用
$("ul li:eq(1)").remove();
也可以通過傳遞參數來選擇性刪除:
$("ul li").remove("li[title!=test]");
(2)datach方法 與remove一樣,但不會清除綁定的事件、附加的數據 (3)empty方法 並不能算是刪除節點,而是清空節點,清空指定元素的所有後代節點 5、複製節點 使用clone方法,使用參數true可以同時複製元素所綁定事件 6、替換節點 replaceWith()和replaceAll()
$("p").replaceWith("<strong>hello</strong>");
$("<strong>hello</strong>").replaceAll("p");
以上兩句是一樣的效果 註:元素綁定事件一樣會被清掉 7、包裹節點 使用wrap()方法
<strong>hello</strong>
$("strong").wrap("<b></b>");     //用b標簽把strong元素包裹起來
<b><strong>hello</strong></b>
wrapAll()和wrapInner() (1)wrapAll 將所有匹配元素用一個元素來包裹,與wrap不同,wrap是將所有匹配元素單獨包裹:
<strong>hello</strong>
<strong>hello</strong>
$("strong").wrap("<b></b>");
<b><strong>hello</strong></b>
<b><strong>hello</strong></b>
而使用wrapAll之後:
<b>
<strong>hello</strong>
<strong>hello</strong>
</b>
註:若被包裹元素之間有其他元素,則其他元素會被放到包裹元素之後 (2)wrapInner方法 該方法將每一個匹配的元素的子內容用其他結構化標記包裹起來:
<strong>hello</strong>
$("strong").wrapInner("<b></b>");
<strong><b>hello</b></strong>
8、屬性操作 (1)獲取和設置屬性 使用attr()方法 獲取屬性
var $p = $("p");
var p_txt = $p.attr("title");
設置屬性
$("p").attr("title","value");     //用於設置單個屬性
$("p").attr({"title":"you title","name":"you name"});     //用於設置多個屬性,使用對象傳遞
(2)刪除屬性 使用removeAttr()方法
$("p").removeAttr("title");
9、樣式操作 (1)獲取和設置樣式 使用attr()方法 (2)追加樣式 使用addClass()方法
$("p").addClass("another");
(3)移除樣式 使用removeClass 參數為要移除的class名,不帶參數則把所有class移除 (4)切換樣式 toggle()方法
$toggleBtn.toggle(function(){
     //代碼1
},function(){
     //代碼2
});
toggle的作用是,交替執行代碼1和代碼2,主要是用於控制行為上的重覆切換 toggleClass()方法 用於控制樣式上的切換,類名存在則刪除,不存在則添加
$("p").toggleClass("another");
(5)判斷是否含有某個樣式 hasClass()方法用於判斷是否含有某個class,有返回true,沒有返回false 10、設置和獲取HTML、文本和值 (1)html()方法,可用於XHTML,不可用於XML 類似於JavaScript的innerHTML屬性,可以用於獲取和設置元素(傳遞參數)的HTML內容 (2)text()方法 類似於JavaScript的innerText屬性,用於獲取和設置元素(傳遞參數)的文本內容 (3)val()方法 類似於JavaScript的value屬性,用於設置和獲取元素的值,無論元素是文本框,下來列表還是單選框,都可以返回元素值,若為多選,返回一個包含所有選擇的值的數組 11、遍歷節點 (1)children()方法 取得匹配元素的子元素集合,只考慮子元素,不考慮後代元素,$("p").children(); (2)next()方法 用於取得匹配元素後面緊鄰的同輩元素,$("p").next(); (3)prev()方法 用於取得匹配元素前面緊鄰的同輩元素,$("p").prev(); (4)siblings()方法 用於取得匹配元素前後所有同輩元素,$("p").siblings(); (5)closest()方法 該方法用於取得最近的匹配元素。首先檢查元素本身,接著逐級向上往祖先元素查找,沒找到則返回空jQuery對象 (6)parent(),parents(),closest()區別 parent(),獲取集合中每個匹配元素的父元素 parents(),獲取集合中每個匹配元素的祖先元素 closese(),從元素本身開始,逐級向上級元素匹配,並返回最先匹配的祖先元素 12、CSS-DOM操作 可以直接利用css()方法獲取元素的樣式屬性:$("p").css("color"); 無論是外部CSS導入,還是直接拼接在HTML元素中,都可以通過css()方法獲得 設置樣式與attr()方法類似
$("p").css("color","red");     //設置單個
$("p").css({"color":"red","fontSize":"30px");     //設置多個
註:如果值是數字,則自動轉化為像素值 獲取元素高度,可以直接使用height屬性
$("p").height();
註:1、jQuery1.2之後height可用於獲取window和document的高度         2、css方法獲取的高度值與樣式設置有關,而height獲取的是元素在頁面實際高度,與樣式設置無關,且不帶單位 與height對應的還有width()方法 其他幾個經常使用的方法: (1)offset()方法 用於獲取元素在當前視窗的相對偏移,返回對象包含兩個屬性,top,left,只對可見元素有效 (2)position()方法 用於獲取元素相對於最近一個position樣式屬性設置為relative或absolute的祖先節點的相對偏移,返回對象也包含連個屬性top,left (3)scrollTop()方法和scrollLeft()方法 分別用於獲取元素的滾動條距頂端和距左側的距離,還可以接受一個參數,指定滾動條滾動到指定位置
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • JavaScript中有三個可以對字元串編碼的函數,分別是: escape,encodeURI,encodeURIComponent,相應3個解碼函數:unescape,decodeURI,decodeURIComponent 。 下麵簡單介紹一下它們的區別 1 escape()函數 定義和用法es ...
  • 前面的話:JavaScript可運行在所有主要平臺的主流瀏覽器上,也可運行在每一個主流操作系統的伺服器端上。所以呢,要想成為一名優秀的全棧工程師,必須懂得JavaScript語言。這是我整理的JS的部分函數問題,供大家參考借閱,有不妥的地方也請多多指教。 1、函數的三要素 1.1 函數的功能 1.2 ...
  • 該篇隨我讀書的進度持續更新閱讀書目:《JavaScript設計模式》 2016/3/30: 模式是一種可復用的解決方案,可用於解決軟體設計中遇到的常見問題./將解決問題的方法製作成模板,並且這些模板可應用於多種不同的情況.有效模式的附加要求:適合性,實用性,適用性. 模式的優點: 防止局部問題引起大 ...
  • 基本數據類型 number string boolean underfined null; 引用數據類型 Object Array RegExp; typeof 檢測數據類型 但是不能檢測(對象、數組、正則) instanceof/constructor檢測某一個實例是否屬於一個類; 我們的cons ...
  • 前一篇:JS模塊化工具requirejs教程(一):初識requirejs我們以非常簡單的方式引入了requirejs,這一篇將講述一下requirejs中的一些基本知識,包括API使用方式等 基本API require會定義三個變數:define,require,requirejs,其中requi ...
  • 隨著網站功能逐漸豐富,網頁中的js也變得越來越複雜和臃腫,原有通過script標簽來導入一個個的js文件這種方式已經不能滿足現在互聯網開發模式,我們需要團隊協作、模塊復用、單元測試等等一系列複雜的需求。 RequireJS是一個非常小巧的JavaScript模塊載入框架,是AMD規範最好的實現者之一 ...
  • 第六章 1、 JavaScript的Ajax的實現步驟: 1) 定義一個函數用來非同步獲取信息 2) 聲明: 3) 賦值(實現瀏覽器相容): 4) 初始化 5) 設置回調函數。因為要做非同步調用,所以需要註冊一個XMLHttpRequest對象將調用的回調事件處理器當它的readyState值改變時調用 ...
  • 效果體驗:http://hovertree.com/texiao/jquery/37/代碼如下: web前端彙總:http://www.cnblogs.com/jihua/p/webfront.html ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...