Vue3基礎-模板語法


一、methods方法綁定this

1.1問題一:methods中為什么不能使用箭頭函數?

我們在methods中要使用data返回對象中的數據:

  • 那么這個this是必須有值的,並且應該可以通過this獲取到data返回對象中的數據

那么我們這個this能不能是window呢?

  • 不可以是 window,因為 window 中我們無法獲取到data返回對象中的數據;
  • 但是如果我們使用箭頭函數,那么這個 this 就會是 window 了;

為什么是window呢?

  • 這里涉及到箭頭函數使用 this 的查找規則,它會在自己的上層作用域中來查找 this
  • 最終剛好找到的是script作用於中的this,所以就是window;

this到底是如何查找和綁定的呢?
以下鏈接專門詳細的講解了this的綁定規則;

https://mp.weixin.qq.com/s/hYm0JgBI25grNG_2sCRlTA;

認真學習之后你絕對對this的綁定一清二楚;

1.2 問題二:不使用箭頭函數的情況下,this到底指向什么?

事實上Vue的源碼當中就是對methods中的所有函數進行了遍歷,並且通過bind綁定了this:

 

 

二、VSCode代碼片段

我們在前面練習Vue的過程中,有些代碼片段是需要經常寫的,我們再VSCode中我們可以生成一個代碼片段,方便我們快速生成。
VSCode中的代碼片段有固定的格式,所以我們一般會借助於一個在線工具來完成。
具體的步驟如下:

  • 第一步,復制自己需要生成代碼片段的代碼;
  • 第二步,https://snippet-generator.app/在該網站中生成代碼片段;
  • 第三步,在VSCode中配置代碼片段;

過程:

mac

  

 

 

 window

 

 

三、模板語法

React的開發模式:

  • React使用的 jsx,所以對應的代碼都是編寫的類似於js的一種語法;
  • 之后通過Babel將jsx編譯成React.createElement 函數調用;

Vue也支持jsx的開發模式(后續有時間也會講到):

  • 但是大多數情況下,使用基於HTML的模板語法;
  • 在模板中,允許開發者以聲明式的方式將DOM和底層組件實例的數據綁定在一起;
  • 在底層的實現中,Vue將模板編譯成虛擬DOM渲染函數,這個我會在后續給大家講到;

四、Mustache雙大括號語法

如果我們希望把數據顯示到模板(template)中,使用最多的語法是“Mustache”語法(雙大括號) 的文本插值。

  • 並且我們前端提到過,data 返回的對象是有添加到 Vue 的響應式系統中;
  • data中的數據發生改變時對應的內容也會發生更新
  • 當然,Mustache中不僅僅可以是data中的屬性,也可以是一個JavaScript的表達式

另外這種用法是錯誤的:

 

 

 

 

 五、指令

基本同vue2

不熟悉的幾個點

1、v-on參數傳遞

當通過methods中定義方法,以供@click調用時,需要注意參數問題:
情況一:如果該方法不需要額外參數,那么方法后的()可以不添加。

  • 但是注意:如果方法本身中有一個參數,那么會默認將原生事件event參數傳遞進去

情況二:如果需要同時傳入某個參數,同時需要event時,可以通過$event傳入事件。

 

2、v-cloak

這個指令保持在元素上直到關聯組件實例結束編譯。

  • 和CSS 規則如[v-cloak] { display: none } 一起用時,這個指令可以隱藏未編譯的Mustache 標簽直到組件實例准備完畢。

 

 <div> 不會顯示,直到編譯結束。

3、template元素

因為v-if是一個指令,所以必須將其添加到一個元素上:

  • 但是如果我們希望切換的是多個元素呢?
  • 此時我們渲染div,但是我們並不希望div這種元素被渲染;
  • 這個時候,我們可以選擇使用template;

template元素可以當做不可見的包裹元素,並且在v-if上使用,但是最終template不會被渲染出來:

  • 有點類似於小程序中的block

 

v-show和v-if的區別

首先,在用法上的區別:

  • v-show是不支持template;
  • v-show不可以和v-else一起使用;

其次,本質的區別:

  • v-show元素無論是否需要顯示到瀏覽器上,它的DOM實際都是有渲染的,只是通過CSS的display屬性來進行切換;
  • v-if當條件為false時,其對應的原生壓根不會被渲染到DOM中;

開發中如何進行選擇呢?

  • 如果我們的原生需要在顯示和隱藏之間頻繁的切換,那么使用v-show;
  • 如果不會頻繁的發生切換,那么使用v-if;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM