Vue之常用语法
变量的定义:
var定义的变量:只有全局作用域和函数作用域。有变量提升,先打印后定义变量不会报错,打印结果为undefined
let定义的变量:没有变量提升 ——>有局部作用域和函数作用域、块级作用域
不能重复定义
块级作用域
const定义的变量:
没有变量提升
定义了以后不能修改
定义的时候必须赋值
不能重复定义
带来了块级作用域
模板字符串:
用反引号来进行字符串的拼接
用${} 来存储变量
<div id="app"></div>
<script>
let oDiv = document.getElementById('app');
oDiv.innerHTML = '<h1>Hello Vue' +
'</h1>';
let name1 = 'wjs';
let name2 = 'gxx';
// 这里是反引号
oDiv.innerHTML = `
<h1>Hello ${name1}</h1>
<h2>Hello ${name2}</h2>
`
</script>
数据的解构和赋值:
数组、对象
简单的用途:数据的交换
<script>
let ary = [1, 2, 3];
let [a, b, c] = ary;
console.log(a, b, c); let obj = {
username: 'wjs',
age: 24,
};
let {username: user, age: age} = obj; // 默认是这样所以↓
console.log(user,age); let k = 1;
let v = 2;
[k, v] = [v, k]; // 等号左右类型必须一样,要么都是字典,要么都是列表
console.log(k, v);
</script>
函数的扩展:
1、默认值参数
<script>
// 默认值参数
function foo(x, y = 10) {
let number = y;
return number;
} ret = foo(1, 2);
ret1 = foo(1);
ret2 = foo(1, 0);
console.log(ret);
console.log(ret1);
console.log(ret2);
</script>
2、箭头函数(v => v 参数 箭头 返回值)
<script>
// 箭头函数
// 一个函数
let foo1 = v => v;
ret3 = foo1(10);
console.log(ret3);
</script>
3、0个或者多个参数
<script>
// 0个或者多个参数
let bar = (x, y) => {
return x + y;
};
ret4 = bar(1, 2);
console.log(ret4);
</script>
4、箭头函数和普通函数的区别
<script>
// 普通函数(谁调用就指向谁)
// 箭头函数(在哪里定义的作用域,this就指向定义时的作用域)
function foo2() {
console.log(this); // 这里指向windows
} let bar1 = () => console.log(this); let obj = {
foo2:foo2,
bar1:bar1,
}; foo2(); // 指向windows
obj.foo2(); // 指向object
obj.bar1(); // 指向windows
</script>
类:
class 关键字 定义一个类:
必须要有constructor方式(构造方法),如果没有,则() {}
必须使用new 来实例化,
类的继承:
用extends来继承
必须在子类的constructor方法里面写super()方法
<script>
class Wjs {
constructor(username, age, hobby = 'learn') {
this.username = username;
this.age = age;
this.account = account;
} showInfo() {
console.log(this.username, this.age, this.account);
}
} // extends继承
class Gxx extends Wjs {
constructor(username, age) {
// 继承父类的username、age,hobby继承的父类的默认值
super(username, age);
// this.username = username;
// this.age = age;
}
} let gxx = new Gxx('gxx', 22);
gxx.showInfo();
</script>
对象的单体模式:
解决了箭头函数this的指向问题
<script>
let obj = {
name: 'wjs',
foo() {
console.log(this.name);
}
};
obj.foo();
</script>
Vue之为什么用框架
<div id="app">{{ greeting }}</div>
<script>
// 数据模板引擎
new Vue({
el: '#app', //
data: {
greeting: 'Hello Vue',
}
})
</script>
Vue之常用指令
v-text
<div id="app" v-text="greeting"></div>
<script>
// 数据模板引擎
// v-开头的指令是帮助我们渲染数据用的
new Vue({
el:'#app',
data:{
greeting:'Hello Vue',
}
})
</script>
v-html
<div id="app" v-html="greeting"></div>
<script>
// 数据模板引擎
// v-开头的指令是帮助我们渲染数据用的
new Vue({
el:'#app',
data:{
greeting:'<h1>Hello Vue</h1>',
}
})
</script>
v-for 循环
<div id="app">
<ul>
<li v-for="hobby in funingbo">{{ hobby }}</li>
</ul>
<ul>
<li v-for="student in students">姓名:{{student.name}},年龄:{{student.age}},爱好:{{student.hobby}}</li>
</ul>
</div>
<script>
// 数据模板引擎
// v-开头的指令是帮助我们渲染数据用的
new Vue({
el: '#app',
data: {
funingbo: ['人', '生', '太', '悲', '凉'],
students: [
{
name: 'wjs',
age: 24,
hobby: '痴心妄想',
},
{
name: 'gxx',
age: 22,
hobby: '有上进心',
},
{
name: 'zq',
age: 23,
hobby: '好学',
},
]
}
})
</script>
v-if、v-else-if、v-else
<div id="app">
<div v-for="role in roles"> <div v-if="role == 'gxx'">
<h1>v-if {{role}} 你好</h1>
</div> <div v-else-if="role == 'zq'">
<h1>v-else-if {{role}} 你好</h1>
</div> </div>
</div>
<script>
// 数据模板引擎
// v-开头的指令是帮助我们渲染数据用的
new Vue({
el: '#app',
data: {
roles: ['gxx', 'zq']
}
})
</script>
v-show 是否展示的语法:true 展示,false 不展示
<div id="app">
<div v-for="role in roles"> <div v-if="role == 'gxx'" v-show="isShow">
<h1>v-if {{role}} 你好</h1> // 这个标签不展示
</div> <div v-else-if="role == 'zq'">
<h1>v-else-if {{role}} 你好</h1>
</div> </div>
</div>
<script>
// 数据模板引擎
// v-开头的指令是帮助我们渲染数据用的
new Vue({
el: '#app',
data: {
roles: ['gxx', 'zq'],
isShow: false,
}
})
</script>
注意:--切换性能,v-show的性能更高一些,display:none, v-if 的切换是通过append
--加载性能,v-show慢,v-if快
v-bind 绑定属性 简写为 :
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="static/vue.min.js"></script>
<style>
.active {
width: 500px;
height: 500px;
background-color: deepskyblue;
}
</style>
</head>
<body>
<div id="app">
<a v-bind:href="jd">京东</a>
// 这里 : 为v-bind的简写,[]表示可以传多个值并用逗号隔开,如果是一个值得话可以不写[]。
<div :class="[isActive]"></div>
</div>
<script>
// 数据模板引擎
// v-开头的指令是帮助我们渲染数据用的
let vm = new Vue({
el: '#app',
data: {
jd: 'https://www.jd.com',
isActive: 'active',
}
})
</script>
</body>
</html>
v-on 绑定点击事件 简写为 @
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="static/vue.min.js"></script>
<style>
.active {
color: deepskyblue;
}
</style>
</head>
<body>
<div id="app">
<a v-bind:class="{ active:isActive }">山人</a>
<!--<button v-on:click="changeColor">点击山人变蓝</button>-->
<!--v-on 的简写 @-->
<button @click="changeColor">点击山人变蓝</button>
</div>
<script>
// 数据模板引擎
// v-开头的指令是帮助我们渲染数据用的
let vm = new Vue({
el: '#app',
data: {
isActive: false,
},
methods: {
changeColor: function () {
this.isActive = !this.isActive;
},
}
})
</script>
</body>
</html>
v-model ----修改后的数据能够及时(官方称之为响应式)的渲染到模板层,双向绑定
<div id="app">
<input type="text" v-model="name"> <label for="">男</label>
<input type="checkbox" value="男" v-model="genders">
<label for="">女</label>
<input type="checkbox" value="女" v-model="genders">
<select v-model="girlfriends">
<option>gxx</option>
<option>zq</option>
<option>wpp</option>
</select> <textarea></textarea> <hr>
{{ name }}
{{ genders }}
{{ girlfriends }}
</div>
<script>
// 数据模板引擎
// v-开头的指令是帮助我们渲染数据用的
let vm = new Vue({
el: '#app',
data: {
name: 'wjs',
genders: [],
girlfriends: [],
},
})
</script>
计算属性
<div id="app">
<table border="1">
<thead>
<tr>
<th>学科</th>
<th>成绩</th>
</tr>
</thead>
<tbody>
<tr>
<td>Python</td>
<!--.number修改input框中的值时,就是以数字来重新计算的,如果没有.number就会把所有的值当做字符串拼接起来。-->
<td><input type="text" v-model.number="python"></td>
</tr>
<tr>
<td>Vue</td>
<!--.trim去除两边的空格-->
<td><input type="text" v-model.trim="vue"></td>
</tr>
<tr>
<td>Go</td>
<!--.lazy为当鼠标失去焦点时才会重新计算-->
<td><input type="text" v-model.lazy="go"></td>
</tr>
<tr>
<td>总成绩</td>
<td>{{ sumScore }}</td>
</tr>
</tbody>
</table>
<hr>
{{ python }}
{{ vue }}
{{ go }}
{{ sumScore }} </div>
<script>
// 计算属性放在缓存中,只有数据修改时才重新计算
let vm = new Vue({
el: '#app',
data: {
python: 90,
vue: 95,
go: 85, },
computed: {
// 这里return返回的值会传给sumScore变量
sumScore: function () {
console.log(1);
return this.python + this.vue + this.go;
},
},
watch: {
// 这里python变量必须是data中存在的,而且watch它不会有值返回给python
python: function () {
alert('python数据改变了')
}
}
})
</script>
获取DOM元素
<div id="app">
<div ref="myRef">山人</div>
<button v-on:click="changeColor">点击山人变蓝</button>
</div>
<script> let vm = new Vue({
el: '#app',
data: {
isActive: 'active',
},
methods: {
changeColor: function () {
this.$refs.myRef.className = this.isActive;
}
}
})
</script>
指令修饰符
-- .number <!--.number修改input框中的值时,就是以数字来重新计算的,如果没有.number就会把所有的值当做字符串拼接起来。-->
-- .lazy <!--.lazy为当鼠标失去焦点时才会重新计算-->
-- .trim <!--.trim去除两边的空格-->
<input type="text" v-model.number="python"> <input type="text" v-model.trim="vue"> <input type="text" v-model.lazy="go">
侦听属性
computed: {
// 这里return返回的值会传给sumScore变量
sumScore: function () {
console.log(1);
return this.python + this.vue + this.go;
},
},
watch: {
// 这里python变量必须是data中存在的,而且watch它不会有值返回给python
python: function () {
alert('python数据改变了')
}
}
v-pos 自定义指令
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="static/vue.min.js"></script>
<style>
.box {
width: 100px;
height: 100px;
background-color: deepskyblue;
}
</style>
</head>
<body> <div id="app">
<div v-bind:class="{ box:isShow }" v-pos.right.bottom="leftBottom">山人</div> </div>
<script>
// pos是固定的写法
Vue.directive('pos', function (el, bindding) {
console.log('el:', el);
console.log('bingding:', bindding);
// 这里value获取的是下面写的isShow赋给的值也就是所写的true,
if (bindding.value) {
el.style['position'] = 'fixed';
for (let key in bindding.modifiers) {
el.style[key] = 0;
// el.style['right'] = 0;
// el.style['bottom'] = 0;
}
}
}); let vm = new Vue({
el: '#app',
data: {
leftBottom: true,
isShow: true, // isShow通过bindding.value
},
})
</script>
</body>
</html>
Vue之常用语法的更多相关文章
- 黑马eesy_15 Vue:常用语法
自学Java后端开发,发现14 微服务电商[乐优商城]实战项目,在介绍完SpringCloud后就要肝前端的基础知识ES6语法和Vue.js 所以本篇博客作为入门Vue练习记录的过程,目的是供自学后端 ...
- vue.js 常用语法总结(一)
作者:曾萍,目前就职于京东商城. 概述 2016年已经结束了.你是否会思考一下,自己在过去的一年里是否错过一些重要的东西?不用担心,我们正在回顾那些流行的趋势.通过比较过去12个月里Github所增加 ...
- Vue: ES6常用语法
ES6 模板字符串: ~ ${变量名}~ <div id="app"></div> <script> /* 找到对应id */ let ite ...
- Vue常用语法及命令
1,Vue常用语法 vue常用语法之变量的定义 // 1,变量相关 // 变量的提升 var username = "雪雪"; var username ; console.log ...
- vue 的基本语法和常用指令
什么是vue.js Vue.js是目前最火的一个前端框架,React是最流行的一个前端框架(React除了开发网站,还可以开发手机App, Vue语法也是可以用于进行手机App开发的,需要借助于Wee ...
- Vue最常用的组件通讯有三种:父->子组件通讯、子->父组件通讯,兄弟组件通讯.(template用的pug模板语法)
Vue组件通讯 Vue最常用的组件通讯有三种:父->子组件通讯.子->父组件通讯,兄弟组件通讯.(template用的pug模板语法) 1.父->子组件通讯 父->子组件通 ...
- 【Vue】Vue框架常用知识点 Vue的模板语法、计算属性与侦听器、条件渲染、列表渲染、Class与Style绑定介绍与基本的用法
Vue框架常用知识点 文章目录 Vue框架常用知识点 知识点解释 第一个vue应用 模板语法 计算属性与侦听器 条件渲染.列表渲染.Class与Style绑定 知识点解释 vue框架知识体系 [1]基 ...
- vue学习(一)ES6常用语法
1 ES6常用语法 1.1 变量提升 例① # 变量提升 <div id="app"> </div> <script> console.log( ...
- ES6常用语法
ECMAScript 6(以下简称ES6)是JavaScript语言的下一代标准.因为当前版本的ES6是在2015年发布的,所以又称ECMAScript 2015. 也就是说,ES6就是ES2015. ...
随机推荐
- 转载:approxPolyDP函数
本文转载http://blog.csdn.net/qq_18343569/article/details/47999257 1.approxPolyDP函数 函数的作用: 对图像轮廓点进行多边形拟合 ...
- Kali 局域网 DNS 劫持
<一> 所需工具 1: Kali-linux-2017 2: ettercap 0.8.2 3: web 服务器, 这里以 node 为例 <二> 原理 1: DNS劫持 ...
- hive安装教程本地模式
1.安装模式介绍: Hive官网上介绍了Hive的3种安装方式,分别对应不同的应用场景. a.内嵌模式(元数据保村在内嵌的derby种,允许一个会话链接,尝试多个会话链接时会报错) b.本地模式(本地 ...
- C# 中的 ConfigurationManager类引用方法
c#添加了Configuration;后,竟然找不到 ConfigurationManager 这个类,后来才发现:虽然引用了using System.Configuration;这个包,但是还是不行 ...
- ThinkPHP模板内使用U方法
为了配合所使用的URL模式,我们需要能够动态的根据当前的URL设置生成对应的URL地址,为此,ThinkPHP内置提供了U方法,用于URL的动态生成,可以确保项目在移植过程中不受环境的影响. 三种携带 ...
- python3.6.2(32位)的安装-1
简介:Python不需要编译成机器代码,是解释执行.解释器是机器指令,CPU执行解释器,解释器执行代码. 1.Python官网下载地址:https://www.python.org/,选择Downlo ...
- VC中编译报错:error C2011: 'fd_set' : 'struct' type redefinition
这是头文件包含顺序的问题,原因与解决办法见下面代码的注释. /* 包含下面这两个头文件时,必须把winsock2.h放在前面 否则编译报错,N多的重定义错误:例如 error C2011: 'fd_s ...
- Java读写avro例子
一.avro是一个数据序列化框架,可以高效得进行序列化和反序列化,支持C, C++, C#, Java, PHP, Python, 和Ruby语言.现在使用Java来读写. 二.环境搭建 1.下载av ...
- Tcp连接的七次握手浅析
LINUX 查看tcp连接数及状态 # netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' TIME_WAIT 8 ...
- linux 自定义模块来缓存skb的意义
linux中,管理网卡收发报文的结构是sk_buff,这个结构比freebsd中的m_buf复杂的多,这个也是为什么现在用户态协议栈大多采用bsd为基础来实现的一个原因. struct sk_buff ...