Vue2.0入門(譯)

Vue簡(jiǎn)介

Vue是什么艰管?

Vue (發(fā)音 /vju:/, 類似于view) 是構(gòu)建用戶界面的先進(jìn)框架圆裕。它不像其他全能的框架,Vue是從頭開始逐漸設(shè)計(jì)起來的得运。核心庫(kù)只專注于視圖層姑蓝,它非常容易上手并且可以與其他庫(kù)或現(xiàn)有的項(xiàng)目進(jìn)行整合鹅心。在另一方面,當(dāng)與相關(guān)工具和支持庫(kù)結(jié)合使用時(shí)纺荧,Vue也能完美的驅(qū)動(dòng)復(fù)雜的單頁(yè)面應(yīng)用旭愧。

如果你是一名有經(jīng)驗(yàn)的前端工程師并且想知道Vue和其他庫(kù)/框架的區(qū)別,查看 Comparison with Other Frameworks

入門

嘗試Vue.js的最簡(jiǎn)單的方法用 JSFiddle Hello World example 宙暇。隨意在另一個(gè)選項(xiàng)卡里打開它输枯,接下來我們通過一些基礎(chǔ)案例。如果你喜歡從一個(gè)包管理器下載/安裝占贫,查看 安裝 頁(yè)面桃熄。

聲明式渲染

Vue.js的核心系統(tǒng)使我們能用聲明的方式使簡(jiǎn)單的模塊語(yǔ)法渲染數(shù)據(jù)到DOM中

HTML:

<div id="app">
    {{message}}
</div>

JS:

var app = new Vue({
    el: '#app',
    data: {
        message: 'Hello Vue'
    }
})

運(yùn)行結(jié)果:

Hello Vue

我們已經(jīng)構(gòu)建了第一個(gè)Vue應(yīng)用!看起來非常像僅渲染了一個(gè)字符串模塊型奥,但是Vue在底層做了很多事瞳收。DOM會(huì)自動(dòng)響應(yīng)數(shù)據(jù)的變化,我們?cè)趺粗老嵝冢看蜷_你瀏覽器javascript控制臺(tái)并設(shè)置 app.message 不同的值螟深。在上述相關(guān)的更新中,你應(yīng)該會(huì)看到渲染過例子烫葬。

除了文本插值界弧,我們也能綁定元素屬性,比如這樣:

HTML

<div id="app-2">
    <span v-bind:id="id"><span>
</div>

JS

var app2 = new Vue({
    el: '#app2',
    data: {
        id: 'inspect-me'
    }
})

運(yùn)行結(jié)果

inspect me

在這里我們遇到新的東西厘灼。你看到的 v-bind 屬性是一個(gè)指令夹纫。指令前綴用 v- 表示它們是由Vue提供的特殊屬性,正如你可能猜想到的设凹,它們應(yīng)用特殊反應(yīng)行為渲染DOM舰讹。這基本來說:“在Vue實(shí)例中,綁定元素 id 變量到 id 屬性”闪朱。

用瀏覽器開發(fā)工具查看元素月匣,你會(huì)看到id的值是 inspect-me 。是的奋姿,如果在控制臺(tái)里修改 app2.id ,它也會(huì)被更新锄开。

<div id="app-2">
    <span id="inspect-me">Inspect me</span>
</div>

條件和循環(huán)

切換元素的顯示/隱藏非常簡(jiǎn)單,如下:

HTML:

<div id="app-3">
    <p v-if="seen">Now you see me</p>
</div>

JS:

var app3 = new Vue({
    el: '#app-3',
    data: {
        seen: true
    }
})

運(yùn)行結(jié)果:

Now you see me

在控制臺(tái)繼續(xù)輸入app3.seen = false . 你會(huì)看到此信息被隱藏称诗。

這個(gè)案例演示,我們不僅可以綁定數(shù)據(jù)到文本和屬性萍悴,也可以到DOM結(jié)構(gòu)里。除此之外,Vue也提供一些強(qiáng)有力的過度效果系統(tǒng)癣诱,當(dāng)元素通過Vue被插入/更新/被移除時(shí)计维,這個(gè)系統(tǒng)能自動(dòng)運(yùn)用過渡效果。

