Vue2.0基礎(chǔ)(一)

Vue2.0基礎(chǔ)(一)

image

搭建項目

mkdir vue-demo
cd vue-demo
npm init -y

vue官網(wǎng)下載vue.js

創(chuàng)建相關(guān)目錄

├── assets
│   ├── css
│   └── js
│       └── vue.js
├── example
├── index.html
└── package.json

安裝live-server

cd vue-demo
live-server

創(chuàng)建hello-world.html

cd example
touch hello-world.html

hello-world.html

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>hello world</title>
  <script src="../assets/js/vue.js"></script>
</head>
<body>
  <h1>hello world</h1>
  <hr>
  <div id="app">{{message}}</div>
  <script type="text/javascript">
    const app = new Vue({
      el: '#app',
      data: {
        message: 'hello world'
      }
    })
  </script>
</body>
</html>

index.html

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Vue.js實例</title>
</head>
<body>
  <h1>vue2.0實例</h1>
  <hr>
  <ul>
    <li><a href="./example/hello-world.html">hello world 實例</a></li>
  </ul>
</body>
</html>

效果

174

v-show v-if v-else

相同點:v-if與v-show都可以動態(tài)控制dom元素顯示或隱藏

不同點:v-if顯示隱藏是將dom元素添加或刪除排霉,而v-show是為該元素添加css(display: none;)窍株,dom元素還在

使用場景:v-if有更高的切換消耗,適合不大可能經(jīng)常改變的情況攻柠;v-show有更高的初始渲染消耗球订,適合頻繁切換

cd example
touch v-if.html

v-if.html

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>v-if v-else v-show 實例</title>
  <script src="../assets/js/vue.js"></script>
</head>
<body>
  <h1>v-if v-else v-show 實例</h1>
  <hr>
  <div id="app">
    <div v-if="isIf">v-if 顯示</div>
    <div v-else>v-if 隱藏</div>
    <div v-show="isShow">v-show</div>
  </div>
  <script type="text/javascript">
    const app = new Vue({
      el: '#app',
      data: {
        isIf: true,
        isShow: false
      }
    })
  </script>
</body>
</html>

效果

175

v-for

touch v-for.html

v-for.html

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>v-for 實例</title>
  <script src="../assets/js/vue.js"></script>
</head>
<body>
  <h1>v-for 實例</h1>
  <hr>
  <div id="app">
    <ul>
      <li v-for="(item, index) in sortItems" :key="index">{{item}}</li>
    </ul>
  </div>
  <script type="text/javascript">
    const app = new Vue({
      el: '#app',
      data: {
        list: [5, 12, 78, 4]
      },
      computed: {
        sortItems: function() {
          return this.list.sort(sortNumber)
        }
      }
    })
    function sortNumber(a, b) {
      return a - b;
    }
  </script>
</body>
</html>

效果

176

v-text v-thml

當網(wǎng)絡(luò)很慢或js出錯時,會顯示出{{xxx}}瑰钮。為解決這個問題冒滩,v-text、v-html應(yīng)運而生

v-text:渲染普通文本浪谴,不解析標簽

v-html:解析標簽并渲染文本數(shù)據(jù)

touch v-text.html

v-text.html

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>v-text v-html 實例</title>
  <script src="../assets/js/vue.js"></script>
</head>
<body>
  <h1>v-text v-html 實例</h1>
  <hr>
  <div id="app">
    <div>{{message}}下面等效</div>
    <div v-text="message"></div>
    <div>少用v-html 可能引起xss攻擊</div>
    <div v-html="todo"></div>
  </div>
  <script type="text/javascript">
    const app = new Vue({
      el: '#app',
      data: {
        message: 'hello world',
        todo: '<h2>hello world</h2>'
      }
    })
  </script>
</body>
</html>

效果

177

v-on(@)

綁定事件

v-on.thml

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <script type="text/javascript" src="../assets/js/vue.js"></script>
    <title>v-on綁定事件</title>
</head>
<body>
    <h1>v-on 綁定事件</h1>
    <hr>
    <div id="app">
        考試得分: {{count}}<br/>
        <button v-on:click="add">加分</button>
        <button v-on:click="reduce">減分</button>
    </div>

    <script type="text/javascript">
        var app=new Vue({
            el:'#app',
            data: {
                count: 1
            },
            methods:{
                add: function() {
                    this.count++;
                },
                reduce: function() {
                    this.count--;
                }
            }
        })
    </script>
</body>
</html>

效果

178

簡寫

<button @click="add">加分</button>

綁定其他事件

<input type="text" @keyup.enter="onEnter">

v-modal

數(shù)據(jù)雙向綁定

v-model.html

<div id="app">
  <p>v-model內(nèi)容:{{message}}</p>
  <h3>文本框</h3>
  <p>v-model輸入: <input type="text" v-model.number="message"></p>
