【笔记】前端基础学习
基础用语介绍
cdn 内容分发网络
这是一种加速策略,能从离自己最近的服务器上获得加速资源。
使用vue采用网络引用,如果是单一的服务器,加入距离很远,就会导致请求很慢,所以vue.js在多个服务器上设置了‘分身’,在此基础上,可以从离自己最近的服务器上获取资源,这就是cdn
MVVM
Vue技术是MVVM开发模式的实现者
MVVM : model view viewmodel(连接视图和数据的中间件)
VM: viewmodel中内置了一个观察者,实现了双向数据的绑定
补充知识
1) event.target.value:
比如在响应函数里,可以指名使用 event (内置的参数对象)。该对象表示当前时间,可以通过 event.target.value 来获取当前时间对象的value的值
2)插值表达式
插值表达式不能写在html标签中,不能作为属性的值的一部分。例如这样的使用是错误的:
<body>
<div id="app">
<a href="{{link}}">百度</a>
</div>
</body>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
new Vue({
el:'#app',
data:{
link:"http://baidu.com"
}
})
</script>
在这种情况中,使用v-bind
<body>
<div id="app">
<a v-bind:href="link">百度</a>
<!-- 也可以写成<a :href="link">百度</a> -->
</div>
</body>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
new Vue({
el:'#app',
data:{
link:"http://baidu.com"
}
})
</script>
Vue绑定事件
1.通过插值表达式
2.计算属性:computed
计算属性首先是属性,其次这个属性拥有计算的能力(这里的计算就是一个函数),他就是一个能将计算结果缓存起来的属性(将行为转化成了静态)
一些常用的函数,可以缓存起来,在调用的时候直接调用缓存的结果,以此来提高效率
注意: computed里面虽然存放的是函数,但在调用的时候computed里的东西是一个属性
3.watch 监控属性
通过watch里给属性绑定函数,当属性的值发生变化时,该函数会自动被调用。调用时可以接收两个参数,第一个参数是属性改变后的值,第二个参数是属性改变前的值
<body>
<div id="app">
{{title}}
<input type="text" v-model="title">
</div>
</body>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
new Vue({
el:'#app',
data:{
title:"hello vue"
},
watch:{
title:function(newValue,oldValue){
console.log(newValue+":"+oldValue);
}
}
})
</script>
Vue改变样式
1.通过给html的class属性绑定vue中的属性值,得到样式的绑定
<style>
.mydiv{
width: 100px;
height: 100px;
background-color: grey;
}
.red{
background-color: red;
}
</style>
<body>
<div id="app">
<div :class="red:temp"></div>
如果temp是true--><div class="red"></div>
否则--><div class=""></div>
</div>
</body>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
new Vue({
el:'#app',
data:{
temp:true
},
})
</script>
2.加入computed
通过computed返回一个对象,对象里面放着对个键值对,效果同方法1
<style>
.mydiv{
width: 100px;
height: 100px;
background-color: grey;
}
.red{
background-color: red;
}
.myWidth{
width: 150px;
}
</style>
<body>
<div id="app">
<div :class="myClassStyle" class="mydiv">
</div>
<button type="button" @click="temp=!temp">点击</button>
</div>
</body>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
new Vue({
el:'#app',
data:{
temp:true
},
computed:{
myClassStyle:function(){
return {
red: this.temp,
myWidth:this.temp
}
}
}
})
</script>
3.双向绑定体现
4.多个样式的操作
在html标签中使用多个样式的组合
<div :class="[mycolor,mw]" class="mydiv"></div>
//注意:不能这样写:<div :class="mycolor" :class="mw" class="mydiv"></div>
new Vue({
el:"#app",
data:{
temp:false,
mw:mywidth,
mycolor:color
}
})
5.通过style设置样式
在内嵌的css样式里指明style的值
<div class="mydiv" :style="{backgroundColor:color}"></div>
//注意:style引用了vue中的内容,因此**是一个键值对,所以需要大括号**,对象的键不能出现"background-color",应改成"backgroundColor"
6.使用computed设置样式
7.设置style属性的多个样式
采用数组的形式
<div class="mydiv" :style="[myStyle,{height:myHeight*2+'px'}]"></div>
//这里的myStyle定义在computed里面
Vue的核心:虚拟DOM和diff算法
vue的高效核心,就是虚拟DOM和diff算法,vue不通过修改dom树来达到修改页面的效果,而是直接在页面上修改该元素,此时这个元素就是一个虚拟的dom。通过diff算法,计算出虚拟的dom修改后和修改前的区别,然后在虚拟dom的基础上进行修改,大大提升了效率。
Vue中的语句
1.分支语句
v-if
3.template 模板标签的使用
在vue中可以使用该标签配合v-if实现多个元素一起出现一起消失,如:
<template v-if="temp">
<div>hello</div>
<p>world</p>
</temple>
4.循环语句
v-for
Vue对象操作
1.可以通过一个Vue对象操作另外一个Vue对象的属性和方法
格式: Vue对象名. 另一个对象的属性/方法
2.Vue实例属性
直接通过对象.的方式的调用的属性,是来自于data或computed的属性,但是vue中的el、data等等这些键也称为属性,这些属性就是vue对象的实例属性
1)实例属性ref的用法:相当于id
在vue里面常使用ref属性来代替id的使用,那么可以快速的调用ref的值来获得页面中的某个元素
<button type="button" ref="mybtn" @click="showVueObject">点击</button>
。。。
this.$refs.mtbtn1.innerHTML="hello";
2)mount的使用
实现了页面的元素和vue对象的动态绑定,之前都是通过el的方式来绑定
Vue的组件
可以将vue对象作为一个组件,反复使用
1.注册:(全局注册)
Vue。component("组件名,{vue对象})
2.使用组件:
在Vue绑定了的html元素中才能使用组件
3.作为组件的vue对象
1)特点1:
写法的区别。Vue。component("组件名",{vue对象}),这个vue对象和之前的vue对象的data实例属性的写法是存在区别的:
new Vue({
data:{
name:"xiaoming",age:19
}
})
------>
{
data:function(){
return{
name:'xiaoming',age:19
}
}
}
2)特点2:
这种组件中template的写法:template里必须有且只有一个根元素
错误写法:
template:"<h1>{{title}}</h1><button type='button' @click=':btnfn'>点击</button>"
正确写法:
template:"<div><h1>{{title}}</h1><button type='button' @click=':btnfn'>点击</button></div>"

浙公网安备 33010602011771号