Vue(黑馬學習筆記)

Vue概述

通過我們學習的html+css+js已經能夠開發美觀的頁面了,但是開發的效率還有待提高,那么如何提高呢?我們先來分析下頁面的組成。一個完整的html頁面包括了視圖和數據,數據是通過請求從后臺獲取的那么意味著我們需要將后臺獲取到的數據呈現到頁面上,很明顯,這就需要我們使用DOM操作。正是因為這種開發流程,座椅我們引入了一種叫做MVVM(Model-View-ViewModel)的前端開發思想,即讓我們開發者更加關注數據,而非數據綁定到視圖這種機械化的操作。那么具體什么是MVVM思想呢?

MVVM:其實是Model-View-ViewModel的縮寫,有3個單詞,具體釋義如下:

? ??●?Model: 數據模型,特指前端中通過請求從后臺獲取的數據

? ??●?View: 視圖,用于展示數據的頁面,可以理解成我們的html+css搭建的頁面,但是沒有數據

? ??●?ViewModel: 數據綁定到視圖,負責將數據(Model)通過JavaScript的DOM技術,將數據展示到視圖(View)上

如圖所示就是MVVM開發思想的含義:

基于上述的MVVM思想,其中的Model我們可以通過Ajax來發起請求從后臺獲取;對于View部分,我們將來會學習一款ElementUI框架來替代HTML+CSS來更加方便的搭建View;而今天我們要學習的就是側重于ViewModel部分開發的vue前端框架,用來替代JavaScript的DOM操作,讓數據展示到視圖的代碼開發變得更加的簡單。可以簡單到什么程度呢?可以參考下圖對比:

在更加復雜的dom操作中,vue只會變得更加的簡單!在上述的代碼中,我們看不到之前的DOM操作,因為vue全部幫我們封裝好了。

接下來我們來介紹一下vue。

Vue.js是一套構建用戶界面的漸進式框架。與其他重量級框架不同的是,Vue采用自底向上增量開發的設計。Vue的核心庫只關注視圖層,并且非常容易學習,非常容易與其他庫或已有項目整合。

Vue.js的目標是通過盡可能簡單的API實現響應的數據綁定組合的視圖組件

快速入門

接下來我們通過一個vue的快速入門案例,來體驗一下vue。

第一步:在VS Code中創建名為12. Vue-快速入門.html的文件,并且在html文件同級創建js目錄,將資料/vue.js文件目錄下得vue.js拷貝到js目錄,如下圖所示:

第二步:然后編寫<script>標簽來引入vue.js文件,代碼如下:

<script src="js/vue.js"></script>

第三步:在js代碼區域定義vue對象,代碼如下:

<script>//定義Vue對象new Vue({el: "#app",  //vue接管區域data:{message: "Hello Vue"}})
</script>

在創建Vue對象時,有幾個常用的屬性:

? ??● el:用來指定那些標簽受Vue管理。該屬性取值#app中的app需要是受管理的標簽的id屬性值

? ??● data: 用來定義數據模型

? ??● methods:用來定義函數。這個我們在后面就會用到

第四步:在html區域編寫視圖,其中{{}}是插值表達式,用來將vue對象中定義的model展示到頁面上的

<body><div id="app"><input type="text" v-model="message">{{message}}</div>
</body>

瀏覽器打開效果如圖所示:

整體代碼如下:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Vue-快速入門</title><script src="js/vue.js"></script>
</head>
<body><div id="app"><input type="text" v-model="message">{{message}}</div></body>
<script>//定義Vue對象new Vue({el: "#app", //vue接管區域data:{message: "Hello Vue"}})
</script>
</html>

Vue指令

在上述的快速入門中,我們發現了html中輸入了一個沒有學過的屬性v-model,這個就是vue的指定。

指令:HTML標簽中帶有v-前綴的特殊屬性,不同指令具有不同含義。例如:v-if,v-for...

