JavaScript基礎復盤補缺

来源:https://www.cnblogs.com/Allerge/archive/2022/10/16/16790137.html
-Advertisement-
Play Games

語法規範 JavaScript嚴格區分大小寫,對空格、換行、縮進不敏感,建議語句結束加‘;’ JavaScript 會忽略多個空格。您可以向腳本添加空格,以增強可讀性。 JavaScript 程式員傾向於使用以小寫字母開頭的駝峰大小寫 firstName, lastName, masterCard, ...


語法規範

JavaScript嚴格區分大小寫,對空格、換行、縮進不敏感,建議語句結束加‘;’
JavaScript 會忽略多個空格。您可以向腳本添加空格,以增強可讀性。
JavaScript 程式員傾向於使用以小寫字母開頭的駝峰大小寫
firstName, lastName, masterCard, interCity
在運算符旁邊( = + - * / )添加空格是個好習慣

JavaScript非同步載入:

引入js代碼時(引入外鏈/內嵌),頁面的下載和渲染都會暫停,等待腳本執行完後才執行,頁面載入腳本文件會阻塞其他資源下載。對於外鏈式,對不需要提前執行的代碼,將引入放在< body>標簽底部。
HTML5新增兩個可選屬性:async,defer
async:用於非同步載入,先下載文件,不阻塞其他代碼執行,下載完成後再執行。
<script src='...' async></script>
defer:用於延後執行,即先下載文件,直到網頁載入完成後再執行
<script src='...' defer></script>

eval() 的參數是一個字元串。

如果字元串表示的是表達式,eval() 會對錶達式進行求值。如果參數表示一個或多個 JavaScript 語句,那麼eval() 就會執行這些語句。不需要用 eval() 來執行一個算術表達式:因為 JavaScript 可以自動為算術表達式求值。返回字元串中代碼的返回值。如果返回值為空,則返回 undefined。

如果你以字元串的形式構造了算術表達式,那麼可以在後面用 eval()對它求值。例如,假設你有一個變數 x,您可以通過將表達式的字元串值(例如 3 * x + 2)賦值給一個變數,然後在你的代碼後面的其他地方調用 eval(),來推遲涉及 x 的表達式的求值。

如果 eval() 的參數不是字元串, eval() 會將參數原封不動地返回。在下麵的例子中,String 構造器被指定,而 eval() 返回了 String 對象而不是執行字元串。
eval(new String("2 + 2")); // 返回了包含"2 + 2"的字元串對象
eval("2 + 2"); // returns 4

外部 JavaScript 的優勢

在外部文件中放置腳本有如下優勢:

分離了 HTML 和代碼
使 HTML 和 JavaScript 更易於閱讀和維護
已緩存的 JavaScript 文件可加速頁面載入
如需向一張頁面添加多個外部腳本文件 - 請使用多個 script 標簽

JavaScript的位置

<head> 或 <body> 中的 JavaScript 您能夠在 HTML 文檔中放置任意數量的腳本。

腳本可被放置與 HTML 頁面的 <body><head> 部分中,或兼而有之。
把腳本置於 <body> 元素的底部,可改善顯示速度,因為腳本編譯會拖慢顯示。

HTML路徑

路徑 描述
<img src="picture.jpg"> picture.jpg 位於與當前網頁相同的文件夾
<img src="images/picture.jpg"> picture.jpg 位於當前文件夾的 images 文件夾中
<img src="/images/picture.jpg"> picture.jpg 當前站點根目錄的 images 文件夾中
<img src="../picture.jpg"> picture.jpg 位於當前文件夾的上一級文件夾中

文件路徑描述了網站文件夾結構中某個文件的位置。文件路徑會在鏈接外部文件時被用到。
絕對文件路徑是指向一個網際網路文件的完整 URL,相對路徑指向了相對於當前頁面的文件。

JavaScript 顯示方案

JavaScript 能夠以不同方式“顯示”數據: 描述 補充
使用 document.write() 寫入 HTML 輸出 出於測試目的,使用 document.write() 比較方便。
輸出內容位置與script標簽插入的位置有關、
document.write() 方法僅用於測試。
在 HTML 文檔完全載入後使用 document.write()刪除所有已有的 HTML
使用 innerHTML 寫入 HTML 元素 innerHTML 屬性定義 HTML 內容
使用 console.log() 寫入瀏覽器控制台 在瀏覽器中,您可使用 console.log() 方法來顯示數據。
使用 window.alert() 寫入警告框 用警告框來顯示數據,打開頁面彈出警告框

