Vue 2.0和3.0筆記

Vue 3

關于組件

今天回顧了下2.0關于組件的內容,3.0定義組件的方式多了一種就是通過單文件組件(Single-File Component)的方式將Vue的模板,邏輯和樣式放到一個文件中,2.0則不同,它是將模板放到一個屬性中,而不是在一個標簽里,這樣可讀性更好,應該也更方便測試。

但代價就是需要使用構建工具,可以把它想象成一個IDE工具,只不過是命令行的形式,需要付出一定的學習成本,我看Visual Studio 2022使用的就是Vite,把它集成進了IDE,即使我不會用Vite也能構建Vue項目,很方便。

也有不依賴構建工具的替代方案petite-vue

Vue對象的參數叫做配置對象

用來顯示文本的{{ }}叫做插值語法,是寫在標簽體之間

在Chrome瀏覽器上按shift+F5強制刷新頁面

在Vue2.0的DevTool中可以下載Vue的開發者工具,Chrome和FireFox的都支持

Vue 2

1、想要使用Vue,首先要創建一個Vue實例,同時要在html中聲明一個容器,容器與實例通過選擇器進行綁定

2、容器與實例是一一綁定的關系

3、真實開發中只有一個Vue實例,并且會配合組件一起使用

4、{{}}中要寫js表達式,它會自動讀取到data中的所有屬性

v-bind: 可以簡寫為 :

指令語法

1、寫在標簽體內部,用于解析標簽的屬性,內容,事件

數據綁定

1、單向綁定(v-bind):數據只能從data流向頁面

2、雙向綁定(v-model):數據不僅可以從data流向頁面,也可以從頁面流向data

備注:雙向綁定一般應用于表單控件中

v-model:value可以簡寫為v-model

el的兩種語法

1、new Vue的時候配置el屬性

2、在Vue實例中調用$mount(""),指定元素

data的兩種語法

1、對象式,data作為屬性,值是一個對象

2、函數式,data作為屬性,值是一個函數

沒有用到組件的時候兩種都可以,如果用了組件,就只能用函數式,否則會報錯。

MVVM模型

M - Model,對應data中的數據

V - View,對應模板,el指定的容器

VM - ViewModel,對應Vue實例對象,起到雙向綁定的作用

事件處理

1、使用v-on:xxx或@xxx,xxx是事件名

2、在methods配置的函數是Vue所管理的,所以this指向的是實例對象

3、@click和@click($event)是同一個意思,如果要傳遞自定義的參數,又想使用event對象,可以這樣寫
?

事件修飾符

在事件的后面使用點語法,并帶上特定的字符串,可以讓事件更具多樣化。

常用的幾個:

1、prevent,阻止事件的默認行為,等同于在事件中使用了event.preventDefault();

2、stop,阻止事件的冒泡,等同于在事件中使用了event.stopPropagation();

3、once,讓事件只觸發一次,等同于記錄了觸發次數并在調用前比較了下

鍵盤事件

為了便于操作,有時候軟件需要綁定常用的鍵盤事件,輔助輸入,Vue也做了相應的事情

1、Vue中常用事件的別名:

回車 -> enter;

刪除 -> delete;

退出 -> esc;

空格 -> space;

換行 -> tab(特殊,需要配合keydown使用)

2、未提供的別名,可以使用原始的key值綁定,但要寫成短橫線命名的方式。

3、系統修飾鍵,ctrl,alt,shift,win在keydown和keyup事件里表現形式不同,在keyup中需按下系統鍵+其他鍵,才能觸發;在keydown事件中,只需按下系統鍵就會觸發。

4、也可以使用keycode去綁定鍵盤按鍵,但不推薦,因為這種方式已經被官方廢棄,而且不同的鍵盤的按鍵的keycode還不統一。

計算屬性

它是通過已有的屬性計算得來

底層原理是借助了Object.definepreperty方法提供的getter和setter

get函數什么時候執行?

1、初次加載時執行

2、當依賴的屬性發生改變時,重新執行

計算屬性與methods相比,由于有緩存機制所以效率更高,多次調用同一個計算屬性只執行一次,多次調用同一個methods會計算多次。

如果計算屬性要被修改,還需要定義set函數,在set中去修改依賴的屬性。

監視屬性watch