在vue中,通過大量的指令來實現數據綁定到視圖的,所以接下來我們需要學習vue的常用指令,如下表所表示:

指令作用
v-bind為HTML標簽綁定屬性值,如設置href,css樣式等
v-model為表單元素上創建雙向數據綁定
v-on為HTML標簽綁定事件
v-if條件性的渲染某元素,判定為true時渲染,否則不渲染
v-else
v-else-if
v-show根據條件展示某元素,區別在于切換的是display屬性的值
v-for

列表渲染,遍歷容器的元素或者對象的屬性

v-bind和v-model

我們首先來學習v-bind指令和v-model指令。

指令作用
v-bind為HTML標簽綁定屬性值,如設置 href , css樣式等
v-model

在表單元素上創建雙向數據綁定

● v-bind:為HTML標簽綁定屬性值,如設置href,css樣式等。當vue對象中的數據模型發生變化時,標簽的屬性值會隨之發生變化。

接下來我們通過代碼來演示。

首先我們在VS Code中創建名為13. Vue-指令-v-bind和v-model.html的文件,然后準備好如下代碼:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Vue-指令-v-bind</title><script src="js/vue.js"></script>
</head>
<body><div id="app"><a >鏈接1</a><a >鏈接2</a><input type="text" ></div>
</body>
<script>//定義Vue對象new Vue({el: "#app", //vue接管區域data:{url: "https://www.baidu.com"}})
</script>
</html>

在上述的代碼中,我們需要給<a>標簽的href屬性賦值,并且值應該來自于vue對象的數據模型中的url變量。所以編寫如下代碼:

<a v-bind:href="url">鏈接1</a>

在上述的代碼中,v-bind指令是可以省略的,但是:不能省略,所以第二個超鏈接的代碼編寫如下:

<a :href="url">鏈接2</a>

瀏覽器打開,2個超鏈接都可以點擊,然后跳轉到百度去!效果如圖所示:

注意:html屬性前面有:表示采用的vue的屬性綁定!

● v-model:在表單元素上創建雙向數據綁定。什么是雙向?

? ??○ vue對象的data屬性中的數據變化,視圖展示會一起變化

? ??○?視圖數據發生變化,vue對象的data屬性中的數據也會隨著變化。

data屬性中數據變化,我們知道可以通過賦值來改變,但是視圖數據為什么會發生變化呢?只有表單項標簽!所以雙向綁定一定是使用在表單項標簽上的。編寫如下代碼:

<input type="text" v-model="url">

打開瀏覽器,我們修改表單項標簽,發現vue對象data中的數據也發生了變化,如下圖所示:

通過上圖我們發現,我們只是改變了表單數據,那么我們之前超鏈接的綁定的數據值也發生了變化,為什么?

就是因為我們雙向綁定,在視圖發生變化時,同時vue的data中的數據模型也會隨著變化。那么這個在企業開發的應用場景是什么?

雙向綁定的作用:可以獲取表單的數據的值,然后提交給服務器

整體代碼如下:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Vue-指令-v-bind</title><script src="js/vue.js"></script>
</head>
<body><div id="app"><a v-bind:href="url">鏈接1</a><a :href="url">鏈接2</a><input type="text" v-model="url"></div>
</body>
<script>//定義Vue對象new Vue({el: "#app", //vue接管區域data:{url: "https://www.baidu.com"}})
</script>
</html>

v-on

接下來我們學習一下v-on指令。

v-on:用來給html標簽綁定事件的。需要注意的是如下2點:

? ??● v-on語法給標簽的事件綁定的函數,必須是vue對象中聲明的函數

? ??● v-on語法綁定事件時,事件名相比較js中的事件名,沒有on

例如:在js中,事件綁定demo函數

<input onclick="demo()">

vue中,事件綁定demo函數

<input v-on:click="demo()">

接下來我們通過代碼演示。

