ES6—模板字符串
模板字符串 传统的 JavaScript 语言,输出模板通常是这样写的(下面使用了 jQuery 的方法)。
123456$('#result').append( 'There are <b>' + basket.count + '</b> ' + 'items in your basket, ' + '<em>' + basket.onSale + '</em> are on sale!');
上面这种写法相当繁琐不方便,ES6 引入了模板字符串解决这个问题。
12345$('#result').append(` There are <b>${basket.count}</b> items in your basket, <em>${basket.onSale}</em> are on sale ...
ES6——箭头函数与普通函数的区别
ES6标准新增了一种新的函数:Arrow Function(箭头函数)。
为什么叫Arrow Function?因为它的定义用的就是一个箭头:
语法:
123456789101112//1、没有形参的时候let fun = () => console.log('我是箭头函数'); fun(); //2、只有一个形参的时候()可以省略let fun2 = a => console.log(a); fun2('aaa'); //3、俩个及俩个以上的形参的时候let fun3 = (x,y) =>console.log(x,y); //函数体只包含一个表达式则省略return 默认返回fun3(24,44); //4、俩个形参以及函数体多条语句表达式let fun4 = (x,y) => { console.log(x,y); return x+y; //必须加return才有返回值} //5、如果要返回对象时需要用小括号包起来,因为大括号被占用解释为代码块了,正确写法 let fun5 = ()=& ...
JavaScript数组方法forEach()、map()、filter()的比较
forEach()
最简单的形式
1Array.prototype.forEach(callback(currentElement))
此方法的作用是:对数组中的每个元素都执行一次传入的callback回调函数,数组中的每个元素会依次传入回调函数,参与回调函数的执行。currentElement就是指当前被传入的数组元素。 返回值:没有返回值(undefined)
12345var arr = [1, 2, 3]; var result = arr.forEach(function(currentElement) { console.log("当前传入的数组元素是:" + currentElement); }); console.log(result);
完整语法形式
1Array.prototype.forEach(callback(currentElement, index, array), thisValue)
相比于最简单的形式,回调函数多了两个可选参数index和array,forEach() ...
vue组件通信方式全面详解
众所周知,Vue 主要思想之一就是组件式开发。因此,在实际的项目开发中,肯定会以组件的开发模式进行。形如页面和页面之间需要通信一样,Vue 组件和组件之间肯定也需要互通有无、共享状态。接下来,我们就悉数给大家展示所有 Vue 组件之间的通信方式。
组件关系
上面展示的图片可以引入所有 Vue 组件的关系形式:
A 组件和 B 组件、B 组件和 C 组件、B 组件和 D 组件形成了父子关系
C 组件和 D 组件形成了兄弟关系
A 组件和 C 组件、A 组件和 D 组件形成了隔代关系(其中的层级可能是多级,即隔多代)
组件通信这么多的组件关系,那么组件和组件之间又有哪些通信的方式呢?各种方式的区别又是什么?适用场景又是什么呢?带着问题继续往下看吧!
1、props 和 $emit用过 Vue 技术栈开发项目过的开发者对这样一个组合肯定不会陌生,这种组件通信的方式是我们运用的非常多的一种。props 以单向数据流的形式可以很好的完成父子组件的通信。
所谓单向数据流:就是数据只能通过 props 由父组件流向子组件,而子组件并不能通过修改 props 传过来的数据修改父 ...
cookies、sessionStorage和localStorage解释及区别
在浏览器查看
HTML4的本地存储 cookie
浏览器的缓存机制提供了可以将用户数据存储在客户端上的方式,可以利用cookie,session等跟服务端进行数据交互。
一、cookie和session
cookie和session都是用来跟踪浏览器用户身份的会话方式。
区别:
1、保持状态:cookie保存在浏览器端,session保存在服务器端
2、使用方式:
(1)cookie机制:如果不在浏览器中设置过期时间,cookie被保存在内存中,生命周期随浏览器的关闭而结束,这种cookie简称会话cookie。如果在浏览器中设置了cookie的过期时间,cookie被保存在硬盘中,关闭浏览器后,cookie数据仍然存在,直到过期时间结束才消失。
Cookie是服务器发给客户端的特殊信息,cookie是以文本的方式保存在客户端,每次请求时都带上它
(2)session机制:当服务器收到请求需要创建session对象时,首先会检查客户端请求中是否包含sessionid。如果有sessionid,服务器将根据该id返回对应session对象。如果客户端请求中没有sessioni ...
Vue路由拦截、http拦截
一、路由拦截登录拦截逻辑第一步:路由拦截
首先在定义路由的时候就需要多添加一个自定义字段requireAuth,用于判断该路由的访问是否需要登录。如果用户已经登录,则顺利进入路由, 否则就进入登录页面。
12345678910111213141516const routes = [{ path: '/', name: '/', component: Index},{ path: '/repository', name: 'repository', meta: { requireAuth: true, // 添加该字段,表示进入这个路由是需要登录的 }, component: Repository},{ path: '/login', name: 'login', component: Login}];
...
深拷贝与浅拷贝
一、数据类型数据分为基本数据类型(String, Number, Boolean, Null, Undefined,Symbol)和对象数据类型。
1、基本数据类型的特点:直接存储在栈(stack)中的数据
2、引用数据类型的特点:存储的是该对象在栈中引用,真实的数据存放在堆内存里
引用数据类型在栈中存储了指针,该指针指向堆中该实体的起始地址。当解释器寻找引用值时,会首先检索其在栈中的地址,取得地址后从堆中获得实体。
堆内存
二、浅拷贝与深拷贝深拷贝和浅拷贝是只针对Object和Array这样的引用数据类型的。
深拷贝和浅拷贝的示意图大致如下:
示意图
浅拷贝只复制指向某个对象的指针,而不复制对象本身,新旧对象还是共享同一块内存。但深拷贝会另外创造一个一模一样的对象,新对象跟原对象不共享内存,修改新对象不会改到原对象。
三、赋值和浅拷贝的区别当我们把一个对象赋值给一个新的变量时,赋的其实是该对象的在栈中的地址,而不是堆中的数据。也就是两个对象指向的是同一个存储空间,无论哪个对象发生改变,其实都是改变的存储空间的内容,因此,两个对象是联动的。
浅拷贝是按位拷贝对象,它会创建一个新对象 ...
vue.nextTick()方法的使用详解(简单明了)
什么是Vue.nextTick()?定义:在下次 DOM 更新循环结束之后执行延迟回调。在修改数据之后立即使用这个方法,获取更新后的 DOM。
所以就衍生出了这个获取更新后的DOM的Vue方法。所以放在Vue.nextTick()回调函数中的执行的应该是会对DOM进行操作的 js代码;
理解: nextTick(),是将回调函数延迟在下一次dom更新数据后调用,简单的理解是:当数据更新了,在dom中渲染后,自动执行该函数,
12345678910111213141516171819202122232425<template> <div class="hello"> <div> <button id="firstBtn" @click="testClick()" ref="aa">{{testMsg}}</button> </div> </div></te ...
Vue组件嵌套循环使用(组件递归)
写了大大小小不少基于vue的项目,但是基本没用到过组件循环引用的知识。为了查缺补漏,照着官方文档撸一个DEMO:组件之间的循环引用
本人的运行版本为 vue-cli@2.8.1,启用项目后,将以下 js 文件和 vue 文件放置在相应的目录中运行。
main.js1234567import Vue from 'vue'import App from './App'new Vue({ el: '#app', template: '<App/>', components: { App }})
main.js 导入 App 组件,并在 components 中注册 App 组件。
App.vue123456789101112131415161718192021222324252627282930313233343536373839404 ...
理解VUE双向数据绑定原理和实现
一、原理:1.vue 双向数据绑定是通过 数据劫持 结合 发布订阅模式的方式来实现的, 也就是说数据和视图同步,数据发生变化,视图跟着变化,视图变化,数据也随之发生改变;
2.核心:关于VUE双向数据绑定,其核心是 Object.defineProperty()方法;
3.介绍一下Object.defineProperty()方法(1)Object.defineProperty(obj, prop, descriptor) ,这个语法内有三个参数,分别为 obj (要定义其上属性的对象) prop (要定义或修改的属性) descriptor (具体的改变方法)(2)简单地说,就是用这个方法来定义一个值。当调用时我们使用了它里面的get方法,当我们给这个属性赋值时,又用到了它里面的set方法;
set,get方法初步了解
二、先简单的实现一个js的双向数据绑定来熟悉一下这个方法:123456789101112131415161718192021222324252627282930313233343536373839404142434445464748<!DOCTYPE html ...