1、當監視的屬性的值發生變化時,它的回調函數立即被調用

2、監視的屬性必須存在

3、監視的兩種寫法:(1)在配置屬性中帶入watch配置 (2)通過vue的實例調用$watch函數

在watch中配置immediate為true,頁面初始化時立即監視。

深度監視

如果需要監視多層級的數據,需要用到深度監視,使用方法是在監視屬性中配置deep屬性。

計算屬性與監視屬性的區別

1、computed能完成的功能,watch都可以完成

2、watch能完成的功能,computed不一定能完成,比如watch可以進行異步操作,因為它沒有返回值

兩個關于函數聲明的小原則

1、所有被vue管理的函數,最好寫成普通函數,因為這樣寫this是vue實例或組件實例

2、所有不被vue管理的函數(例如:定時器回調函數,ajax回調函數),最好寫成箭頭函數,這樣寫的this是vue實例或組件實例。

綁定樣式

綁定class樣式的三種寫法

寫法:class=xxx,xxx可以是字符串,數組,對象

1、字符串寫法,適用于類名不確定,需要動態指定

2、數組寫法,適用于類型數量不確定,名字也不確定

3、對象寫法,適用于數量確定,名字確定,但要動態指定用不用

style樣式

:style="{fontSize:xxx}",xxx是動態值。

:style="[a, b]", a和b是樣式對象。

條件渲染

有兩種方式進行條件渲染:v-show和v-if

使用v-show時,未顯示的元素仍然會顯示在頁面上,只不過display的樣式被設置為none,所以在需要頻繁切換元素的場景下效率更高。

而使用v-if時,未顯示的元素壓根不會顯示在頁面上,但它的優勢在于可以配合使用v-else-if,v-else進行比較復雜的邏輯判斷,需要注意的是,在使用它們的時候不能被“打斷”,否則會出錯。

列表渲染

列表渲染使用v-for指令,在需要列表展示的元素上寫元素,語法如下:v-for="(item, index) in list" :key=xxx。

它可以遍歷:數組,對象,字符串(用的少),指定次數(用的少)

在實際開發中,應使用唯一標示來修飾key,否則在逆序添加,刪除等破壞順序的操作后會引起顯示的問題。

收集表單數據

當控件為輸入框時,v-model收集的就是value值,不用額外操作。

當控件為單選框時,v-model收集的還是value值,但需要給每個單選框配置value值。

當控件為多選框時,v-model收集的還是value值,不但要給每個多選框配置value值,還需要將data中的承載數據的值的類型設置為數組。(除非是只有一個多選框,這樣就不用配置,因為只需要收集true或false,這是它的默認行為)

v-model還有三個點語法的修飾符:

v-model.number:自動進行數值轉換

v-model.lazy:延遲數據的收集,在輸入時就會發起網絡請求的場景會有點用

v-model.trim:自動進行刪除前后空格

過濾器

對要顯示的數據進行格式化的處理,它適用于一些簡單的邏輯。

語法:

1、注冊過濾器有兩種形式,第一種是局部過濾器,只能在當前Vue實例中使用,格式為:

new Vue({

filters:{

filterName(value){}

}

})

還有一種是全局過濾器,可以在其他的Vue實例中使用,格式為:

Vue.filter("filterName", function(value){

});

2、使用過濾器,語法為:{{ target | filterName }},這種用的比較多,還有一種是在v-bind中使用::x = "target | filterName"

備注:多個過濾器可以并聯使用。

內置指令

v-text指令

它的作用是往控件中填充文本。

與插值語法不同的是,它會完全替換文本的內容,插值語法則不會,所以插值語法更加靈活。

v-html指令

它的作用是往控件中填充html內容。

由于可以填充html所以存在安全性問題,容易導致XSS攻擊。

不要在用戶可以輸入的地方使用它。

v-cloak指令

這個指令沒有值,它的作用是在網絡條件不佳的情況下,不顯示讓用戶摸不著頭腦的插值語法。所以用于優化性能。

v-once指令

這個指令也沒有值,它的作用是讓加載的內容只初始化一次,避免每次都更新它。

v-pre指令

添加了該指令的標簽會跳過Vue的編譯過程。

可利用它跳過沒有插值語法,沒有指令語法的節點,加快編譯速度。

生命周期

