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){})
        }
    }
})
posted @ 2020-07-11 09:05  Kefi123  阅读(202)  评论(0编辑  收藏  举报