10-Vue基礎(chǔ)2

一蔓罚、模版指令

通過模版指令(寫在html中的)竿奏,即是html和vue對(duì)象的粘合劑训裆。

  • 數(shù)據(jù)渲染 v-text眶根、v-html蜀铲、{{}}
      <div id="app">
        {{ message }}
      </div>
    
    var app = new Vue({
      el: '#app',
      data: {
        message: 'Hello Vue!'
      }
    })
    

    v-text更新元素的 textContentv-html更新元素的 innerHTML属百,內(nèi)容按普通 HTML 插入记劝,不會(huì)作為 Vue 模板進(jìn)行編譯。如果想要title: 'TOMVC <sub>2.0</sub>'不以字符串形式顯示族扰,就可以使用v-html厌丑, <h2 v-html='title'></h2>

  • 控制模塊顯示隱藏 v-if、v-show
      <div id="view">
        <p v-if='isShow'></p>
        <p v-show='isShow'></p>
    </div>
    
    new Vue({
        el: '#view',
        data: {
          isShow: true
        }
     });
    

    v-if是直接不渲染該元素渔呵; v-show是通過display: none進(jìn)行隱藏;

  • 渲染循環(huán)列表 v-for
    模板引擎都會(huì)提供循環(huán)的支持怒竿。Vue也不例外,Vue是提供了一個(gè)v-for指令厘肮±⒖冢基本的用法類似于foreach的用法。
        <ul class="view">
            // 遍歷數(shù)組类茂,取出每個(gè)元素
            <li v-for='item in list'>
                {{item.text}}
            </li>
        </ul>
    
    <script>
        var app = new Vue({
            el: '.view',
            data: {
                list: [  // 數(shù)組
                    {text: '01耍属、HTML'},
                    {text: '02、CSS'},
                    {text: '03巩检、JavaScript'}
                ]
            }
        });
    </script>
    
  • 事件綁定 v-on
    <div id="view4">
        <input type="button" value="按鈕" v-on:click='doThis' />
        // 簡寫
        <input type="button" value="按鈕" @click='doThis' />
    </div>
    
    <script>
      new Vue({
        el: '#view4',
        methods: {
          doThis: function(){
            alert('hello');
          }
        }
    });
    </script>
    
  • 屬性綁定 v-bind
    Vue中不能直接使用{{ expression}} 語法進(jìn)行綁定html的標(biāo)簽厚骗,而是用它特有的v-bind指令,語法<標(biāo)簽 v-bind:屬性名="要綁定的Vue對(duì)象的data里的屬性名"></標(biāo)簽>兢哭。
    由于v-bind 使用非常頻繁领舰,所以Vue提供了簡單的寫法,可以去掉v-bind直接使用:即可迟螺。

    <div id="view">
        <img :src='imgSrc'>
        <img :src='imgSrc'>
        <p :class='InfoClass'></p>
    </div>
    
    <script>
    new Vue({
      el: '#view',
      data: {
        imgSrc: 'm_3_100.png',
        InfoClass: 'infoRed'
      }
    });
    </script>
    
  • 樣式綁定 v-bind
    對(duì)于普通的屬性的綁定冲秽,只能用上面的講的綁定屬性的方式。而Vue專門加強(qiáng)了class和style的屬性的綁定矩父★鄙#可以有復(fù)雜的對(duì)象綁定、數(shù)組綁定樣式和類窍株。
    經(jīng)常我們需要對(duì)樣式進(jìn)行切換民轴,比如:div的顯示和隱藏,某些標(biāo)簽active等球订。Vue提供的對(duì)象綁定樣式的方式就很容做這些事情后裸。

      <style>
          .view{
              width: 300px;
              height: 30px;
              border: 1px solid gray;
              line-height: 30px;
              text-align: center;
            }
           .active{  // 使能樣式
              color: red;
            }
    </style>
    
    // 當(dāng)isActive為true時(shí),這個(gè)div就會(huì)添加類名active冒滩;當(dāng)isActive為false時(shí)微驶,這個(gè)div就會(huì)移出類名active;
    <div class="view" :class='{active:isActive}'>
        {{message}}
    </div>
    
       var app = new Vue({
          el: '.view', 
          data: {     
               message: 'hello Vue.',
               isActive: false 
           }
       });
    
  • 雙向數(shù)據(jù)綁定 v-model
    上面的例子基本都是單向的js對(duì)象向 HTML數(shù)據(jù)進(jìn)行綁定开睡,那HTML怎樣向js進(jìn)行反饋數(shù)據(jù)呢因苹?
    Vue提供了一個(gè)新的指令:v-model進(jìn)行雙向數(shù)據(jù)的綁定较店,注意不是v-bind。

    <div id="app">
        <p>{{ message }}</p>
         // 雙向數(shù)據(jù)綁定
        <input v-model="message">
    </div>
    
    var app = new Vue({
      el: '#app',
      data: {
        message: 'Hello Vue!'
      }
    })
    

