VUE-1:基礎(chǔ)女嘲、指令募狂、數(shù)據(jù)

vue.js

? ??????`vue.js`?是一套用于構(gòu)建用戶界面的漸進式框架


漸進式


Vue?核心

????????-?聲明式渲染

????????-?組件


引入

????????我們還是先通過?\<script\>?的方式來引入?<u>vue</u>

<script?src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>

組件

????????`vue`?的核心功能之一就是組件


組件基本分類

????????-?根組件

????????-?可復(fù)用的功能組件


根組件的創(chuàng)建

????????通過?`vue`?提供的構(gòu)造函數(shù)可以實例化出來一個跟組件實例對象

let?app?=?new?Vue

可復(fù)用的功能組件

????????通過?`Vue`?提供的靜態(tài)方法?`component`?窗口可復(fù)用的功能組件

let?component1?=?Vue.component

????????組件配置選項:https://cn.vuejs.org/v2/api/


組件內(nèi)容渲染

????????渲染一個組件的內(nèi)容可以通過兩種方式來進行

????????????????-?template?選項(模板)

????????????????-?render?選項(函數(shù))


template(模板)

????????type?:?string

????????????????組件的模板結(jié)構(gòu)(HTML)办素,模板內(nèi)容會被?`vue`?進行渲染,生成最終的?`HTML`?內(nèi)容熬尺,并替換占位(掛載)元素


el

????????type?:?string?|?Element

????????????????提供一個在頁面上已存在的?DOM?元素作為?Vue?實例的掛載目標(biāo)摸屠。可以是?CSS?選擇器粱哼,也可以是一個?HTMLElement?實例季二,

????????????????????????-?該選擇只對?`new`?創(chuàng)建的實例有效

????????????????????????-?如果提供?`el`?,但是沒有提供?`template`?揭措,則?`el`?的內(nèi)容講作為?`template`


render函數(shù)

????????type?:?(createElement:?()?=>?VNode)?=>?VNode

????????????????發(fā)揮?`JavaScript`?最大的編程能力胯舷,直接創(chuàng)建?`VNode`?(虛擬dom對象),優(yōu)先級高于?`el`?和?`template`

????????????????????????-?有更強大的編程能力

????????????????????????-?有更高的性能

????????????????????????????????????https://cn.vuejs.org/v2/guide/render-function.html

HTML模板解析成虛擬DOM再解析成DOM元素

使用?$mount?方法延遲?`Vue`?實例的掛載

????????當(dāng)?`Vue`?實例沒有?`el`?選項的時候绊含,它會處于一種?未掛載?的狀態(tài)桑嘶,我們可以通過組件?`Vue`?實例對象的?`$mount`?方法來手動掛載,

????????通過該方式躬充,我們也可以達到延遲?`Vue`?實例的掛載的目的


組件中的數(shù)據(jù)(狀態(tài))

data

????????組件內(nèi)部使用的數(shù)據(jù)逃顶,`data`?是一個對象,`data`?中的值可以中模板中直接訪問

????????????????-?`Vue`?實例組件(根組件)的?`data`?是一個對象

