Vue初始

Posted clbao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Vue初始相关的知识,希望对你有一定的参考价值。

 

一 、安装   https://cn.vuejs.org/ 官方网站

二 、简单实用示例

Vue.js 使用了基于 html 的模板语法,最简单的使用vue的方式是渲染数据,渲染数据最常见的形式就是使用“Mustache”语法 (双大括号) 的文本插值。

首先创建一个vue实例,并在创建实例的过程中传入一个对象。

该对象的第一个属性名为el,它的值是我们需要渲染的目标标签,我们通过属性查找定位这个标签。

该对象的第二个属性名为data,里面就是我们要渲染给浏览器标签的数据,

技术分享图片
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>标题</title>
    <script src="static/vue.min.js"></script>      <!--引用vue-->

</head>
<body>

<div id="d1">
    <h1>{{greeting}}</h1>
    <h3>{{app}}</h3>
</div>
<script>
    // 普通插入文本方法
    // let d1 = document.getElementById("d1");  //获取元素
    // d1.innerText = "hello word"  // 文本添加上 hello word 文字
    
    //数据模板引擎
    // Vue插入文本方法
    new Vue(
        {
            el: "#d1",  // 获取元素
            data: {
                greeting: "hello word",   //在元素内添加使用对应的key 之后就应用上value数据
                app: "hello Vue"   //  在元素内使用 相互对应
            }
        }
    )


</script>
</body>
</html>
简单示例

三 、常用指令

1.v-text

类似双大括号语法渲染数据的另一种方式是使用v-text。

技术分享图片
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>标题</title>
    <script src="static/vue.min.js"></script>      <!--引用vue-->
</head>
<body>
<div id="d1" v-text="greeting"></div>  
<!--使用指令 插入文本-->
<script>
    // 数据模板引擎
    // v-开头的指令是帮助我们渲染数据用的

    new Vue({
        el: "#d1",  // 获取元素
        data: {
            greeting: "Hello Vue",
        }
    })
</script>

</body>
</html>
v-text

2. v-html  

双大括号语法无法渲染HTML标签,我们需要使用v-html。

技术分享图片
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>标题</title>
    <script src="static/vue.min.js"></script>      <!--引用vue-->
</head>
<body>
<div id="d1" v-html="greeting"></div>
<!--使用指令 插入文本-->
<script>
    // 数据模板引擎
    // v-开头的指令是帮助我们渲染数据用的

    new Vue({
        el: "#d1",  // 获取元素
        data: {
            greeting: "<h1>Hello Vue</h1>",
        }
    })
</script>

</body>
</html>
v-html

3.v-for

接下来,我们看看数组和对象使用for的渲染方式。

技术分享图片
<div id="d1">
    <ul>
        <li v-for="i in ary">{{ i }}</li>
    </ul>
    <ul>
        <li v-for="student in students">姓名:{{student.name }},年龄:{{ student.age }},爱好:{{ student.hobby }}</li>
    </ul>
</div>
<!--使用指令 插入文本-->
<script>
    // 数据模板引擎
    // v-开头的指令是帮助我们渲染数据用的

    new Vue({
        el: "#d1",  // 获取元素
        data: {
            ary: [我是1, 我是2, 我是3, 我是4],
            students: [
                {
                    name: "学生1",
                    age: 22,
                    hobby: 排球
                },
                {
                    name: "学生2",
                    age: 11,
                    hobby: 蓝球
                },
                {
                    name: "学生3",
                    age: 32,
                    hobby: 双色球
                },
            ],
        }
    })
</script>
v-for

4. v-if ,v-else-if ,v-else

渲染数据的时候,同样也可以使用条件判断,我们来看看。

技术分享图片
<div id="d1">
    <div v-if="role == ‘mei_nv‘"><h1>欢迎光临</h1></div>
    <div v-else-if="role == ‘big_mei_nv‘"><h1>欢迎再次光临</h1></div>
    <div v-else><h1>再见</h1></div>

</div>
<!--使用指令 插入文本-->
<script>


    let vm = new Vue({
        el: "#d1",  // 获取元素
        data: {
            // role: "mei_nv",  // 第一次 展示 欢迎光临
            // role: "big_mei_nv",  // 第二次 展示 欢迎再次光临
            // role: "no",   // 第三次 展示 再见
        }
    })
</script>
v-if

通过上面的代码我们可以看出,v-if的作用是控制标签的显示,它通过判断添加标签,底层采用的是appendChild来实现的,下面我们来看一个同样也是控制标签显示的另一个指令v-show。

5. v-show

技术分享图片
<div id="d1" v-show="greeting">看见我了没?</div>
<!--使用指令 插入文本-->
<script>
    // 数据模板引擎
    // v-开头的指令是帮助我们渲染数据用的

    let vm = new Vue({
        el: "#d1",  // 获取元素
        data: {
            // greeting: true,  // 在页面展示出来了
            // greeting: false  // 在页面展示不出来
            // greeting: 1, // 在页面展示不出来
            greeting: 0  // 在页面展示不出来
        }
    })
</script>
v-show

与v-if不同的是,v-show通过样式的display控制标签的显示。

6.v-if 和v-show对比

技术分享图片
v-if和v-show的性能比较
我们简单比较一下二者的区别:

实现方式:v-if底层采用的是appendChild来实现的,v-show通过样式的display控制标签的显示,正因为实现方式上面有差异,导致了他们的加载速度方面产生了差异;

加载性能:v-if加载速度更快,v-show加载速度慢

切换开销:v-if切换开销大,v-show切换开销小