它又稱為,生命周期回調函數,生命周期函數,生命周期鉤子。

函數名不可更改,可以在里面寫業務邏輯。

函數內部的this指向vm實例對象或組件實例對象。

目前學到了8個,4對生命周期鉤子,分別是:創建前和已創建,掛載前和已掛載,更新前和已更新,銷毀前和已銷毀。

常用的生命周期鉤子:

1、mounted:發送ajax請求,訂閱消息,啟動定時器,綁定自定義事件等初始化操作

2、beforeDestroy:在銷毀前,應清除定時器,解綁自定義事件,取消消息訂閱

關于銷毀Vue實例

銷毀后自定義事件會失效,但是綁定的DOM事件不會失效。

在beforeDestroy中對數據的操作是無效的,因為不會再觸發更新流程了。

組件

非單文件組件

使用組件的步驟:1、創建組件 2、注冊組件 3、使用組件

1、如何創建組件

使用Vue.extend(options)創建,其中options和new Vue(options)時傳入的參數幾乎一致,區別如下:

  • 無需使用el指定容器id
  • data必須寫成函數,因為寫成函數后再被復用就不會出現重復引用的問題

備注:在聲明組件的配置屬性中使用template配置組件的結構。

2、如何注冊組件

有兩種方式,局部和全局的

局部的方式:在new Vue()中傳遞components選項

全局的方式:Vue.component('組件名', 組件)

3、如何使用組件

在html的容器中,編寫<組件名></組件名>標簽即可

一些細節

1、組件名

一個單詞組成:

第一種寫法(首字母小寫):school

第二種寫法(首字母大寫):School

多個單詞組成:

第一種寫法(帶橫杠):my-school

第二種寫法(大駝峰):MySchool(需要Vue腳手架支持)

備注:

可以在配置項中使用name屬性去定義開發者工具中的組件名

2、關于組件標簽

第一種寫法:<school></school>

第二種寫法:<school/>

備注:如果沒有使用腳手架工具,第二種寫法只會渲染一次

3、簡寫

const school = Vue.extend(options);

可以簡寫成

const school = options;

在開發中簡寫方式更常用哦。

模塊化

    // 模塊化的三種方式// 1、分別暴露export const school = Vue.extend({});// 2、統一暴露const school2 = Vue.extend({})export {school2}// 3、默認暴露const school3 = Vue.extend({})export default school3// 使用默認暴露時有一個優勢,在引入時可以簡寫import XXX from "xxx"// 使用分別暴露和統一暴露時,需要這樣寫import {xxx} from "xxx"// 由于Vue.extend可以省略,可以直接寫配置對象,所以就變成了上述的形式,這里使用了默認暴露的形式export default({name:"School",data(){return {schoolName: "北京大學",schoolAddress: "北京市海淀區"}}});

創建腳手架

1、配置下載鏡像為淘寶的:npm config set registry https://registry.npm.taobao.org

如下系統提示證書過期,還需要執行以下命令,取消SSL認證,npm config set strict-ssl false

2、安裝腳手架Vue-Cli,輸入命令:npm install -g @vue/cli

3、安裝完成后,創建項目,vue create 項目名

4、啟動項目,在創建項目時,腳手架會默認帶入一個Hello Wrold界面,啟動服務:npm run serve,編譯完成后會返回地址。

ref屬性

1、用來給HTML元素或子組件打標簽

2、在獲取它們的時候,HTML元素返回DOM,子組件返回實例對象(VC)

3、使用方式:

打標簽:<h2 ref="xxx">Hello World</h2>

<School ref="yyy"></School>

獲取:this.$refs.xxx或this.$refs.yyy

props配置項

它的工作是將值傳給子組件,在開發中也是很常用的。

1、傳遞數據,定義一個key和value

<Student name="張三"></Student>

如果需要傳遞數值類型,可以這樣寫:<Student :age="18"></Student>,在age前面加一個冒號,表示里面的值是一個表達式

2、子組件接收數據

它有三種方式接收數據(以下都是在配置項中定義的),第一種:

props:["name"]

第二種:props:{

// 限制類型

name:String

}

第三種:props:{

name:{

// 限制類型,是否必填,默認值

type:String,

required:true,

default:""

}

}

備注:props是只讀的,如果對它進行修改會警告,如果業務需求是得進行修改的,可以在data中定義一個MyName屬性,值為name,以后的修改都在MyName中進行就可以。

