Vue.js簡介

Vue.js 是一套構(gòu)建用戶界面的漸進式框架。采用自底向上增量開發(fā)的設(shè)計踊淳。Vue的核心庫只關(guān)注視圖層,不僅易上手脱茉,還便于與第三方庫或既有項目整合垄开。另一方面,當與單文件組件和Vue生態(tài)系統(tǒng)支持的庫結(jié)合使用時榜田,Vue也完全能夠為復(fù)雜的單頁應(yīng)用程序提供驅(qū)動锻梳。

聲明式渲染:

Vue.js的核心是一個允許采用簡潔的模板語法來聲明式的將數(shù)據(jù)渲染進 DOM 的系統(tǒng):

<script src="https://unpkg.com/vue"></script>

---------------------------------------------------------------------------------

<div id="app">

? {{message}}

</div>

-------------------------------------------------------------------------------------

<script>

? var app = new Vue({

? ? el: '#app',

? ? data: {

? ? ? message:"Hello Vue.js!"

? ? }

? })

</script>


數(shù)據(jù)和 DOM 已經(jīng)綁定在一起,所有的元素都是響應(yīng)式辩块。

除文本插入,還有另一種方式綁定 DOM 元素屬性:

<div id="app-2">

? <span v-bind:title="message">鼠標懸停幾秒鐘查看此處動態(tài)綁定的提示信息国章!</span>

</div>

<script>

? var app2 = new Vue ({

? ? el: '#app-2',

? ? data: {

? ? ? message: '頁面加載于' + new Date().toLocaleString()

? ? }

? })

</script>

v-bind 屬性被稱為指令豆村。指令帶有前綴 v-,表示它們是 Vue 提供的特殊屬性抵碟。這里該指令的作用是:將這個元素節(jié)點的 title 屬性和 Vue 實例的 message 屬性保持一致坏匪。

條件與循環(huán):

控制切換一個元素:

<div id="app-3">

? <p v-if:"seen">現(xiàn)在你看到了我</p>

<div>

<script>

? var app3 = new Vue ({

? ? el: '#app-3',

? ? data: {

? ? ? seen:true

? }

})

</script>


在控制臺設(shè)置 app3.seen = false ,"現(xiàn)在你看到了我"會消失:

Vue不僅可以綁定DOM文本到數(shù)據(jù)适滓,也可以綁定DOM結(jié)構(gòu)到數(shù)據(jù)。Vue也提供一個強大過度效果系統(tǒng)凭迹,可以在Vue插入/更新/刪除元素時自動應(yīng)用過渡效果。

還有其他很多指令脾猛,每個都有特殊的功能鱼鸠。如:v-for 指令可以綁定數(shù)組的數(shù)據(jù)來渲染一個項目列表:

<div id="app-4">

? <ol>

? ? <li v-for="todo in todos">

? ? ? {{todo.text}}

? ? </li>

? </ol>

</div>

<script>

? var app4 = new Vue ({

? ? el: '#app-4',

? ? data: {

? ? ? todos: [

? ? ? ? { text: '學習 JavaScript' },

? ? ? ? { text: '學習 Vue' },

? ? ? ? { text: '整個牛項目' }

? ? ? ]

? ? }

? })

</script>


在控制臺輸入app4.todos.push({text: 'CSS'})蚀狰,會在列表中添加一個新項。


處理用戶輸入:

用 v-on 指令綁定一個事件監(jiān)聽器跛溉,通過它調(diào)用我們 Vue實例中定義的方法:

<div id="app-5">

? <p>{{message}}</p>

? <button v-on:click="reverseMessage">逆轉(zhuǎn)消息</button>

</div>

<script>

? var app5 = new Vue({

? ? el: '#app-5',

? ? data: {

? ? ? message: 'Hell Vue.js扮授!'

? ? },

? ? methods: {

? ? ? reverseMessage: function () {

? ? ? ? this.message = this.message.split('').reverse().join('')

? ? ? }

? ? }

? })

</script>

逆轉(zhuǎn)前:

逆轉(zhuǎn)后:

在 reverseMessage 方法中挂签,更新了應(yīng)用的狀態(tài)碴卧,但沒有碰觸 DOM抖格,所有的 DOM 操作都有 Vue 來操作,所編寫的代碼不需要關(guān)注底層邏輯雹拄。

Vue 還提供了 v-model 指令,它能輕松實現(xiàn)表單輸入和應(yīng)用狀態(tài)之間的雙向綁定:

<div id="app-6">

? <p>{{message}}</p>

? <input v-model="message">

</div>

<script>

var app6 = new Vue ({

el: '#app-6',

data: {

message: 'Hello !!!'

}

})

</script>


組件化應(yīng)用構(gòu)建

組件系統(tǒng)是 Vue 的另一個重要概念坪哄,因為他是一種抽象势篡,允許我們使用小型,獨立和通衬罴溃可復(fù)用的組件構(gòu)建大型應(yīng)用碍侦。幾乎任意類型的應(yīng)用界面都可以抽象為一個組件樹。? 在 Vue 里站玄,一個組件本質(zhì)上是一個擁有預(yù)定義選項的一個 Vue 實例濒旦。

