使用jQuery快速高效製作網頁交互特效——09 第九章 表單驗證

来源:https://www.cnblogs.com/HQING/archive/2018/08/10/9456066.html
-Advertisement-
Play Games

1、 表單驗證:減輕伺服器的壓力、保證輸入的數據符合要求; 2、 常用的表單驗證:日期格式、表單元素是否為空、用戶名和密碼、E-mail地址、身份證號碼等; 3、 表單驗證的思路: 1. 獲得表單元素值,這些值一般是String類型,包含數字、下劃線等; 2. 使用JavaScript的一些方法對獲 ...


1、  表單驗證:減輕伺服器的壓力、保證輸入的數據符合要求;

2、  常用的表單驗證:日期格式、表單元素是否為空、用戶名和密碼、E-mail地址、身份證號碼等;

3、  表單驗證的思路:

1.     獲得表單元素值,這些值一般是String類型,包含數字、下劃線等;

2.     使用JavaScript的一些方法對獲取的String類型的數據進行判斷;

3.     當表單提交時,觸發onsubmit事件,對獲取的數據進行驗證;

●表單選擇器用於選取某些特定的表單元素,比如所有單選按鈕或隱藏的元素;

4、表單選擇器:

語法

描述

示例

:input

匹配所有input、textarea、select和button 元素

$("#myform  :input")選取表單中所有的input、select和button元素

:text

匹配所有單行文本框

$("#myform  :text")選取email 和姓名兩個input 元素

:password

匹配所有密碼框

$("#myform  :password" )選取所有<input type="password" />元素

:radio

匹配所有單項按鈕

$("#myform  :radio")選取<input type="radio" />元素

:checkbox

匹配所有覆選框

$(" #myform  :checkbox " )選取<input type="checkbox " />元素

:submit

匹配所有提交按鈕

$("#myform  :submit " )選取<input type="submit " />元素

:image

匹配所有圖像域

$("#myform  :image" )選取<input type=" image" />元素

:reset

匹配所有重置按鈕

$(" #myform  :reset " )選取<input type=" reset " />元素

:button

匹配所有按鈕

$("#myform  :button" )選取button 元素

:file

匹配所有文件域

$(" #myform  :file" )選取<input type=" file " />元素

:hidden

匹配所有不可見元素,或者type 為hidden的元素

$("#myform  :hidden" )選取<input type="hidden " />、style="display: none"等元素

5、表單屬性過濾選擇器:

語法

描述

示例

:enabled

匹配所有可用元素

$(" #userform :enabled" )匹配form內部除編號輸入框外的所有元素

:disabled

匹配所有不可用元素

$(" #userform :disabled" )匹配被禁用的輸入框

:checked

匹配所有被選中元素(覆選框、單項按鈕、select 中的option)

$(" #userform :checked" )匹配選中的選項

:selected

匹配所有選中的option 元素

$(" #userform :selected" ) 匹配指定元素的選項

6、驗證表單內容:

使用String 對象驗證郵箱:不能為空,格式正確

文本框內容的驗證: 密碼不能為空,不少於6個字元,姓名不能為空,不能有數字

               

●使用String 對象驗證郵箱:

   實現思路

  1、 使用val( )方法獲取文本框的值

  2、 使用indexOf( ) 來判斷字元串是否包含“@”和“.”

  3、使用方法submit( )提交表單

  4、根據返回值是true還是false來決定是否提交表單

eg

  $(document).ready(function(){

      $("form").submit(function(){

            var mail = $("#myform :text").val();

            if (mail=="") {//檢測Email是否為空

                  alert("Email不能為空");

                  return false;

            }

            if (mail.indexOf("@") == -1) {

                  alert("Email格式不正確\n必須包含@");

                  return false;

            }

            if (mail.indexOf(".") == -1) {

                  alert("Email格式不正確\n必須包含.");

                  return false;

            }

            return true;

      })

})

●非空驗證:

 if (mail == "") {           //檢測Email是否為空

     alert("Email不能為空");

     return false;

}

字元串查找:indexOf():查找某個指定的字元串值在字元串中首次出現的位置

  var str="this is JavaScript";

  var selectFirst=str.indexOf("Java");  //返回8

  var selectSecond=str.indexOf("Java",12);   //返回11