首先在VS Code中創建名為14.Vue-指令-v-on.html的文件,提前準備如下代碼:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Vue-指令-v-on</title><script src="js/vue.js"></script>
</head>
<body><div id="app"><input type="button" value="點我一下"><input type="button" value="點我一下"></div>
</body>
<script>//定義Vue對象new Vue({el: "#app", //vue接管區域data:{},methods: {}})
</script>
</html>

然后我們需要在vue對象的methods屬性中定義事件綁定時需要的handle()函數,代碼如下:

methods: {handle: function(){alert("你點我了一下...");}
}

然后我們給第一個按鈕,通過v-on指令綁定單擊事件,代碼如下:

<input type="button" value="點我一下" v-on:click="handle()">

同樣,v-on也存在簡寫方式,即v-on:可以替換為@,所以第二個按鈕綁定單擊事件的代碼如下:

<input type="button" value="點我一下" @click="handle()">

完整代碼如下:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Vue-指令-v-on</title><script src="js/vue.js"></script>
</head>
<body><div id="app"><input type="button" value="點我一下" v-on:click="handle()"><input type="button" value="點我一下" @click="handle()"></div>
</body>
<script>//定義Vue對象new Vue({el: "#app", //vue接管區域data:{},methods: {handle: function(){alert("你點我了一下...");}}})
</script>
</html>

v-if和v-show

指令描述
v-if條件性的渲染某元素,判定為true時渲染,否則不渲染
v-if-else
v-else
v-show

根據條件展示某元素,區別在于切換的是display屬性的值

我們直接通過代碼來演示效果。在VS Code中創建名為15.Vue-指令-v-if和v-show.html的文件,提前按準備好如下代碼:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Vue-指令-v-if與v-show</title><script src="js/vue.js"></script>
</head>
<body><div id="app">年齡<input type="text" v-model="age">經判定,為:<span>年輕人(35及以下)</span><span>中年人(35-60)</span><span>老年人(60及以上)</span><br><br></div>
</body>
<script>//定義Vue對象new Vue({el: "#app", //vue接管區域data:{age: 20},methods: {}})
</script>
</html>

其中采用了雙向綁定到age屬性,意味著我們可以通過表單輸入框來改變age的值。

需求是當我們改變年齡時,需要動態判斷年齡的值,呈現對應的年齡的文字描述。年輕人,我們需要使用條件判斷age<=35,中年人我們需要使用條件判斷age>35 && age<60,其他情況是老年人。所以通過v-if指令編寫如下代碼:

年齡<input type="text" v-model="age">經判定,為:
<span v-if="age <= 35">年輕人(35及以下)</span>
<span v-else-if="age > 35 && age < 60">中年人(35-60)</span>
<span v-else>老年人(60及以上)</span>

瀏覽器打開測試效果如下圖:

v-show和v-if的作用效果是一樣的,只是原理不一樣,復制上述html代碼,修改v-if指令為v-show指令,代碼如下:

年齡<input type="text" v-model="age">經判定,為:
<span v-show="age <= 35">年輕人(35及以下)</span>
<span v-show="age > 35 && age < 60">中年人(35-60)</span>
<span v-show="age >= 60">老年人(60及以上)</span>

打開瀏覽器,展示效果如下所示:

可以發現,瀏覽器呈現的效果是一樣的,但是瀏覽器中html源碼不一樣。v-if指令,不滿足條件的標簽代碼直接沒了,而v-show指令中,不滿足條件的代碼依然存在,只是添加了css樣式來控制標簽不去顯示。

完整代碼如下:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Vue-指令-v-if與v-show</title><script src="js/vue.js"></script>
</head>
<body><div id="app">年齡<input type="text" v-model="age">經判定,為:<span v-if="age <= 35">年輕人(35及以下)</span><span v-else-if="age > 35 && age < 60">中年人(35-60)</span><span v-else>老年人(60及以上)</span><br><br>年齡<input type="text" v-model="age">經判定,為:<span v-show="age <= 35">年輕人(35及以下)</span><span v-show="age > 35 && age < 60">中年人(35-60)</span><span v-show="age >= 60">老年人(60及以上)</span></div>
</body>
<script>//定義Vue對象new Vue({el: "#app", //vue接管區域data:{age: 20},methods: {}})
</script>
</html>

