1. 概念

Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架。能够为复杂的单页应用提供驱动。

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

2. 用法

2.1 声明式渲染

2.1.1 改变文本     {{ message }}        打开你的浏览器的 JavaScript 控制台 (就在这个页面打开),并修改 app.message 的值,你将看到上例相应地更新。

vue 简介 随笔 第1张
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
</head>

<body>

  <div id="app">
    {{ message }}
  </div>


  <script src="vue.js"></script>
  <script>

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

</html>
View Code

2.1.2 绑定元素特性(属性)  v-bind:title="message"

vue 简介 随笔 第3张
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
</head>

<body>

  <div id="app-2">
    <span v-bind:title="message">
      鼠标悬停几秒钟查看此处动态绑定的提示信息!
    </span>
  </div>

  <script src="vue.js"></script>
  <script>
    var app2 = new Vue({
      el: '#app-2',
      data: {
        message: '页面加载于 ' + new Date().toLocaleString()
      }
    })
  </script>
</body>

</html>
View Code

2.2  条件与循环

2.2.1 条件       v-if="seen"        Vue 也提供一个强大的过渡效果系统,可以在 Vue 插入/更新/移除元素时自动应用过渡效果

vue 简介 随笔 第5张
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
</head>

<body>

  <div id="app-3">
    <p v-if="seen">现在你看到我了</p>
  </div>

  <script src="vue.js"></script>
  <script>
    var app3 = new Vue({
      el: '#app-3',
      data: {
        seen: true
      }
    })
  </script>
</body>

</html>
View Code

2.2.2 循环      v-for="todo in todos"     {{ todo.text }}

vue 简介 随笔 第7张
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
</head>

<body>

  <div id="app-4">
    <ol>
      <li v-for="todo in todos">
        {{ todo.text }}
      </li>
    </ol>
  </div>

  <script src="vue.js"></script>
  <script>
    var app4 = new Vue({
      el: '#app-4',
      data: {
        todos: [{
            text: '学习 JavaScript'
          },
          {
            text: '学习 Vue'
          },
          {
            text: '整个牛项目'
          }
        ]
      }
    })
  </script>
</body>

</html>
View Code

2.3 处理用户输入

2.3.1 处理组件内部数据      v-on:click="reverseMessage"

vue 简介 随笔 第9张
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
</head>

<body>

  <div id="app-5">
    <p>{{ message }}</p>
    <button v-on:click="reverseMessage">逆转消息</button>
  </div>

  <script src="vue.js"></script>
  <script>
    var app5 = new Vue({
      el: '#app-5',
      data: {
        message: 'Hello Vue.js!'
      },
      methods: {
        reverseMessage: function () {
          this.message = this.message.split('').reverse().join('')
        }
      }
    })
  </script>
</body>

</html>
View Code

2.3.2 双向绑定      v-model="message"

vue 简介 随笔 第11张
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
</head>

<body>

  <div id="app-6">
    <p>{{ message }}</p>
    <input v-model="message">
  </div>

  <script src="vue.js"></script>
  <script>
    var app6 = new Vue({
      el: '#app-6',
      data: {
        message: 'Hello Vue!'
      }
    })
  </script>
</body>

</html>
View Code

2.4 组件

2.4.1 静态数据      Vue.component('todo-item', {      template: '<li>这是个待办项</li>'    })            <todo-item></todo-item>

vue 简介 随笔 第13张
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
</head>

<body>
  <div id="app-7">
    <ol>
      <todo-item></todo-item>
    </ol>

  </div>

  <script src="vue.js"></script>
  <script>
    Vue.component('todo-item', {
      template: '<li>这是个待办项</li>'
    })
    var app7 = new Vue({
      el: '#app-7'
    })
  </script>
</body>

</html>
View Code

2.4.2  动态数据   从父作用域将数据传到子组件    prop   

vue 简介 随笔 第15张
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
</head>

<body>
  <div id="app-7">
    <ol>
      <!--
            现在我们为每个 todo-item 提供 todo 对象
            todo 对象是变量,即其内容可以是动态的。
            我们也需要为每个组件提供一个“key”,稍后再
            作详细解释。
          -->
      <todo-item v-for="item in groceryList" v-bind:todo="item" v-bind:key="item.id"></todo-item>
    </ol>
  </div>

  <script src="vue.js"></script>
  <script>

    
    Vue.component('todo-item', {
      props: ['todo'],
      template: '<li>{{ todo.text }}</li>'
    })

    var app7 = new Vue({
      el: '#app-7',
      data: {
        groceryList: [{
            id: 0,
            text: '蔬菜'
          },
          {
            id: 1,
            text: '奶酪'
          },
          {
            id: 2,
            text: '随便其它什么人吃的东西'
          }
        ]
      }
    })


  </script>
</body>

</html>
View Code

2.4.2.1 实际应用 组件呈现形态

vue 简介 随笔 第17张
<div id="app">
  <app-nav></app-nav>
  <app-view>
    <app-sidebar></app-sidebar>
    <app-content></app-content>
  </app-view>
</div>
View Code

 

 

3. 相关文章

Vue.js

MVVM

mvvm  廖雪峰

 

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