</div>

js

const app = new Vue({
  el: '#app',
  data: {
    message: 'hello world'
  }
})

效果

182

修飾符

  • .lazy change 事件之后進行同步數(shù)據(jù)
  • .number 輸入值自動轉(zhuǎn)為數(shù)值類型开睡,若值無法被 parseFloat() 解析,則會返回原始的值
  • .trim 自動過濾輸入值的首尾空白字符

v-bind(:)

綁定數(shù)據(jù)和元素屬性

元素屬性

v-bind.html

<div id="app">
  <img v-bind:src="imgUrl" alt="" srcset="">
</div>

js

const app = new Vue({
  el: '#app',
  data: {
    imgUrl: 'https://gitee.com/itxing666/blog-images/raw/master/img/code.png'
  }
})

綁定數(shù)據(jù)

<div :class="className">綁定className</div>
<div :class="{className: isOk}">isOk判斷綁定class</div>
<div :class="isOk ? classA : classB">三元表達式判斷</div>
<div :class="[classA, classB]">綁定class數(shù)組</div>
<div :text="1 + 2">運算</div>
<div :text="getText()">綁定方法</div>
<div :text="obj">綁定對象</div>

v-pre v-cloak v-once

v-pre

原樣輸出

html

<div v-pre>{{ message }}</div>

js

const app = new Vue({
  el: '#app',
  data: {
    message: 'hello world'
  }
})

效果

184

v-cloak

網(wǎng)速慢時较店,頁面會閃現(xiàn)標簽里插值表達式士八,例如{{ message }}容燕。使用v-cloak梁呈,還沒渲染完時有這個屬性的的樣式設(shè)為隱藏,渲染完v-cloak標簽會自動消失變回顯示

style

<style>
  [v-cloak] {
    display: none;
  }
</style>

html

<div v-cloak>{{ message }}</div>

v-once

只渲染一次

html

<div v-once>第一次綁定的值:{{message}}</div>
<input type="text" v-model="message" >

效果

185
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末蘸秘,一起剝皮案震驚了整個濱河市官卡,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌醋虏,老刑警劉巖寻咒,帶你破解...
    沈念sama閱讀 216,402評論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異颈嚼,居然都是意外死亡毛秘,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評論 3 392
  • 文/潘曉璐 我一進店門阻课,熙熙樓的掌柜王于貴愁眉苦臉地迎上來叫挟,“玉大人,你說我怎么就攤上這事限煞∧遥” “怎么了?”我有些...
    開封第一講書人閱讀 162,483評論 0 353
  • 文/不壞的土叔 我叫張陵署驻,是天一觀的道長奋献。 經(jīng)常有香客問我健霹,道長,這世上最難降的妖魔是什么瓶蚂? 我笑而不...
    開封第一講書人閱讀 58,165評論 1 292
  • 正文 為了忘掉前任糖埋,我火速辦了婚禮,結(jié)果婚禮上窃这,老公的妹妹穿的比我還像新娘阶捆。我一直安慰自己,他們只是感情好钦听,可當我...
    茶點故事閱讀 67,176評論 6 388
  • 文/花漫 我一把揭開白布洒试。 她就那樣靜靜地躺著,像睡著了一般朴上。 火紅的嫁衣襯著肌膚如雪垒棋。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,146評論 1 297
  • 那天痪宰,我揣著相機與錄音叼架,去河邊找鬼。 笑死衣撬,一個胖子當著我的面吹牛乖订,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播具练,決...
    沈念sama閱讀 40,032評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼乍构,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了扛点?” 一聲冷哼從身側(cè)響起哥遮,我...
    開封第一講書人閱讀 38,896評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎陵究,沒想到半個月后眠饮,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,311評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡铜邮,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,536評論 2 332
  • 正文 我和宋清朗相戀三年仪召,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片松蒜。...
    茶點故事閱讀 39,696評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡扔茅,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出牍鞠,到底是詐尸還是另有隱情咖摹,我是刑警寧澤,帶...
    沈念sama閱讀 35,413評論 5 343
  • 正文 年R本政府宣布难述,位于F島的核電站萤晴,受9級特大地震影響吐句,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜店读,卻給世界環(huán)境...
    茶點故事閱讀 41,008評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望文虏。 院中可真熱鬧,春花似錦氧秘、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽彼棍。三九已至灭忠,卻和暖如春座硕,著一層夾襖步出監(jiān)牢的瞬間弛作,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評論 1 269
  • 我被黑心中介騙來泰國打工华匾, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留映琳,地道東北人瘦真。 一個月前我還...
    沈念sama閱讀 47,698評論 2 368
  • 正文 我出身青樓黍瞧,卻偏偏與公主長得像,于是被迫代替她去往敵國和親印颤。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,592評論 2 353

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