v-for

v-for:從名字我們就能看出,這個指令是用來遍歷的。其語法格式如下:

<標簽 v-for="變量名 in 集合數據模型">{{變量名}}
</標簽>

需要注意的是:需要循環那個標簽,v-for指令就寫在那個標簽上。

有時我們遍歷時需要使用索引,那么v-for指令遍歷的語法格式如下:

<標簽 v-for="(變量名,索引變量) in 集合數據模型"><!--索引變量是從0開始,所以要表示序號的話,需要手動的加1-->{{索引變量 + 1}} {{變量名}}
</標簽>

接下來,我們再VS Code中創建名為16.Vue-指令-v-for.html的文件編寫代碼演示,提前準備如下代碼:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Vue-指令-v-for</title><script src="js/vue.js"></script>
</head>
<body><div id="app"></div>
</body>
<script>//定義Vue對象new Vue({el: "#app", //vue接管區域data:{addrs:["北京", "上海", "西安", "成都", "深圳"]},methods: {}})
</script>
</html>

然后分別編寫2種遍歷語法,來遍歷數組,展示數據,代碼如下:

<div id="app"><div v-for="addr in addrs">{{addr}}</div><hr><div v-for="(addr,index) in addrs>{{index + 1}} : {{addr}}</div>
</div>

瀏覽器打開,呈現如下效果:

生命周期

vue的生命周期:指的是vue對象從創建到銷毀的過程。vue的生命周期包含8個階段:每觸發一個生命周期事件,會自動執行一個生命周期方法,這些生命周期方法也被稱為鉤子方法。其完整的生命周期如下圖所示:

狀態階段周期
beforeCreate創建前
created創建后
beforeMount掛載前
mounted掛載完成
beforeUpdate更新前
updated更新后
beforeDestroy銷毀前
destroyed

銷毀后

下圖是Vue官網提供的從創建Vue到效果Vue對象的整個過程及各個階段對應的鉤子函數:

其中我們需要重點關注的是mounted,其他的我們了解即可。

mounted:掛載完成,Vue初始化成功,HTML頁面渲染成功。以后我們一般用于頁面初始化自動的ajax請求后臺數據

我們在VS Code中創建名為18. Vue-生命周期.html的文件編寫代碼來演示效果,提前準備如下代碼:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Vue-指令-v-for</title><script src="js/vue.js"></script>
</head>
<body><div id="app"></div>
</body>
<script>//定義Vue對象new Vue({el: "#app", //vue接管區域data:{},methods: {}})
</script>
</html>

然后我們編寫mounted聲明周期的鉤子函數,與methods同級,代碼如下:

<script>//定義Vue對象new Vue({el: "#app", //vue接管區域data:{},methods: {},mounted () {alert("vue掛載完成,發送請求到服務端")}})
</script>

瀏覽器打開,運行結果如下:我們發現,自動打印了這句話,因為頁面加載完成,vue對象創建并且完成了掛在,此時自動觸發mounted所綁定的鉤子函數,然后自動執行,彈框。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/716791.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/716791.shtml
英文地址,請注明出處:http://en.pswp.cn/news/716791.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

通過XML調用CAPL腳本進行測試(新手向)

目錄 0 引言 1 XML簡介 2 通過XML調用CAPL腳本 0 引言 紀念一下今天這個特殊日子&#xff0c;四年出現一次的29號。 在CANoe中做自動化測試常用的編程方法有CAPL和XML兩種&#xff0c;二者各有各的特色&#xff0c;對于CAPL來說新手肯定是更熟悉一些&#xff0c;因為說到在C…

使用Go Validator在Go應用中有效驗證數據

