Vue 简介及内部指令

目录

vue.js 是什么?

vue 是一套构建用户界面的渐进式框架

vue 内部指令

1、声明式渲染

Vue.js 的核心是一个允许采用简洁的模板语法来声明式地将数据渲染进 DOM 的系统:

<div id="app">
  {{ message }}
</div>
var app = new Vue({
  el: '#app',
  data: {
    message: 'Hello Vue!'
  }
})

这种用两个大括号 {{ }} 渲染数据的方式是 vue 中最简单的渲染方式。现在数据和 DOM 已经被建立了关联,所有东西都是响应式的。

2、v-if v-else v-show 指令

  • v-if
    v-if:是vue 的一个内部指令,指令用在我们的html中。
    v-if 用来判断是否加载html的DOM,比如当满足某种条件时,我们才加载某段 html 片段。

  • v-else
    与 v-if 一起使用,下面举个例子:

    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <script type="text/javascript" src="../assets/js/vue.js"></script>
    <title>v-if & v-show & v-else</title>
    </head>
    <body>
        <h1>v-if 判断是否加载</h1>
        <hr>
        <div id="app">
            <div v-if="isLogin">你好:用户</div>
                <div v-else>请登录后操作</div>
           </div>
           <script type="text/javascript">
                var app=new Vue({
                    el:'#app',
                    data:{
                       isLogin:false
                    }
                })
           </script>
    </body>
    </html>

    这里我们在vue的data里定义了isLogin的值,当它为true时,网页就会显示:你好:用户,如果为false时,就显示请登录后操作。

  • v-show
    调整css中display属性,DOM已经加载,只是CSS控制没有显示出来。

    <div v-show="isLogin">你好:用户</div>
  • v-if 和v-show的区别:
    v-if: 判断是否加载,可以减轻服务器的压力,在需要时加载。
    v-show:调整css dispaly属性,可以使客户端操作更加流畅。

3、v-for 指令 :解决模板循环问题

v-for 指令可以绑定数组的数据来渲染一个项目列表:

<div id="app-4">
  <ol>
    <li v-for="todo in todos">
      {{ todo.text }}
    </li>
  </ol>
</div>
var app4 = new Vue({
  el: '#app-4',
  data: {
    todos: [
      { text: '学习 JavaScript' },
      { text: '学习 Vue' },
      { text: '整个牛项目' }
    ]
  }
})

这是一个最基础的循环,先在js里定义了 todos 数组,然后在模板中用 v-fo r循环出来,需要注意的是,你需要那个html标签循环,v-for 就写在那个上边。

4、v-text & v-html

我们已经会在 html 中输出 data 中的值了,我们已经用的是 {{xxx}} ,这种情况是有弊端的,就是当我们网速很慢或者javascript出错时,会暴露我们的{{xxx}}。Vue给我们提供的 v-text,就是解决这个问题的。我们来看代码:

<span>{{ message }}</span>=<span v-text="message"></span><br/>

你会看到两处输出的信息是一样的,针对文本信息我们可以使用 v-text
双大括号会将数据解释为纯文本,而非HTML。为了输出真正的HTML,你就需要使用 v-html 指令。

<span id="app-4" v-html="msgHtml"></span>
var app4 = new Vue({
  el: '#app-4',
  data: {
    msgHtml:'<h1>hello user</h1>'
  }
})

这里面输出的将是 html 代码,而不是标签 h1 中的文本信息。

5、v-on:绑定事件监听器

v-on 就是监听事件,可以用v-on指令监听DOM事件来触发一些javascript代码。

<div id="app-5">
  <p>{{ message }}</p>
  <button v-on:click="reverseMessage">逆转消息</button>
</div>
var app5 = new Vue({
  el: '#app-5',
  data: {
    message: 'Hello Vue.js!'
  },
  methods: {
    reverseMessage: function () {
      this.message = this.message.split('').reverse().join('')
    }
  }
})

我们的v-on 还有一种简单的写法,就是用 @ 代替。

6、v-model指令

v-model指令,我理解为绑定数据源。就是把数据绑定在特定的表单元素上,它能轻松实现表单输入和应用状态之间的双向绑定。

<div id="app-6">
  <p>{{ message }}</p>
  <input v-model="message">
</div>
var app6 = new Vue({
  el: '#app-6',
  data: {
    message: 'Hello Vue!'
  }
})

在这个例子中,在 input 输入的数据会立即显示在 p 标签中。数据实现了双向绑定。

7、v-bind 指令

v-bind是处理HTML中的标签属性的,例如

就是一个标签, 也是一个标签,我们绑定 上的src进行 动态赋值

<div id="app">
    <img v-bind:src="imgSrc"  width="200px">
</div>
var app=new Vue({
    el:'#app',
    data:{
          imgSrc:'http://baidu.com/wp-content/uploads/2017/02/vue01-2.jpg'
     }
})

在html中我们用v-bind:src=”imgSrc”的动态绑定了src的值,这个值是在vue构造器里的data属性中找到的。
我们的 v-bind还有一种简单的写法,就是用冒号 代替。

8、其他内部指令(v-pre & v-cloak & v-once)

  • v-pre指令

在模板中跳过vue的编译,直接输出原始值。就是在标签中加入v-pre就不会输出vue中的data值了。

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

这时并不会输出我们的 message 值,而是直接在网页中显示 {{message}} 。

  • v-cloak指令
    在vue渲染完指定的整个DOM后才进行显示。它必须和CSS样式一起使用,

    
    [v-cloak] {
      display: none;
    }
    
    <div v-cloak>
      {{ message }}
    </div>
  • v-once指令
    在第一次DOM时进行渲染,渲染完成后视为静态内容,跳出以后的渲染过程。像 v-model 这种数据双向绑定就无法改变渲染的值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值