Vue的基本使用(一)

vue直接在页面中使用

(只需要下载vue.js, 使用script标签引入项目即可。)

<script src="./vue.js"></script>
<script type="text/javascript">
//这里创建一个vue实例
        new Vue({
        //使用el指定html中的模板
        //这里指定的是id为app的标签
        //在html中,#app的内容中,就可以使用vue的语法了
        el: '#app',
        //在data中可以定义需要使用的变量
        data: {
          show: true
          }
        })

1. 一些指令:

<!-- v-text用于向页面插入文本 -->
 <p v-text='msg'></p>
 <!-- v-html可以解析HTML片段,显示成HTML元素 -->
<div v-html='html'></div>
<!-- v-pre不编译 -->
<div v-pre>{{<h2>这里不进行vue编译,但是会解析HTML标签</h2>}}</div>
<div>
 <!-- 插值表达式中可以进行简单的运算、三元运算、使用Vue白名单内的全局变量,例如Math、Date -->
   <p>{{200/10}}</p>
   <p>{{flag?'是true':'是false'}}</p>
   <p>{{text.split(',').reverse().join(',')}}</p>
</div>
<!-- v-show在条件为真时渲染,条件为假时添加'display:none' -->
<!-- v-if适合于条件不经常改变的场景,因为ta的切换开销大 -->
<!-- v-show适合于条件经常切换的场景 -->
<template v-if="type === 'name'">
   <label key="name-label">用户名:</label>
   <!-- v-model用来将数据双向绑定 -->
   <input type="text" placeholder="输入用户名:" v-model='username'>
</template>

<template v-else>
  <label key="mail-label">邮箱:</label>
  <input type="text" placeholder="输入邮箱:" v-model='email'>
</template>
<button @click='toggleClick'>切换输入框</button>
<template v-show='flag'>
  <p>当flag为true时显示</p>
</template>

<!-- 列表渲染v-for用于遍历数组或者对象 -->
<!-- of / in 都可以 -->
<span v-for='value in score'>{{value }}+' '</span>
<ul>
  <li v-for='(book,index) in books'>{{index+'-'+book.bookname}}</li>
</ul>
<ul>
  <li v-for='(book,index) of books'>{{index+'-'+book.bookname}}</li>
</ul>
<ul>
  <!-- value,key,index的顺序时固定的,不能乱 -->
  <li v-for='(value,key,index) in student'>{{index}}-{{key}}:{{value}}</li>
</ul>
<!-- v-for可以迭代整数 -->
<!-- 输出1 2 3 4 5 6 7 8 9 10 -->
<span v-for='i in 10'>{{i}}</span>

事件绑定:v-on:可简写为 @

html中:

<button @click='addBook'>添加一本书</button>

script标签中:

new Vue({
  el: '#app',
  data: {
     show: true
  },
  methods: {
     addBook: function () {
    // 添加到数组(从尾部添加元素) 
    // this.books.push({
    //     bookname: '《css》',
    //     author: 'lea'
  // });
    // 添加到数组(往头部索引0添加元素) 
    this.books.unshift({
       bookname: '《css》',
       author: 'lea'
     });
   }
})

事件可以添加事件修饰符、按键修饰符

<!-- 阻止单击事件冒泡 -->
<a @:click.stop="doThis"></a>
<!-- 取消提交事件的默认行为 -->
<form v-on:submit.prevent="onSubmit"></form>
<!-- 按键修饰符 .enter 表示在按下enter键才触发handleEnter事件:-->
<input type="text" placeholder="输入用户名:" v-model='username' @keyup.enter="handleEnter">

vue 提供的按键修饰符有:
.enter.tab.delete (捕获“删除”和“退格”键).esc.space.up.down.left.right
没有修饰符的可以使用.按键的keyCode来定义按键事件

<!-- 当按下keyCode为13的按键,键盘弹起时触发submit事件 -->
<input @keyup.13="submit">

计算属性:computed

  1. 计算属性有缓存的功能,当它依赖的数据没有发生变化,再次获取它的值,不会重新计算,而是直接在缓存中获取,提高了执行性能。
  2. 在计算属性所使用(依赖)的变量发生改变的时候,计算属性的值会自动重新计算并更新到页面。

<div id="example">
  // 显示原message信息:
  <p>Original message: "{{ message }}"</p>
  // 显示翻转后的message信息:
  <p>Computed reversed message: "{{ reversedMessage }}"</p>
</div>

//计算属性的定义方法
var vm = new Vue({  
el: '#example',  
data: {    
    message: 'Hello'
  },  
computed: {
    reversedMessage: function () {      
       // `this` 指向 vm 实例
       return this.message.split('').reverse().join('')
    }
  }
})

过滤器:filters

用于对显示在页面的数据进行处理,例如日期格式化等。

<div>
   <!-- 过滤器的使用 -->
   <p>{{date}}</p>
   <p>{{date| formatDate}}</p>
</div>
// 在method同级书写filters 函数
filters: {
  formatDate: function (value) {
    var date = new Date(value);
    var year = date.getFullYear();
    var month = padDate(date.getMonth() + 1);
    var day = padDate(date.getDate());
    var hours = padDate(date.getHours());
    var minutes = padDate(date.getMinutes());
    var seconds = padDate(date.getSeconds());
    return year + '-' + month + '-' + day + ' ' + hours + ':' + minutes + ':' + seconds;
  }
}

页面显示:第一行是未过滤,第二行是过滤后的效果

过滤器的使用

动画的简单使用

html中:

<!-- 动画的使用: -->
<button @click="show = !show">Toggle show</button>
<!-- 要变化的部分需要使用transition进行包裹,并命名 -->
<transition name="xxx">
  <p v-if="show">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris facilisis enim libero, atlacinia diam fermentum id. Pellentesque habitant morbi tristique senectus et netus.</p>
</transition>

css中定义变化的样式:
XXX是html中transition标签的命名(name属性值)

/* 定义进入过渡生效时的状态。*/
        .xxx-enter-active {
            animation: bounce-in .5s;
        }
/* 定义离开过渡生效时的状态。*/
        .xxx-leave-active {
            animation: bounce-in .5s reverse;
        }
        @keyframes bounce-in {
            0% {
                transform: scale(0);
            }
            50% {
                transform: scale(1.5);
            }
            100% {
                transform: scale(1);
            }
        }

javascript中:
data中定义控制p 显示与否的变量

data: {
   show: true
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值