作為一名開發者&#xff0c;確保Go應用中處理的數據是有效和準確的非常重要。Go Validator是一個開源的數據驗證庫&#xff0c;為Go結構體提供強大且易于使用的數據驗證功能。本篇文章將介紹Go Validator庫的主要特點以及如何在Go應用中使用它來有效驗證數據。 什么是Go Valid…

Vue開發實例(五)修改項目入口頁面布局

修改項目入口 一、創建新入口二、分析代碼&#xff0c;修改入口三、搭建項目主頁面布局1、Container 布局容器介紹2、創建布局3、布局器鋪滿屏幕4、創建Header頁面5、加入Aside、Main和Footer模塊 一、創建新入口 創建新的入口&#xff0c;取消原來的HelloWorld入口 參考代碼…

劍指offer刷題記錄Day2 07.數組中重復的數字 ---> 11.旋轉數組的最小數字

名人說&#xff1a;莫道桑榆晚&#xff0c;為霞尚滿天。——劉禹錫&#xff08;劉夢得&#xff0c;詩豪&#xff09; 創作者&#xff1a;Code_流蘇(CSDN)&#xff08;一個喜歡古詩詞和編程的Coder&#x1f60a;&#xff09; 目錄 1、重建二叉樹①代碼實現&#xff08;帶注釋&am…

【重溫設計模式】職責鏈模式及其Java示例

職責鏈模式的介紹 在開發過程中&#xff0c;我們經常會遇到這樣的問題&#xff1a;一個請求需要經過多個對象的處理&#xff0c;但是我們并不知道具體由哪個對象來處理&#xff0c;或者說&#xff0c;我們希望由接收到請求的對象自己去決定如何處理或者是將請求傳遞給下一個對…

CSS 選擇器的常見用法

這里CSS選擇器主要分為以下這幾種&#xff1a;1. 標簽選擇器 2. class選擇器 3. id選擇器 4. 復合選擇器 5. 通配符選擇器 CSS 選擇器的主要功能就是選中??指定的標簽元素. 選中了元素, 才可以設置元素的屬性. 1.標簽選擇器 <style>p{color: red;} </style> &…

表單控件上的事件

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>光標聚焦和失焦事件</title><style type"text/css">.text{color: red;font-size: 12px;}</style> </head> <bod…

【深度學習筆記】計算機視覺——錨框

錨框 目標檢測算法通常會在輸入圖像中采樣大量的區域&#xff0c;然后判斷這些區域中是否包含我們感興趣的目標&#xff0c;并調整區域邊界從而更準確地預測目標的真實邊界框&#xff08;ground-truth bounding box&#xff09;。 不同的模型使用的區域采樣方法可能不同。 這里…

吳恩達deeplearning.ai:正則化對于偏方差的影響制定用于性能評估的基準

以下內容有任何不理解可以翻看我之前的博客哦&#xff1a;吳恩達deeplearning.ai專欄 這節我們看看正則化系數 文章目錄 以線性回歸為例交叉驗證誤差對于確定 λ \lambda λ的作用 指定用于性能評估的基準語音識別的例子 以線性回歸為例 讓我們舉一個例子&#xff1a; 模型&am…

Outlook郵箱IMAP密碼怎么填寫?賬戶設置?

Outlook郵箱IMAP密碼是什么&#xff1f;Outlook如何設置IMAP&#xff1f; 許多用戶會選擇通過IMAP協議將郵箱與各種郵件客戶端進行連接。而在設置過程中&#xff0c;填寫IMAP密碼是必不可少的一步。那么&#xff0c;Outlook郵箱的IMAP密碼應該如何填寫呢&#xff1f;接下來&am…

【Linux】深入理解ls命令

&#x1f34e;個人博客&#xff1a;個人主頁 &#x1f3c6;個人專欄&#xff1a;Linux ?? 功不唐捐&#xff0c;玉汝于成 目錄 前言 正文 基本用法 常用選項 示例 高級用法 結語 我的其他博客 前言 在 Linux 系統中&#xff0c;ls 命令是一個強大而又基礎的工具&am…