<div id="app-7">

? <ol>

? ? <todo-item

? ? ? v-for="item in groceryList"

? ? ? v-bind:todo="item"

? ? ? v-bind:key="item.id">

? ? </todo-item>

? </ol>

</div>

<script>

? Vue.component('todo-item', {

? ? props: ['todo'],

? ? template: '<li>{{ todo.text }}</li>'

? })

? vue app7 = new Vue({

? ? el: '#app-7',

? ? data: {

? ? ? groceryList: [

? ? ? ? { id: 0, text: '蔬菜' },

? ? ? ? { id: 1, text: '水果' },

? ? ? ? { id: 2, text: '其他人吃的東西' }

? ? ? ]

? ? }

? })

</script>

我們已經(jīng)設(shè)法將應(yīng)用分割成了兩個更小的單元,子單元通過 props 接口實現(xiàn)了與父單元很好的解耦×榔剩現(xiàn)在可以進一步為我們的 todo-item 組件實現(xiàn)更復(fù)雜的模板和邏輯的改進铃拇,而不影響到父單元沈撞。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市显晶,隨后出現(xiàn)的幾起案子壹士,更是在濱河造成了極大的恐慌,老刑警劉巖躏救,帶你破解...
    沈念sama閱讀 216,496評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異崩掘,居然都是意外死亡,警方通過查閱死者的電腦和手機诵原,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評論 3 392
  • 文/潘曉璐 我一進店門挽放,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人吗蚌,你說我怎么就攤上這事航闺⊥什猓” “怎么了潦刃?”我有些...
    開封第一講書人閱讀 162,632評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長乖杠。 經(jīng)常有香客問我,道長畏吓,這世上最難降的妖魔是什么卫漫? 我笑而不...
    開封第一講書人閱讀 58,180評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮宏悦,結(jié)果婚禮上包吝,老公的妹妹穿的比我還像新娘。我一直安慰自己诗越,他們只是感情好,可當我...
    茶點故事閱讀 67,198評論 6 388
  • 文/花漫 我一把揭開白布块促。 她就那樣靜靜地躺著,像睡著了一般竭翠。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上屡拨,一...
    開封第一講書人閱讀 51,165評論 1 299
  • 那天褥实,我揣著相機與錄音,去河邊找鬼哥艇。 笑死僻澎,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的窟勃。 我是一名探鬼主播,決...
    沈念sama閱讀 40,052評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼眷昆,長吁一口氣:“原來是場噩夢啊……” “哼汁咏!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起帅刊,我...
    開封第一講書人閱讀 38,910評論 0 274
  • 序言:老撾萬榮一對情侶失蹤漂问,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后级解,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體田绑,經(jīng)...
    沈念sama閱讀 45,324評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,542評論 2 332
  • 正文 我和宋清朗相戀三年芒划,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片泵殴。...
    茶點故事閱讀 39,711評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡拼苍,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出吆你,到底是詐尸還是另有隱情俊犯,我是刑警寧澤妇多,帶...
    沈念sama閱讀 35,424評論 5 343
  • 正文 年R本政府宣布者祖,位于F島的核電站绢彤,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏茫舶。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,017評論 3 326
  • 文/蒙蒙 一奇适、第九天 我趴在偏房一處隱蔽的房頂上張望坟比。 院中可真熱鬧,春花似錦嚷往、人聲如沸葛账。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽籍琳。三九已至,卻和暖如春贷祈,著一層夾襖步出監(jiān)牢的瞬間趋急,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評論 1 269
  • 我被黑心中介騙來泰國打工势誊, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留呜达,地道東北人粟耻。 一個月前我還...
    沈念sama閱讀 47,722評論 2 368
  • 正文 我出身青樓查近,卻偏偏與公主長得像眉踱,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子霜威,可洞房花燭夜當晚...
    茶點故事閱讀 44,611評論 2 353

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

  • 下載安裝搭建環(huán)境 可以選npm安裝谈喳,或者簡單下載一個開發(fā)版的vue.js文件 瀏覽器打開加載有vue的文檔時,控制...
    冥冥2017閱讀 6,037評論 0 42
  • 這篇筆記主要包含 Vue 2 不同于 Vue 1 或者特有的內(nèi)容戈泼,還有我對于 Vue 1.0 印象不深的內(nèi)容婿禽。關(guān)于...
    云之外閱讀 5,048評論 0 29
  • 特點 虛擬DOM1、DOM :成對出現(xiàn)的標簽大猛;PC上渲染還可以谈宛,但是在移動端渲染DOM效果很差;2胎署、虛擬DOM 采...
    whbsspu閱讀 570評論 0 0
  • Vue 實例 屬性和方法 每個 Vue 實例都會代理其 data 對象里所有的屬性:var data = { a:...
    云之外閱讀 2,207評論 0 6
  • Vue.js 是什么 Vue.js(類似于 view) 是一套構(gòu)建用戶界面的漸進式框架吆录。 與其他重量級框架不同的是...
    糖心m閱讀 323評論 0 0