Scoped樣式

作用:讓組件的樣式局部生效,避免重名帶來的沖突

寫法:<style scoped></style>

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

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

相關文章

前端面試-微前端

1. 什么是微前端&#xff1f;它的核心價值是什么&#xff1f; 答案&#xff1a; 微前端是一種將前端應用拆分為獨立模塊的架構模式&#xff0c;每個模塊可由不同團隊獨立開發、測試、部署和運行。其核心價值包括&#xff1a; 技術棧無關性&#xff1a;支持 React、Vue、Angul…

Axure高保真AI算法訓練平臺

點擊下載《Axure高保真AI算法訓練平臺(.rp) 》 原型效果&#xff1a;https://axhub.im/ax9/69fdf8f2b10b59c3/#g1 摘要 本文介紹了一款功能全面且高效的AI算法訓練平臺&#xff0c;旨在為數據科學家、研究人員和工程師提供從數據準備到模型部署的一站式解決方案。該平臺由四大…

Ubuntu服務器日志滿audit:backlog limit exceeded了會報錯解決方案-Linux 審計系統 (auditd) 工具

auditd 是 Linux 系統中的審計守護進程&#xff0c;負責收集、記錄和監控系統安全相關事件。以下是相關工具及其功能&#xff1a; 核心組件 auditd - 審計守護進程 系統的審計服務主程序 收集系統調用信息并寫入日志文件 通常存儲在 /var/log/audit/audit.log auditctl - 審計控…

Windows10系統RabbitMQ無法訪問Web端界面

項目場景&#xff1a; 提示&#xff1a;這里簡述項目相關背景&#xff1a; 項目場景&#xff1a; 在一個基于 .NET 的分布式項目中&#xff0c;團隊使用 RabbitMQ 作為消息隊列中間件&#xff0c;負責模塊間的異步通信。開發環境為 Windows 10 系統&#xff0c;開發人員按照官…

Qt 的 事件隊列

Qt 的 事件隊列 是其核心事件處理機制之一&#xff0c;用于管理和分發系統與用戶生成的事件&#xff08;如鼠標點擊、鍵盤輸入、定時器、信號槽中的隊列連接等&#xff09;。理解 Qt 的事件隊列對多線程、界面響應以及異步處理尤為關鍵。 一、Qt 的事件處理模型概覽 Qt 是基于…

無人機自主導航與路徑規劃技術要點!

一、自主導航與路徑規劃技術要點 1. 傳感器融合 GPS/北斗定位&#xff1a;提供全局定位&#xff0c;但在室內或遮擋環境下易失效。 慣性測量單元&#xff08;IMU&#xff09;**&#xff1a;通過加速度計和陀螺儀實時追蹤姿態&#xff0c;彌補GPS信號丟失時的定位空缺。 …

Before After:SQL整容級優化

首先說明這個優化有一定提升&#xff0c;但不是我所期望的 我接到一個涉及優化的SQL&#xff0c;具體內容實在太長。而且可能也不利于閱讀。于是我脫敏以及簡化一下。SQL中間大量的充斥著 (select 列名1 from t1 where t1.id t2.id ) A, (select 列名2 from t1 where t1.id …

道可云人工智能每日資訊|首屆世界人工智能電影節在法國尼斯舉行

道可云元宇宙每日簡報&#xff08;2025年4月15日&#xff09;訊&#xff0c;今日元宇宙新鮮事有&#xff1a; 杭州《西湖區打造元宇宙產業高地的扶持意見》發布 杭州西湖區人民政府印發《西湖區打造元宇宙產業高地的扶持意見》。該意見已于4月4日正式施行&#xff0c;有效期至…

JVM 為什么需要即時編譯器?

JVM之所以需要即時編譯器 (JIT Compiler)&#xff0c;是為了提高 Java 程序的執行性能&#xff0c;彌補純解釋器執行的不足。 我們可以從以下幾個角度來分析一下這個問題&#xff1a; 1. 解釋器的性能瓶頸: 逐條解釋的開銷: 解釋器需要逐條讀取 Java 字節碼指令&#xff0c;并…

PromptUp 網站介紹:AI助力,輕松創作