還有不少其他指令撕予,每個(gè)指令都有它自己獨(dú)特的功能鲫惶。比如,v-for 指令通過一組數(shù)組实抡,能被用于顯示數(shù)據(jù)項(xiàng)的列表欠母。

HTML:

<div>
    <ol>
        <li v-for="todo in todos">
            {{ todo.text }}
        </li>
    </ol>
</div>

JS:

var app4 = new Vue({
    el: '#app-4',
    todos:[
        { text: 'Learn Javascript' },
        { text: 'Learn Vue' },
        { text: 'Build something awesome' }
    ]
})

運(yùn)行結(jié)果:

1. Learn Javascript
2. Learn Vue
3. Build Something awesome

在控制臺(tái)里輸入 app4.todos.push({ text: 'New item' }) 。你會(huì)看到一個(gè)新的選項(xiàng)添加到這個(gè)列表中了吆寨。

處理用戶輸入

為了讓用戶與應(yīng)用互動(dòng)赏淌,在我們Vue實(shí)例中,我們用 v-on 指令附加事件監(jiān)聽器來調(diào)用方法鸟废。

HTML:

<div id="app-5">
    <p>{{message}}</p>
    <button v-on:click="reverseMessage">Reverse Message</button>
</div>

JS:

var app5 = new Vue({
    el: '#app-5',
    data: {
        message:'Hello Vue.js!'
    },
    methods: {
        reverseMessage: function(){
            this.message = this.message.split('').reverse().join('')
        }
    }
})

運(yùn)行結(jié)果:

Hello Vue.js

點(diǎn)擊按鈕后結(jié)果

!sj.euV olleH

注意:在方法里猜敢,我們沒有碰DOM,我們僅更新了應(yīng)用程序的狀態(tài)。所有的DOM操作是通過Vue處理的盒延,并且你寫的代碼是專注于底層邏輯缩擂。

Vue也提供 v-model 指令使表單輸入和應(yīng)用程序狀態(tài)之間輕易的實(shí)現(xiàn)雙向綁定。

HTML:

<div id="app-6">
    <p>{{message}}</p>
    <input v-model="message">
</div>

JS:

var app6 = new Vue({
    el:'#app-6',
    data:{
        message: 'Hello Vue!'
    }
})

運(yùn)行結(jié)果:

Hello Vue!

如果你改變輸入框里的值添寺,顯示的文本也會(huì)跟著變動(dòng)胯盯。

使用組件組成

在Vue里,組件系統(tǒng)是另外一個(gè)重要的概念计露,因?yàn)樗鞘刮覀兡軌蚪⑿⌒偷牟┠裕?dú)立的,而且可重用的組件組成的大型應(yīng)用程序的抽象票罐。如果我們仔細(xì)想想叉趣,幾乎任何類型的應(yīng)用程序接口能被抽象成一棵組件樹:

image

在Vue里,一個(gè)組件實(shí)質(zhì)上是一個(gè)預(yù)先定義過的選項(xiàng)的Vue實(shí)例该押。注冊(cè)組件是非常容易的疗杉。

JS:

// 定義一個(gè)組件為todo-item
Vue.component('todo-item', {
    template: '<li>This is a todo</li>' 
})

現(xiàn)在你可以用其他組件的模板來組合它。

HTML:

<ul>
    <!--
    創(chuàng)建一個(gè)todo-item組件實(shí)例輸出數(shù)據(jù)中的dotos數(shù)組  
    -->
    <todo-item v-for="todo in todos"></todo-item>
</ul>

但是這為每個(gè)todo渲染相同的文本蚕礼,這個(gè)不是我們要的效果烟具。我們應(yīng)該能夠從父作用域傳遞數(shù)據(jù)到子組件里。讓我們修改組件定義奠蹬,讓其接受一個(gè) prop :

Vue.component('todo-item', {
    /* todo-item組件接受一個(gè)“prop”,
    它像一個(gè)自定義屬性朝聋。這個(gè)屬性叫todo 
    */ 
    props:['todo'],
    template:'<li>{{ todo.text }}</li>'
})

現(xiàn)在我們用 v-bind 傳遞todo數(shù)據(jù)到每個(gè)重復(fù)組件里。

HTML:

<div id="app7">
    <ol>
        <todo-item v-for="todo in todos" v-bind:todo="todo">
    </ol>
