zoukankan      html  css  js  c++  java
  • Vue入门笔记

    1.Vue的三个特点

    • JavaScript框架
    • 简化Dom操作
    • 响应式数据驱动(数据变化,则页面相应的发生变化)

    2.第一个Vue程序

    • 导入开发版本的Vue.js

      <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
      
    • 创建Vue实例对象,设置el属性和data属性

      var app = new Vue({
        el: '#app',
        data: {
          message: 'Hello Vue!'
        }
      })
      
    • 使用简洁的模板语法,把数据渲染到页面上

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

    a.el属性

    设置挂载点(通过css选择器设置Vue实例管理的元素)

    1.Vue实例的作用范围是什么呢?

    el命中的元素外部不可使用Vue实例管理的数据,但是命中元素及其内部后代元素可以随便使用

    2.是否可以使用其他的选择器?

    支持ID选择器,class选择器等,但最好在开发的使用使用id选择器,因为id是惟一的

    3.是否可以设置其他的dom元素呢?

    除了div,其他的dom元素也是可以设置的,但只能设置双标签,不能使用html和body

    b.data属性

    Vue中用到的数据定义在data中

    data中可以写复杂类型的数据

    渲染复杂类型数据时,遵守js的语法即可

    3.本地应用

    1.内容绑定,事件绑定

    v-text,v-html,v-on基础
    

    v-text : 设置标签的内容,默认替换全部内容,部分替换使用两个大括号的写法,只会解析为文本

    <div id="app">
    	<h2 v-text="message+'!'"></h2>
    	<h2>我爱看{{ message + "!" }}</h2>
    </div>
    
    var app = new Vue({
    	el:"#app",
    	data:{
    		message:"赘婿"
    	}
    })
    

    v-html : 设置元素的innerHTML,内容中有html结构会被解析为标签

    <div id="app">
    	<p v-html="content"></p>
        <p v-text="content"></p>
    </div>
    
    var app = new Vue({
    	el:"#app",
    	data:{
    		content:"<a href='http://www.zhuixu.com'>赘婿</a>"
    	}
    })
    

    v-on : 为元素绑定事件,事件名不需要写on,指令可以编写为@,绑定的方法定义在methods属性中,方法内部通过this关键字可以访问定义在data中的数据

    <div id="app">
    	<input type="button" value="v-on指令" v-on:click="do">
        <input type="button" value="v-on简写" @click="do">
        <input type="button" value="双击事件" @dblclick="do">
        <h2 @click="changeVedio">{{ vedio }}</h2>
    </div>
    
    var app = new Vue({
    	el:"#app",
    	data:{
    		vedio:"香蜜沉沉烬如霜"
    	},
    	methods: {
    		do:function(){
    			alert("我爱看赘婿");
    		},
    		changeVedio:function(){
    			this.vedio+="好好看!";
    		}
    	}
    })
    

    2.显示切换,属性绑定

    v-show,v-if,v-bind
    

    v-show : 根据真假切换元素的显示状态;实质上是修改元素的display,实现显示隐藏;指令后面的内容,最终都会解析为布尔值,值为true元素显示,值为false元素隐藏

    <div id="app">
    	<input type="button" value="切换显示状态" @click="changeIsShow">
        <img v-show="isShow" src="./img/xxxx.gif" alt="">
    </div>
    
    var app = new Vue({
    	el:"#app",
    	data:{
    		isShow:false
    	},
    	methods: {
    		changeIsShow:function(){
    			this.isShow = !this.isShow;
    		}
    	}
    })
    

    v-if : 根据表达式的真假切换元素的显示状态;本质是通过操纵dom元素来切换显示状态;表达值的值为true,元素存在于dom树中,为false则从dom树中移除;频繁的切换使用v-show,反之使用v-if,前者的切换消耗小

    <div id="app">
    	<input type="button" value="切换显示" @click="toggleIsShow">
        <p v-if="isShow">赘婿真好看</p>
        <h2 v-if="age>=18">终于成年啦!可以看赘婿了</h2>
    </div>
    
    var app = new Vue({
    	el:"#app",
    	data:{
    		isShow:false,
    		age:20
    	},
    	methods: {
    		toggleIsShow:function(){
    			this.isShow = !this.isShow;
    		}
    	}
    })
    

    v-bind : 为元素绑定属性;完整写法是 v-bind:属性名;简写可以省略 v-bind,只保留 :属性名;动态的增删class建议使用对象的方法

    <style>
    	.active{
    		border: 1px solid red;
    	}
    </style>
    
    <div id="app">
    	<img v-bind:src="imgSrc" alt="">
        <br>
        <img :src="imgSrc" alt="" :title="imgTitle+'!!!'"
             :class="isActive?'active':''" @click="toggleActive">
        <br>
        <img :src="imgSrc" alt="" :title="imgTitle+'!!!'"
             :class="{active:isActive}" @click="toggleActive">
    </div>
    
    var app = new Vue({
    	el:"#app",
    	data:{
    		imgSrc:"http://www.xxx.com",
    		imgTitle:"赘婿快点更新",
    		isActive:false
    	},
    	methods: {
    		toggleActive:function(){
    			this.isActive = !this.isActive;
    		}
    	}
    })
    

    3.列表循环,表单元素绑定

    v-for,v-on补充,v-model
    

    v-for:根据数据生成列表结构;数组经常和v-for结合使用;语法是(item,index) in 数据或者item in 数据;item和index可以结合其他指令一起使用;数组长度的更新会同步到页面上,是响应式的

    <div id="app">
    	<input type="button" value="添加数据" @click="add">
    	<input type="button" value="移除数据" @click="remove">
    	
    	<ul>
    		<li v-for="(item,index) in arr">
    			{{ index+1 }}我爱看的小说:{{ item }}
    		</li>
    	</ul>
    	<h2 v-for="item in vedios" :title="item.name">
    		{{ item.name }}
    	</h2>
    </div>
    
    var app = new Vue({
    	el:"#app",
    	data:{
    		arr:["盘龙“,”赘婿","星辰变","神墓"],
    		vedios:[
    			{name:"悬崖"},
    			{name:"香蜜沉沉烬如霜"}
    		]
    	},
    	methods:{
    		add:function(){
    			this.vedios.push({name:"赘婿"});
    		},
    		remove:function(){
    			this.vedios.shift();
    		}
    	}
    })
    

    v-model:便捷的设置和获取表单元素的值;绑定的数据会和表单元素值相关联;绑定的数据<-->表单元素的值

    <div id="app">
        <input type="button" value="修改message" @click="setM">
        <input type="text" v-model="message" @keyup.enter="getM">
        <h2>
            {{ message }}
        </h2>
    </div>
    
    var app = new Vue({
    	el:"#app",
    	data:{
    		message:"我爱看赘婿"
    	},
    	methods:{
    		getM:function(){
    			alert(this.message);
    		},
    		setM:function(){
    			this.message="还是爱看赘婿";
    		}
    	}
    })
    

    4.网络应用

    axios:axios必须先导入才可以使用;使用get或post方法即可发送对应的请求;then方法中的回调函数会在请求成功或失败时触发;通过回调函数的形参可以获取响应内容,或错误信息。

    官方文档:https://github.com/axios/axios

    <input type="button" value="get请求" class="get">
    <input type="button" value="post请求" class="post">
    
    document.querySelector(".get").onclick = function(){
        axios.get("https://xxx.com")
        .then(function(response){
            console.log(response);
        },function(err){
            console.log(err);
        })
    }
    
    document.querySelector(".post").onclick = function(){
        axios.post("https://xxx.com",
                  {username:"宁曦"})
        .then(function(response){
            console.log(response);
        },function(err){
            console.log(err);
        })
    }
    

    axios+vue:axios回调函数中的this已经改变,无法访问到data中数据;把this保存起来,回调函数中直接使用保存的this即可;和本地应用最大区别就是改变了数据来源

    <div id="app">
        <input type="button" value="获取视频列表" @click="getVedio">
        <p>
            {{ vedio }}
        </p>
    </div>
    
    var app = new Vue({
        el:"#app",
        data:{
            vedio:"赘婿"
        },
        methods:{
            getVedio:function(){
                var that = this;
                axios.get("https://xxx.com/getVedio").then(
                function(response){
                    console.log(response.data);
                    that.vedio = response.data;
                },function(err){})
            }
        }
    })
    
  • 相关阅读:
    Java-笔记9-复习
    Java-笔记9
    Java-笔记8-复习
    Java0-笔记8
    Java-笔记7-复习
    hadoop-hdfs-ha配置-搭建
    Java-笔记7
    Java-笔记6-复习
    kettle-作业和参数
    kettle-脚本控件
  • 原文地址:https://www.cnblogs.com/haojun/p/13282400.html
Copyright © 2011-2022 走看看