JavaScript 關鍵詞

語句常常通過某個關鍵詞來標識需要執行的 JavaScript 動作。

下麵的表格列出了一部分將在教程中學到的關鍵詞:

關鍵詞 描述
break 終止 switch 或迴圈。
continue 跳出迴圈併在頂端開始。
debugger 停止執行 JavaScript,並調用調試函數(如果可用)。
return 退出函數
try ... catch 對語句塊實現錯誤處理。
var var 關鍵詞告知瀏覽器創建新的變數

JavaScript 值

JavaScript 語句定義兩種類型的值:混合值和變數值。

混合值被稱為字面量(literal)。變數值被稱為變數。

字元串是文本,由雙引號或單引號包圍,加了引號的就是文本包括數字
使用變數不要加”“

文本:"你好","12",
數字:12

JavaScript 變數

在編程語言中,變數用於存儲數據值。

JavaScript 使用 var 關鍵詞來聲明變數。

= 號用於為變數賦值

var a = "hello"
var b =17

JavaScript 標識符
所有 JavaScript 變數必須以唯一的名稱的標識。這些唯一的名稱稱為標識符。

標識符可以是短名稱(比如 x 和 y),或者更具描述性的名稱(age、sum、totalVolume)。

構造變數名稱(唯一標識符)的通用規則是:

名稱可包含字母、數字、下劃線和美元符號
名稱必須以字母開頭
名稱也可以 $ 和 _ 開頭(但是在本教程中我們不會這麼做)
名稱對大小寫敏感(y 和 Y 是不同的變數)
保留字(比如 JavaScript 的關鍵詞)無法用作變數名稱
提示:JavaScript 標識符對大小寫敏感

聲明變數

var a;//聲明變數,不賦值的話,a=undefined
a=10;//給變數賦值

/*一條語句,多個變數
您可以在一條語句中聲明許多變數。
聲明可橫跨多行*/

var person = "Bill Gates",
carName = "porsche",
price = 15000;

以 var 作為語句的開頭,並以逗號分隔變數

JavaScript 表達式

表達式是值、變數和運算符的組合,結果為值(數字,字元串),也可以包含變數

12 + 29
a*2
"Allerge" + "Xia"

註釋

//單行註釋

/*
多行註釋
被稱為註釋塊
*/

應用:解釋代碼;阻止代碼執行
使用單行註釋最為常見。

提示:註釋塊常用於官方聲明。

JavaScript作用域

ES2015前只有全局和函數(局部)

ES2015之後有全局、函數、塊級作用域

作用域 描述 應用
全局作用域 全局 (在函數之外)聲明的變數擁有 全局作用域 全局變數可以在 JavaScript 程式中的任何位置訪問
函數作用域 局部 (函數內)聲明的變數擁有函數作用域 局部變數只能訪問函數內部的變數
塊級作用域 在塊{} 內聲明的變數無法從塊外訪問 函數、迴圈的{}
var carName = "porsche";

// 此處的代碼可以使用 carName

function myFunction() {
  // 此處的代碼也可以使用 carName
	var busName = "finghter"
	//此處可以使用busName
}
//此處不可以使用busName

var let const 補充
聲明的變數沒有塊作用域 聲明擁有塊作用域的變數 通過 const 定義的變數與 let 變數類似,但不能重新賦值
在塊{} 內聲明的變數可以從塊之外進行訪問 在塊{} 內聲明的變數無法從塊外訪問 const 變數必須在聲明時賦值
使用var關鍵詞在塊中重新聲明變數
將重新聲明塊外的變數
使用let關鍵詞在塊中重新聲明變數
不會重新聲明塊外的變數
const定義的不是常數,定義了對值的常量引用
我們不能更改常量原始值,
但我們可以更改常量對象的屬性,可以更改常量數組的元素
通過 var 關鍵詞定義的全局變數屬於 window 對象 通過 let關鍵詞定義的全局變數不屬於 window 對象,
不能通過window.let聲明的變數
允許在程式的任何位置使用 var重新聲明 相同的作用域,或在相同的塊中,
通過 let 重新聲明一個 var 變數是不允許的
不同的作用域或塊中,通過 let 重新聲明變數是允許的
在同一作用域或塊中,不允許將已有的 var 或 let或const 變數
重新聲明或重新賦值給 const
在另外的作用域或塊中重新聲明 const 是允許的
在相同的作用域,或在相同的塊中,通過 var 重新聲明一個 let 變數是不允許的
通過 var 聲明的變數會提升到頂端,
可以在聲明前使用變數
通過 let 定義的變數不會被提升到頂端。
在聲明 let 變數之前就使用它會導致 ReferenceError。
變數從塊的開頭一直處於“暫時死區”,直到聲明為止
通過const定義的變數不會被提升到頂端,
const變數不能在聲明之前使用