1. 網站定位與核心功能 promptup.net 可能是一個面向 創作者、設計師、營銷人員及藝術愛好者 的AI輔助創作平臺,主打 零門檻、智能化的內容生成與優化。其核心功能可能包括: AI藝術創作:通過輸入關鍵詞、選擇主題或拖放模板,快速生成風格多樣的數字藝術作品(如插畫、海報…

ThingsBoard3.9.1 MQTT Topic(1)

1.網關轉發子設備的遙測信息, Topic:v1/gateway/telemetry { "m1": [{ "mode": "CW", "temperature": 23 }], "m2": [{ "mode": "CW", "temperature": 23 }] } 說明&#xff1a;json格式&a…

React 入門教程:構建第一個 React 應用

本教程將帶你從零開始構建你的第一個 React 應用。我們將創建一個簡單的計數器應用&#xff0c;涵蓋 React 的基本概念和開發流程。 準備工作 在開始之前&#xff0c;請確保你的開發環境滿足以下要求&#xff1a; Node.js (建議使用最新的 LTS 版本) npm 或 yarn (Node.js 安…

vue3中,element-plus中el-input的v-model和value的用法示例

el-input的v-model&#xff0c;邦定響應式變量 <el-col :span"6"><el-form-item label"檢驗類別" prop"verifyType"><el-input v-model"applyAllInfo.applyBasicInfo.verifyTypeName" readonly /></el-form-item…

策略模式隨筆~

若感行文枯燥&#xff0c;請移步至文末Gitee地址中查看源碼自行測試感受策略模式之魅力。 一、策略模式的核心概念 策略模式的定義 定義算法族&#xff0c;封裝每個算法&#xff0c;使其可互換。 核心三要素 Context&#xff1a;上下文&#xff0c;負責接收客戶端請求并委托…

Linux的目錄結構(介紹,具體目錄結構)

目錄 介紹 具體目錄結構 簡潔的目錄解釋 詳細的目錄解釋 介紹 Linux的文件系統是采用級層式的樹狀目錄結構&#xff0c;在此結構的最上層是根目錄“/”。Linux的世界中&#xff0c;一切皆文件&#xff08;比如&#xff1a;Linux會把硬件映射成文件來管理&#xff09; 具體目…

AWS CloudFront加速S3配置跨域

1、點擊分配 源我們就選擇S3–>選擇我們要加速的S3存儲桶 2、創建OAC訪問方式 在我們的來源訪問處–>來源訪問控制設置(推薦)–>選擇創建新的OAC(Create new OAC)–>自定義名字按默認選項保存–>選擇剛剛新創建的OAC 3、選擇查看器的配置 根據具體情況&#x…

進程控制(上)【Linux操作系統】

進程控制 寫時拷貝 本質是一種減少深拷貝的方法 Linux中有很多拷貝的場景都用得上寫時拷貝&#xff0c;下面以創建子進程時的寫時拷貝為例&#xff1a; 子進程被創建的時候&#xff1a; 會繼承父進程的mm_struct和頁表 所以子進程剛剛繼承時&#xff0c;父子進程的代碼和數據…

Flutter 強制橫屏

在 Flutter 中&#xff0c;可以通過設置 SystemChrome 來強制應用橫屏顯示。以下是實現這一功能的詳細步驟和代碼示例&#xff1a; 步驟 1&#xff1a;導入必要的包 確保在文件頂部導入了 services.dart 包&#xff0c;因為 SystemChrome 類位于該包中。 import package:flut…

Git完全指南:從入門到精通版本控制 ------- Git核心命令(6)

Git核心命令完全指南&#xff1a;從入門到高效協作 前言 在軟件開發領域&#xff0c;Git已成為現代版本控制的代名詞。據統計&#xff0c;全球超過90%的開發團隊使用Git進行代碼管理。然而&#xff0c;許多開發者僅停留在基礎命令的機械使用層面&#xff0c;未能真正掌握Git命…

關于Newtonsoft.Json

歷史 Newtonsoft.Json&#xff08;也稱為 Json.NET&#xff09;是由 James Newton - King 開發的一個開源的 JSON 處理庫&#xff0c;它于 2007 年首次發布。在早期&#xff0c;.NET 平臺缺乏一個強大且靈活的 JSON 處理工具&#xff0c;Newtonsoft.Json 應運而生&#xff0c;…