Vue文檔

一. vue簡(jiǎn)介

  1. 傳統(tǒng)前端開發(fā)模式(MVP)
    MVP 全稱:Model-View-Presenter ;MVP 是從經(jīng)典的模式MVC演變而來
  • Model:模型層妆毕,負(fù)責(zé)提供數(shù)據(jù)
  • View:視圖層慎玖,負(fù)責(zé)顯示。
  • Controller/Presenter:控制器笛粘,負(fù)責(zé)邏輯的處理
MVP模式.png
  1. Vue 的MVVM模式
    MVVM是Model-View-ViewModel的簡(jiǎn)寫趁怔。它本質(zhì)上就是MVC 的改進(jìn)版。MVVM 就是將其中的View 的狀態(tài)和行為抽象化薪前,讓我們將視圖 UI 和業(yè)務(wù)邏輯分開润努。
    MVVM(Model-View-ViewModel)框架的由來便是MVP(Model-View-Presenter)模式與WPF結(jié)合的應(yīng)用方式時(shí)發(fā)展演變過來的一種新型架構(gòu)框架。它立足于原有MVP框架并且把WPF的新特性糅合進(jìn)去示括,以應(yīng)對(duì)客戶日益復(fù)雜的需求變化铺浇。


    MVVM模式.png

二. Vue 簡(jiǎn)單了解

  • 組件創(chuàng)建
    通過new Vue({})接管元素,進(jìn)行Vue處理垛膝。
    通過Vue.component({})創(chuàng)建組件
  • 簡(jiǎn)單的組件間傳值和函數(shù)處理鳍侣。
    父組件向子組件傳值,通過v-bind傳值
    子組件接受父組件的傳值吼拥,通過props接受
    通過methods進(jìn)行事件處理倚聚。
v-model //數(shù)據(jù)的雙向綁定

v-on //處理用戶輸入

v-for //條件與循環(huán)
v-if //條件與循環(huán)

v-bind //聲明式渲染

三. Vue的生命周期函數(shù)

  1. 生命周期函數(shù),就是vue實(shí)例在某一個(gè)時(shí)間點(diǎn)會(huì)自動(dòng)執(zhí)行的函數(shù)凿可。
  2. vue 的模板語法
v-text  //和{{}}一樣
v-html //不會(huì)轉(zhuǎn)義 <h1/>等標(biāo)簽

四. vue基礎(chǔ)語法

1. 模板語法

插值
  • 文本
    數(shù)據(jù)綁定最常見的形式就是使用“Mustache”語法 (雙大括號(hào)) 的文本插值:
    <span>Message: {{ msg }}</span>
    v-once //執(zhí)行一次性的插值
  • 原始HTML
    v-html //絕不要對(duì)用戶提供的內(nèi)容使用插值惑折,容易導(dǎo)致XSS攻擊
指令

指令 (Directives) 是帶有 v- 前綴的特殊特性。

  • 參數(shù)
    一些指令能夠接收一個(gè)“參數(shù)”,在指令名稱之后以冒號(hào)表示惨驶。
v-bind
v-on
  • 動(dòng)態(tài)參數(shù)
  • 縮寫
v-bind:herf="url" //縮寫 :href="url"
v-on:click="doSomething" //縮寫 :@click="doSomething"

2. 計(jì)算屬性和偵聽器

計(jì)算屬性

模板內(nèi)的表達(dá)式非常便利白热,但是設(shè)計(jì)它們的初衷是用于簡(jiǎn)單運(yùn)算的。在模板中放入太多的邏輯會(huì)讓模板過重且難以維護(hù)粗卜。
所以屋确,對(duì)于任何復(fù)雜邏輯,你都應(yīng)當(dāng)使用計(jì)算屬性休建。

  • 計(jì)算屬性緩存vs方法
    計(jì)算屬性是基于它們的響應(yīng)式依賴進(jìn)行緩存的乍恐。只在相關(guān)響應(yīng)式依賴發(fā)生改變時(shí)它們才會(huì)重新求值。
  • 計(jì)算屬性vs偵聽屬性
    Vue 提供了一種更通用的方式來觀察和響應(yīng) Vue 實(shí)例上的數(shù)據(jù)變動(dòng):偵聽屬性测砂。
  • 計(jì)算屬性的setter
    計(jì)算屬性默認(rèn)只有 getter 茵烈,不過在需要時(shí)你也可以提供一個(gè) setter :
偵聽器

