Vue.js快速入門(mén)

vue框架已經(jīng)火了好長(zhǎng)一段時(shí)間了壳坪,早在2015年的雙11中午磁,淘寶的部分導(dǎo)購(gòu)業(yè)務(wù)——如:雙十一晚會(huì)搖一搖清單笋妥、我的雙十一標(biāo)簽進(jìn)入的人群會(huì)場(chǎng)尋找與自身匹配的商品懊昨。今年以來(lái),vue的文檔更新很快完善春宣、社區(qū)也日漸狀大酵颁,再加上于某廠(你懂的)大力的推廣,vue的前景十分光明月帝。本文目的:通過(guò)這篇文章了解一些vue的基本概念躏惋,了解如何在實(shí)際編碼中使用vue,文末有demo的地址嚷辅,大家可以clone簿姨、運(yùn)行后,實(shí)際感受一下。

文章開(kāi)始扁位,先比較一下vue和react准潭。

先說(shuō)它們的相似之處:

- 使用 Virtual DOM,提供了響應(yīng)式編程和組件化的視圖組件域仇;
- 不同于angualr的大而全刑然,vue、react將注意力集中保持在核心庫(kù)暇务,如果如果你需要用到其他的話泼掠,可以在社區(qū)中尋找或者自己開(kāi)發(fā)一個(gè),如vue-router(路由)和vuex(負(fù)責(zé)處理全局狀態(tài)管理的庫(kù))垦细;

然后是不同之處:

- 性能:據(jù)vue.js官網(wǎng)聲稱vue的性能在某些場(chǎng)景下是優(yōu)于react的——渲染性能 10,000 個(gè)列表項(xiàng) 100 次择镇,vue較之react平均快100ms;Vue 每秒最高處理 10 幀括改,而 React 每秒最高處理不到 1 幀腻豌,因此在開(kāi)發(fā)類似動(dòng)畫(huà)這樣的應(yīng)用時(shí),vue.js更占優(yōu)勢(shì)叹谁;
- html模板綁定:react使用JSX饲梭,vue也支持JSX乘盖,但建議使用其內(nèi)置的模板引擎焰檩,也可以使用Jade。JSX的不足在于:當(dāng)遇到需要使用if判斷订框、循環(huán)綁定時(shí)析苫,jsx的語(yǔ)法讓代碼看起來(lái)很混亂、也不直觀穿扳;當(dāng)然衩侥,jsx也有自己的優(yōu)勢(shì)——支持linting等檢查;
- css: vue通過(guò)在dom上增加scoped矛物,就可以實(shí)現(xiàn)CSS Modules的功能茫死;
- React相比Vue也有自己的優(yōu)勢(shì),react的生態(tài)系統(tǒng)更豐富履羞、完善峦萎;