高刷顯示器 - HKC VG253KM

&#x1f525;&#x1f525; 今天來給大家揭秘一款電競神器 - HKC VG253KM 高刷電競顯示器&#xff01;這款顯示器可是有著雄鷹展翅般的設計靈感&#xff0c;背后的大鵬展翅鷹翼圖騰讓人過目難忘。那么&#xff0c;這款顯示器到底有哪些過人之處呢&#xff1f;一起來看看吧&…

【MySQL】基于Docker搭建MySQL一主二從集群

本文記錄了搭建mysql一主二從集群&#xff0c;這樣的一個集群master為可讀寫&#xff0c;slave為只讀。過程中使用了docker&#xff0c;便于快速搭建單體mysql。 1&#xff0c;準備docker docker的安裝可以參考之前基于yum安裝docker的文章[1]。 容器相關命令[2]。 查看正在…

如何系統的學習Python——Python的基本語法

學習Python的基本語法是入門的第一步&#xff0c;以下是一些常見的基本語法概念&#xff1a; 注釋&#xff1a; 用#符號來添加單行注釋&#xff0c;或使用三引號(或""")來添加多行注釋。 # 這是一個單行注釋 這是 多行 注釋 變量和數據類型&#xff1a; 變量用…

Pod和容器設計模式

為什么需要 Pod&#xff1b; Pod 的實現機制&#xff1b; 詳解容器設計模式。 一、為什么需要 Pod 容器的基本概念 現在來看第一個問題&#xff1a;為什么需要 Pod&#xff1f;我們知道 Pod 是 Kubernetes 項目里面一個非常重要的概念&#xff0c;也是非常重要的一個原子調…

144. 二叉樹的前序遍歷

給你二叉樹的根節點 root &#xff0c;返回它節點值的 前序 遍歷。 示例 1&#xff1a; 輸入&#xff1a;root [1,null,2,3] 輸出&#xff1a;[1,2,3]示例 2&#xff1a; 輸入&#xff1a;root [] 輸出&#xff1a;[]示例 3&#xff1a; 輸入&#xff1a;root [1] 輸出&am…

java方法

目錄 方法的定義 方法的命名規則 方法的調用與重載 方法調用實例 方法的重載 變量的作用域 算法中常見的方法 1&#xff1a;gcd&#xff08;求兩個整數中的最大公約數&#xff09; 2&#xff1a;lcm&#xff08;求兩個整數的最小公倍數&#xff09; 3:判斷一個整數是否…

SpringCloud(18)之Sleuth +Zipkin鏈路追蹤

一、Zipkin介紹 Zipkin是一個開放源代碼分布式的跟蹤系統&#xff0c;它可以幫助收集服務的時間數據&#xff0c;以解決微服務架構中的延遲問 題&#xff0c;包括數據的收集、存儲、查找和展現。每個服務向zipkin報告計時數據&#xff0c;zipkin會根據調用關系通 過Zipkin UI…

LeetCode: 數組中的第K個最大元素

問題描述 在未排序的數組中找到第k個最大的元素。請注意&#xff0c;你需要找的是數組排序后的第k個最大的元素&#xff0c;而不是第k個不同的元素。 解題思路 解決這個問題有多種方法&#xff0c;下面是幾種常見的解題策略&#xff1a; 排序后選擇: 將數組排序&#xff0c…

ProChat 如何接入 WebSocket

WebSocket是一種在單個TCP連接上進行全雙工通信的協議&#xff0c;允許客戶端和服務器之間進行雙向實時通信。與Server-Sent Events (SSE)類似&#xff0c;WebSocket也能實現實時數據推送&#xff0c;但其功能更為強大且靈活。 全雙工通信&#xff1a;WebSocket不僅允許服務器向…