雖然計(jì)算屬性在大多數(shù)情況下更合適,但有時(shí)也需要一個(gè)自定義的偵聽器砌些。這就是為什么 Vue 通過 watch 選項(xiàng)提供了一個(gè)更通用的方法呜投,來響應(yīng)數(shù)據(jù)的變化。當(dāng)需要在數(shù)據(jù)變化時(shí)執(zhí)行異步或開銷較大的操作時(shí)存璃,這個(gè)方式是最有用的仑荐。

3. Class與Style綁定

綁定HTML Class

操作元素的 class 列表和內(nèi)聯(lián)樣式是數(shù)據(jù)綁定的一個(gè)常見需求。因?yàn)樗鼈兌际菍傩宰荻晕覀兛梢杂?v-bind 處理它們:只需要通過表達(dá)式計(jì)算出字符串結(jié)果即可粘招。不過,字符串拼接麻煩且易錯(cuò)偎球。因此洒扎,在將 v-bind 用于 class 和 style 時(shí),Vue.js 做了專門的增強(qiáng)衰絮。表達(dá)式結(jié)果的類型除了字符串之外袍冷,還可以是對(duì)象或數(shù)組。

  • 對(duì)象語法
    v-bind:class="{ active: isActive, 'text-danger': hasError }"
  • 數(shù)組語法
    <div v-bind:class="[activeClass, errorClass]"></div>
  • 用在組件上
    當(dāng)在一個(gè)自定義組件上使用 class 屬性時(shí)猫牡,這些類將被添加到該組件的根元素上面胡诗。這個(gè)元素上已經(jīng)存在的類不會(huì)被覆蓋。
綁定內(nèi)聯(lián)樣式
  • 對(duì)象語法
    v-bind:style 的對(duì)象語法十分直觀——看著非常像 CSS淌友,但其實(shí)是一個(gè) JavaScript 對(duì)象煌恢。CSS 屬性名可以用駝峰式 (camelCase) 或短橫線分隔 (kebab-case,記得用引號(hào)括起來) 來命名:
  • 數(shù)組語法
  • 自動(dòng)添加前綴
  • 多重值

4. 條件渲染

v-if

v-if指令用于條件性地渲染一塊內(nèi)容震庭。這塊內(nèi)容只會(huì)在指令的表達(dá)式返回 truthy 值的時(shí)候被渲染症虑。

  • <template>元素上使用v-if條件渲染分組
  • v-else
  • v-else-if
  • key管理可復(fù)用的元素
v-show

v-show 只是簡(jiǎn)單地切換元素的 CSS 屬性 display。

v-ifv-show

有本質(zhì)的區(qū)別:一般來說归薛,v-if 有更高的切換開銷,而 v-show 有更高的初始渲染開銷。因此主籍,如果需要非常頻繁地切換习贫,則使用 v-show 較好;如果在運(yùn)行時(shí)條件很少改變千元,則使用 v-if 較好苫昌。

v-if 和v-for

當(dāng) v-if 與 v-for 一起使用時(shí),v-for 具有比 v-if 更高的優(yōu)先級(jí)幸海。
不推薦同時(shí)使用祟身。

5. 列表渲染

v-for

v-for 指令基于一個(gè)數(shù)組來渲染一個(gè)列表。v-for 指令需要使用 item in items 形式的特殊語法物独。
在 v-for 塊中袜硫,我們可以訪問所有父作用域的屬性。v-for 還支持一個(gè)可選的第二個(gè)參數(shù)挡篓,即當(dāng)前項(xiàng)的索引婉陷。<div v-for="(item, index) in items"></div>

在v-for里使用對(duì)象

你也可以用 v-for 來遍歷一個(gè)對(duì)象的屬性。
<div v-for="(value, name, index) in object"></div>

維護(hù)狀態(tài)

只適用于不依賴子組件狀態(tài)或臨時(shí) DOM 狀態(tài) (例如:表單輸入值) 的列表渲染輸出官研。

數(shù)組更新機(jī)制
  • 變異方法
    Vue 將被偵聽的數(shù)組的變異方法進(jìn)行了包裹秽澳,所以它們也將會(huì)觸發(fā)視圖更新。
push() //返回新長(zhǎng)度
unshift() //返回新長(zhǎng)度
pop() //返回刪除的元素
shift() //返回刪除的元素
splice() 
sort()
reverse()
  • 替換數(shù)組

