vue

Vue.js(讀音 /vju?/, 類似于 view) 是一套構建用戶界面的漸進式框架。

Vue 只關注視圖層灾搏, 采用自底向上增量開發(fā)的設計挫望。

Vue 的目標是通過盡可能簡單的 API 實現(xiàn)響應的數(shù)據綁定和組合的視圖組件。

1.1. Vue 的基本認識

1.1.1. 官網

1)英文官網: https://vuejs.org/

2)中文官網: https://cn.vuejs.org/

1.1.2. 介紹描述

1)漸進式 JavaScript 框架

2)作者: 尤雨溪(一位華裔前 Google 工程師)

3)作用: 動態(tài)構建用戶界面

1.1.3. Vue 的特點

1)遵循 MVVM 模式

2)編碼簡潔, 體積小, 運行效率高, 適合移動/PC 端開發(fā)

3)它本身只關注 UI, 可以輕松引入 vue 插件或其它第三方庫開發(fā)項目

1.1.4. 與其它前端 JS 框架的關聯(lián)

1)借鑒 angular 的模板和數(shù)據綁定技術

2)借鑒 react 的組件化和虛擬 DOM 技術

1.1.5. Vue 擴展插件

1)vue-cli: vue 腳手架

2)vue-resource(axios): ajax 請求

3)vue-router: 路由

4)vuex: 狀態(tài)管理

5)vue-lazyload: 圖片懶加載

6)vue-scroller: 頁面滑動相關

7)mint-ui: 基于 vue 的 UI 組件庫(移動端)

8)element-ui: 基于 vue 的 UI 組件庫(PC 端)

9)它本身只關注 UI, 可以輕松引入 vue 插件或其它第三方庫開發(fā)項目

1.2. Vue 的基本使用

1.2.1. 編碼

<div  id="app">
    <input  type="text"  v-model="username">
    <p>Hello,  {{username}}</p>
</div>

<script  type="text/javascript"  src="../js/vue.js"></script>
<script  type="text/javascript"> 
    new  Vue({
        el:  '#app', 
        data:  {
            username:  'vue'
        }
    })
</script>

1.2.2. 使用 vue 開發(fā)者工具調試

安裝vue-devtools.crx(v_4.1.3)

1.2.3. 理解 Vue 的 MVVM

01_MVVM.png

1.3. 模板語法

1.3.1. 模板的理解

1)動態(tài)的 html 頁面

2)包含了一些 JS 語法代碼

a.雙大括號表達式

b.指令(以 v-開頭的自定義標簽屬性)

1.3.2. 雙大括號表達式

1)語法: {{exp}}

2)功能: 向頁面輸出數(shù)據

3)可以調用對象的方法

1.3.3. 指令一: 強制數(shù)據綁定

1)功能: 指定變化的屬性值

2)完整寫法:

v-bind:xxx='yyy'    //yyy 會作為表達式解析執(zhí)行

3)簡潔寫法:

:xxx='yyy'

1.3.4. 指令二: 綁定事件監(jiān)聽

1)功能: 綁定指定事件名的回調函數(shù)

2)完整寫法:

v-on:keyup='xxx'
v-on:keyup='xxx(參數(shù))' v-on:keyup.enter='xxx'

3)簡潔寫法:

@keyup='xxx' @keyup.enter='xxx'

1.4. 計算屬性和監(jiān)視

1.4.1. 計算屬性

1)在 computed 屬性對象中定義計算屬性的方法

2)在頁面中使用{{方法名}}來顯示計算的結果

1.4.2. 監(jiān)視屬性

1)通過通過 vm 對象的$watch()或 watch 配置來監(jiān)視指定的屬性

2)當屬性變化時, 回調函數(shù)自動調用, 在函數(shù)內部進行計算

1.4.3. 計算屬性高級

1)通過 getter/setter 實現(xiàn)對屬性數(shù)據的顯示和監(jiān)視

2)計算屬性存在緩存, 多次讀取只執(zhí)行一次 getter 計算

1.5. class 與 style 綁定

1.5.1. 理解

1)在應用界面中, 某個(些)元素的樣式是變化的