v-if是惰性的,它是“真正”的条件渲染,因为它会确保在切换过程中条件块内的事件监听器和子组件适当地被销毁和重建,v-show 也是惰性的:如果在初始渲染时条件为假,则什么也不做——直到条件第一次变为真时,才会开始渲染条件块。

v-show 就简单得多——不管初始条件是什么,元素总是会被渲染,并且只是简单地基于 CSS 进行切换。

一般来说,v-if有更高的切换开销,而v-show有更高的初始渲染开销。因此,如果需要非常频繁地切换,则使用v-show较好,如果在运行时条件很少改变,则使用v-if较好。
对比

7. v-bind

绑定属性,不多说了,注意冒号后面跟标签的属性,属性后面的等号指向数据,它可以简写为 :class, :href。

技术分享图片
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>标题</title>
    <script src="static/vue.min.js"></script>      <!--引用vue-->

    <style>
        .active {
            width: 500px;
            height: 500px;
            background-color: blue;
        }
    </style>

</head>
<body>
<div id="d1">

    <a v-bind:href="baidu">跳转百度</a>    <!--绑定一个连接给按标签的连接-->

    <div v-bind:class="[isActive]"></div>
    <!--给添加一个类  类名就是对应的数据  -->
</div>

<script>
    // 数据模板引擎
    // v-开头的指令是帮助我们渲染数据用的

    let vm = new Vue({
        el: "#d1",  // 获取元素
        data: {
            baidu: "https://www.baidu.com/",
            isActive: "active"
        }
    })
</script>

</body>
</html>
v-bind

8. v-on

另一个非常重要的指令是v-on,使用v-on我们可以在标签上面绑定事件,注意我们新建的vue实例app01中多了一个属性,methods,在methods中,是我们具体事件的实现方式。

技术分享图片
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>标题</title>
    <script src="static/vue.min.js"></script>      <!--引用vue-->

    <style>
        .active {
            color: green;
        }
    </style>

</head>
<body>
<div id="d1">
    <h1 v-bind:class="{active:isActive}">点击下边这个按钮查看颜色</h1>
    <button v-on:click="changeColor">点击切换颜色</button>
    <!--点击执行changeColor对应的函数-->
</div>

<script>
    // 数据模板引擎
    // v-开头的指令是帮助我们渲染数据用的

    let vm = new Vue({
        el: "#d1",  // 获取元素
        data: {
            isActive: false  // true 就变绿色字体  false就是黑色

            },
        methods:{
                changeColor: function () {
                    this.isActive = !this.isActive  // 点击让他变成非真或者非假
                }
        }
    })
</script>

</body>
</html>
v-on
技术分享图片
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>v-on</title>
    <style>
    </style>
    <script src="./vue.js"></script>
</head>
<body>
    <div id="app01">
        <!--方式一-->
        <a v-bind:href=link
           v-bind:class="{active: isActive}"
           v-on:click="myClick"
           v-on:mouseenter="mouseEnter"
           @mouseleave="mouseLeave">去百度</a>
        <!--方式二-->
        <button v-on="{click: myClick,
                       mouseenter: mouseEnter,
                       mouseleave: mouseLeave}">
            点我今晚吃鸡~~~
        </button>
    </div>

    <script>
        // 绑定属性,简写冒号:
        let app01 = new Vue({
            el: "#app01",
            data: {
                // urls: {
                //     url: "https://www.baidu.com",
                //     name: "百度"
                // },
                link: "https://www.baidu.com",
                isActive: false
            },
            methods: {
                myClick: function () {
                    // this.isActive = true;
                    console.log("大吉大利,今晚吃鸡~~~")
                },
                mouseEnter: function () {
                    console.log("鼠标来了~~~");
                },
                mouseLeave: function () {
                    console.log("鼠标走了~~~");
                }
            }
        })
    </script>

</body>
</html>
v-on test

9.v-model

上面演示的是通过vue实例将数据渲染进模板,并且在控制台,我们修改数据之后,修改后的数据能够及时(官方称之为响应式)的渲染到模板层,那么,如果有这样的需求,比如有一个input标签,当用户修改渲染的原始数据后,打印修改后的数据,简单说,我们需要vue实例可以帮我们渲染数据并响应式的监听数据修改,同时我们还需要监听用户行为,如果用户在标签上面修改了数据(之前的修改,指的是通过vue实例app01进行的数据修改),我们需要获取到数据,针对这个需求,我们可以使用v-mode指令。

技术分享图片
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>标题</title>
    <script src="static/vue.min.js"></script>      <!--引用vue-->

</head>
<body>
<div id="d1">
    
    <!--都用上指令v-model(响应式渲染)-->
    <input type="text" v-model="name">

    <input type="checkbox" value="" v-model="sex">
    <input type="checkbox" value="" v-model="sex">

    <select v-model="num">
        <option>1选择1</option>
        <option>2选择2</option>
        <option>3选择3</option>
    </select>

    <hr>
    <!--把数据空值写到页面上-->
    {{name}}
    {{sex}}
    {{num}}
    <!--通过填写上边的数据 ,实施展示出来-->

</div>

<script>
    // 数据模板引擎
    // v-开头的指令是帮助我们渲染数据用的

    let vm = new Vue({
        el: "#d1",  // 获取元素
        data: {
           name:"",
           sex:[],
           num:[],

        }
    })
</script>

</body>
</html>
v-model

 

以上是关于Vue初始的主要内容,如果未能解决你的问题,请参考以下文章

vscode中通过快捷键`vh`将vue初始化代码结构自动输出

vsCode写vue项目一键生成.vue模板

VSCode自定义代码片段1——vue主模板

VSCode自定义代码片段——.vue文件的模板

VSCode自定义代码片段(vue主模板)

VSCode自定义代码片段11——vue路由的配置