變異方法戏羽,顧名思義担神,會(huì)改變調(diào)用了這些方法的原始數(shù)組。相比之下始花,也有非變異 (non-mutating method) 方法龙优,例如 filter()劲适、concat() 和 slice() 。它們不會(huì)改變?cè)紨?shù)組,而總是返回一個(gè)新數(shù)組恭朗。當(dāng)使用非變異方法時(shí),可以用新數(shù)組替換舊數(shù)組:

  • 注意事項(xiàng)

由于 JavaScript 的限制被啼,Vue 不能檢測(cè)以下數(shù)組的變動(dòng):
1.當(dāng)你利用索引直接設(shè)置一個(gè)數(shù)組項(xiàng)時(shí)曾撤,例如:vm.items[indexOfItem] = newValue
當(dāng)你修改數(shù)組的長(zhǎng)度時(shí),例如:vm.items.length = newLength

四. vue 簡(jiǎn)單使用

  • 計(jì)算屬性和偵聽器
    (1)溜族、 計(jì)算屬性
    computed:{} //緩存機(jī)制讹俊,提高執(zhí)行效率
    當(dāng)模板渲染中遇到帶有邏輯計(jì)算的顯示,可以考慮使用計(jì)算屬性煌抒。
    緩存機(jī)制舉例:a = b + c; a依賴于b和c仍劈,只有在b和c變更的時(shí)候,a才會(huì)變寡壮。

計(jì)算屬性默認(rèn)只有 getter 贩疙,不過在需要時(shí)你也可以提供一個(gè) setter :

(2)讹弯、偵聽器
watch:{}

  • vue 的樣式綁定
    1、對(duì)象
    2这溅、數(shù)組
  • vue條件渲染
v-if
v-else
v-else-if
v-show
  • v-if 指令用于條件性地渲染一塊內(nèi)容组民。這塊內(nèi)容只會(huì)在指令的表達(dá)式返回 truthy 值的時(shí)候被渲染。
  • Vue 會(huì)盡可能高效地渲染元素悲靴,通常會(huì)復(fù)用已有元素而不是從頭開始渲染臭胜。這么做除了使 Vue 變得非常快之外癞尚,還有其它一些好處耸三。例如,如果你允許用戶在不同的登錄方式之間切換
  • vue列表渲染
    1浇揩、變異方法 //針對(duì)數(shù)組
    2仪壮、改變引用 //針對(duì)數(shù)組和對(duì)象
    3、templete占位符

  • vue的set方法 用于對(duì)象數(shù)據(jù)更新
    Vue.set(vm.userInfo, 'name', '李四')

五. vue 高級(jí)使用

  1. 組件使用注意點(diǎn)
  • 在使用<ul></ul>,<tr></tr>,<select></select>等元素時(shí)临燃,如果需要在這些標(biāo)簽里嵌套子組件使用睛驳。html5編碼規(guī)則不允許在這些標(biāo)簽寫其他組件,恰當(dāng)使用is="row"可以解決膜廊。
  • 關(guān)于vue實(shí)例中乏沸。vue的data使用。vue根實(shí)例的data類型為對(duì)象爪瓜,子組件中的data必須為函數(shù)蹬跃。目的:子組件可能為多個(gè)地方使用,data函數(shù)返回單獨(dú)的數(shù)據(jù)铆铆,而非多個(gè)組件共用同一個(gè)data蝶缀。
  • vue的ref的使用。vue不建議直接操作dom薄货,需要的時(shí)候可用ref翁都。可用在標(biāo)簽和組件上谅猾。
  1. 父子組件數(shù)據(jù)傳值
  • 父組件向子組件傳遞數(shù)據(jù)柄慰,通過屬性的形式。和react一樣税娜,都是單向數(shù)據(jù)流坐搔。
  • 子組件向父組件傳值,通過事件的形式敬矩,this.$emit(evn, params)
  1. 組件參數(shù)校驗(yàn)與非props特性
  • 組件參數(shù)校驗(yàn):子組件接受父組件的傳值概行,通過props可以限制傳值的類型』≡溃或者更復(fù)雜的凳忙,長(zhǎng)度等等业踏。屬性值不會(huì)顯示在最外層標(biāo)簽之上。
  • 非props特性:子組件沒有props接受消略,不能使用堡称。屬性值會(huì)顯示在最外層標(biāo)簽之上。
  1. 給組件綁定元素事件
  • 可以和react一致的只有艺演。在組件名稱上定義事件,組件內(nèi)部使用桐臊。不方便胎撤。
  • 可以使用@click.native="handleClick",直接調(diào)用組件內(nèi)部的原生dom函數(shù)断凶。
  1. 非父子組件之間的傳值
  • vuex等數(shù)據(jù)管理框架
  • Bus/總線/發(fā)布訂閱模式/觀察者模式
  1. vue中使用插槽(slot)
    可以更方便的向子組件中插入dom元素
  2. vue的作用域插槽
    slot-scope
  3. 動(dòng)態(tài)組件與v-once指令


    vue動(dòng)畫.png