2)class/style 綁定就是專門用來實現(xiàn)動態(tài)樣式效果的技術

1.5.2. class 綁定

1):class='xxx'

2)表達式是字符串: 'classA'

3)表達式是對象: {classA:isA, classB: isB}

4)表達式是數(shù)組: ['classA', 'classB']

1.5.3. style 綁定

1):style="{ color: activeColor, fontSize: fontSize + 'px' }"

2)其中 activeColor/fontSize 是 data 屬性

1.6. 條件渲染

1.6.1. 條件渲染指令

1)v-if 與 v-else

2)v-show

1.6.2. 比較 v-if 與 v-show

3)如果需要頻繁切換 v-show 較好

4)當條件不成立時, v-if 的所有子節(jié)點不會解析

1.7. 列表渲染

1.7.1. 列表顯示指令

數(shù)組: v-for / index

對象: v-for / key

1.7.2. 列表的更新顯示

刪除 item

替換 item

1.7.3. 列表的高級處理

列表過濾

列表排序

1.8. 事件處理

1.8.1. 綁定監(jiān)聽:

1)v-on:xxx="fun"

2)@xxx="fun"

3)@xxx="fun(參數(shù))"

4)默認事件形參: event

5)隱含屬性對象: $event

1.8.2. 事件修飾符

1).prevent : 阻止事件的默認行為 event.preventDefault()

2).stop : 停止事件冒泡 event.stopPropagation()

1.8.3. 按鍵修飾符

1).keycode : 操作的是某個 keycode 值的鍵

2).keyName : 操作的某個按鍵名的鍵(少部分)

1.9. 表單輸入綁定

1.9.1. 使用 v-model 對表單數(shù)據自動收集

1)text/textarea

2)checkbox

3)radio

4)select

1.10. Vue 實例生命周期

1.10.1. 生命周期流程圖

02_lifecycle.png

1.10.2. vue 生命周期分析

1)初始化顯示

*beforeCreate()

*created()

*beforeMount()

*mounted()

2)更新狀態(tài): this.xxx = value

*beforeUpdate()

*updated()

3)銷毀 vue 實例: vm.$destory()

*beforeDestory()

*destoryed()

1.10.3. 常用的生命周期方法

1)created()/mounted(): 發(fā)送 ajax 請求, 啟動定時器等異步任務

2)beforeDestory(): 做收尾工作, 如: 清除定時器

1.11. 過渡&動畫

1.11.1. vue 動畫的理解

1)操作 css 的 trasition 或 animation

2)vue 會給目標元素添加/移除特定的 class

3)過渡的相關類名

xxx-enter-active: 指定顯示的 transition

xxx-leave-active: 指定隱藏的 transition

xxx-enter/xxx-leave-to: 指定隱藏時的樣式

[圖片上傳失敗...(image-8fdcbb-1538225396526)]

1.11.2. 基本過渡動畫的編碼

1)在目標元素外包裹<transition name="xxx"></transition>

2)定義 class 樣式

指定過渡樣式: transition

指定隱藏時的樣式: opacity/其它

1.12. 過濾器

1.12.1. 理解過濾器

1)功能: 對要顯示的數(shù)據進行特定格式化后再顯示

2)注意: 并沒有改變原本的數(shù)據, 可是產生新的對應的數(shù)據

1.12.2. 定義和使用過濾器

1)定義過濾器

Vue.filter(filterName, function(value[,arg1,arg2,...]){
    // 進行一定的數(shù)據處理
    return newValue
})

2)使用過濾器

<div>{{myData | filterName}}</div>
<div>{{myData | filterName(arg)}}</div>

1.13. 內置指令與自定義指令

1.13.1. 常用內置指令

1)v:text : 更新元素的 textContent

2)v-html : 更新元素的 innerHTML

3)v-if : 如果為 true, 當前標簽才會輸出到頁面

4)v-else: 如果為 false, 當前標簽才會輸出到頁面

5)v-show : 通過控制 display 樣式來控制顯示/隱藏

6)v-for : 遍歷數(shù)組/對象

7)v-on : 綁定事件監(jiān)聽, 一般簡寫為@

