vue-基礎加動態繫結
阿新 • • 發佈:2021-01-10
一. 邂逅Vuejs 基礎
1.1. 認識Vuejs
-
let(變數)/const(常量)
-
字串*數字=NAN
1.2. 安裝Vue
-
CDN引入
開發環境版本,包含了有幫助的命令列警告
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
生產環境版本,優化了尺寸和速度
<script src="https://cdn.jsdelivr.net/npm/vue"></script>
-
下載引入
-
npm安裝
- 後續通過webpack和CLI的使用,我們使用該方式。
1.3. Vue的初體驗
- Hello Vuejs
- mustache -> 體驗vue響應式
- {}中包含了el屬性:該屬性決定了這個Vue物件掛載到哪一個元素上,很明顯,我們這裡是掛載到了id為app的元素上
- {}中包含了data屬性:該屬性中通常會儲存一些資料
這些資料可以是我們直接定義出來的,比如像上面這樣。
也可能是來自網路,從伺服器載入的。
- Vue列表展示
- v-for
- 後面給陣列追加元素的時候, 新的元素也可以在介面中渲染出來
- Vue計數器小案例
- 事件監聽: click -> methods
1.4. Vue中的MVVM
1.5. 建立Vue時, options可以放那些東西
-
el:
- 型別:string | HTMLElement
作用:決定之後Vue例項會管理哪一個DOM。
- 型別:string | HTMLElement
-
data:
- 型別:Object | Function (元件當中data必須是一個函式)
作用:Vue例項對應的資料物件。
- 型別:Object | Function (元件當中data必須是一個函式)
-
methods:
- 型別:{ [key: string]: Function }
作用:定義屬於Vue的一些方法,可以在其他地方呼叫,也可以在指令中使用。
- 型別:{ [key: string]: Function }
-
生命週期函式
二.插值語法
- mustache語法
- v-once
- 該指令後面不需要跟任何表示式(比如之前的v-for後面是由跟表示式的)
該指令表示元素和元件(元件後面才會學習)只渲染一次,不會隨著資料的改變而改變。
- 該指令後面不需要跟任何表示式(比如之前的v-for後面是由跟表示式的)
- v-html
- 如果我們直接通過{{}}來輸出,會將HTML程式碼也一起輸出。
但是我們可能希望的是按照HTML格式進行解析,並且顯示對應的內容。
如果我們希望解析出HTML展示
可以使用v-html指令
該指令後面往往會跟上一個string型別
會將string的html解析出來並且進行渲染
- 如果我們直接通過{{}}來輸出,會將HTML程式碼也一起輸出。
- v-text
- v-text作用和Mustache比較相似:都是用於將資料顯示在介面中
v-text通常情況下,接受一個string型別
- v-text作用和Mustache比較相似:都是用於將資料顯示在介面中
- v-pre: {{}}
- v-pre用於跳過這個元素和它子元素的編譯過程,用於顯示原本的Mustache語法。
比如下面的程式碼:
第一個h2元素中的內容會被編譯解析出來對應的內容
第二個h2元素中會直接顯示{{message}}
- v-pre用於跳過這個元素和它子元素的編譯過程,用於顯示原本的Mustache語法。
- v-cloak: 斗篷
- 在某些情況下,我們瀏覽器可能會直接顯然出未編譯的Mustache標籤。
三. v-bind
- 前面我們學習的指令主要作用是將值插入到我們模板的內容當中。
- 但是,除了內容需要動態來決定外,某些屬性我們也希望動態來繫結。
- 比如動態繫結a元素的href屬性
- 比如動態繫結img元素的src屬性
- 但是,除了內容需要動態來決定外,某些屬性我們也希望動態來繫結。
- 這個時候,我們可以使用v-bind指令:
- 作用:動態繫結屬性
- 縮寫::
- 預期:any (with argument) | Object (without argument)
- 引數:attrOrProp (optional)
3.1. v-bind繫結基本屬性
- v-bind:src
- :href
- 在開發中,有哪些屬性需要動態進行繫結呢?
還是有很多的,比如圖片的連結src、網站的連結href、動態繫結一些類、樣式等等
3.2. v-bind動態繫結class
-
繫結方式:物件語法
-
物件語法: 物件語法的含義是:class後面跟的是一個物件。
-
用法一:直接通過{}繫結一個類
<h2 :class="{'active': isActive}">Hello World</h2>
-
用法二:也可以通過判斷,傳入多個值
<h2 :class="{'active': isActive, 'line': isLine}">Hello World</h2>
-
用法三:和普通的類同時存在,並不衝突
注:如果isActive和isLine都為true,那麼會有title/active/line三個類 <h2 class="title" :class="{'active': isActive, 'line': isLine}">Hello World</h2>
-
用法四:如果過於複雜,可以放在一個methods或者computed中
注:classes是一個計算屬性 <h2 class="title" :class="classes">Hello World</h2>
-
-
繫結方式:陣列語法
-
陣列語法的含義是:class後面跟的是一個數組。
-
陣列語法有下面這些用法:
- 用法一:直接通過{}繫結一個類
<h2 :class="['active']">Hello World</h2>
- 用法二:也可以傳入多個值
<h2 :class=“[‘active’, 'line']">Hello World</h2>
- 用法三:和普通的類同時存在,並不衝突
注:會有title/active/line三個類 <h2 class="title" :class=“[‘active’, 'line']">Hello World</h2>
- 用法四:如果過於複雜,可以放在一個methods或者computed中
注:classes是一個計算屬性 <h2 class="title" :class="classes">Hello World</h2>
-
3.3. v-bind動態繫結style
- 我們可以利用v-bind:style來繫結一些CSS內聯樣式。
- 在寫CSS屬性名的時候,比如font-size
- 我們可以使用駝峰式 (camelCase) fontSize
- 或短橫線分隔 (kebab-case,記得用單引號括起來) ‘font-size’
-
物件語法:
-
:style="{color: currentColor, fontSize: fontSize + 'px'}"
-
style後面跟的是一個物件型別
- 物件的key是CSS屬性名稱
- 物件的value是具體賦的值,值可以來自於data中的屬性
-
-
陣列語法:
-
<div v-bind:style="[baseStyles, overridingStyles]"></div>
-
style後面跟的是一個數組型別
- 多個值以,分割即可
-
四. 計算屬性
- 案例一: firstName+lastName
- 我們知道,在模板中可以直接通過插值語法顯示一些data中的資料。
但是在某些情況,我們可能需要對資料進行一些轉化後再顯示,或者需要將多個數據結合起來進行顯示
比如我們有firstName和lastName兩個變數,我們需要顯示完整的名稱。
但是如果多個地方都需要顯示完整的名稱,我們就需要寫多個{{firstName}} {{lastName}}
- 我們知道,在模板中可以直接通過插值語法顯示一些data中的資料。
- 案例二: books -> price