通過 const 定義的變數不會被提升到頂端。

const 變數不能在聲明之前使用

重新聲明變數

使用 var 關鍵字重新聲明變數會帶來問題。

使用 let 關鍵字重新聲明變數可以解決這個問題。

在塊中重新聲明變數不會重新聲明塊外的變數

var x = 10;
// 此處 x 為 10
{ 
  let x = 6;
  // 此處 x 為 6
}
// 此處 x 為 10
var x = 10;
// 此處 x 為 10
{ 
  var x = 6;
  // 此處 x 為 6
}
// 此處 x 為 6

如果在塊外聲明聲明,那麼 var 和 let 也很相似。它們都擁有全局作用域

在函數內聲明變數時,使用 var 和 let 很相似。它們都有函數作用域

冪運算符

取冪運算符(**)將第一個操作數提升到第二個操作數的冪

var x = 5;
var z = x ** 2;          // 結果是 25

x ** y 產生的結果與 Math.pow(x,y) 相同:

var x = 5;
var z = Math.pow(x,2);   // 結果是 25

JavaScript 從左向右計算表達式。不同的次序會產生不同的結果

var x = 911 + 7 + "Porsche";//918Porsche
var x = "Porsche" + 911 + 7;//Porsche9117

Undefined 與 Null 的區別

Undefinednull 的值相等,但類型不相等:

typeof undefined              // undefined
typeof null                   // object
null === undefined            // false
null == undefined             // true

空值

空值與 undefined 不是一回事。

空的字元串變數既有值也有類型。

var car = "";                // 值是 "",類型是 "string"

typeof 運算符

您可使用 JavaScript 的 typeof 來確定 JavaScript 變數的類型:

typeof 運算符返回變數或表達式的類型

原始數據值是一種沒有額外屬性和方法的單一簡單數據值。

typeof 運算符可返回以下原始類型之一:

  • string
  • number
  • boolean
  • undefined

複雜數據

typeof 運算符可返回以下兩種類型之一:

  • function
  • object

typeof 運算符把對象、數組或 null 返回 object

typeof 運算符不會把函數返回 object

JavaScript 函數

JavaScript 函數是被設計為執行特定任務的代碼塊。

JavaScript 函數會在某代碼調用它時被執行。

函數
聲明函數

函數只要定義一次代碼,就可以多次使用,多次向同一函數傳遞不同參數得到不同的結果

function name(參數 1, 參數 2, 參數 3) {
    要執行的代碼
}
匿名函數
hello = function() {
  return "Hello World!";
}
ECMAScript 的函數Function對象( 類)實際上是功能完整的對象

使用Function對象( 類)可以表示開發者定義的任何函數

var function_name = new Function(arg1, arg2, ..., argN, function_body)

前面是參數,最後是函數邏輯主體

函數名只是指向函數對象的引用值

儘管可以使用 Function 構造函數創建函數,但最好不要使用它,因為用它定義函數比用傳統方式要慢得多。不過,所有函數都應看作 Function 類的實例。

箭頭函數

ES6 中引入了箭頭函數。

箭頭函數允許我們編寫更短的函數

hello = () => "Hello World!";

如果函數只有一個語句,並且該語句返回一個值,則可以去掉括弧和 return 關鍵字

如果只有一個參數,您也可以略過括弧

hello = val => "Hello " + val;

函數屬於引用類型,所以它們也有屬性和方法。

length屬性,屬性 length 只是為查看預設情況下預期的參數個數提供了一種簡便方式。