●文本框內容的驗證:

  1、實現思路

  2、使用String對象的length屬性驗證密碼的長度

  3、驗證兩次輸入密碼是否一致

  4、使用length屬性獲取文本長度,然後使用for迴圈和substring( )方法依次截斷單個字元,最後判斷每個字元是否是數字

●長度驗證:

  if(pwd.length<6){     //length屬性可以獲取字元串長度

        alert("密碼必須等於或大於6個字元");

   return false;

  }

●判斷字元串是否有數字:使用for迴圈和substring()方法依次截斷單個字元,再判斷每個字元是否是數字

for (var i = 0; i < user.length; i++) {     //截取單個字元

    var j = user.substring(i, i + 1);

    if (isNaN(j) == false) {

        alert("姓名中不能包含數字");

        return false;

    }

}

eg:註冊頁面的驗證

驗證密碼:

var pwd = $("#pwd").val();

  if (pwd == "") {

       alert("密碼不能為空");

          return false;

    }

     if (pwd.length < 6) {

        alert("密碼必須等於或大於6個字元");

          return false;

     }

     var repwd = $("#repwd").val();

       if (pwd != repwd) {

            alert("兩次輸入的密碼不一致");

             return false;

         }

驗證賬號:

var user = $("#user").val();

      if (user == "") {

         alert("姓名不能為空");

         return false;

}

     for (var i = 0; i < user.length; i++) {

            var j = user.substring(i, i + 1);

              if (isNaN(j) == false) {

                  alert("姓名中不能包含數字");

                    return false;

                  }

              }

7、表單驗證事件和方法:

  • ●表單驗證需要綜合運用元素的事件和方法

類別

名稱

描述

事件

  • onblur

失去焦點,當游標離開某個文本框時觸發

  • onfocus

獲得焦點,當游標進入某個文本框時觸發

方法

blur()

從文本域中移開焦點

focus()

在文本域中設置焦點,即獲得滑鼠游標

select()

選取文本域中的內容,突出顯示輸入區域的內容

 

8、 正則表達式:是一個描述字元模式的對象,它是由一些特殊的符號組成的,和SQL Server中的通配符一樣,其組成的字元模式用來匹配各種表達式;

為什麼需要正則表達式:簡潔的代碼、嚴謹的驗證文本框中的內容

   ●一個簡單的表達式即可驗證郵箱

   var reg= /^\w+@\w+(\.[a-zA-Z]{2,3}){1,2}$/;

  if(reg.test(email) ==false){ 

      $email_prompt.html("電子郵件格式不正確,請重新輸入");

      return false;

  }

●定義正則表達式:

  ★普通方式語法:

    var reg=/表達式/附加參數

     ◆表達式:一個字元串代表了某種規則,其中可以使用某些特殊字母來代表特殊的規則;

     ◆附加參數:用來擴展表達式的含義,主要三個參數如下:

         ☆g:代表可以進行全局匹配;

         ☆i:代表不區分大小寫匹配;

         ☆m:代表可以進行多行匹配;

           eg: var reg=/white/;

          var reg=/white/g;

      ★構造函數語法:

    var reg=new RegExp("表達式","附加參數")

       ☆表達式可以是一個常量字元串,也可以是一個JavaScript變數;

●表達式的模式:

   ★簡單模式:通過普通字元串的組合來表達的模式(只能表示具體的匹配);

      eg: var reg=/china/;

       var reg=/abc8/;

   ★複合模式:可以使用通配符表達更為抽象的規則模式;

        eg:var reg=/^\w+$/;

        var reg=/^\w+@\w+.[a-zA-Z]{2,3}(.[a-zA-Z]{2,3})?$/;

9、RegExp對象:

  • ●RegExp對象的方法:

  方法

描述

exec

檢索字元中是正則表達式的區配,返回找到的值,並確定其位置

test

檢索字元串中指定的值,返回true或false

                  test()方法:用於檢測一個字元串是否匹配某個模式:

                          語法:正則表達式對象實例.test(字元串);//如果字元串中有正則表達式匹配的文本返回true,否則返回false;

