变量的定义:

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之常用语法的更多相关文章

  1. 黑马eesy_15 Vue:常用语法

    自学Java后端开发,发现14 微服务电商[乐优商城]实战项目,在介绍完SpringCloud后就要肝前端的基础知识ES6语法和Vue.js 所以本篇博客作为入门Vue练习记录的过程,目的是供自学后端 ...

  2. vue.js 常用语法总结(一)

    作者:曾萍,目前就职于京东商城. 概述 2016年已经结束了.你是否会思考一下,自己在过去的一年里是否错过一些重要的东西?不用担心,我们正在回顾那些流行的趋势.通过比较过去12个月里Github所增加 ...

  3. Vue: ES6常用语法

    ES6 模板字符串:  ~ ${变量名}~ <div id="app"></div> <script> /* 找到对应id */ let ite ...

  4. Vue常用语法及命令

    1,Vue常用语法 vue常用语法之变量的定义 // 1,变量相关 // 变量的提升 var username = "雪雪"; var username ; console.log ...

  5. vue 的基本语法和常用指令

    什么是vue.js Vue.js是目前最火的一个前端框架,React是最流行的一个前端框架(React除了开发网站,还可以开发手机App, Vue语法也是可以用于进行手机App开发的,需要借助于Wee ...

  6. Vue最常用的组件通讯有三种:父->子组件通讯、子->父组件通讯,兄弟组件通讯.(template用的pug模板语法)

    Vue组件通讯   Vue最常用的组件通讯有三种:父->子组件通讯.子->父组件通讯,兄弟组件通讯.(template用的pug模板语法) 1.父->子组件通讯 父->子组件通 ...

  7. 【Vue】Vue框架常用知识点 Vue的模板语法、计算属性与侦听器、条件渲染、列表渲染、Class与Style绑定介绍与基本的用法

    Vue框架常用知识点 文章目录 Vue框架常用知识点 知识点解释 第一个vue应用 模板语法 计算属性与侦听器 条件渲染.列表渲染.Class与Style绑定 知识点解释 vue框架知识体系 [1]基 ...

  8. vue学习(一)ES6常用语法

    1 ES6常用语法 1.1 变量提升 例① # 变量提升 <div id="app"> </div> <script> console.log( ...

  9. ES6常用语法

    ECMAScript 6(以下简称ES6)是JavaScript语言的下一代标准.因为当前版本的ES6是在2015年发布的,所以又称ECMAScript 2015. 也就是说,ES6就是ES2015. ...

随机推荐

  1. Flex4学习笔记1---基本语法

    <?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="ht ...

  2. electron 项目的打包方式,以及 jquery 插件的修改使用

    < 一 > 应用打包 1,首先确定安装了 node 和 npm 2,全局安装打包依赖  => npm i electron-packager -g 3,打包命令 electron-p ...

  3. [转]使用Ubuntu Live CD修复Grub引导教程

    这个教程的方法我用过了,能够解决了我的问题. 这篇文章主要介绍了使用Ubuntu Live CD修复Grub引导教程,本文以 Ubuntu Live CD 修复 Grub 引导为例,需要的朋友可以参考 ...

  4. js 验证码倒计时

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. Java 基础 - 对象池

    对象池  优点:  防止过多的创建对象合理利用对象, 缺点: 会有线程阻塞 Demo 测试代码 package com.cjcx.pay.obj; import java.util.Enumerati ...

  6. LeetCode 题解:Populating Next Right Pointers in Each Node I & II 二有难度。考虑不全面。

    每次应该把root同层的右侧节点传过来.如果没有,就传NULL. 同时,应该是先右后左. 感觉这次的代码还挺简洁的.. void construct(struct TreeLinkNode *root ...

  7. redis 学习笔记1(安装以及控制台命令)

    为什么要学习这个? 分布式技术必会,得益于redis的设计理念,内存数据库,epoll(多路复用)模型,单线程模型除去了锁和上下文切换,提高了性能.单线程保证执行顺序(轮询),在分布式环境下对于数据的 ...

  8. 1016B - Segment Occurrences(字符串的匹配)

    题意:字符串a,字符串b,给你q个区间,让你求a的区间内字符串b出现了多少次 之前用的前缀数组做的,没想起来,发现这个其实也可以 #include<cstdio> #include< ...

  9. Servlet基本_セッション属性

    1.概念セッション: ユーザーごとの状態を保存する仕組みです.セッションID: アプリケーションサーバから一意の識別子が割り当てられ.これをセッションIDと言う. 2.サーブレットAPIサーブレットA ...

  10. Nginx使用GZIP来压缩网页

    HTTP协议上的GZIP编码是一种用来改进web应 用程序性能的技术.大流量的WEB站点常常使用GZIP压缩技术来让用户感受更快的速度.这一般是指WWW服务器中安装的一个功能,当有人来访问这个服务器中 ...