與所有對象共用的 valueOf() 方法和 toString() 方法,返回的都是函數的源代碼

function doAdd(iNum) {
  alert(iNum + 10);
}
function sayHi() {
  alert("Hi");
}
alert(doAdd.length);	//輸出 "1"
alert(sayHi.length);//輸出"0"
document.write(sayHi.toString());//function sayHi(){alert("Hi");}
函數調用

用( )調用函數,沒有()的函數返回的是定義的函數

函數中的代碼將在其他代碼調用該函數時執行:

  • 當事件發生時(當用戶點擊按鈕時)
  • 當 JavaScript 代碼調用時
  • 自動的(自調用)
函數返回

當 JavaScript 到達 return 語句,函數將停止執行。

函數在執行過 return 語句後立即停止代碼。因此,return 語句後的代碼都不會被執行。

如果函數被某條語句調用,JavaScript 將在調用語句之後“返回”執行代碼。

函數通常會計算出 返回值 。這個返回值會返回給調用者:

function myFunction(a, b) {
    return a * b;                // 函數返回 a 和 b 的乘積
}
document.getElementById("demo").innerHTML = myFunction;
//沒有(),function myFunction(a, b) { return a * b; // 函數返回 a 和 b 的乘積 }
document.getElementById("de").innerHTML = myFunction(1,2);
//有(),2
局部變數

在 JavaScript 函數中聲明的變數,會成為函數的 局部變數

局部變數只能在函數內訪問。

由於局部變數只能被其函數識別,因此可以在不同函數中使用相同名稱的變數。

局部變數在函數開始時創建,在函數完成時被刪除

arguments 對象

在函數代碼中,使用特殊對象 arguments,開發者 無需明確指出參數名 ,就能訪問它們。arguments中包含所以參數

應用:

arguments[0],偽數組中索引號為0的元素

arguments.length,檢測函數的參數個數

模擬函數重載

用 arguments 對象判斷傳遞給函數的參數個數,即可模擬函數重載,即通過arguments.length判斷個數,arguments[?]對不同位置的參數以另種進行重新載入

function doAdd() {
  if(arguments.length == 1) {
    alert(arguments[0] + 5);
  } else if(arguments.length == 2) {
    alert(arguments[0] + arguments[1]);
  }
}

doAdd(10);	//輸出 "15"
doAdd(40, 20);	//輸出 "60"
閉包

函數可以使用函數之外定義的變數

簡單閉包

var sMessage = "hello world";

function sayHelloWorld() {
  alert(sMessage);//執行函數時使用全局變數
}

sayHelloWorld();

複雜閉包

在一個函數中定義另一個函數會使閉包變得更加複雜

var iBaseNum = 10;

function addNum(iNum1, iNum2) {
//addNum輸入兩個參數iNum1,iNum2
  function doAdd() {
//doAdd函數無輸入參數
    return iNum1 + iNum2 + iBaseNum;
  }
  return doAdd();
}

函數 addNum() 包括函數 doAdd() (閉包)。

內部函數是一個閉包,它將獲取外部函數的參數 iNum1 和 iNum2 以及全局變數 iBaseNum 的值。

addNum() 的最後一步調用了 doAdd(),把兩個參數和全局變數相加,並返回它們的和。

這裡要掌握的重要概念是,doAdd() 函數根本不接受參數,它使用的值是從執行環境中獲取的。

閉包是 ECMAScript 中非常強大多用的一部分,可用於執行複雜的計算。

對象

對象包含屬性和方法,以鍵值對的形式來書寫

方法是作為屬性來存儲的函數,是在對象上執行的 動作

var obj ={   
  name:"xiatian",  
  skill:function(){
        var rate =18;  
         return rate;
	 }
}

訪問對象屬性的兩種方式:

obj.name
obj['name']

訪問對象方法的方式:

obj.sayHi()

this 關鍵詞

在函數定義中,this 引用該函數的“擁有者”。

this.firstName,this 指的是“擁有” fullName 函數的 person 對象

換言之, 的意思是 this 對象的 firstName 屬性。

JavaScript this 關鍵詞指的是它所屬的對象。

在常規函數中,關鍵字 this 表示調用該函數的對象,可以是視窗、文檔、按鈕或其他任何東西