二容燕、Vue組件中重要選項(xiàng)

Vue的實(shí)例是Vue框架的入口,其實(shí)也就是前端的ViewModel婚度,它包含了頁面中的業(yè)務(wù)邏輯處理蘸秘、數(shù)據(jù)模型等,當(dāng)然它也有自己的一系列的生命周期的事件鉤子蝗茁,輔助我們進(jìn)行對(duì)整個(gè)Vue實(shí)例生成醋虏、編譯、掛載哮翘、銷毀等過程進(jìn)行js控制颈嚼。

  • data數(shù)據(jù)選項(xiàng),代表vue對(duì)象的數(shù)據(jù)
    創(chuàng)建的Vue對(duì)象中的data屬性就是用來綁定數(shù)據(jù)到HTML的饭寺,Vue框架會(huì)自動(dòng)監(jiān)視data里面的數(shù)據(jù)變化阻课,自動(dòng)更新數(shù)據(jù)到HTML標(biāo)簽上去。本質(zhì)原理是:Vue會(huì)自動(dòng)將data里面的數(shù)據(jù)進(jìn)行遞歸抓換成getter和setter艰匙,然后就可以自動(dòng)更新HTML標(biāo)簽了限煞,當(dāng)然用getter和setter所以老的瀏覽器Vue支持的不夠好。
    <div id="app">
        {{ message }}
    </div>
    
    var app = new Vue({
        el: '#app',
        data: {  // data數(shù)據(jù)選項(xiàng)
          message: 'Hello Vue!'
        }
     })
    
  • methods方法選項(xiàng)员凝,代表vue對(duì)象的方法
    方法中的 this 自動(dòng)綁定為 Vue 實(shí)例署驻。
    <div id="view">
      <input type="button" value="按鈕" @click='doThis' />
    </div>
    
    <script>
    new Vue({
      el: '#view',
      methods: {  // methods方法選項(xiàng)
        doThis: function(){
          alert('hello');
        }
      }
    });
    </script>
    
  • computed計(jì)算屬性
    在做數(shù)據(jù)的綁定的時(shí)候,數(shù)據(jù)要進(jìn)行處理之后才能展示到html頁面上,雖然vue提供了非常好的表達(dá)式綁定的方法健霹,但是只能應(yīng)對(duì)低強(qiáng)度的需求旺上,另外放入太多的邏輯會(huì)讓模板過重且難以維護(hù)。而計(jì)算屬性糖埋,即屬性可以是一個(gè)方法宣吱。
    所有 getter 和 setter 的 this 上下文自動(dòng)地綁定為 Vue 實(shí)例。這就很強(qiáng)大了阶捆,在計(jì)算屬性中定義的函數(shù)里面可以直接使用指向了vue實(shí)例的this凌节。
    <div class="view">
       // 計(jì)算屬性,好處在于會(huì)自動(dòng)根據(jù)totalPrice顯示不同內(nèi)容
       {{showStr}}
    </div>
    
    var app = new Vue({
      el: '.view', 
      data: {
        totalPrice: 18
      },
      computed: {  // Vue對(duì)象的computed屬性
        // 計(jì)算屬性洒试,但該屬性是一個(gè)方法
        showStr: function(){  
           // this指向vue實(shí)例 
          if(this.totalPrice < 20){
            return '金額小于20倍奢,沒有優(yōu)惠喔!'
          } else {
            return '金額大于20,免配送費(fèi)!'
          }
        }
      }
     });
    
  • watch監(jiān)聽選項(xiàng)垒棋,設(shè)置了對(duì)象的監(jiān)聽方法
    一個(gè)對(duì)象卒煞,鍵是需要觀察的表達(dá)式,值是對(duì)應(yīng)回調(diào)函數(shù)叼架。值也可以是方法名畔裕,或者包含選項(xiàng)的對(duì)象衣撬。
      var view2 = new Vue({
        el: '#view2',
        data: {
          a: 1
        },
        methods: {
          doSomething: function(){
            this.a++;
          }
        },
        watch: {
          a: function(newvalue, oldvalue){
            console.log(newvalue, oldvalue);
          }
        }
     });
    

三、Vue組件

Vue組件*.vue由三部分組成分別是<template></template>HTML代碼扮饶、<script></script>javascript腳本具练、<style></style>css樣式。【官方推薦甜无,將三個(gè)部分都寫到一個(gè).vue文件中】