●RegExp對象的屬性:

屬性

描述

global

RegExp對象是否具有標誌g

ignoreCase

RegExp對象是否具有標誌i

multiline

RegExp對象是否具有標誌m

              global:用於返回正則表達式是否包含標誌g,它聲明瞭給定的正則表達式是否執行全局匹配,如果g被標誌返回true,否則返回false;

              ignoreCase:屬性用於返回正則表達式是否包含標誌i,它聲明瞭給定的正則表達式是否執行忽略大小寫的匹配,如果被標誌返回true;

              multiline:屬性用於返回正則表達式是否包含標誌m,它聲明瞭給定的正則表達式是否以多行模式執行模式匹配,被標誌返回true;

●String對象的方法:

方法

描述

match

找到一個或多個正則表達式的匹配

search

檢索與正則表達式相匹配的值

replace

替換與正則表達式匹配的字元串

split

把字元串分割為字元串數組

      math():該方法可以在字元串內檢索指定的值,找到一個或多個正則表達式的匹配;類似於indexOf(),但indexOf()返回的時字元串的位置,不是指定的值

           語法:字元串對象.match(searchString或regexpObject);

                  //searchString:檢索的字元串的值;

                  //regexpObject:規定要匹配模式的RegExp對象;

      replace():該方法用於在字元串中用一些字元串替換另一些字元,或替換一個與正則表達式匹配的子串;

            語法:字元串對象。replace(RegExp對象或字元串,“替換的字元串”);//如果設置了全文檢索,則符合的會全部被替換,否則只替換一個;

      ★split():該方法將字元串分割成一系列字串並通過一個數組將這一系列字串返回;

            語法:字元串對象.split(分割符,n);  //分割符可以是字元串,也可以是正則表達式,n為限制輸出數組的個數,可選項,若沒有則返回整個數組;

●正則表達式符號:

符號

描述

/…/

代表一個模式的開始和結束

^

匹配字元串的開始

$

匹配字元串的結束

\s

任何空白字元

\S

任何非空白字元

\d

匹配一個數字字元,等價於[0-9]

\D

除了數字之外的任何字元,等價於[^0-9]

\w

匹配一個數字、下劃線或字母字元,等價於[A-Za-z0-9_]

\W

任何非單字字元,等價於[^a-zA-z0-9_]

.

除了換行符之外的任意字元

             ★@ 前後的字元可以是數字、字母、或下劃線;

             ★但是.之後的字元只能是字母;

字元

描述

\