8)v-bind : 強制綁定解析表達式, 可以省略 v-bind

9)v-model : 雙向數(shù)據綁定

10)ref : 指定唯一標識, vue 對象通過$els 屬性訪問這個元素對象

11)v-cloak : 防止閃現(xiàn), 與 css 配合: [v-cloak] { display: none }

1.13.2. 自定義指令

1)注冊全局指令

Vue.directive('my-directive', function(el, binding){ el.innerHTML = binding.value.toupperCase()
})

2)注冊局部指令

directives : {
    'my-directive' : {
        bind (el, binding) {
            el.innerHTML = binding.value.toupperCase()
        }
    }
}

3)使用指令

v-my-directive='xxx'

1.14. 自定義插件

1.14.1. 說明

1)Vue 插件是一個包含 install 方法的對象

2)通過 install 方法給 Vue 或 Vue 實例添加方法, 定義全局指令等

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末狂窑,一起剝皮案震驚了整個濱河市媳板,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌泉哈,老刑警劉巖蛉幸,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異丛晦,居然都是意外死亡奕纫,警方通過查閱死者的電腦和手機割捅,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進店門田巴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來饮睬,“玉大人蛮原,你說我怎么就攤上這事喂江≌崽#” “怎么了怀酷?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵须教,是天一觀的道長煤率。 經常有香客問我仰冠,道長,這世上最難降的妖魔是什么蝶糯? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任洋只,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘识虚。我一直安慰自己肢扯,他們只是感情好,可當我...
    茶點故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布担锤。 她就那樣靜靜地躺著蔚晨,像睡著了一般。 火紅的嫁衣襯著肌膚如雪肛循。 梳的紋絲不亂的頭發(fā)上铭腕,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天,我揣著相機與錄音多糠,去河邊找鬼累舷。 笑死,一個胖子當著我的面吹牛夹孔,可吹牛的內容都是我干的被盈。 我是一名探鬼主播,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼搭伤,長吁一口氣:“原來是場噩夢啊……” “哼只怎!你這毒婦竟也來了?” 一聲冷哼從身側響起闷畸,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤尝盼,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后佑菩,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡裁赠,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年殿漠,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片佩捞。...
    茶點故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡绞幌,死狀恐怖,靈堂內的尸體忽然破棺而出一忱,到底是詐尸還是另有隱情莲蜘,我是刑警寧澤,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布帘营,位于F島的核電站票渠,受9級特大地震影響,放射性物質發(fā)生泄漏芬迄。R本人自食惡果不足惜问顷,卻給世界環(huán)境...
    茶點故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧杜窄,春花似錦肠骆、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至扫外,卻和暖如春莉钙,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背畏浆。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工胆胰, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人刻获。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓蜀涨,卻偏偏與公主長得像,于是被迫代替她去往敵國和親蝎毡。 傳聞我的和親對象是個殘疾皇子厚柳,可洞房花燭夜當晚...
    茶點故事閱讀 44,577評論 2 353

推薦閱讀更多精彩內容

  • # 傳智播客vue 學習## 1. 什么是 Vue.js* Vue 開發(fā)手機 APP 需要借助于 Weex* Vu...
    再見天才閱讀 3,536評論 0 6
  • 1.安裝 可以簡單地在頁面引入Vue.js作為獨立版本,Vue即被注冊為全局變量沐兵,可以在頁面使用了别垮。 如果希望搭建...
    Awey閱讀 11,014評論 4 129
  • 這篇筆記主要包含 Vue 2 不同于 Vue 1 或者特有的內容,還有我對于 Vue 1.0 印象不深的內容扎谎。關于...
    云之外閱讀 5,048評論 0 29
  • 有人說毁靶,大多數(shù)二十幾歲的年輕人胧奔,除了時間之外,一無所有预吆。迷茫又焦慮的混日子是他們最真實的生活狀態(tài)龙填。 每個人都會經歷...
    危笑天閱讀 3,844評論 29 104
  • 我以為會走到盡頭,但是真的能走下去嗎拐叉?
    明天tomorrow明閱讀 225評論 0 0