zoukankan      html  css  js  c++  java
  • Vue基础(1)

    Vue基础

    基础

    首先我们要知道Vue是什么,他是一种框架,一种渐进式的JavaScript框架,JavaScript我们都知道,是一种非常神奇的东西,主要用于渲染网页,可以给网页赋予很多动态的效果,当然还有很多别的用处,这里只是简单说说一下,毕竟我们的重点应该是介绍Vue,而不是JavaScript.

    所以,在我们知道Vue是一种基于JavaScript的框架,那么他肯定有自己的优势,主要体现为以下几点:

    1. Vue可以独立的完成前后端分离的web项目
    2. Vue被设计为是可以自底向上逐层应用
    3. Vue的核心库只关注视图层,不仅易于上手而且便于和很多的第三方库结合.
    4. Vue和各种类库结合使用的时候,完全可以为复杂的单页应用起到一个驱动的作用,这是非常关键的.

    当然这些单纯的理论可能会非常的无聊,所以我们只有在真正使用起来这个框架之后,才会理解到为什么要使用他,当然这是建立在你有别的框架使用经验的情况下.

    导入

    使用非常的简单,我们可以用两种方法来导入vue的文件,一种在线的cdn,或者把Vue的js文件下载下来,直接在本地导入的方法.Vue的在线CDN如下:

    开发环境版本:

    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    
    

    生产环境版本,减少了空格和格式,加载速度会更快:

    <script src="https://cdn.jsdelivr.net/npm/vue"></script>
    

    如果要要本地导入,和导入JS的方法完全一样,举例如下:

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

    在导入了正确的Vue之后,我们就可以开始正式使用它了.

    1. 挂载

    通常情况下,我们的Vue是需要挂载的,挂载的目的是为了将css3的语法和我们页面中的标签进行绑定,进而通过vue来控制页面中的某个或者某些或者所有的标签.

    要注意的一点是,挂载点只会检索到页面中匹配到的第一个结果,如果你是单个匹配的话,所以一般挂载点会选择用id选择器来挂载,因为id通常是唯一的,而类名不是唯一的,容易重复,通过类来取标签就会有误差.

    还有一点就是html和body标签不可以作为挂载点,这是vue内部规定的,我们要牢记.

    new Vue({
        el:'#app'
    })
    # 或者我们可以直接将其赋给一个变量,比如
    let app = new Vue({
        el:'#app'
    })
    

    在挂载完成之后,我们就可以做一些简单的测试和操作了.

    2. 插值表达式

    顾名思义,就是往中间插入值,实际上用的还是模板语法{{}},只不过换了一种叫法

    比如,我们这么定义

    <body>
        <div id="app">
            <p>{{ msg }}</p>	<!--这里就是定义在body里面的变量,双大括号包裹可以从后面定义的vue的data里面直接取值-->
            <p>{{ info+'拼接内容' }}</p>
            <h3>{{ msg[1] }}</h3>	<!--插值表达式里面我们可以完成变量的渲染,基础运算,调用,以及很多基础的功能-->
            <h3>{{ msg.slice(2,4) }}</h3>
        </div>
    </body>
    <script src="js/vue.js"></script>
    <script>
        // 实例成员中的data就是为vue页面模板准备的,可以任意调用
        let app = new Vue({
            el: '#app',
            data: {
                msg: 'message',
                info: 'vue变量信息'
            }
        });
        console.log(app.info);
        // 创建vue实例(new Vue)传进去的字典(对象)的key,被称为vue的实例成员,访问实例成员时,用 vue实例.$成员名,比如下面的例子,在取第一层的时候要加$符,点出来第二层就不再需要
        console.log(app.$el);
        console.log(app.$data);
        console.log(app.$data.msg);
    </script>
    

    3. 事件

    我们知道事件是一个非常广泛的概念,包括在js里面,jq里面,也都会有事件这种概念,而在之前的js里面我们通常会用ajax来绑定事件,从而向后端发送信息,这里Vue自己就附带了这种绑定事件的功能,通常会放在methods里面,具体如下:

    <body>
        <div id="app">
            <p class="p1" v-on:click="fn">这是一个段落,被点击了{{ count }}下</p>
            <!--在Vue里面我们通常用v-on:事件='自定义事件名称'来定义一个事件,然后在下面的Vue的methods里面写入该事件的具体逻辑-->
    <!--事件的定义方式还包括
    	1. @事件名=""
    	2. :事件名=""
    	3. :事件名="fn($event,自定义参数)"
    -->
    </body>
    <script src="js/vue.js"></script>
    <script>
        let app = new Vue({
            el: '#app',
            data: {
                count: 0,
                action: '渲染',
                // fn: function () {
                //     // console.log(app.count);
                //     // app.count ++
                //     console.log(this);  
    // 这里要注意,在data里面也可以直接定义事件,或者说方法,但是这里定义的方法所用的this不是指该vue实例对象,而是顶级Window对象,所以使用起来有诸多不便,还是推荐在methods里面去写事件函数
                 }
            },
            // methods就是为vue实例提供事件函数的
            methods: {
            
                fn: function () {
                    // console.log(app.count);
                    // app.count ++;
                    // console.log(this);  
    // 这里的this就是代表当前该vue实例对象,使用起来非常的方便`1
                    this.count ++
                },
    
            }
        });
    
    </script>
    

    4. 创建对象

    Vue里面创建对象通常有两种方式,即通过创建类,然后实例化产生对象,以及直接声明对象

    1. 通过创建类然后实例化来生成对象

      function People(name, age) {
              this.name = name;
              this.age = age;
              this.eat = function () {
                  console.log(this.name + '在吃饭');
              }
          }
          let p1 = new People('Xiaoming', 17.5);
          console.log(p1.name);
          let res = p1.eat();
          console.log(res);
      
    2. 直接声明创建对象

          let stu1 = {
              name: '张三',
              age: 18,
              eat () {
                  console.log(this.name + '在吃饭');
              }
      //这里我们直接用方法名(){}的方法就可以在对象内部定义其独有的方法,而且这种是简写的方法,即{fn:function(){}}<=>{fn(){}}是等价的
          };
          stu1.eat()
      

    5. v-text和v-html

    字面意思,v-text就是把里面的内容当做文本进行渲染,而v-html则会把其中的内容解析出来,包括可以解析html语法标签的文本.比如

    <!--v-text:将所有内容做文本渲染 -->
    <p v-text="msg + '拼接内容'"></p>
    
    
    <!--v-html:可以解析html语法标签的文本,b会解析成加粗,然后赋给中间的文本值 -->
    <p v-text="'<b>' + msg + '</b>'"></p>
    <p v-html="'<b>' + msg + '</b>'"></p>
    

    6. vue的过滤器

    vue常用过滤器的的关键字为filters,用法和常用过滤器也相似.

    <body>
        <div id="app">
            <!-- 这里默认会将msg作为参数传给filterFn -->
            <p>{{ msg | filterFn }}</p>
    
            <!--过滤器同样可以串联使用,这样前一个过滤器后的结果是后一个过滤器的起始数据-->
            <p>{{ num | f1 | f2 }}</p>
    
            <!--还可以可以同时对多个变量进行过滤,同时过滤器还可以额外传入参数辅助过滤-->
            <!--过滤器会接收所有传入的参数,按传入的位置进行接收,也就是位置参数的意思-->
            <p>{{ msg, num | f3(666, '好的') }}</p>
        </div>
    </body>
    <script src="js/vue.js"></script>
    <script>
        new Vue({
            el: '#app',
            data: {
                msg: '文本内容',
                num: 1
            },
            filters: {
                filterFn(v1, v2) {
                    // console.log(v1);
                    // console.log(v2);
                    return `<b>${v1}</b>`;
                },
                f1(v1) {
                    return v1 * 100;
                },
                f2(v1) {
                    return v1 * 100;
                },
            }
        })
    </script>
    

    7. 属性指令

    属性也是我们经常会使用到的一些东西,因为属性可以修改很多东西,比如一个标签的长度,种类,或者是其样式等等.之前在js里面常用到的属性就是class和style等等.

    <body>
    <div id="app">
        <!--下方的class、id、title、abc等是div标签的属性,属性指令就是控制它们的,其中class,id我们是比较熟悉的,title可能不太熟悉,但是也能理解是什么意思,abc可能不太理解,实际上只是一个自定义的属性,仅此而已,会方便我们以后取一些不好取的值,或者直接调用该标签-->
        <div class="b1" id="b1" v-bind:title="title" :abc="xyz"></div>
                
        <!--属性指令:固定用法, v-bind:属性名="变量",简写方式 :属性名="变量" -->
                
        <!--属性指令操作 style 属性-->
        <div style=" 200px;height: 200px;background-color: greenyellow"></div>
        
        <!-- 通常:变量值为字典 -->
        <div :style="mys1"></div>
    
    
        <!--重点:一般vue都是结合原生css来完成样式控制 -->
        <!--<div :class="c1"></div>-->
    
        <!--class可以写两份,一份写死,一份有vue控制,这样对于整个项目会更加方便-->
        <div class="box1" :class="c2"></div>
    
        <!--{}控制类名,key为类名,key对应的值为bool类型,决定该类名是否起作用-->
        <div :class="{box2:true, circle:cable}" @mouseover="changeCable(1)" @mouseout="changeCable(0)"></div>
    
    
        <!--[]可以控制多个类名-->
        <div :class="[c3, c4]"></div>
    </div>
    </body>
    <script src="js/vue.js"></script>
    <script>
        let app = new Vue({
            el: '#app',
            data: {
                title: '12345',
                xyz: 'opq',
                mys1: {
                     '200px',
                    height: '200px',
                    // 'background-color': 'greenyellow'
                    backgroundColor: 'pink',
                },
                w: '200px',
                c1: 'box1',
                c2: 'circle',
                cable: false,
                c3: 'box1',
                c4: 'circle'
            },
            methods: {
                changeCable(n) {
                    this.cable = n;
                }
            }
        });
    
        //setInterval起到一个定时器的作用,最后一个参数是循环的时间,单位是微秒,中间则是我们需要实现的逻辑
        setInterval(function () {
            if (app.c1 === 'box1') {
                app.c1 = 'box2';
            } else {
                app.c1 = 'box1';
            }
        }, 300)
    </script>
    
  • 相关阅读:
    【爬虫】-爬取食品检验结果
    《Python数据分析与挖掘实战》-第四章-数据预处理
    【算法学习】-线性回归算法
    【数据分析学习】Pandas学习记录
    【数据分析学习】Pandas思维导图
    【数据分析学习】016-numpy数据结构
    路飞学城Python-Day80
    java的安装环境配置详细步骤
    Java中的位运算符
    Java中对List集合的常用操作
  • 原文地址:https://www.cnblogs.com/Xu-PR/p/11838931.html
Copyright © 2011-2022 走看看