將下一個字元標記為一個特殊字元、或一個原義字元、或一個 向後引用、或一個八進位轉義符。例如,'n' 匹配字元 "n"。'\n' 匹配一個換行符。序列 '\\' 匹配 "\" 而 "\(" 則匹配 "("。

^

匹配輸入字元串的開始位置。如果設置了 RegExp 對象的 Multiline 屬性,^ 也匹配 '\n' 或 '\r' 之後的位置。

$

匹配輸入字元串的結束位置。如果設置了RegExp 對象的 Multiline 屬性,$ 也匹配 '\n' 或 '\r' 之前的位置。

*

匹配前面的子表達式零次或多次。例如,zo* 能匹配 "z" 以及 "zoo"。* 等價於{0,}。

+

匹配前面的子表達式一次或多次。例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。+ 等價於 {1,}。

?

匹配前面的子表達式零次或一次。例如,"do(es)?" 可以匹配 "do" 或 "does" 。? 等價於 {0,1}。

{n}

n 是一個非負整數。匹配確定的 n 次。例如,'o{2}' 不能匹配 "Bob" 中的 'o',但是能匹配 "food" 中的兩個 o。

{n,}

n 是一個非負整數。至少匹配n 次。例如,'o{2,}' 不能匹配 "Bob" 中的 'o',但能匹配 "foooood" 中的所有 o。'o{1,}' 等價於 'o+'。'o{0,}' 則等價於 'o*'。

{n,m}

m 和 n 均為非負整數,其中n <= m。最少匹配 n 次且最多匹配 m 次。例如,"o{1,3}" 將匹配 "fooooood" 中的前三個 o。'o{0,1}' 等價於 'o?'。請註意在逗號和兩個數之間不能有空格。

?

當該字元緊跟在任何一個其他限制符 (*, +, ?, {n}, {n,}, {n,m}) 後面時,匹配模式是非貪婪的。非貪婪模式儘可能少的匹配所搜索的字元串,而預設的貪婪模式則儘可能多的匹配所搜索的字元串。例如,對於字元串 "oooo",'o+?' 將匹配單個 "o",而 'o+' 將匹配所有 'o'。

.

匹配除換行符(\n、\r)之外的任何單個字元。要匹配包括 '\n' 在內的任何字元,請使用像"(.|\n)"的模式。

(pattern)

匹配 pattern 並獲取這一匹配。所獲取的匹配可以從產生的 Matches 集合得到,在VBScript 中使用 SubMatches 集合,在JScript 中則使用 $0…$9 屬性。要匹配圓括弧字元,請使用 '\(' 或 '\)'。

(?:pattern)

匹配 pattern 但不獲取匹配結果,也就是說這是一個非獲取匹配,不進行存儲供以後使用。這在使用 "或" 字元 (|) 來組合一個模式的各個部分是很有用。例如, 'industr(?:y|ies) 就是一個比 'industry|industries' 更簡略的表達式。

(?=pattern)

正向肯定預查(look ahead positive assert),在任何匹配pattern的字元串開始處匹配查找字元串。這是一個非獲取匹配,也就是說,該匹配不需要獲取供以後使用。例如,"Windows(?=95|98|NT|2000)"能匹配"Windows2000"中的"Windows",但不能匹配"Windows3.1"中的"Windows"。預查不消耗字元,也就是說,在一個匹配發生後,在最後一次匹配之後立即開始下一次匹配的搜索,而不是從包含預查的字元之後開始。

(?!pattern)

正向否定預查(negative assert),在任何不匹配pattern的字元串開始處匹配查找字元串。這是一個非獲取匹配,也就是說,該匹配不需要獲取供以後使用。例如"Windows(?!95|98|NT|2000)"能匹配"Windows3.1"中的"Windows",但不能匹配"Windows2000"中的"Windows"。預查不消耗字元,也就是說,在一個匹配發生後,在最後一次匹配之後立即開始下一次匹配的搜索,而不是從包含預查的字元之後開始。

(?<=pattern)

反向(look behind)肯定預查,與正向肯定預查類似,只是方向相反。例如,"(?<=95|98|NT|2000)Windows"能匹配"2000Windows"中的"Windows",但不能匹配"3.1Windows"中的"Windows"。

(?<!pattern)

反向否定預查,與正向否定預查類似,只是方向相反。例如"(?<!95|98|NT|2000)Windows"能匹配"3.1Windows"中的"Windows",但不能匹配"2000Windows"中的"Windows"。

x|y

匹配 x 或 y。例如,'z|food' 能匹配 "z" 或 "food"。'(z|f)ood' 則匹配 "zood" 或 "food"。

[xyz]

字元集合。匹配所包含的任意一個字元。例如, '[abc]' 可以匹配 "plain" 中的 'a'。

[^xyz]

負值字元集合。匹配未包含的任意字元。例如, '[^abc]' 可以匹配 "plain" 中的'p'、'l'、'i'、'n'。

[a-z]

字元範圍。匹配指定範圍內的任意字元。例如,'[a-z]' 可以匹配 'a' 到 'z' 範圍內的任意小寫字母字元。

[^a-z]

負值字元範圍。匹配任何不在指定範圍內的任意字元。例如,'[^a-z]' 可以匹配任何不在 'a' 到 'z' 範圍內的任意字元。

\b

匹配一個單詞邊界,也就是指單詞和空格間的位置。例如, 'er\b' 可以匹配"never" 中的 'er',但不能匹配 "verb" 中的 'er'。

\B

匹配非單詞邊界。'er\B' 能匹配 "verb" 中的 'er',但不能匹配 "never" 中的 'er'。

\cx

匹配由 x 指明的控制字元。例如, \cM 匹配一個 Control-M 或回車符。x 的值必須為 A-Z 或 a-z 之一。否則,將 c 視為一個原義的 'c' 字元。

\d

匹配一個數字字元。等價於 [0-9]。

\D

匹配一個非數字字元。等價於 [^0-9]。

\f

匹配一個換頁符。等價於 \x0c 和 \cL。

\n

匹配一個換行符。等價於 \x0a 和 \cJ。

\r

匹配一個回車符。等價於 \x0d 和 \cM。

\s

匹配任何空白字元,包括空格、製表符、換頁符等等。等價於 [ \f\n\r\t\v]。

\S

匹配任何非空白字元。等價於 [^ \f\n\r\t\v]。

\t

匹配一個製表符。等價於 \x09 和 \cI。

\v

匹配一個垂直製表符。等價於 \x0b 和 \cK。

\w

匹配字母、數字、下劃線。等價於'[A-Za-z0-9_]'。

\W

匹配非字母、數字、下劃線。等價於 '[^A-Za-z0-9_]'。

\xn

匹配 n,其中 n 為十六進位轉義值。十六進位轉義值必須為確定的兩個數字長。例如,'\x41' 匹配 "A"。'\x041' 則等價於 '\x04' & "1"。正則表達式中可以使用 ASCII 編碼。

\num

匹配 num,其中 num 是一個正整數。對所獲取的匹配的引用。例如,'(.)\1' 匹配兩個連續的相同字元。

\n

標識一個八進位轉義值或一個向後引用。如果 \n 之前至少 n 個獲取的子表達式,則 n 為向後引用。否則,如果 n 為八進位數字 (0-7),則 n 為一個八進位轉義值。

\nm

標識一個八進位轉義值或一個向後引用。如果 \nm 之前至少有 nm 個獲得子表達式,則 nm 為向後引用。如果 \nm 之前至少有 n 個獲取,則 n 為一個後跟文字 m 的向後引用。如果前面的條件都不滿足,若 n 和 m 均為八進位數字 (0-7),則 \nm 將匹配八進位轉義值 nm。

\nml

如果 n 為八進位數字 (0-3),且 m 和 l 均為八進位數字 (0-7),則匹配八進位轉義值 nml。

\un

匹配 n,其中 n 是一個用四個十六進位數字表示的 Unicode 字元。例如, \u00A9 匹配版權符號 (?)。

 

●正則表達式的重覆字元:

符號

描述

{n}

匹配前一項n次

{n,}

匹配前一項n次,或者多次

{n,m}

匹配前一項至少n次,但是不能超過m次

*

匹配前一項0次或多次,等價於{0,}

+

匹配前一項1次或多次,等價於{1,}

匹配前一項0次或1次,也就是說前一項是可選的,等價於{0,1}

 

●這則表達式中有:()、[]、{}區別如下:

  ★()是為了提取匹配的字元串,表達式中有幾個()就有幾個相應的匹配字元串;

  ★[]是定義匹配的字元串,eg:[A-Za-z0-9]表示字元串要匹配英文字母和數字;

  ★{}是用來匹配長度,eg:\s{3}代表匹配三個空格;

10、使用HTML5的方式驗證表單:

●HTML5新增驗證屬性:

  屬性

描述

placeholder

提供一種提示(hint),輸入域為空時顯示,獲得焦點輸入內容後消失

required

規定輸入域不能為空

pattern

規定驗證input域的模式(正則表達式)

 

●validity屬性:

屬性

描述

valueMissing

表單元素設置了required特性,則為必填項。如果必填項的值為空,就無法通過表單驗證,valueMissing屬性會返回true,否則返回false。

typeMismatch

輸入值與type類型不匹配。HTML 5新增的表單類型如email、number、url等,都包含一個原始的類型驗證。如果用戶輸入的內容與表單類型不符合,則typeMismatch屬性將返回true,否則返回false。

patternMismatch

輸入值與pattern特性的正則表達式不匹配。如果輸入的內容不符合pattern驗證模式的規則,則patternMismatch屬性將返回true,否則返回false。

tooLong

輸入的內容超過了表單元素的maxLength 特性限定的字元長度。雖然在輸入的時候會限製表單內容的長度,但在某種情況下,如通過程式設置,還是會超出最大長度限制。如果輸入的內容超過了最大長度限制,則tooLong屬性返回true,否則返回false。

rangeUnderflow

輸入的值小於min特性的值。如果輸入的數值小於最小值,則rangeUnderflow屬性返回true,否則返回false。

rangeOverflow

輸入的值大於max特性的值。如果輸入的數值大於最大值,則rangeOverflow屬性返回true,否則返回false。

stepMismatch

輸入的值不符合step特性所推算出的規則。用於填寫數值的表單元素可能需要同時設置min、max和step特性,這就限制了輸入的值必須是最小值與step特性值的倍數之和。例如範圍從0到10,step特性值為2,因為合法值為該範圍內的偶數,其他數值均無法通過驗證。如果輸入值不符合要求,則stepMismatch屬性返回true,否則返回false

customError

使用自定義的驗證錯誤提示信息。使用setCustomValidity( )方法自定義錯誤提示信息:setCustomValidity(message)會把錯誤提示信息自定義為message,此時customError屬性值為true;setCustomValidity("")會清除自定義的錯誤信息,此時customError屬性值為false。

 

 

 

 

 

 


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

-Advertisement-
Play Games
更多相關文章
  • 最近在做一個Xamarin for android的項目,有個需求是一次可以從相冊中選擇多張圖片,但是 android API<19 的版本還不支持一次選擇多張圖片,在網找了一下,發現原生的組件有很多並且都非常好用,也找到了很多原生的通過Binding 技術生成的 Xamarin for andro ...
  • 最近做了一個關於vue.js的小demo: 當用戶登錄時,使用狀態保存vuex將用戶的頭像信息存儲到store.state當中,這樣不同用戶登錄就會顯示相應的頭像。 具體實現方法: 在組件的計算屬性當中通過 this.$store.getters.userImg 獲取當前用戶的頭像,然後用requi ...
  • 在程式設計中有很多實用的設計模式,而其中大部分語言的實現都是基於“類”。 在JavaScript中並沒有類這種概念,JS中的函數屬於一等對象,在JS中定義一個對象非常簡單(var obj = {}),而基於JS中閉包與弱類型等特性,在實現一些設計模式的方式上與眾不同。 本文基於《JavaScript ...
  • 從場景說起 滑動到底部繼續載入,是移動端很常見的一種場景。 通常來說,我們會在對可滑動區域(一般是window)的scroll事件做監聽,判斷距離底部還有多遠,如果距離底部較近,則發起HTTP請求,請求下一頁的數據。 很容易寫出這樣的代碼: 但是這樣很容易就發現一個問題,觸發的scroll事件太頻繁 ...
  • 開題先拋一個快應用的開發文檔鏈接 https://doc.quickapp.cn/ 我只能說這個文檔不是很人性化,左側導航欄分了『指南和參考』,結果我最關心的組件,在『指南』中只有list和tabs,其餘組件都在『參考』中,真是噴了一口老血才找到。 根據開發微信小程式和支付寶小程式的經驗,我習慣性的 ...
  • JavaScript 對象是動態的屬性“包”(指其自己的屬性)。JavaScript 對象有一個指向一個原型對象的鏈。當試圖訪問一個對象的屬性時,它不僅僅在該對象上搜尋,還會搜尋該對象的原型,以及該對象的原型的原型,依次層層向上搜索,直到找到一個名字匹配的屬性或到達原型鏈的末尾。 遵循ECMAScr ...
  • 彈窗的工作原理:在網頁中寫一個div ,佈局到想要顯示的位置,將display設為none,隱藏該div。然後通過點擊事件或其他操作,利用Js代碼,將display設置為block,將div 顯示到網頁中。 Tips:display:none//隱藏 display: block//顯示 效果圖:點 ...
  • 此文是我的出版書籍《React Native 精解與實戰》連載分享,此書由機械工業出版社出版,書中詳解了 React Native 框架底層原理、React Native 組件佈局、組件與 API 的介紹與代碼實戰,以及 React Native 與 iOS、Android 平臺的混合開發底層原理講... ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...