我的Vue之旅——Vue初探

寫在前面

? ? ? 知道Vue已經有“一段”時間了,粗枝大葉的了解了點,因為當時資料比較少,正式項目中也沒有開始用到,也就沒怎么去研究。

? ? ? 接下來可能會去用到這個,所以準備去鉆研下。

? ? ? ? 上面的沒啥用,請直接略過。。。

? ? ? ? 官網鏈接:https://cn.vuejs.org/

? ? ? Vue.js是當下很火的一個JavaScript MVVM框架(庫),它是以數據驅動和組件化的思想構建的。我暫時理解為它是一個輕量版的Angular。

? ? ? Vue.js提供了更加簡潔、更易于理解的API,使得我們能夠快速地上手并使用Vue.js。

? ? ? 如果你之前已經習慣了用jQuery操作DOM,學習Vue.js時請先拋開手動操作DOM的思維,因為Vue.js是數據驅動的,你無需手動操作DOM。

? ? ? 它通過一些特殊的HTML語法,將DOM和數據綁定起來。一旦你創建了綁定,DOM將和數據保持同步,每當變更了數據,DOM也會相應地更新。

開啟Vue之旅


Vue是什么?

? ? ? ? 一個MVVM框架(庫)、和angular類似。官網有1.0和2.0兩個版本,2.0對于1.0提高的地方,可以找度娘。。。

Vue優勢

? ? ? ? 簡單、易上手,掌握angular的朋友們,上手Vue就一句話,so easy!


vue的基礎使用

Vue實例

1. 引入vue.js

2. 創建一個vue實例

創建

模板語法

插值

? ? ? ? {{ variable? }} -> 普通變量

? ? ? ? {{* variable }} -> 一次性模板

? ? ? ? {{{ variable }}} -> 轉譯模板

? ? ? ? <input type="text" v-model="variable">? ? v-model? 的模板語法

代碼

? ? ? 通過使用v-once 指令,你也能執行一次性地插值,當數據改變時,插值處的內容不會更新。但請留心這會影響到該節點上所有的數據綁定:

? ? ? ? <span v-once>my Message: {{ msg }}</span>

? ? ? 對于所有的數據綁定, Vue.js 都提供了完全的 JavaScript 表達式支持:

Javascript 表達式

? ? ? 這些表達式會在所屬 Vue 實例的數據作用域下作為 JavaScript 被解析。有個限制就是,每個綁定都只能包含單個表達式。語句、流程控制等不生效。

指令

? ? ? 指令(Directives)是帶有v-前綴的特殊屬性。指令屬性的值預期是單一 JavaScript 表達式(除了v-for)。指令的職責就是當其表達式的值改變時相應地將某些行為應用到 DOM 上。

vue事件

? ? ? ? v-on:事件名

? ? ? ? v-on:mouseenter/mouseleave

? ? ? ? v-on:click? —> 縮略 @click? ? ("v-on:"可以縮略為"@")

? ? ? ? v-on:contextmenu/keydown

? ? ? ? v-on:keyup.鍵碼/enter/delete/left/right/top/bottom/ctrl.v/prevent.stop(阻止默認事件)

。。。

事件

? ? ? tips:@contextmenu.stop.prevent = "method"中,stop、prevent前面的點( . )為修飾符。

v-for 循環

1. ?<li v-for="value in variable"></li> ?—> array

2. <li v-for="(key,value) in json"></li> ?—> ?json

1.極簡留言板

? ? ? ? ↑ ?不添加 ?track-by="$index" ?循環中command相同的內容不重復顯示

json
網頁中的顯示結果

filter(過濾器 / 格式化數據)

? ? ? ? |:通道操作符

? ? ? ? pipe -> 通道:前者表達式的計算值作為后表達式的計算參數

? ? ? ? 過濾器可以用在兩個地方:mustache 插值和v-bind表達式

mustache and v-bind
filter—mustache
網頁顯示
other—filter

? ? ? ? filter:currency(默認帶$、保留兩位小數)/lowercase/uppercase/capitalize(首字母大寫)

自定義filter

v-bind

? ? ? ? <div v-bind:class="{className:boolean,className2:boolean}"></div>

? ? ? ? <img v-bind:src="variable"/>? ? ? —>? 縮略寫法:<img :src="variable"/>

v-bind

自定義指令

? ? ? ?vue.directive('指令名',function(){

? ? ? ? ? ? ? this.el ?—>對應的DOM節點

? ? ? ?})

計算屬性

模板內的表達式是非常便利的,但是它們實際上只用于簡單的運算。在模板中放入太多的邏輯會讓模板過重且難以維護。

這就是對于任何復雜邏輯,都應當使用計算屬性的原因。

computed

計算緩存 VS Methods

methods

? ? ? ? 我們可以將同一函數定義為一個 method 而不是一個計算屬性。對于最終的結果,兩種方式確實是相同的。

? ? ? ? 然而,不同的是計算屬性是基于它們的依賴進行緩存的。計算屬性只有在它的相關依賴發生改變時才會重新求值。相比而言,只要發生重新渲染,method 調用總會執行該函數。

? ? ? ? 根據實際情況分析,確定是否需要緩存,從而確定使用computed 或 methods

Computed屬性 VS Watched屬性

watch

