天天看點

Vue.js - 核心

【序号】表示後期插入的知識點~

1、Hello World

2、雙向綁定

文法:v-model

簡介:v-model 是一個模闆指令 input裡面value的内容輸入什麼,下面content的内容就會顯示出來。

Vue.js - 核心

3、資料綁定

文法:{{}}

【1】、屬性綁定

文法:v-bind ~ :

簡介:title='title' 後面的title不是個字元串 而是js的表達式   (new 執行個體下面的title)。

Vue.js - 核心

4、MVP & MVVM

4.1、MVP

Vue.js - 核心
Vue.js - 核心

4.2、MVVM

Vue.js - 核心
Vue.js - 核心

Ps:VM層屬于Vue層(資料自動綁定),面向資料開發;而傳統的MVP中的P層主要是面向DOM開發;用MVVM模式可以減少30%的代碼量甚至可以達到70%。

5、元件

5.0、Vue元件 & Vue執行個體

在Vue裡 ,每一個Vue元件,都是一個Vue執行個體。

Vue執行個體有的功能,Vue元件都同樣擁有。

如果一個vue執行個體裡面沒有定義template,那麼這個執行個體會把它對應的挂載點下的所有内容當作模闆。

Vue.js - 核心

5.1、全局元件(注釋部分) & 局部元件

Vue.js - 核心

5.2、元件即執行個體(new Vue({}))

5.3、元件定義的新标簽,有時不能直接使用,比如:<table>裡面認識<tr>,若我們寫個它識别不出的,哪怕我們還是寫在table裡面,但解析的時候仍有BUG,是以這時直接寫個我們想要渲染後的效果的标簽,配合“is”屬性。

5.4、data必須是函數,不能是對象。

5.5、模仿DOM操作,需要配合“ref”屬性。

5.6、父子元件之間的傳資料

Vue.js - 核心
Vue.js - 核心

Ps:一般情況下,父元件可以傳遞資料到子元件(單向),子元件不能修改從父元件而來的變量,不過可以通過data臨時變量來傳遞到父元件。

【4、父子元件通信過程】

(1)父元件通過prop向子元件傳值,子元件獲得父元件傳來的内容和索引。

(2)子元件通過$emit向父元件抛出觸發事件名稱(delete)和觸發事件的list索引值。

(3)父元件通過監聽對應事件名稱(@delete)觸發函數handleDelete。函數通過子元件抛出的索引值對應删除list。

Vue.js - 核心
Vue.js - 核心

5.7、元件參數檢驗 + props + 非props 特性

Vue.js - 核心
Vue.js - 核心

props:不僅可以用數組來接收,也可以用對象來接收;渲染後不會顯示content=”xxx”。

Vue.js - 核心

非props:可以直接操作要顯示的資料,渲染後會顯示content=”xxx”。一般非props不常用。

5.8、元件綁定原生事件

傳統方式:

Vue.js - 核心

Ps:emit針對自定義事件;而在元件内部 @click 屬于原生事件。

簡寫方式:

Vue.js - 核心

5.9、非父子元件通信

Vue.js - 核心
Vue.js - 核心

5.10、内容插槽

Vue.js - 核心

5.11、作用域插槽

Vue.js - 核心

Ps:在這裡的<template>和slot-scope是固定寫法。

5.12、動态元件 & v-once 指令

Vue.js - 核心

Ps:注釋的代碼性能更好,因為不需要每次都删除再增貼。

5.13、template 屬性

Vue.js - 核心
Vue.js - 核心

Ps:挂載點:指的是el标記的。

模闆:既可以寫在挂載點内部,也可以寫在js的template裡面。

挂載點裡面的内容稱之為模闆。

6、生命周期

Vue.js - 核心

Ps:橢圓白底矩形的方法是不用寫在methods裡面的,與methods同層次級别。

7、計算屬性(一)

文法:computed:{}

提示:

7.1、支援緩存,隻要跟他的相關值改變才會更新,否則一直使用緩存。

7.2、若一個業務邏輯可以用watch、methods、computed實作的話,優先選擇computed,因為代碼少,而且性能最好。

7、計算屬性(二)

文法:computed:{

xxx:{

set: function(){},

get: function(){}

}

}

提示:

7.1、支援緩存,隻要跟他的相關值改變才會更新,否則一直使用緩存。

7.2、set函數裡面需要自己split來分割分别指派。

8、監聽器

文法:watch:{}

提示:

8.1、支援緩存,隻要跟他監聽的變量改變才會更新。

【2】計算屬性 & 監聽器

Vue.js - 核心

9、樣式綁定

9.1、:style

9.2、:class

