vueday1初识
1.什么是vue
Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架
它是一套前端的框架
2.什么是ECMAScript
ECMAScript是浏览器脚本语言的规范,可以狭义理解是javascript的规范。
3.EC6和EC5的不同
3.1声明变量
/*
es6语法规范1: var和let的区别
相同点:var和let都是申明变量的
区别: let是申明块级的变量(简单理解就是在某个代码块中生效,离开该代码块就没有效果了)
*/
var a = 20
console.debug(a)
let b = 20
console.debug(b)
/*如果写在代码块外面就会出错*/
for(let a=0;a<10;a++){
console.debug(a)
}
/*
*es6语法规范2: const
* const 也是用来申明变量的,被const申明的变量就是一个常量
* */
const a = 20;
/*这里如果再次对a进行赋值是不行的*/
a = 25;
console.debug(a)
3.2结构表达式
/*数组取法*/
let arr = ["好","大","方"]
/*ES5的取值方法*/
console.debug(arr[0])
/*ES6的取值方法*/
let [a,b,c]= arr
/*直接和数组里面的一一进行对应*/
console.debug(a,b,c)
/*结构表达式取值*/
var p = {
name:"三金",
age:22,
sex:true
}
/*原生的js取法*/
function show(p) {
console.debug(p.name,p.age,p.sex)
}
show(p)
/*ES6的取法*/
function show({name,age,sex}) {
console.debug(name,age,sex)
}
/*调用函数,作为参数传递*/
var{name,age,sex} = p
console.debug(name,age,sex)
3.2箭头函数
var p = {
name:"三辆",
age:20,
/*函数写法一*/
show1:function () {
console.debug(this.name,this.age)
},
/*函数写法二箭头*/
show2: ()=> {
console.debug("箭头的this指向的是最外层,这里指向的是window")
},
/*函数写法三ES6才有的*/
show3(){
console.debug("我什么都没有")
}
}
p.show1();
p.show2();
p.show3();
3.3promiss使用(底层的了解)
/*vue底层是如何实现ajax异步的*/
const p = new Promise((resolve, reject) =>{
// 这里我们用定时任务模拟异步
const num = Math.random();
// 随机返回成功或失败
if (num < 0.5) {
resolve("成功AAA!num:" + num)
} else {
reject("出错了BBB!num:" + num)
}
})//以后上面这坨代码我们都看不到的
// 调用promise
p.then(function (msg) {//如果调用成功执行该function函数中的内容
console.log(msg);
}).catch(function (msg) {//如果调用失败执行cat代码块中的内容提供
console.log(msg);
})
/**
* 伪代码以后发送ajax的写法:
* this.axios.get(url,param).then(res=>{
*
* }).catch(res=>{
*
* })
*/
3.4ES规范模块化
a.js作为导入
/*将b的导入到a里面来*/
import util1 from "b";
/*一次性导入多个*/
import {name,age,p} from "b";
/*导入默认的名字*/
/*这个名字是可以随便取得*/
import x from "b";
x.show1();
x.show2();
b.js作为导出
/*以后如果程序上线了,可以将这些模块导入到一个模块中,传就只传这一个模块就好了*/
/*导出方式一*/
export const util={
sun(){
},
sun2(){
}
}
/*导出方式二*/
const util={
sun(){
},
sun2(){
}
}
/*export util;*/
/*一次性导出多个*/
let name="三"
let age = 30
const p = {
name:"捡钱",
age:20,
email:"222@qq.com"
}
export {name,age,p}
/*导出的时候不给名字,用默认的名字*/
export default {
show2(){
}
}
export default {
show1(){
}
}
4.hello-vue
安装vue:傻瓜式安装
在idea下载一个nodejs,然后就可以使用idea的控制台查看vue版本号
<!--注意:当你导入vue的核心库之后,该页面就有一个内置对象叫做Vue-->
<script type="text/javascript" src="node_modules/vue/dist/vue.min.js"></script>
</head>
<body>
<!--准备dom节点-->
<div id="app">
{{msg}}</br>
{{person}}</br>
{{person.name}}</br>
{{hellovue()}}</br>
<span style="color: green">{{msg}}</span></br>
</div>
</body>
<script type="text/javascript">
var vue = new Vue({
//挂载
el:"#app",
//准备数据
data:{
msg:"hello,vue",
email:"2222@qq.com",
age:20,
person:{
name:"明天上晚自习",
age:22
},
hellovue(){
return("说好啊")
}
}
});
</script>
5.vue里面的常见指令
5.1vue-el
<!--注意:当你导入vue的核心库之后,该页面就有一个内置对象叫做Vue-->
<script type="text/javascript" src="node_modules/vue/dist/vue.min.js"></script>
</head>
<body>
<div id="app">
{{msg}}
</div>
<div class="bpp">
{{msg}}
</div>
<span>{{msg}}</span>
</body>
<script type="text/javascript">
/*
el:主要使用用来挂载指定的dom
* el支持挂载的选择器有: id选择器, 类型选择器 标签选择器
*
* 从这个列子可以看出,虽然它支持三种选择器的挂载,但是每个选择器只能挂载一个dom
* 所以建议大家以后挂载dom的时候统一使用id挂载
* */
/*id选择器*/
var vue = new Vue({
el:"#app",
data:{
msg:"测试"
}
})
/*类型选择器*/
var vue = new Vue({
el:".bpp",
data:{
msg:"测试"
}
})
/*标签选择器*/
var vue = new Vue({
el:"span",
data:{
msg:"测试"
}
})
</script>
5.2vue-data
<!--注意:当你导入vue的核心库之后,该页面就有一个内置对象叫做Vue-->
<script type="text/javascript" src="node_modules/vue/dist/vue.min.js"></script>
</head>
<body>
<div id="app">
{{msg}}<br/>
{{person.name}}
</div>
</body>
<!--data数据源,主要是用来准备数据的-->
<script type="text/javascript">
var vue = new Vue({
el:"#app",
data:{
msg:"测试data",
name:"测试",
age:20,
person:{
name:"大哥",
sex:true
}
}
})
</script>
5.3vue methods
<!--注意:当你导入vue的核心库之后,该页面就有一个内置对象叫做Vue-->
<script type="text/javascript" src="node_modules/vue/dist/vue.min.js"></script>
</head>
<body>
<div id="app">
<!--方法里面没有带参数的-->
{{hello()}}
<!--方法里面带有参数的-->
{{hello2(eeeeeeee)}}
</div>
</body>
<script type="text/javascript">
var vue = new Vue({
el:"#app",
data:{
name:"盖楼",
sex:true
},
/*方法专门也在这个methods里面*/
methods:{
hello(){
alert("老谭")
return "xxxx";
},
hello2(msg){
return "bbbbbbb"
}
}
})
</script>
5.4vue 表达式
<!--注意:当你导入vue的核心库之后,该页面就有一个内置对象叫做Vue-->
<script type="text/javascript" src="node_modules/vue/dist/vue.min.js"></script>
</head>
<body>
<!--在vue里面进行加减乘除-->
<div id="app">
<!--前面这两个不是这样固定的-->
<!--这两种写法结果都是相同的-->
{{num1}}+{{num2}}={{num1+num2}}<br/>
{{num1}}*{{num2}}={{num1*num2}}<br/>
{{num1}}/{{num2}}={{num1/num2}}<br/>
{{num1}}-{{num2}}={{num1-num2}}<br/>
{{num1}}-{{num2}}={{num1%num2}}<br/>
num1+num2={{num1+num2}}<br/>
<!--vue里面也支持三目运算-->
<!--在vue里面只有6个为false,null,"",NAN,0,undefined,其他都为true-->
{{sex?"男":"女"}}
</div>
</body>
<script type="text/javascript">
var vue = new Vue({
el:"#app",
data:{
num1:10,
num2:30,
sex:-false
}
})
</script>
5.5vue操作字符串
<!--注意:当你导入vue的核心库之后,该页面就有一个内置对象叫做Vue-->
<script type="text/javascript" src="node_modules/vue/dist/vue.min.js"></script>
</head>
<body>
<div id="app">
{{str}}<br/>
{{str.length}}<br/>
<!--从索引第二个开始,第5个结束,左闭右开-->
{{str.substring(2,5)}}<br/>
<!--从第二个开始,总共截取3个长度-->
{{str.substr(2,3)}}<br/>
</div>
</body>
<script type="text/javascript">
var vue = new Vue({
el:"#app",
data:{
str:"itsource"
}
})
</script>
5.6v-text以及v-html
<!--注意:当你导入vue的核心库之后,该页面就有一个内置对象叫做Vue-->
<script type="text/javascript" src="node_modules/vue/dist/vue.min.js"></script>
</head>
<body>
<div id="app">
<div v-text="text">
123131
</div>
<div v-html="html">
123131
</div>
</div>
</body>
<script type="text/javascript">
var vue = new Vue({
el:"#app",
data:{
text:"<h1>我只是在测试v-text</h1>",
html:"<h1>我只是在测试v-html</h1>"
}
})
</script>
5.7v-for
<!--注意:当你导入vue的核心库之后,该页面就有一个内置对象叫做Vue-->
<script type="text/javascript" src="node_modules/vue/dist/vue.min.js"></script>
</head>
<body>
<div id="app">
<!--循环-->
<ul>
<li v-for="v in num">{{v}}</li>
</ul>
<!--带索引的的循环-->
<ul>
<li v-for="(v,i) in num">{{v}}------{{i}}</li>
</ul>
<!--对字符串进行循环,拿到的是每一个字符-->
<ul>
<li v-for="(v,i) in str">{{v}}------{{i}}</li>
</ul>
<!--对数组进行循环,拿到的是每一个值-->
<ul>
<li v-for="(v,i) in arr">{{v}}------{{i}}</li>
</ul>
<!--对对象进行循环,它是唯一一个有三个参数的,代表看键值对以及索引-->
<ul>
<span v-for="(v,k,i) in person">{{v}}------{{k}}-------{{i}}</span>
</ul>
</div>
</body>
<script type="text/javascript">
var vue = new Vue({
el:"#app",
data:{
num:10,
str:"itsource",
arr:["jj","大哥","二哥"],
person:{
name:"大哥",
sex:20,
sex:true
}
}
})
</script>
5.8v-bind
<!--注意:当你导入vue的核心库之后,该页面就有一个内置对象叫做Vue-->
<script type="text/javascript" src="node_modules/vue/dist/vue.min.js"></script>
</head>
<body>
<div id="app">
<!--以前获取图片的方式-->
<img src="image/1.jpg" width="300px" height="300px">
<!--vue中获取图片的方式1-->
<img v-bind:src="src" v-bind:width="width" v-bind:height="height">
<!--vue中获取图片的方式2,简写-->
<img :src="src" :width="width" :height="height">
<!--使用v-bind的方式来取图片(简写方式 直接绑定对象) 方式3-->
<img v-bind="img">
</div>
</body>
<!--可以绑定自定义的属性,如果有需要添加自定义属性也是可以绑定的-->
<script type="text/javascript">
var vue = new Vue({
el:"#app",
data:{
src:"image/1.jpg",
width:"300px",
height:"300px",
img:{
src:"image/1.jpg",
width:"300px",
height:"300px"
}
}
})
</script>
5.9v-model
<!--注意:当你导入vue的核心库之后,该页面就有一个内置对象叫做Vue-->
<script type="text/javascript" src="node_modules/vue/dist/vue.min.js"></script>
</head>
<body>
<!--
v-model 双向绑定
他支持的标签:
<input>
<select>
<textarea>
-->
<div id="app">
<input type="text" v-model="name">{{name}}<br/>
<!--复选框-->
<input type="checkbox" v-model="hobby" value="lq">篮球<br/>
<input type="checkbox" v-model="hobby" value="zq">足球<br/>
<input type="checkbox" v-model="hobby" value="qq">球球<br/>
<input type="checkbox" v-model="hobby" value="bq">棒球 {{hobby}}<br/>
<!--下拉框-->
<select v-model="city">
<option value="-1">请选择</option>
<option value="cd">成都</option>
<option value="bj">北京</option>
<option value="gz">广州</option>
</select>{{city}}<br/>
<!--textrea-->
<textarea v-model="descs"></textarea>{{descs}}<br/>
</div>
</body>
<script type="text/javascript">
var vue = new Vue({
el:"#app",
data:{
name:"双向绑定",
hobby:["qq","bq"],
sex:0,
city:"cd",
descs:"擦"
}
})
</script>
5.9.1v-if
<!--注意:当你导入vue的核心库之后,该页面就有一个内置对象叫做Vue-->
<script type="text/javascript" src="node_modules/vue/dist/vue.min.js"></script>
</head>
<body>
<div id="app">
<span v-if="age>60&&age<=100">老年</span>
<span v-if="age>30&&age<=60">中年</span>
</div>
</body>
<script>
var vue = new Vue({
el:"#app",
data:{
age:40
}
})
</script>
5.9.2v-on
<!--注意:当你导入vue的核心库之后,该页面就有一个内置对象叫做Vue-->
<script type="text/javascript" src="node_modules/vue/dist/vue.min.js"></script>
</head>
<body>
<!--v-on: 语法格式,应该写表达式或者触发的函数-->
<div id="app">
<input type="button" v-on:click="num++" value="按钮">{{num}}<br/>
<input type="button" @click="show" value="另外一个按钮"><br/>
<input type="button" @mouseover="show2" @mouseover="show3" value="进出" >
</div>
</body>
<script type="text/javascript">
var vue = new Vue({
el:"#app",
data:{
num:0
},
methods:{
show(){
alert("弹死你")
},
show2(){
console.debug("进进出出")
},
show3(){
console.debug("出出进进")
}
}
})
</script>
5.9.3v-show
<title>Title</title>
<!--注意:当你导入vue的核心库之后,该页面就有一个内置对象叫做Vue-->
<script type="text/javascript" src="node_modules/vue/dist/vue.min.js"></script>
</head>
<body>
<!--v-show: 控制标签属性 是style="display: block" 还是 style="display: none"-->
<div id="app">
<div v-show="isshow">xxxxx</div>
<input type="button" @click="show" value="点击显示或者点击隐藏">
</div>
</body>
<script type="text/javascript">
var vue = new Vue({
el:"#app",
data:{
isshow:"true"
},
methods:{
show(){
this.isshow=!this.isshow
}
}
})
</script>