1.MVVM
1.什么是MVVM:
MVC : model(模型) view(视图) controll(控制器)
MVVM : model view view-model -->数据的双向绑定
2.ES6语法
语法一
let相较于var,他是块级的。也就是局部的
for (var i=0;i<5;i++){
console.log(i);
}
console.log("==========");
console.log(i);
console.log("=======");
for (let j=0;j<5;j++){
console.log(j);
}
console.log("=========");
console.log(j);
语法二
const 一旦有值就不能修改(掌握)
下面这样就会报错
const a=11;
console.log(a);
const a = 12;
console.log(a);
语法三
解构表达式(掌握)
数组解构
var arr=[1,2,3]
var [a1,a2,a3]=arr;
console.log(a1);
console.log(a2);
console.log(a3);
对象解构
var obj={"name":"呵呵","age":"123"}
var {name,age}=obj;
console.log(name);
console.log(age);
语法四
箭头函数(掌握)
function say() {
console.log("aaaaaaa")
}
var obj= {
hah: (obj) => {
console.log("哈哈哈哈哈哈"+obj)
}
}
say();
obj.hah("嗝")
箭头+解构一起
var say=({name})=>console.log("我是"+name);
var obj={
name:"你猜"
}
say(obj);
3.vue
1.什么是vue
(1)Vue是构建界面的渐进式的js框架
(2)只关注视图层, 采用自底向上增量开发的设计。
(3)Vue 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。 --数据双向绑定
一句话:vue就是做界面的js框架 (jquery/easyui)
2.vue怎么使用
(1)在项目里面 运行 npm install vue
(2)在页面引入vue.js
<script type="text/javascript" src="node_modules/vue/dist/vue.js"></script>
(3)测试代码
<body>
<div id="app">
{{name}}
</div>
<script>
new Vue({
el:"#app",
data:{
name:"xxxx"
}
});
</script>
3.el挂载
el:挂载,把vue这个对象el方式:
(1)id的方式进行挂载 挂载到对应的标签上面去
<body>
<div id="app">
{{name}}
</div>
<script>
new Vue({
el:"#app",
data:{
name:"xxxx"
}
});
</script>
(2) class方法进行挂载
<body>
<div class="app">
{{name}}
</div>
<script>
new Vue({
el:".app",
data:{
name:"xxxx"
}
});
</script>
4.data数据
data:放字符串 对象 和数组 都可以
data:{
name:"aaaaa",
user:{
name:"名字",
age:"年龄",
hobby:["爱好1","爱好二"]
}
5.methods方法
这里面放方法
methods:{
say(obj){
console.log("你在说"+obj)
},
run(obj){
console.log("你又在跑"+obj)
}
6.Vue生命周期
vue对象 从出生 到死亡 经过这个过程 就叫生命周期
vue生命周期里面钩子方法:
created:(掌握)
表示创建完vue对象的时候,执行内容
mounted:(掌握) -- window.onload
表示页面所有的内容 加载完之后,执行内容
<script>
var app=new Vue({
el:"#app",
data:{
name:"aaaaa",
user:{
name:"名字",
age:"年龄",
hobby:["爱好1","爱好二"]
}
},methods:{
say(obj){
console.log("你在说"+obj)
},
run(obj){
console.log("你又在跑"+obj)
}
},
created(){
console.log("我是Vue创建完就执行的")
},
mounted(){
console.log("我是渲染完毕后执行的")
}
});
//修改内容
app.user.name="改了"
app.run("不跑")
app.say("杀");
</script>
钩子环节
created创建对象 --> 渲染标签内容 -- >mounted挂载完 -->destory销毁
重点:
created / mounted
7.数据的双向绑定
v-model:双向绑定
<div id="app">
<input type="text" v-model="msg" v-on:change="changeData">
{{msg}}
</div>
<script>
var app=new Vue({
el:"#app",
data: {
msg: "test"
},methods:{
changeData(){
console.log(this.msg)
}
}
});
</script>
4.Vue指令
1.v-text/v-html
v-text不会解析html格式
v-html会解析
<div id="app">
<span v-text="name"></span>
<span v-text="user.name"></span>
<span v-html="user.name"></span>
</div>
<script>
var app=new Vue({
el:"#app",
data:{
name:"<h1>不知道</h1>",
user:{
name:"<h2>你猜</h2>"
}
}
})
</script>
2.v-for
循环数组
<ul>
<li v-for="hobby in hobbys">
{{hobby}}
</li>
</ul>
data:{
hobbys:["唱","跳","rap","打篮球"],
}
循环对象
<ul>
<li v-for="users in user">
{{user}}
</li>
</ul>
data:{
user:{
name:"疯子",
hobby:"大人"
},
}
带索引循环数组
<ul>
<li v-for="(hobby,index) in hobbys">
{{hobby}}====={{index}}
</li>
</ul>
data:{
hobbys:["唱","跳","rap","打篮球"],
}
循环对象value key index
<ul>
<li v-for="(users,key,index) in user">
{{users}}====={{key}}====={{index}}
</li>
</ul>
data:{
user:{
name:"疯子",
hobby:"大人"
},
}
循环json数据
<table>
<tr>
<th>id</th>
<th>name</th>
<th>age</th>
<th>sex</th>
</tr>
<tr v-for="student in students">
<td>{{student.id}}</td>
<td>{{student.name}}</td>
<td>{{student.age}}</td>
<td>{{student.sex}}</td>
</tr>
</table>
data:{
students:[{"id":1,"name":"第一","age":25,"sex":"男"},
{"id":2,"name":"第二","age":25,"sex":"女"},
{"id":3,"name":"第三","age":25,"sex":"男"}]
}
3.v-bind
绑定的标签里面属性的值,主要是改变属性得值
<div id="app">
<!-- v-bind可以绑定标签里面的属性的值 比如src title-->
<img src="image/6.jpg"><br>
<img v-bind:src="imagSrc">
<img :src="imagSrc">
<input v-bind="props">
</div>
</body>
<script>
new Vue({
el:"#app",
data:{
imagSrc:"image/6.jpg",
props:{
type:"text",
name:"username"
}
}
})
</script>
4.v-model
控制 标签的value值 完成双向绑定和v-bind是不同的
绑定普通的字符串值
<input v-model="inputValue">
{{inputValue}}
data:{
inputValue:"这是一个文本",
}
绑定到type=checkbox的input表单元素,这里设置值有点不同
打代码:<input type="checkbox" v-model="checkboxValue" value="打代码">
睡觉:<input type="checkbox" v-model="checkboxValue" value="睡觉">
{{checkboxValue}}
data:{
checkboxValue:["睡觉"],
}
绑定到type=radio的input表单元素
打代码:<input type="radio" v-model="radioValue" value="打代码">
睡觉:<input type="radio" v-model="radioValue" value="睡觉"><br>
{{radioValue}}
data:{
radioValue:"打代码",
}
绑定到文本域的值
<textarea v-model="textValue"></textarea>
{{textValue}}
ata:{
textValue:"文本域"
}
下拉的值
<select v-model="selectValue">
<option value="打代码">打代码</option>
<option value="睡觉">睡觉</option>
<option value="万一游戏">万一游戏</option>
</select>
{{selectValue}}
ata:{
selectValue:"打代码"
}
5.v-show
是靠控制display这个属性实现得
<div id="app">
<a v-show="show">你能到我?</a>
<a v-show="hidden">你能到我?</a>
<a v-show="score=90">你能到我?</a>
</div>
<script>
new Vue({
el:"#app",
data:{
"show":true,
"hidden":false,
"score":90,
}
})
</script>
6.v-if/v-else/v-if-elseif
如果不成立 ,在页面无法看到
<div id="app">
<div v-if="age<18">你可以看到这里</div>
<div v-if="age<18">你可以看到这里</div>
<div v-else="age>18">你不能看到那里倒是你可以看到更刺激的</div>
<div v-if="age<18">你可以看到这里</div>
<div v-else-if="age>18&&age<60">你不能看到那里倒是你可以看到更刺激的</div>
<div v-else>差不多看点绿色的了</div>
</div>
<script>
new Vue({
el:"#app",
data:{
age:66,
}
})
</script>