Ps:value用數組或{}(對象)來表示,用對象時,注意用駝峰命名法,比如:font-size => fontSize。

10、條件渲染

10.1、v-show

提示:

10.1.1、如果為false,相當于display:none; 和v-if一樣會整個DOM都消失了;從性能上來看v-show性能更好。

10.2、v-if / v-else-if / v-else

提示:

10.2.1、中間不能有其他與if/else不相關的元素,if/else必須緊接着一起。

10.3、key

提示:

10.3.1、因為Vue會盡可能的用已加載好的結構來提高性能,但是有時也會出現BUG,比如:input元素,此時,就要用key來區分,避免亂用别人的DOM(髒資料)。

【3、v-if & v-show】

  • v-if 為false時,DOM元素在HTML裡不存在(原來存在的話,現在就被删除),自然而然在流結構上面不存在。
  • v-show 為false時,DOM元素在HTML裡存在,但是 display:none 而且在流結構上面仍然屬于不存在。

11、清單渲染

文法:v-for=”(item, index, key) of list”

文法::key=”item.id”(不推薦使用”index”,因為性能不好)

Vue.js - 核心

提示:

11.1、使用下标改資料,資料成功改變,但不會實時渲染;隻有調用上面注釋的API(變異方法)改變資料或者改變引用位址(指派新的對象或數組)才會實時渲染。

11.2、<template>相當于小程式中的<block>可節省一個<div>。

11.3、Vue.set 或 vm.$set 也可以實作實時渲染

Vue.js - 核心

【4、for of & for in】

ES6 - for of & for in 差別

12、CSS動畫原理

Vue.js - 核心
Vue.js - 核心
Vue.js - 核心

Ps1:如果<transition>屬性name=”xxx”,則class為“.xxx-enter-active”其他類似,預設為“.v-…”。

Ps2:leave:準備離開時調用;enter:準備出現時調用。

13、Animate.css庫

Vue.js - 核心

Ps:支援自定義動畫。

Vue.js - 核心

Ps:支援自定義class。

Vue.js - 核心

Ps:必須使用自定義的模式,如“enter-active-class”來使用;并且加上“animated”,剩下的效果自己選擇。其實Animate.css庫隻是@keyframes的封裝罷了。

14、Animate.css & 自定義同時使用

Vue.js - 核心
Vue.js - 核心

Ps1:appear 出場時調用。

Ps2:type 選擇以自定義的時間為基準。

Ps3::duration 固定出現和消失的基準時間,若一樣,則可以“:duration=‘毫秒’”。

15、結合動畫Velocity.js使用

傳統方式:

Vue.js - 核心
Vue.js - 核心

Ps:leave類似。

Velocity.js方式:

Vue.js - 核心
Vue.js - 核心

16、多個元素或元件的過渡

方法一:

Vue.js - 核心

方法二:

Vue.js - 核心
Vue.js - 核心

17、清單過渡

Vue.js - 核心

Ps:高亮選中的為<transition-group>的原理部分。

Vue.js - 核心
Vue.js - 核心

18、動畫封裝

Vue.js - 核心
Vue.js - 核心

19、項目初始化

Vue.js - 核心
Vue.js - 核心
Vue.js - 核心
Vue.js - 核心

Ps:項目更新到碼雲上。

20、單頁應用 & 多頁應用

Vue.js - 核心

Ps:單頁應用,把目前頁DOM删除掉,再把需要的渲染出來。

Vue.js - 核心

21、axios

URL代理

Vue.js - 核心

22、keep-alive

22.1、多了一個 activated 生命周期

22.2、多了一個 deactivated 生命周期

22.3、exclude 屬性

實戰:每個地方的首頁是不一樣的,如果我第一次選A地,發送一次請求;如果第二次還選A地,不發送請求;如果選非A地,發送一次請求。

23、Vue + Vue-Cli + Webpack + npm

Vue.js - 核心

build 目錄下放置的是項目的webpack配置檔案,可以不動

config 是針對線上環境和開發環境的配置檔案,也可以不動

node_modules 指的是項目的依賴

src 指的是源代碼放置的目錄

static 放置的是靜态的資源

src中的main.js檔案是整個項目的入口檔案

vue-cli 提供了一種新的vue的編碼文法:單檔案元件(一個.vue檔案中包含了一個元件裡必須的所有内容)

vue-cli 的優勢:

23.1、可以使用es6。

23.2、一個元件是一個.vue的檔案所定義的,實作了元件的封裝。

(在安裝該工具之前需要安裝npm和node)

24、單檔案元件開發模式

  • template下面隻能有一個最外層根标簽。
  • 在v-cli腳手架中,data不再是一個對象,而是一個函數。

附:

繼續閱讀