六. vue 實(shí)戰(zhàn)

  1. 路由
    路由:就是根據(jù)網(wǎng)址的不同伤提,返回不同的內(nèi)容給用戶。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末认烁,一起剝皮案震驚了整個(gè)濱河市肿男,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌却嗡,老刑警劉巖舶沛,帶你破解...
    沈念sama閱讀 219,039評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異窗价,居然都是意外死亡如庭,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門撼港,熙熙樓的掌柜王于貴愁眉苦臉地迎上來坪它,“玉大人,你說我怎么就攤上這事帝牡⊥保” “怎么了?”我有些...
    開封第一講書人閱讀 165,417評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵靶溜,是天一觀的道長(zhǎng)开瞭。 經(jīng)常有香客問我,道長(zhǎng)墨技,這世上最難降的妖魔是什么惩阶? 我笑而不...
    開封第一講書人閱讀 58,868評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮扣汪,結(jié)果婚禮上断楷,老公的妹妹穿的比我還像新娘。我一直安慰自己崭别,他們只是感情好冬筒,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,892評(píng)論 6 392
  • 文/花漫 我一把揭開白布恐锣。 她就那樣靜靜地躺著,像睡著了一般舞痰。 火紅的嫁衣襯著肌膚如雪土榴。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,692評(píng)論 1 305
  • 那天响牛,我揣著相機(jī)與錄音玷禽,去河邊找鬼。 笑死呀打,一個(gè)胖子當(dāng)著我的面吹牛矢赁,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播贬丛,決...
    沈念sama閱讀 40,416評(píng)論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼撩银,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了豺憔?” 一聲冷哼從身側(cè)響起额获,我...
    開封第一講書人閱讀 39,326評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎恭应,沒想到半個(gè)月后抄邀,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,782評(píng)論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡暮屡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,957評(píng)論 3 337
  • 正文 我和宋清朗相戀三年撤摸,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片褒纲。...
    茶點(diǎn)故事閱讀 40,102評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡准夷,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出莺掠,到底是詐尸還是另有隱情衫嵌,我是刑警寧澤,帶...
    沈念sama閱讀 35,790評(píng)論 5 346
  • 正文 年R本政府宣布彻秆,位于F島的核電站楔绞,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏唇兑。R本人自食惡果不足惜酒朵,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,442評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望扎附。 院中可真熱鬧蔫耽,春花似錦、人聲如沸留夜。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至鳖眼,卻和暖如春黑毅,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背钦讳。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工矿瘦, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人蜂厅。 一個(gè)月前我還...
    沈念sama閱讀 48,332評(píng)論 3 373
  • 正文 我出身青樓匪凡,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親掘猿。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,044評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 一唇跨、課程介紹 https://vuejs.lipengzhou.com/ 內(nèi)容 使用 Vue.js 系列技術(shù)棧進(jìn)行...
    她說東京很熱閱讀 290評(píng)論 0 0
  • 2019-10-22 vue文檔 一稠通、課程介紹 https://vuejs.lipengzhou.com/ 內(nèi)容 ...
    欣簡(jiǎn)書閱讀 557評(píng)論 0 1
  • vue文檔 一、課程介紹 https://vuejs.lipengzhou.com/ 內(nèi)容 使用 Vue.js 系...
    chang_遇見緣閱讀 6,987評(píng)論 9 126
  • 計(jì)算屬性和偵聽器 計(jì)算屬性緩存 vs 方法 計(jì)算屬性是基于它們的響應(yīng)式依賴進(jìn)行緩存的买猖。只在相關(guān)響應(yīng)式依賴發(fā)生改變時(shí)...
    陸陸lulu閱讀 383評(píng)論 0 1
  • 寫在前面:本系列博客是我在閱讀Vue官方文檔的筆記改橘,一部分借鑒了官方網(wǎng)站的例子,一部分是我自己所感所想和總結(jié)玉控。本系...
    從小就很瘦閱讀 3,278評(píng)論 0 5