Vue:实践学习笔记(1)——快速使用

Vue:实践学习笔记(1)——快速使用

Vue基础知识

0.引入Vue

官方地址:Vue的官方下载地址

Vue推荐博客:keepfool

在你的程序中快速引入Vue

<!-- 开发环境版本,包含了用帮助的命令行警告 -->
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<!-- 生产环境版本,优化了尺寸和速度 -->
<script src="https://cdn.jsdelivr.net/npm/vue"></script>

1.MVVM模式

 

能不能告诉View一个数据结构,然后View就能根据这个数据结构的变化而自动随之变化呢?当然是可以的,我们引入MVVM开发模式。

ViewModel,他可以与View层绑定,当ViewModel发生变化时,View立刻就会发生变化。所以其实ViewModel实现了对其自身数据结构变动到视图的转换

2.快速开始

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

2.1文本插值方式

  在Vue中,数据绑定最常见的形式就是使用“Mustache”语法 (双大括号) 的文本插值:{{属性}}

<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>

    <body>
        <!--这是我们的View-->
        <div id="app">
            {{ message }}
        </div>
    </body>
    <script src="js/vue.js"></script>
    <script>
        // 这是我们的Model
        var exampleData = {
            message: 'Hello World!'
        }

        // 创建一个 Vue 实例或 "ViewModel"
        // 它连接 View 与 Model
        new Vue({
            el: '#app',
            data: exampleData
        })
    </script>
</html>

2.2输出原始HTML

    <h2>原始HTML</h2>
    <div id="app2">
        <span v-html="message"></span>
    </div>

    <script>
        var app = new Vue({
            el: '#app2',
            data: {
                message: '<b>你好Vue</b>'
            }
        })
    </script>

2.3绑定元素特性:

  Mustache 语法不能作用在 HTML 特性上,遇到这种情况应该使用 v-bind 指令

<script src="https://unpkg.com/vue"></script>
 
 <div id="app">
   <span v-bind:title="content">你好</span>
 </div>
 
 <script>
 var app = new Vue({
  el:'#app',
  data:{
      content:'你好Vue!'
  }
 })
 
 </script>

2.4 使用JavaScript表达式

  对于所有的数据绑定,Vue.js 都提供了完全的 JavaScript 表达式支持。这些表达式会在所属 Vue 实例的数据作用域下作为 JavaScript 被解析。有个限制就是,每个绑定都只能包含单个表达式,所以下面的例子都不会生效

<!-- 这是语句,不是表达式 -->
{{ var a = 1 }}

<!-- 流控制也不会生效,请使用三元表达式 -->
{{ if (ok) { return message } }}
{{ number + 1 }}

{{ ok ? 'YES' : 'NO' }}

{{ message.split('').reverse().join('') }}

<div v-bind:id="'list-' + id"></div>

3.常用指令

  指令 (Directives) 是带有 v- 前缀的特殊属性。指令属性的值预期是单个 JavaScript 表达式(v-for 是例外情况,稍后我们再讨论)。指令的职责是,当表达式的值改变时,将其产生的连带影响,响应式地作用于 DOM

vi-if指令:进行条件判断

 <div id="app1">
        <h2>X are in stock.</h2>
        <ul>
            <li v-for="p in products">
                <input type="number" v-model.number="p.goods_num">
                {{p.goods_name}}
                <span v-if="p.goods_num===0">
                    卖完了
                </span>
                <button @click="p.goods_num+=1" class="btn btn-default">Add</button>
            </li>
        </ul>
        <h4>总共的数量是:{{totalNum}} By 计算属性</h4>
        <h4>总共的数量是:{{totalNumMethod()}} By 方法</h4>
    </div>

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

    <div id="app">
        <h2>X are in stock.</h2>
        <ul>
            <li v-for="p in products">
                {{p}}
            </li>
        </ul>
    </div>
    <script>
        var app = new Vue({
            el:'#app',
            data:{
                product:"Jack",
                products:['Boot','Mike','Tom']
            }
        })
    </script>

4.v-on:事件监听

v-on的缩写形式如下:

<!-- 完整语法 -->
<a v-on:click="doSomething">...</a>

<!-- 缩写 -->
<a @click="doSomething">...</a>
 1 <div id='show'>
 2    <button v-on:click="alert">
 3    {{content}}
 4    </button>
 5 </div>
 6 
 7 <script>
 8 var app1 = new Vue({
 9     el:'#show',
10   data:{
11       seen:false,
12     content:"Hello"
13   },
14   methods:{
15       alert:function()
16     {
17         this.content = '我被点击了'
18     }
19   }
20 })
21 </script>

说明:

  点击按钮后,我们更新了应用的状态,但没有触碰 DOM——所有的 DOM 操作都由 Vue 来处理,你编写的代码只需要关注逻辑层面即可

5.v-model:表单与应用程序之间双向绑定

  v-model 指令在表单 <input> 及 <textarea> 元素上创建双向数据绑定。它会根据控件类型自动选取正确的方法来更新元素。尽管有些神奇,但 v-model 本质上不过是语法糖。它负责监听用户的输入事件以更新数据,并对一些极端场景进行一些特殊处理。

  注意v-model 会忽略所有表单元素的 valuecheckedselected 特性的初始值而总是将 Vue 实例的数据作为数据来源。你应该通过 JavaScript 在组件的 data选项中声明初始值。

  与输入框绑定:

<input v-model="message" placeholder="edit me">
<p>Message is: {{ message }}</p>

  

  与复选框绑定:

  

补充:

  我们可以使用修饰符来添加双向绑定的一些细节:

<!-- 在“change”时而非“input”时更新 -->
<input v-model.lazy="msg" >
<!-- 将用户输入值转换为数值类型 -->
<input v-model.number="age" type="number">
<!-- 删除首尾空白符号 -->
<input v-model.trim="msg">

6.组件化应用程序构建

1.创建一个模板

    var myComponent = Vue.extend({
        props:["todo"],
        template: "<a class='weui-cell weui-cell_access' href='javascript:;'>
<div class='weui-cell__bd'><p>{{todo.text}}</p></div><div class='weui-cell__ft'></div></a>" });

2.注册模板

  Vue.component('todo-item',myComponent);

3.使用组件

        var app = new Vue({
            el:"#cell-list",
            data:{items:[{id:1,text:"hello"},{id:2,text:"bob"},{id:3,text:"Tom"}]}
        })

 

posted @ 2018-02-03 16:23  子烁爱学习  阅读(497)  评论(0编辑  收藏  举报