它擁有不同的值,具體取決於它的使用位置:

  • 在對象方法中,this 指的是擁有該方法的對象

  • 單獨的情況下,this 指的是全局對象(嚴格模式下也是)。

  • 在函數中,函數的擁有者預設綁定 thisthis 指的是全局對象。嚴格模式下,this 是 undefined。

  • 在事件中,this 指的是接收事件的元素

  • 對於箭頭函數,this 關鍵字始終表示定義箭頭函數的對象,window 對象是函數的“所有者”。用了箭頭函數,則 this 表示函數的擁有者

    <script>
    var x = this;//全局對象
    var obj = {
    age:18;
    fullName : function() {
    return this.firstName + " " + this.lastName;//this指向obj對象
    return this;
    }
    function myFunction() {
    return this;//全局對象
    }
    </script>
    <body>
    <button onclick="this.style.display='none'">單擊來刪除我!</button>//this指的是接收事件的button
    
顯式函數綁定 call()apply()

call()apply() 方法是預定義的 JavaScript 方法。

它們都可以用於將另一個對象作為參數調用對象方法。

JavaScript 事件

HTML 事件是發生在 HTML 元素上的“事情”。

當在 HTML 頁面中使用 JavaScript 時,JavaScript 能夠“應對”這些事件。

通常,當事件發生時,用戶會希望做某件事。JavaScript 允許您在事件被偵測到時執行代碼。

通過 JavaScript 代碼 ,HTML 允許您向 HTML 元素添加事件處理程式

常見的 HTML 事件

下麵是一些常見的 HTML 事件:

事件 描述
onchange HTML 元素已被改變
onclick 用戶點擊了 HTML 元素
onmouseover 用戶把滑鼠移動到 HTML 元素上
onmouseout 用戶把滑鼠移開 HTML 元素
onkeydown 用戶按下鍵盤按鍵
onload 瀏覽器已經完成頁面載入

HTML DOM 事件允許 JavaScript 在 HTML 文檔中的元素上註冊不同的事件處理程式。

事件通常與函數結合使用,在事件發生之前函數不會被執行(例如當用戶單擊按鈕時)。

JavaScript 能夠做什麼?

事件處理程式可用於處理、驗證用戶輸入、用戶動作和瀏覽器動作

  • 每當頁面載入時應該做的事情
  • 當頁面被關閉時應該做的事情
  • 當用戶點擊按鈕時應該被執行的動作
  • 當用戶輸入數據時應該被驗證的內容
  • 等等

讓 JavaScript 處理事件的不同方法有很多:

  • HTML 事件屬性可執行 JavaScript 代碼
  • HTML 事件屬性能夠調用 JavaScript 函數
  • 您能夠向 HTML 元素分配自己的事件處理函數
  • 您能夠阻止事件被髮送或被處理

轉義序列:

使用 \ 轉義字元,反斜杠轉義字元把特殊字元轉換為字元串字元

代碼 結果
\b 退格鍵
\f 換頁
\n 新行
\r 回車
\t 水平製表符
\v 垂直製表符

字元串方法

方法 說明
length 屬性返回字元串的長度
replace() 用另一個值替換在字元串中指定的值 不改變字元串,返回的是新字元串 ,只替換首個匹配,對大小寫敏感
toUpperCase() 把字元串轉換為大寫
toLowerCase() 把字元串轉換為小寫
concat() 方法可用於代替加運算符
trim() 方法刪除字元串兩端的空白符
split() 將字元串轉換為數組 省略分隔符,被返回的數組將包含 index [0] 中的整個字元串。
分隔符是 "",被返回的數組將是間隔單個字元的數組
ECMAScript 5 (2009) 允許對字元串的屬性訪問 [ ] 使用屬性訪問有點不太靠譜

字元串搜索

方法 描述
indexOf() 方法返回字元串中指定文本首次出現的索引(位置)
(從前往後) 如果未找到文本,
indexOf()lastIndexOf() 均返回 -1 indexOf() 方法無法設置更強大的搜索值(正則表達式)
lastIndexOf() 方法返回指定文本在字元串中最後一次出現的索引
(從後向前) 兩種方法都接受作為檢索起始位置的第二個參數。

var str = "The full name of China is the People's Republic of China."

var pos = str.lastIndexOf("China", 50)
第二個參數是 50,則從位置 50 開始檢索,直到字元串的最後。
search() 方法搜索特定值的字元串,並返回匹配的位置 區別:search() 方法無法設置第二個開始位置參數;
match() 方法根據正則表達式在字元串中搜索匹配項,並將匹配項作為 Array 對象返回k
方法
如果字元串包含指定值,includes() 方法返回 true
如果字元串以指定值開頭,則 startsWith() 方法返回 true,否則返回 false
如果字元串以指定值結尾,則 endsWith() 方法返回 true,否則返回 false
提取部分字元串

有三種提取部分字元串的方法:

方法 描述 區別
slice(start , end ) 提取字元串的某個部分併在新字元串中返回被提取的部分。
如果某個參數為負,則從字元串的結尾開始計數
substring(start , end ) 該方法設置兩個參數:起始索引(開始位置),終止索引(結束位置)
如果省略第二個參數,則該方法將裁剪字元串的剩餘部分
substring() 無法接受負的索引
substr(start , length ) substr() 類似於 slice() 不同之處在於第二個參數規定被提取部分的長度
charAt(position) 方法返回字元串中指定下標(位置)的字元串
charCodeAt(position ) 方法返回字元串中指定索引的字元 unicode 編碼

IE 8 不支持 String.trim()。您可以使用 replace 方案把 trim 函數添加到 JavaScript String.prototype:

if (!String.prototype.trim) {
  String.prototype.trim = function () {
    return this.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, '');
  };
};
var str = "     Hello World!    ";
alert(str.trim());

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