????????????????-?可復(fù)用功能組件的?`data`?必須是一個函數(shù)充甚,且該函數(shù)必須返回一個對象(因為復(fù)用性以政,避免多個組件實例引用同一個對象。

? ? ? ? ? ? ? ? ? 換句話說伴找,組件中使用的數(shù)據(jù)必須是一個對象盈蛮,但是可復(fù)用組件的這個數(shù)據(jù)對象必須通過函數(shù)返回


data?的訪問

????????`data`?數(shù)據(jù)可以直接通過組件實例對象訪問,也可以通過實例對象下的?`$data`?屬性進行訪問

????????????????組件實例對象下有很多的以?`$`?開頭的屬性技矮,這些都是實例對象內(nèi)置的一些屬性和方法抖誉,`vue`?為了區(qū)分數(shù)據(jù)與內(nèi)置屬性方法,

????????????????內(nèi)置的屬性和方法默認都是以?`$`?開始的衰倦,所以我們中數(shù)據(jù)中應(yīng)該避免使用?`$`?開頭的數(shù)據(jù)


模板語法

????????vue?使用了基于?html?的模板語法袒炉,使用聲明式的方式把實例中的數(shù)據(jù)(`data`)與?DOM?進行綁定,`data`?中的數(shù)據(jù)在模板中可以

????????直接使用


Mustache(雙大括號樊零,大胡子)?語法

????????在?vue?中梳杏,我們是通過一對雙大括號把實例中的數(shù)據(jù)渲染到模板內(nèi)容中

插值表達式

????????在?{{????}}?中,我們可以放置表達式值


數(shù)據(jù)到視圖的更新

????????vue?會把??`data`?中的數(shù)據(jù)掛載到實例屬性下,同時對它們進行主動的監(jiān)聽攔截十性,當(dāng)數(shù)據(jù)發(fā)生變化的時候叛溢,重新渲染模板。我們可以

????????通過實例對象對數(shù)據(jù)進行修改


檢測變化的注意事項

????????在?vue3?之前劲适,數(shù)據(jù)的監(jiān)聽是通過?`Object.defineProperty`?方法來實現(xiàn)的楷掉,但是該方法只能監(jiān)聽攔截單個數(shù)據(jù),對于對象新增屬性無法

????????監(jiān)聽攔截霞势。所以烹植,對于數(shù)據(jù)對象中新增的屬性,我們需要調(diào)用?vue?提供的方法來進行處理

擴展

????????通過?`Object.defineProperty`?監(jiān)聽攔截中存在一些問題

????????????????-?屬性新增屬性

????????????????-?數(shù)組方法:push愕贡、pop草雕、shift、unshift固以、splice墩虹、sort、reverse

????????????????-?數(shù)組新增值:[????]

????????????????-?數(shù)組?length?屬性

????????以上的操作中并不會觸發(fā)監(jiān)聽攔截

? ? ? ? ? ? ? ? `vue`?對數(shù)組中的?`push`憨琳、`pop`?等方法進行重新包裝诫钓,所以在?`vue`?中調(diào)用這些方法,可以對數(shù)組的修改進行監(jiān)聽攔截

? ? ? ? ? ? ? ? [https://cn.vuejs.org/v2/guide/list.html#%E5%8F%98%E5%BC%82%E6%96%B9%E6%B3%95-mutation-method]

? ? ? ? ? ? ? ? (https://cn.vuejs.org/v2/guide/list.html#變異方法-mutation-method)


使用?Vue.set?方法添加新數(shù)據(jù)

????????在模板中篙螟,我們使用了一個不存在的數(shù)據(jù)?`user.gender`

????????如果我們通過?`app.user.gender?=?'男'?`的方式來新增菌湃,是不會被?vue?攔截監(jiān)聽處理的,我們需要使用

????????這樣的方式遍略,`set`?方法給?`app.user`??添加?`gender`?屬性的同時惧所,對它進行了?`defineProperty`


指令

????????表達式的值除了可以出現(xiàn)內(nèi)容中,也可以使用在其它位置绪杏,比如:屬性纯路。但是不能使用?`{{????}}`?語法,而是需要?`指令`

????????在?`vue`?中寞忿,指令是一個帶有?`v-`?前綴的屬性,與普通屬性不一樣的地方在于顶岸,指令的值是引號括起來的?`表達式`腔彰,不同的指令有不同

????????的作用,`vue`?內(nèi)置了一些常用的指令辖佣,后期我們還可以自定義屬于自己的指令

????????????????-?內(nèi)容輸出

????????????????-?循環(huán)

????????????????-?邏輯

????????????????-?屬性綁定

????????????????-?事件

????????????????-?其它


內(nèi)容輸出

????????通過?`{{????}}`?我們可以很方便的中模板中輸出數(shù)據(jù)霹抛,但是這種方式會有一個問題,當(dāng)頁面加載渲染比較慢的時候卷谈,頁面中會

????????出現(xiàn)?`{{????}}`?杯拐,`vue`?提供了幾個指令來解決這個問題


指令中的表達式不需要使用?`{{????}}`

v-text(推薦下面的方法)

????????弊端:`v-text`?會填充整個?`innerHTML`,會把整個title填充掉,p再寫數(shù)據(jù)也沒用


v-cloak(這種寫法用的比較多端逼,結(jié)合{{? ??}}和v-text的優(yōu)點)

這樣寫可以避免html加載完前出現(xiàn){{????}}

????????需要配合?css?進行處理


v-html

????????為了防止?`xss`?攻擊朗兵,默認情況下輸出是不會作為?`html`?解析的,通過?`v-html`?可以讓內(nèi)容作為?`html`?進行解析


v-once

????????只渲染元素和組件一次顶滩,后期的更新不再渲染


v-pre

????????忽略這個元素和它子元素內(nèi)容的編譯


邏輯處理

v-show

????????根據(jù)表達式的值(布爾值)余掖,切換元素的顯示與隱藏(display?屬性)

????????????????適用于狀態(tài)切換比較頻繁的情況


v-if

????????根據(jù)表達式的值(布爾值),創(chuàng)建或銷毀元素

????????????????適用于狀態(tài)切換不頻繁的情況


v-else?/?v-else-if

? ??????與?`v-else`?配合


循環(huán)與列表

v-for

????????根據(jù)數(shù)據(jù)循環(huán)渲染?`v-for`?指令所在的元素及其子元素

????????????????可以循環(huán)的數(shù)據(jù):Array?|?Object?|?number?|?string?|?Iterable?(2.6?新增)

? ? ? ? v-for?中也可以使用?of?語法礁鲁,在?vue?中兩者沒有什么區(qū)別


:key

????????默認情況下盐欺,在渲染?`DOM`?過程中使用?原地復(fù)用?,這樣一般情況下會比較高效仅醇,但是對于循環(huán)列表冗美,特別是依賴某種狀態(tài)的列表,

????????會有一些問題析二,我們可以通過?`:key`?屬性粉洼,來給每個循環(huán)節(jié)點添加一個標(biāo)識


屬性綁定

v-bind

????????綁定數(shù)據(jù)(表達式)到指定的屬性上,`<div?v-bind:參數(shù)="值/表達式"></div>`甲抖,這里的參數(shù)就是指定的屬性名稱


縮寫

????????有的一些常用指令會有對應(yīng)的縮寫漆改,`v-bind`?對應(yīng)的縮寫為 `:`


樣式

????????針對樣式屬性,`v-bind`?值有一些特殊的寫法

style

原生普通寫法

v-bind?寫法

對象寫法

數(shù)組寫法


class

原生普通寫法

v-bind?寫法

數(shù)組寫法

對象寫法

????????使用對象寫法准谚,可以根據(jù)值(boolean)動態(tài)添加對應(yīng)的?class


單向數(shù)據(jù)流

????????通過上面的知識點和案例挫剑,我們可以看到,當(dāng)數(shù)據(jù)更新的時候柱衔,頁面視圖就會更新樊破,但是頁面視圖中綁定的元素更新的時候,

????????對應(yīng)的數(shù)據(jù)是不會更新的

????????我們稱為:單向數(shù)據(jù)流?數(shù)據(jù)?->?視圖

????????????????在?vue?中唆铐,還有一種雙向數(shù)據(jù)流綁定的方式


v-model

? ? ? ? 數(shù)據(jù)?`title`?更新哲戚,視圖中?`input`?的?`value`?就會更新。同時艾岂,當(dāng)?input?中的?`value`?更新的時候顺少,數(shù)據(jù)?`title`?也會更新,這就是我們說的

????????數(shù)據(jù)雙向綁定?[與?React?中的受控組件類似]


表單

????????針對一般元素王浴,比如?div脆炎、span、p氓辣、img?等秒裕,采用的是單向綁定:v-bind,只需要把數(shù)據(jù)綁定到視圖中就可以钞啸,但是對于表單這種交互

????????性比較強的元素或組件几蜻,我們一般可能需求雙向綁定喇潘,即:用戶對視圖元素的操作同時更新數(shù)據(jù)

????????????????v-model?在內(nèi)部為不同的輸入元素使用不同的屬性和事件來處理數(shù)據(jù)


`text`?和?`textarea`


`checkbox`?和?`radio`


單選框綁定一個值

? ? 綁定的v3不是value,是單選框的check值


多選框綁定到一個布爾值或數(shù)組


`select`

單選綁定到值梭稚,多選綁定到數(shù)組


指令修飾符

????????一個指令可以包含的內(nèi)容包括:

????????????????-?指令名稱

????????????????-?指令值

????????????????-?指令參數(shù)

????????????????-?指令修飾符


.lazy(懶)

????????取代?`input`?監(jiān)聽?`change`?事件颖低,焦點失去后觸發(fā)

.number

????????輸入字符串轉(zhuǎn)為有效的數(shù)字


.trim

????????輸入首尾空格過濾


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市哨毁,隨后出現(xiàn)的幾起案子枫甲,更是在濱河造成了極大的恐慌,老刑警劉巖扼褪,帶你破解...
    沈念sama閱讀 222,807評論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件想幻,死亡現(xiàn)場離奇詭異,居然都是意外死亡话浇,警方通過查閱死者的電腦和手機脏毯,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,284評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來幔崖,“玉大人食店,你說我怎么就攤上這事∩涂埽” “怎么了吉嫩?”我有些...
    開封第一講書人閱讀 169,589評論 0 363
  • 文/不壞的土叔 我叫張陵,是天一觀的道長嗅定。 經(jīng)常有香客問我自娩,道長,這世上最難降的妖魔是什么渠退? 我笑而不...
    開封第一講書人閱讀 60,188評論 1 300
  • 正文 為了忘掉前任忙迁,我火速辦了婚禮,結(jié)果婚禮上碎乃,老公的妹妹穿的比我還像新娘姊扔。我一直安慰自己,他們只是感情好梅誓,可當(dāng)我...
    茶點故事閱讀 69,185評論 6 398
  • 文/花漫 我一把揭開白布恰梢。 她就那樣靜靜地躺著,像睡著了一般梗掰。 火紅的嫁衣襯著肌膚如雪嵌言。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,785評論 1 314
  • 那天愧怜,我揣著相機與錄音,去河邊找鬼妈拌。 笑死拥坛,一個胖子當(dāng)著我的面吹牛蓬蝶,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播猜惋,決...
    沈念sama閱讀 41,220評論 3 423
  • 文/蒼蘭香墨 我猛地睜開眼丸氛,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了著摔?” 一聲冷哼從身側(cè)響起缓窜,我...
    開封第一講書人閱讀 40,167評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎谍咆,沒想到半個月后禾锤,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,698評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡摹察,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,767評論 3 343
  • 正文 我和宋清朗相戀三年恩掷,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片供嚎。...
    茶點故事閱讀 40,912評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡黄娘,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出克滴,到底是詐尸還是另有隱情逼争,我是刑警寧澤,帶...
    沈念sama閱讀 36,572評論 5 351
  • 正文 年R本政府宣布劝赔,位于F島的核電站誓焦,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏望忆。R本人自食惡果不足惜罩阵,卻給世界環(huán)境...
    茶點故事閱讀 42,254評論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望启摄。 院中可真熱鬧稿壁,春花似錦、人聲如沸歉备。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,746評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蕾羊。三九已至喧笔,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間龟再,已是汗流浹背书闸。 一陣腳步聲響...
    開封第一講書人閱讀 33,859評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留利凑,地道東北人浆劲。 一個月前我還...
    沈念sama閱讀 49,359評論 3 379
  • 正文 我出身青樓嫌术,卻偏偏與公主長得像,于是被迫代替她去往敵國和親牌借。 傳聞我的和親對象是個殘疾皇子度气,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,922評論 2 361

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