</div>

JS:

var app7 = new Vue({
    el: '#app-7',
    data: {
        todos: [
            'Learn JavaScript',
            'Learn Vue',
            'Build something awesome'
        ]
    }
})

運(yùn)行結(jié)果:

1. Learn Javascript
2. Learn Vue
3. Build Something awesome
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末囤躁,一起剝皮案震驚了整個(gè)濱河市冀痕,隨后出現(xiàn)的幾起案子荔睹,更是在濱河造成了極大的恐慌,老刑警劉巖金度,帶你破解...
    沈念sama閱讀 216,324評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件应媚,死亡現(xiàn)場(chǎng)離奇詭異严沥,居然都是意外死亡猜极,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,356評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門消玄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來跟伏,“玉大人,你說我怎么就攤上這事翩瓜∈馨猓” “怎么了?”我有些...
    開封第一講書人閱讀 162,328評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵兔跌,是天一觀的道長(zhǎng)勘高。 經(jīng)常有香客問我,道長(zhǎng)坟桅,這世上最難降的妖魔是什么华望? 我笑而不...
    開封第一講書人閱讀 58,147評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮仅乓,結(jié)果婚禮上赖舟,老公的妹妹穿的比我還像新娘。我一直安慰自己夸楣,他們只是感情好宾抓,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,160評(píng)論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著豫喧,像睡著了一般石洗。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上紧显,一...
    開封第一講書人閱讀 51,115評(píng)論 1 296
  • 那天讲衫,我揣著相機(jī)與錄音,去河邊找鬼鸟妙。 笑死焦人,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的重父。 我是一名探鬼主播花椭,決...
    沈念sama閱讀 40,025評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼房午!你這毒婦竟也來了矿辽?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,867評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎袋倔,沒想到半個(gè)月后雕蔽,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,307評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡宾娜,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,528評(píng)論 2 332
  • 正文 我和宋清朗相戀三年批狐,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片前塔。...
    茶點(diǎn)故事閱讀 39,688評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡嚣艇,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出华弓,到底是詐尸還是另有隱情食零,我是刑警寧澤,帶...
    沈念sama閱讀 35,409評(píng)論 5 343
  • 正文 年R本政府宣布寂屏,位于F島的核電站贰谣,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏迁霎。R本人自食惡果不足惜吱抚,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,001評(píng)論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望欧引。 院中可真熱鬧频伤,春花似錦、人聲如沸芝此。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,657評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)婚苹。三九已至岸更,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間膊升,已是汗流浹背怎炊。 一陣腳步聲響...
    開封第一講書人閱讀 32,811評(píng)論 1 268
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留廓译,地道東北人评肆。 一個(gè)月前我還...
    沈念sama閱讀 47,685評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像非区,于是被迫代替她去往敵國(guó)和親瓜挽。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,573評(píng)論 2 353

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

  • 這篇筆記主要包含 Vue 2 不同于 Vue 1 或者特有的內(nèi)容征绸,還有我對(duì)于 Vue 1.0 印象不深的內(nèi)容久橙。關(guān)于...
    云之外閱讀 5,048評(píng)論 0 29
  • 轉(zhuǎn)載 :OpenDiggawesome-github-vue 是由OpenDigg整理并維護(hù)的Vue相關(guān)開源項(xiàng)目庫(kù)...
    果汁密碼閱讀 23,117評(píng)論 8 124
  • Vue 實(shí)例 屬性和方法 每個(gè) Vue 實(shí)例都會(huì)代理其 data 對(duì)象里所有的屬性:var data = { a:...
    云之外閱讀 2,207評(píng)論 0 6
  • 今天想分享的是沒有學(xué)過淆衷,但你可以知道缸榄。 在教學(xué)的過程中,有時(shí)候講到一些知識(shí)點(diǎn)祝拯,可能是他們暫時(shí)還沒有學(xué)到的甚带,那么這時(shí)...
    jpleo閱讀 121評(píng)論 0 0
  • 秋雨嘩嘩寒露夜, 霓虹燈下秋葉飄鹿驼。 詩(shī)人眼望行人急欲低, 回家心切奪分秒。 新鄭城北區(qū) 2017.10.8深夜
    白豐閣閱讀 135評(píng)論 1 3