? ? ? ? ?上面代碼是命令式的和重復的。將它與 computed 屬性的版本進行比較:↓↓

computed

Watcher

? ? ? ? 計算屬性在大多數情況下更合適,但有時也需要一個自定義的 watcher 。

? ? ? ? Vue 提供一個更通用的方法通過watch選項,來響應數據的變化。當你想要在數據變化響應時,執行異步操作或開銷較大的操作,這是很有用的。

Class與Style綁定

綁定HTML Class

? ? ? ? v-bind:class="..." ? ? ?可以跟對象、數組

綁定內聯樣式

? ? ? ? v-bind:style="..."? ? ? 可以跟對象、數組

? ? ? ? 當v-bind:style使用需要特定前綴的 CSS 屬性時,如transform,Vue.js 會自動偵測并添加相應的前綴。

? ? ? ? 從 2.3 開始可以為style綁定中的屬性提供一個包含多個值的數組,常用于提供多個帶前綴的值:

? ? ? ? <div:style="{ display: ["-webkit-box", "-ms-flexbox", "flex"] }">

條件渲染

v-if、v-else-if、v-else

? ? ? ? <h1 v-if="ok">Yes</h1> ?使用v-if進行條件渲染

? ? ? ? <h1 v-else>No</h1> ? ? ?可以使用v-else添加一個“else”塊

? ? ? ? v-else、v-else-if 元素必須緊跟在v-if或者v-else-if元素的后面——否則它將不會被識別。

template中的v-if條件組

? ? ? ? 因為v-if是一個指令,需要將它添加到一個元素上。但是如果我們想切換多個元素呢?此時我們可以把一個<template>元素當做包裝元素,并在上面使用v-if。

? ? ? ? 最終的渲染結果不會包含<template>元素元素當做包裝元素,并在上面使用v-if。最終的渲染結果不會包含元素。

template

用key管理可復用的元素

? ? ? ? Vue 會盡可能高效地渲染元素,通常會復用已有元素而不是從頭開始渲染。這么做,除了使 Vue 變得非常快之外,還有一些有用的好處。例如,允許用戶在不同的登錄方式之間切換:

login

? ? ? ? 在上面的代碼中切換loginType將不會清除用戶已經輸入的內容。因為兩個模版使用了相同的元素,<input>不會被替換掉——僅僅是替換了它的的placeholder。

? ? ? ? Vue 提供了一種方式來聲明“這兩個元素是完全獨立的——不要復用它們”。只需添加一個具有唯一值的key屬性。

添加key屬性

? ? ? ? 這樣每次切換時,輸入框都將被重新渲染。<label>元素仍然會被高效地復用,因為它們沒有添加 key 屬性。

v-show

? ? ? ? v-show指令也用于根據條件展示元素的選項

? ? ? ? <h1 v-show="ok">Hello!</h1>

? ? ? ? 不同的是帶有v-show的元素始終會被渲染并保留在 DOM 中。v-show是簡單地切換元素的 CSS 屬性display。

? ? ? ? tips:v-show不支持<template>語法,也不支持v-else。

v-if and v-show

? ? ? ? 一般來說,v-if有更高的切換開銷,而v-show有更高的初始渲染開銷。因此,如果需要非常頻繁地切換,則使用v-show較好;如果在運行時條件不太可能改變,則使用v-if較好。

v-if 和 v-for 一起使用

? ? ? ? 當 v-if 與 v-for 一起使用時,v-for 具有比 v-if 更高的優先級。

列表渲染

v-for

1.<li v-for="value in variable"></li> ——>array

2.<li v-for="(key,value) in json"></li> ——>json

極簡留言板

? ? ? ? ↑? 不添加? track-by="$index"? 循環中command相同的內容不重復顯示

json
網頁中顯示結果


of 替代 in

Template ?v-for

v-for



Vue組件






作者持續更新中。。。



友情鏈接:http://www.lxweimin.com/p/5ba253651c3b?從環境搭建到發布


文筆有限,歡迎吐槽!!!

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,606評論 6 533
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,582評論 3 418
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,540評論 0 376
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,028評論 1 314
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,801評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,223評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,294評論 3 442
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,442評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,976評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,800評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,996評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,543評論 5 360
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,233評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,662評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,926評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,702評論 3 392
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,991評論 2 374

推薦閱讀更多精彩內容

  • 這篇筆記主要包含 Vue 2 不同于 Vue 1 或者特有的內容,還有我對于 Vue 1.0 印象不深的內容。關于...
    云之外閱讀 5,068評論 0 29
  • 1.安裝 可以簡單地在頁面引入Vue.js作為獨立版本,Vue即被注冊為全局變量,可以在頁面使用了。 如果希望搭建...
    Awey閱讀 11,065評論 4 129
  • Vue 實例 屬性和方法 每個 Vue 實例都會代理其 data 對象里所有的屬性:var data = { a:...
    云之外閱讀 2,231評論 0 6
  • vue.js 從基礎到實戰 Vue.js 介紹 什么是vue vue一詞是法語,同英語中的view。vue.js是...
    記憶的時間差閱讀 2,231評論 1 25
  • 一、汗法 《素問·陰陽應象大論》說:“其在皮者,汗而發之。”《金匱·痙暍病》篇有:“濕家身煩痛,可與麻黃加術湯發其...
    天一書社閱讀 1,178評論 0 0