看起來(lái)vue很"niubility"的樣子,那vue小白用戶如何快速的動(dòng)手嘗試呢忆首?下面以首頁(yè)(index.vue)為例爱榔,了解一下具體的用法,里面包含了組件的寫(xiě)法及在頁(yè)面中如何組合糙及、模板數(shù)據(jù)及事件綁定详幽。

  • 目錄結(jié)構(gòu)

  • 效果圖

    首頁(yè)
  • index.vue(views文件夾下),一個(gè)views文件夾下的頁(yè)面由多個(gè)components中的組件拼合而成。頁(yè)面由3個(gè)組件拼成:頂部唇聘、中間版姑、底部。注:每一個(gè)組件都是單獨(dú)一個(gè)vue(里面定義自己的樣式和交互事件)

    <template>
        <nv-head></nv-head>
        <index-center></index-center>
        <nv-bottom></nv-bottom>
    </template>
    <script>
    export default {
      components:{
          "nvHead":require('../components/head.vue'),
          "nvBottom":require('../components/footer.vue'),
          "indexCenter":require('../components/index-center.vue')
      }
    }
    </script>
    
  • footer組件(components文件夾下)

    <style>
        .footer{position: absolute;bottom: 20px;width: 100%;color: #5f6060;line-height: 25px;font-size: 12px;}
    </style>
    <template>
    <section class="footer text-center hidden-sm hidden-xs">
      <p v-on:click="hello">{{msg}}</p>
    </section>
    </template>
    <script>
    export default {
        data () {
            return {
                msg: '?2016 coderYin 蘇ICP備15056083號(hào)-1 All rights reserved.'
            }
        },
        methods:{
            hello: function(){
                alert("hello world");
                this.msg="我被點(diǎn)擊啦";
            }
        }
    }
    </script>
    
  • 最后附上迟郎,最終生成的主html的結(jié)構(gòu):

    頁(yè)面dom結(jié)構(gòu)
如果你想新建多個(gè)頁(yè)面漠酿,你也可以在項(xiàng)目中進(jìn)行相應(yīng)的配置。
  • main.js

    var Vue = require('vue')
    
    //路由
    var VueRouter = require('vue-router')
    Vue.use(VueRouter)
    
    //vue-resource:通過(guò) XMLHttpRequest 或 JSONP 發(fā)起請(qǐng)求并處理響應(yīng)
    var VueResource = require('vue-resource')
    Vue.use(VueResource)
    
    //多個(gè)頁(yè)面
    var index = require('./views/index.vue')
    var blogManage = require('./views/blog-manage.vue')
    var blog = require('./views/blog.vue')
    var works = require('./views/works.vue')
    
    // 你也可以自定義組件
    var helloWorld = Vue.extend({
        template: '<p>Hello world</p>'
    })
    
    // 路由器需要一個(gè)根組件谎亩。
    // 出于演示的目的炒嘲,這里使用一個(gè)空的組件,直接使用 HTML 作為應(yīng)用的模板
    var Apptest = Vue.extend({})
    
    // 創(chuàng)建一個(gè)路由器實(shí)例
    // 創(chuàng)建實(shí)例時(shí)可以傳入配置參數(shù)進(jìn)行定制匈庭,為保持簡(jiǎn)單夫凸,這里使用默認(rèn)配置
    var router = new VueRouter()
    
    // 定義路由規(guī)則
    //在使用 vue-router 時(shí),我們需要做的就是把路由映射到各個(gè)組件
    //vue-router 會(huì)把各個(gè)組件渲染到正確的地方阱持。
    router.map({
        '/index': {
            component: index
        },
        '/blogmanage': {
             component: blogManage
         },
        '/blog': {
            component: blog
        },
        '/works': {
          component: works
        },
        '/helloworld': {
         component: helloWorld
        }
    })
    
    // 現(xiàn)在我們可以啟動(dòng)應(yīng)用了夭拌!
    // 路由器會(huì)創(chuàng)建一個(gè) App 實(shí)例,并且掛載到選擇符 #app 匹配的元素上衷咽。
    router.start(Apptest, '#test')
    
  • 在下面提到的項(xiàng)目里鸽扁,也有我們常規(guī)的列表(views/blog.vue)及todolist(views/blogManage.vue)的demo,下面是截圖:

    博客列表
todolist.png
如果你想本地實(shí)踐一下镶骗,可以通過(guò)下面的兩種方式找到整個(gè)項(xiàng)目(readme文檔里有詳細(xì)的使用說(shuō)明桶现,運(yùn)行起來(lái)只需要兩步)
learn-vue
阿里也推出了Weex骡和,其實(shí)叫Vue-Native也可以(這個(gè)名字只是為了讓你大致了解Weex是用來(lái)干嘛的,不要真的在網(wǎng)上搜~~)相寇;另外慰于,vue今年推出了2.0版本,相較1.0唤衫,主要做了下面的一些改變:
  • 2.0 用一個(gè) fork 自 snabbdom 的輕量 Virtual DOM 實(shí)現(xiàn)對(duì)渲染層進(jìn)行了重寫(xiě)婆赠;
  • 改變了一些代碼寫(xiě)法,如循環(huán)v-for——當(dāng)含有 index 時(shí)佳励,以前傳遞的參數(shù)順序是(index, value)休里,現(xiàn)在變成了(value, index)。
  • 官方支持的庫(kù)和工具——vue-router植兰、vuex份帐、vue-loader等都已經(jīng)升級(jí)并支持 2.0 了;

雖然看起來(lái)做了一些大的變化楣导,但是幾乎90%的 API 和核心概念都沒(méi)有變废境,官方推出了從1.0到2.0的遷移方案,同時(shí)出了一個(gè)migration helper的工具,這個(gè)工具發(fā)現(xiàn)了一個(gè)棄用的用法之后噩凹,就會(huì)給出通知和建議巴元,并附上關(guān)于詳細(xì)信息的鏈接。一般情況下驮宴,中小型的系統(tǒng)從vue1.0遷移到2.0版本大概只需要1天的時(shí)間逮刨。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市堵泽,隨后出現(xiàn)的幾起案子修己,更是在濱河造成了極大的恐慌,老刑警劉巖迎罗,帶你破解...
    沈念sama閱讀 206,723評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件睬愤,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡纹安,警方通過(guò)查閱死者的電腦和手機(jī)尤辱,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)厢岂,“玉大人光督,你說(shuō)我怎么就攤上這事∷#” “怎么了结借?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,998評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)窗怒。 經(jīng)常有香客問(wèn)我映跟,道長(zhǎng),這世上最難降的妖魔是什么扬虚? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,323評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮球恤,結(jié)果婚禮上辜昵,老公的妹妹穿的比我還像新娘。我一直安慰自己咽斧,他們只是感情好堪置,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,355評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著张惹,像睡著了一般舀锨。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上宛逗,一...
    開(kāi)封第一講書(shū)人閱讀 49,079評(píng)論 1 285
  • 那天坎匿,我揣著相機(jī)與錄音,去河邊找鬼。 笑死替蔬,一個(gè)胖子當(dāng)著我的面吹牛告私,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播承桥,決...
    沈念sama閱讀 38,389評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼驻粟,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了凶异?” 一聲冷哼從身側(cè)響起蜀撑,我...
    開(kāi)封第一講書(shū)人閱讀 37,019評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎剩彬,沒(méi)想到半個(gè)月后屯掖,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,519評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡襟衰,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,971評(píng)論 2 325
  • 正文 我和宋清朗相戀三年贴铜,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片瀑晒。...
    茶點(diǎn)故事閱讀 38,100評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡绍坝,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出苔悦,到底是詐尸還是另有隱情轩褐,我是刑警寧澤,帶...
    沈念sama閱讀 33,738評(píng)論 4 324
  • 正文 年R本政府宣布玖详,位于F島的核電站把介,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏蟋座。R本人自食惡果不足惜拗踢,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,293評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望向臀。 院中可真熱鬧巢墅,春花似錦、人聲如沸券膀。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,289評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)芹彬。三九已至蓄髓,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間舒帮,已是汗流浹背会喝。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,517評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工陡叠, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人好乐。 一個(gè)月前我還...
    沈念sama閱讀 45,547評(píng)論 2 354
  • 正文 我出身青樓匾竿,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親蔚万。 傳聞我的和親對(duì)象是個(gè)殘疾皇子岭妖,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,834評(píng)論 2 345

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

  • Vue 實(shí)例 屬性和方法 每個(gè) Vue 實(shí)例都會(huì)代理其 data 對(duì)象里所有的屬性:var data = { a:...
    云之外閱讀 2,202評(píng)論 0 6
  • 這篇筆記主要包含 Vue 2 不同于 Vue 1 或者特有的內(nèi)容,還有我對(duì)于 Vue 1.0 印象不深的內(nèi)容反璃。關(guān)于...
    云之外閱讀 5,045評(píng)論 0 29
  • 調(diào)姿:側(cè)臥在瑜伽墊上-下手托住耳朵-手肘向頭頂方向延伸-盡量將腋窩伸直-上方手放在肚臍前方的瑜伽墊上昵慌,用于支撐-雙...
    牛奶瓶子啦閱讀 1,729評(píng)論 0 1
  • 距離零點(diǎn)還有一個(gè)小時(shí),今天就到此為止淮蜈,糟糕的是心頭一直有一個(gè)不愉快的意識(shí):我還欠債好像是斋攀。 這會(huì)兒上下眼皮都在執(zhí)著...
    楊柳小苗兒閱讀 216評(píng)論 0 1
  • 好處多多,比如: 無(wú)縫增強(qiáng) (drop-in replacement)梧田,跑測(cè)試時(shí)不需額外安裝 ipdb plugi...
    做個(gè)懂科學(xué)的憨人閱讀 854評(píng)論 0 0