-Advertisement-
Play Games
更多相關文章
  • 一、 先決條件 1.Azure Repos Git/Git和項目上傳 把本地的Net Core項目上傳至Azure Repos Git/Git 2.Docker Registry Service Connection/Azure subscription和Azure Container Regist ...
  • WPF以其豐富靈活的控制項樣式設計,相較於WinForm而言,一直是工控組態軟體的寵兒,本文以兩個簡單的小例子,簡述如何通過WPF設計出表示水流的管道,和轉動的冷卻風扇。僅供學習分享使用,如有不足之處,還請指正。 ...
  • LAMP架構 LAMP架構的組成: LAMP架構的工作原理: 說明: 訪問動態資源的時候,apache就是個異構代理伺服器,接收並轉發用戶的請求。通過CGI或者fastcgi介面將請求轉發給php解釋器。 apache請求轉發的時候可能會涉及到跨網路轉發,跨網路轉發使用fastcgi來實現。 異構代 ...
  • nginx配置文件rewrite和if rewrite 語法:rewrite regex replacement flag;,如: rewrite ^/images/(.*\.jpg)$ /imgs/$1 break; 此處的$1用於引用(.*.jpg)匹配到的內容,又如: rewrite ^/bb ...
  • 1、下載安裝包(官網下載) 直達鏈接:https://dev.mysql.com/downloads/mysql/ 下載後放到指定目錄下解壓即可(給電腦新手忠告:註意不要放在C盤,養成好習慣,放C盤多了會影響電腦運行速度) 像我放D盤: 2、安裝過程 2.1、配置環境 變數名:MYSQL_HOME ...
  • 隨著系統運行時間的推移,資料庫日誌文件會變得越來越大,這時我們需要對日誌文件進行備份或清理。 解決方案1 - 直接刪除本地ldf日誌文件:(比較靠譜方案!) 1. 在SQL管理器分離資料庫。 2. 對資料庫日誌文件進行壓縮備份(rar, zip) 3. 直接刪除ldf文件。 4. 再附加資料庫。若出 ...
  • MongoDB 是一個強大的分散式存儲引擎,天然支持高可用、分散式和靈活設計。MongoDB 的一個很重要的設計理念是:服務端只關註底層核心能力的輸出,至於怎麼用,就儘可能的將工作交個客戶端去決策。這也就是 MongoDB 靈活性的保證,但是靈活性帶來的代價就是使用成本的提升。與 MySql 相比,... ...
  • 我們在安卓開發學習中會遇到需要返回數據的情況,這裡我們使用了幾個方法 1、startActivityForResult通過這個方法我們可以啟動另外一個活動 2、onBasePressed使用這個方法我們可以 點擊返回鍵返回數據到上一個活動 3、onActivityResult我們在需要接收返回數據的 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...