VUE 快速入门

179 阅读3分钟

官方文档: cn.vuejs.org

1.基础

1.1.简介

  1. JavaScript 框架
  2. 简化 Dom 操作
  3. 响应式数据驱动

1.2.第一个 vue 程序

  1. 导入开发版本的 Vue.js
<!-- 开发环境版本,包含了有帮助的命令行警告 --> 
<script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
  1. 创建 Vue 实例对象,设置 el 属性 和 data 属性
var app = new Vue({ 
    el: '#app', 
    data: { 
        message: 'Hello Vue!' 
    } 
})
  1. 使用模板语法把数据渲染到页面
<div id="app"> 
    {{ message }} 
</div>

1.3.el 挂载点

el 用来设置 vue 实例挂载(管理)的元素。

  1. 作用范围 {{ }} 只在 el 选中的选择器中生效。 即 vue 会管理 el 命中的元素 及其 内部的后代元素。

  2. 适用的选择器 一般都是适用的,但开发中建议使用 id 选择器,保证其唯一性。

  3. 适用的 Dom 元素 适用于其他的双标签,但 不适用与 body 和 html 标签。

1.4.dara 数据对象

  1. vue 中用到的数据定义在 data 中。
  2. data 中可以写 复杂类型的数据。
  3. 使用复杂类型的数据,根据 js 语法。

2.vue 指令

vue 指令,指以 v- 开头的一组特殊语法。

1.v-text

<div id="app"> 
    <h2 v-text="message">被替换的内容</h2>
    <h2>不被替换的内容 - {{ message }}</h2>
    <h2 v-text="message + ' - 拼接的字符串' ">被替换的内容</h2>
    <h2>{{ message + ' - 拼接的字符串' }}</h2>
</div>

2.v-html

设置 标签的 innerHTML

<div id="app"> 
    <!-- 与 js 中的 innerText 与 innerHTML 类似 -->
    <!-- v-text 只会解析为文本 -->
    <!-- v-html 有 htmll 结构会被解析为标签 -->
    <h2 v-text="message">被替换的内容</h2>
    <h2 v-html="message">被替换的内容</h2>
</div>
var app = new Vue({ 
    el: '#app', 
    data: { 
        message: '<a href="#">链接</a>'
    } 
})

3.v-on 绑定事件

为元素绑定事件

<div id="app"> 
    <input type="button" value="事件绑定" v-on:click="方法">
    <input type="button" value="事件绑定" v-on:mouseenter="方法">
    <input type="button" value="事件绑定" v-on:dblclick="方法">
    <!-- 指令可以简写为 @ -->
    <input type="button" value="事件绑定" v-on:click="m">
    <input type="button" value="事件绑定" @click="fun">
    
</div>
var app = new Vue({ 
    el: '#app', 
    data: { 
       message: 'hello'
    },
    //绑定的方法定义在 methods 属性里
    methods: {
        m: function(){
            //方法逻辑
        },
        fun: function(){
            //方法逻辑,使用 this 访问数据
            this.message = "new";
        }
    }
})

4.v-show 元素的显示和隐藏

根据表达式的真假,切换元素的显示和隐藏。 原理是修改元素的 display ,根据指令后内容的 布尔值。

<div id="app"> 
     <img src="地址" alt="img1" v-show="true">
     <img src="地址" alt="img2" v-show="isShow">
     <img src="地址" alt="img3" v-show="age>=18">
</div>
var app = new Vue({ 
    el: '#app', 
    data: {
        isShow: true,
        age: 20
    }
})

5.v-if 元素的显示和隐藏

根据表达式的真假,切换元素的显示和隐藏。 原理是操纵 dom 元素,移出 dom 树,重新添加,消耗较大。

<div id="app"> 
     <img src="地址" alt="img1" v-if="true">
     <img src="地址" alt="img2" v-if="isShow">
     <img src="地址" alt="img3" v-if="age>=18">
</div>
var app = new Vue({ 
    el: '#app', 
    data: {
        isShow: true,
        age: 20
    }
})

6.v-bind 元素的属性

设置元素的属性,如 src,title,class 。 简写直接省略 v-bind ,只保留 :属性名 。

<div id="app"> 
     <img v-bind:src="imgSrc" alt="img1">
     <img v-bind:title="imgTitle + '!' " alt="img2">
     
     <img v-bind:class=" isActive?'active':'' ">
     <img v-bind:class="{active:isActive}">
</div>
var app = new Vue({ 
    el: '#app', 
    data: {
        imgSrc: "图片地址",
        imgTitle: "",
        isActive: false
    }
})

7.v-for

根据数据生成列表结构。 与 数组 结合使用,语法是 (item,index) in 数据

<div id="app"> 
    <ul>
        <li v-for="item in arr"> {{ item }} </li>
    </ul>
    <ul>
        <li v-for="(item,index) in arr" :title="item">{{ index }} {{ item }} </li>
    </ul>
    <ul>
        <li v-for="(item,index) in objArr">{{ index }} {{ item.name }} </li>
    </ul>
</div>
var app = new Vue({ 
    el: '#app', 
    data: {
        arr: [1,2,3,4,5],
        objArr: [
            {name:"zs"},
            {name:"ls"}
        ]
    }
})

8.v-on 自定义参数与事件修饰符

@keyup.enter 限制触发的按键为回车。 还有很多别的事件修饰符 文档: cn.vuejs.org/v2/api/#v-o…

<div id="app"> 
    <input type="button" value="点击" @click="todo(123)">
    <input type="text" @keyup.enter="fun">
    
</div>
var app = new Vue({ 
    el: '#app', 
    methods: {
       todo: function(num){
            consle.log(num);
        },
        fun: function(){
            alert('按了enter');
        }
    }
})

9.v-model 表单元素双向数据绑定

获取和设置表单元素的值(双向数据绑定)。 更改 两边的值 ,都会同步更新。

<div id="app"> 
    <input type="text" v-model="message"/>
    <p>{{ message }}</p>
</div>
var app = new Vue({ 
    el: '#app', 
    data: {
        message: "hello"
    }
})

3.网络应用

结合网络数据开发应用。

1.axios 网络请求库

导包

<script src="https://unpkg.com/axios/dist/axios.min.js"></script>

先导入才能使用,使用get 和 post 方法即可发送对应请求。 then方法中的回调函数会在请求成功 或 请求失败时触发,通过其形参,获取响应内容。

axios.get(地址?key=value&key2=value2).then(function(response){}, function(err){})
axios.post(地址, {key:value, key2:value2}).then(function(response){}, function(err){})

2.axios 结合 vue

var app = new Vue({ 
    el: '#app', 
    data: {
        joke: "笑话"
    },
    methods: {
        getJoke: function(){
            var that = this;
            axios.get("https://autumnfish.cn/api/joke").then(
                function(response){
                    console.log(response.data);
                    console.log(this.joke);  //此时的this已经改变
                        that.joke = response.data; //使用提前保存起来的this。
                }, 
                function(err){}
            )
        }
    }
})