Vue組件組成

通過webpack打包生成對(duì)應(yīng)代碼

四扛点、vue的安裝

  • 直接通過script引入

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

    直接下載并用 <script> 標(biāo)簽引入,Vue 會(huì)被注冊(cè)為一個(gè)全局變量岂丘。重要提示:在開發(fā)時(shí)請(qǐng)用開發(fā)版本陵究,遇到常見錯(cuò)誤它會(huì)給出友好的警告。

  • 通過npm

      # 最新穩(wěn)定版
      $ npm install vue
    

    需要先安裝Node環(huán)境奥帘,npm其實(shí)是Node.js的包管理工具铜邮!

    安裝參考: https://www.liaoxuefeng.com/wiki/001434446689867b27157e896e74d51a89c25cc8b43bdb3000/00143450141843488beddae2a1044cab5acb5125baf0882000

    更換npm的鏡像: npm config set registry http://registry.npm.taobao.org/

  • 通過Vue-cli腳手架 [備注: Vue-CLI 3.3.0版本]

    Vue-cli是Vue的腳手架工具,是官方命令行工具 (CLI)寨蹋,腳手架即編寫好基礎(chǔ)的代碼松蒜,包括目錄結(jié)構(gòu)、本地調(diào)試已旧、代碼部署牍鞠、熱加載、單元測(cè)試评姨。

      - $ npm install -g @vue/cli   // 安裝操作
      - $ vue -V  // 查看版本难述,檢查是否安裝成功
      - $ vue create <project-name>  
        例如 $ vue create hello-vue  // 官方模版,也可以使用自定義等模版
      
      // 基本項(xiàng)目設(shè)置
      $ vue create hello-vue
        ??  Get started with the following commands:
    
            $ cd hello-vue
            $ npm run serve
    
      // 之后再按照上面提示執(zhí)行對(duì)應(yīng)命令即可
      $ cd hello-vue
      $ npm run serve // 開啟服務(wù)器吐句,之后提示例如打開http://localhost:8080頁面胁后,如果可以打開說明配置完成
    
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市嗦枢,隨后出現(xiàn)的幾起案子攀芯,更是在濱河造成了極大的恐慌,老刑警劉巖文虏,帶你破解...
    沈念sama閱讀 216,591評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件侣诺,死亡現(xiàn)場離奇詭異,居然都是意外死亡氧秘,警方通過查閱死者的電腦和手機(jī)年鸳,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來丸相,“玉大人搔确,你說我怎么就攤上這事。” “怎么了膳算?”我有些...
    開封第一講書人閱讀 162,823評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵座硕,是天一觀的道長。 經(jīng)常有香客問我涕蜂,道長华匾,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,204評(píng)論 1 292
  • 正文 為了忘掉前任机隙,我火速辦了婚禮瘦真,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘黍瞧。我一直安慰自己,他們只是感情好原杂,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,228評(píng)論 6 388
  • 文/花漫 我一把揭開白布印颤。 她就那樣靜靜地躺著,像睡著了一般穿肄。 火紅的嫁衣襯著肌膚如雪年局。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,190評(píng)論 1 299
  • 那天咸产,我揣著相機(jī)與錄音矢否,去河邊找鬼。 笑死脑溢,一個(gè)胖子當(dāng)著我的面吹牛僵朗,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播屑彻,決...
    沈念sama閱讀 40,078評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼验庙,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼!你這毒婦竟也來了社牲?” 一聲冷哼從身側(cè)響起粪薛,我...
    開封第一講書人閱讀 38,923評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎搏恤,沒想到半個(gè)月后违寿,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,334評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡熟空,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,550評(píng)論 2 333
  • 正文 我和宋清朗相戀三年藤巢,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片息罗。...
    茶點(diǎn)故事閱讀 39,727評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡菌瘪,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情俏扩,我是刑警寧澤糜工,帶...
    沈念sama閱讀 35,428評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站录淡,受9級(jí)特大地震影響捌木,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜嫉戚,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,022評(píng)論 3 326
  • 文/蒙蒙 一刨裆、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧彬檀,春花似錦帆啃、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,672評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至坤学,卻和暖如春疯坤,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背深浮。 一陣腳步聲響...
    開封第一講書人閱讀 32,826評(píng)論 1 269
  • 我被黑心中介騙來泰國打工压怠, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人飞苇。 一個(gè)月前我還...
    沈念sama閱讀 47,734評(píng)論 2 368
  • 正文 我出身青樓菌瘫,卻偏偏與公主長得像,于是被迫代替她去往敵國和親布卡。 傳聞我的和親對(duì)象是個(gè)殘疾皇子突梦,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,619評(píng)論 2 354

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