自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(60)
  • 收藏
  • 关注

原创 vue-插件

本质:包含install方法的一个对象,install的第一个参数是Vue,第二个以后的参数是插件使用者传递的数据。插件通常用来为 Vue 添加全局功能。插件的功能范围没有严格的限制。引入之后就可以使用插件的功能。

2023-10-12 19:41:44 293

原创 vue-mixin

1.vue中,混入(mixin)是一种特殊的使用方式。一个混入对象可以包含任意的组件配置选项(data, props, components, watch,computed…)可以根据需求"封装"一些可复用的单元,并在使用时根据一定的策略合并到组件的选项中,使用时和组件自身的选项没有区别.2.mixin中比较重要的两个方法: Vue.extend() 和 extend()

2023-10-12 18:52:04 229

原创 vue-动态组件

'<h1>首页内容---</h1>''<h1>列表内容---</h1>''<h1>个人内容---</h1>''<h1>新闻内容---</h1>'

2023-10-09 19:18:57 164

原创 vue-slot插槽

作用:让父组件可以向子组件中任意位置插入html结构,也是组件通信方式的一种,适用于父组件===》子组件分类: 默认插槽、具名插槽、作用域插槽定义子组件时使用slot组件,在使用子组件是可以决定是否插入具体的html代码。

2023-10-09 11:16:23 239 1

原创 vue-父子组件通信

定义父组件app,定义子组件school-com,在子组件列表中选择一个学校,在父组件中显示选中的学校,将子元素的数据传递给父元素—需要自定义触发事件实现数据传递。案例中使用@chiden-parent=schoolChange,change-parent为自定义事件,在子组件中使用this.$emit(‘chiden-parent’,schoolName)触发。当chiden-parent被触发时,会调用定义在父组件中的schoolChange事件。第一个参数—触发事件名。

2023-10-08 17:26:26 160

原创 vue-组件定义&&注册&&使用

const school = Vue.extend(options) 可简写为:const school = options。其中options和new Vue(options)出入的options对象几乎一样,但是也有不同。学校名称:{{schoolName}}学校地址:{{address}}###Vue创建组件案例 Vue.extend()创建。//第二步:注册组件(局部注册)//创建一个vue实例。//定义一个vue组件。// ES6简写形式。

2023-10-08 10:46:16 104

原创 vue-自定义指令

这种由于页面一开始解析模板,并且由于指令与数据绑定时由于element还未拿到,所以执行element.focus时,并不能生效。expression是指定表达式,由于此时是绑定的指令n;需求2:定义一个v-fbind指令,和v-bind功能类似,但可以让其所绑定的input元素默认获取焦点。需求1:定义一个v-big指令,和v-text功能类似,但会把绑定的数值放大10倍。并且用于指令中需要操作dom,所以其中的this是window,可以拿到元素操作。(2)对象式:(使用提供的钩子函数)

2023-04-15 16:09:47 336

原创 vue-过滤器

会把time传递给timeFormater这个过滤器,获取的第一个参数就是出入的time值,如果在使用过滤器时传入参数,需要定义一个变量接收。(1)filters和methods配置方法是一样的,在过滤器实现中现在是:{{time | timeFormater}}(2)现在是:{{time | timeFormater('YYYY_MM_DD') | mySlice}}使用:使用过滤器:{{ xxx | 过滤器名}} 或 v-bind:属性 = "xxx | 过滤器名"

2023-04-15 14:06:53 239

原创 SQL 条件函数 日期函数 文本函数 窗口函数

如果某个简单表达式的值与测试表达式的值相等,则返回第一个匹配的when子句,如果所有表达式的值与测试表达式的值都不相等,若指定了else子句,则返回else子句中指定结果的值,若没有指定else子句,则返回NULL。如果没有取值为true的布尔表达式,且当指定了else子句时,返回else子句指定的结果,如果没有指定else子句,则返回null。由于题目要求最后需要按照学校排名,所以最后使用oder by,因为是使用最后一名,所以使用cn排名为1的,因为排序默认为升序。窗口函数也叫OLAP函数。

2023-04-13 21:10:01 601

原创 SQL 子查询和链接查询

分析:由于是三张表 用户表 用户答题表 题目难度等级表,由于题目要求各难度各学校用户的等级,所以需要将三张表连起来查询,并且使用group by 学校 难度等级分组,由于是答过题的平均数,所以需要使用count统计。分析:每个学校的答题平均结果,那么就是每个学校的答题总数,除以每个学校的答题用户数,由于答题用户数可以用专门的device_id来标识,因为要统计总数,所以需要使用count函数。由于要统计的是每个学校,所以需要使用group by来分组,结果需要保留4位小数,所以需要使用round函数。

2023-04-09 16:26:21 662

原创 vue-computed和watch

要用的属性不存在,通过已有的属性计算得来。2.watch一般监听单个变量或者一个数组,对于监听基本的数据类型或者进行浅度监听,watch监听器可以得到一个oldValue和newValue值,但是进行深度监听无法得到oldValue值。使用deep:true进行深度监听时,会将监听的应用类型的属性层层遍历,都加上监听事件,这样会导致性能开销比较大,那么可以对引用数据类型内的单个属性进行监听。如果watch中监听的数据为多层嵌套的引用结构,可以使用deep进行监听,当数据发生改变时,可以监听到改变。

2023-04-08 20:56:22 261

原创 SQL计算函数和分组查询

其中涉及到正确的排序顺序:from(组装来自不同数据源的数据),再到where(基于指定条件,对数据进行筛选排序)再用group by (将筛选后的数据划分成多个分组),having ,最后是select。首先确定数据来自哪张表,然后按where条件对数据进行筛选,然后才能进行group by分组(分组条件可以有多个,按字段顺序依次分组),分组之后由having对结果进行过滤把数据呈现出来。4.分组过滤 关键字group by 和 having。5.分组排序 关键字group by 和order by。

2023-04-08 11:25:57 376

原创 SQL基础查选和条件查选

2. 将查询后的列重新命名 关键字 as 关键字limit。eg3:查询学生表表中名字的第2个字为“小”或“大”的学生的姓名和学号。eg5:从学生表表中查询学号的最后一位不是2、3、5的学生信息。eg2:查询学生表中姓‘张’、姓‘李’和姓‘刘’的学生的情况。eg1:查询学生表中姓‘张’的学生的详细信息。eg4:查询学生表中所有不姓“刘”的学生。5.关键字的模糊查询 关键字like。[ ]:匹配[ ] 中的任意一个字符。[^ ]:不匹配中的任意一个字符。_:匹配任意一个字符。

2023-04-07 17:46:32 482

原创 vue中的插值表达式和指令

3.对于循环渲染列表,直接改变数组的数据不会更新到页面上,可以直接使用push,pop,shift,unshift,splice,sort,reverse方法修改数组的内容实现页面的更新,或者修改数组对象的引用。v-for和v-if不能连用的情况,v-for的优先级会高于v-if,所以嵌套使用的话,每个v-for的渲染的列表都会执行v-if造成不必要的计算,影响整体性能,此时可以在v-for外层套一个template标签来处理v-if,或者使用computed计算属性来规避v-if。此时age会变成数组。

2023-04-07 15:43:34 1153

原创 浏览器输入URL到页面的全过程

第二次握手 服务端到客户端:(当服务端同意建立连接时)SYN=1(同步位)ACK=1(确认)seq=y(服务端随机生成的y) 序号 ack=x+1 表明是对序号为x的确认。第三次握手 客户端到服务端:(当客户端也真正同意建立连接)ACK=1(确认位)seq=x+1 (从客户端发起的请求序号) ack=y+1(是对服务器请求的回应)第四次挥手 客户端到服务端:(被挽留了,分开吧) ACK=1 seq=u+1 ack=w+1(ack对于服务端到客户端消息的确认)

2023-03-16 11:40:04 395

原创 DNS域名解析

为了高效完成全球所有域名的解析,服务器本身并不会直接去解析域名,而是会把不同的解析请求分配给下面其他服务器。,本地DNS服务器一般是由本地网络服务提供的。通常情况下可通过DHCP自动分配,也可以手动配置。DNS域名解析就是通过URL找到相应的IP地址。,如果浏览器中有对应的记录会直接使用,并完成解析。4.如果本地DNS服务器没有相应的记录,就回去。,但是其实计算机需要找到该资源需要知道其。3.若没有,则操作系统将域名发送请求。因为我们在浏览器输入的是。操作系统中的DNS缓存。

2023-03-14 22:05:38 95

原创 http协议

比如请求a发送了所有的头信息字段,请求b则只需要发送差异数据,这样可以减少冗余数据,降低开销。:在一个连接里,允许同时发送多个请求或响应,并且这些请求或响应能够并行的传输而不被阻塞,避免 HTTP1.1 出现的”队头堵塞”问题。浏览器第一次发送请求给服务器,服务器响应了,当浏览器再次发送请求时,浏览器是不知道是一次发送过的浏览器。,HTTP/1.0协议支持,但是是默认关闭的,从HTTP/1.1以后,连接默认都是长连接。对于客户端每次发的请求,服务端都认为是新的请求,在上一次和下一次没有联系。

2023-03-14 17:22:02 146

原创 作用域和作用域链

结果是10,因为作用域在定义好的时候就已经确定了,调用f()就是调用fn(),在fn()函数中找不到x变量,但是在全局作用域中有x=10。,每个函数都会创建自己的作用域,作用域在函数定义的时候已经确定,作用域是静态的,函数定义后一直存在,且不再变化。this.fn2是可以调用成功的,但是fn2是不行的,会根据作用域链去寻找,一直找不到fn2,然后报错。:从内到外,查找变量是沿着作用域查找,如果都找到全局作用域链,还找不到就抛出异常。

2023-03-13 21:39:45 50

原创 执行上下文和执行上下文栈

因为a3是function声明的函数,函数提升所以可以调用;因为b经过变量提升在window对象中,所以b in window是true,所以不能进去if判断,所以不能直接执行,所以b是undefined。先变量提升并赋值 undefined,然后函数提升并覆盖掉变量提升赋值的undefined,所以为 'function'当调用fn这个函数的时候,执行打印变量a,首先会在fn的作用域中寻找,由于在下面是var变量。用function定义的函数已经预处理执行了,但是fn3的函数还未执行,未函数提升。

2023-03-13 20:49:33 104

原创 JS实现多线程Worker

这样因为计算结果可能比较久,因为js单线程,所以此时前端页面交互阻塞,如果交给worker去处理,虽然数据返回结果较慢,但是用户可以继续操作界面。js是单线程的:javascript作为脚本语言,主要与用户交互,以及Dom操作,这就决定了js只能是单线程,否则会带来很复杂的同步问题。worker通过new方式创建出来,并且写入分线程的途径,这里采用相对路径,同于目录下的worker文件。使用:创建在分线程执行js文件,在主线程js中发送消息并设置回调。构造函数,加载分栈执行的js文件。

2023-03-13 16:59:09 1149

原创 判断数组还是对象方法

在面试契约锁时,问到了如何判断数组还是对象,只回答了ES6中的isArray()方法,当面试官继续提示我原型链上的方法时,我也想不起来,记录一下。通过原型链可知,函数对象都有prototype指向一个显示原型,显示原型上有一个constructor可以指回函数。typeof可以判断基本数据类型,但是引用数据类型其实都是object,所以是判断不出数组还是对象的。obj 是new Object函数构造出来的。arr是new Array函数构造出来的。

2023-03-13 11:14:07 367

原创 跨域-jsonp和cors处理

浏览器的同源策略是为了安全,同源策略是 协议、域名、端口 都要一致。

2023-03-13 10:35:26 60

原创 ajax和fetch

ajax是一种无需重新加载网页的情况下,能够更新网页的技术。通过后台与服务器之间进行数据交互,ajax可以实现网页异步更新,这就意味着在不重新加载整个页面。

2023-03-13 10:00:06 53

原创 类数组转对象

常常在操作dom时,获取的是类数组对象,所以不能直接利用数组的方法。面试的时候,需要将类数组对象转变成数组,记录一下方法。用类数组遍历是报错的,所以需要转为真正的数组。]解构方法转化成数组。

2023-03-12 20:57:38 52

原创 this指向

call()和apply()都是函数对象的方法,当调用函数call和apply方法都会调用这个函数,指定参数使其拥有其方法可以调用。复习了下this指向,就如上一篇写过的用过[ ].slice.call()一样,需要弄明白this的指向。在箭头函数中this的指向是指向父级的,所以调用forEach的是window对象。当前的程序,箭头函数的父级程序,没有this指向的就是window。箭头函数中,this的指向是父级程序的this指向。与普通函数的this指向是有区别的。person 是p对象调用的。

2023-03-09 17:57:21 48

原创 JS40 虚拟DOM

请补全JavaScript代码,要求将对象参数转换为真实的DOM结构并返回。创建每个标签,然后设置属性,对于children进行遍历再进行相同的操作。

2023-03-09 16:13:11 70

原创 JS39 字体高亮正则表达应用

new RegExp(key,“g”) 但是g代表全局,第二个参数表示要替换的参数,由于是需要被搜索的key关键字显示高亮,所以需要加入样式,使用模板字符串。请补全JavaScript代码,实现一个搜索字体高亮的效果。因为是全局搜索,并且改变,可以使用正则表达,replace代表是替换,

2023-03-09 11:52:42 109

原创 JS38 统计高频数据类型

判断在对象中类型是否存在,如果不存在则添加进去,如果存在就数量+1;每添加一种数据类型,或者数据类型的值+1,那么就判断最大的maxnum是不是最大的。请补全JavaScript代码,要求找到参数数组中出现频次最高的数据类型,并且计算出出现的次数,要求以数组的形式返回。但是数据类型有 基本数据类型,引用数据类型,引用数据类型就是’object’创建一个对象,用来存数据类型的出现次数 数据类型:次数。

2023-03-09 11:31:45 83

原创 JS36 切换Tab栏目

slice是数组的切片方法,[ ]自身也是也是一个对象,而数组原型链上有这个slice这个方法。call() 方法绑定this,然后让后面过去的伪数组变成数组。2.利用Array的原型对象的slice方法,配合call()方法修改slice中this指向。3.利用扩展运算符(…)将伪数组转化为真数组。这里的方法,如果想要了解什么是伪数组可以访问。4.利用ES6的Array.from方法。切换Tab栏目,然后对应卡片内容改变。1.将伪数组遍历到新数组中。但是今天另外值得学习的是。

2023-03-08 22:36:56 71

原创 JS33 监听对象 Object.defineProperty 数据代理 vue中数据代理原理

这里只简要介绍一下,Object.defineProperty也是vue数据双向绑定原理,关于其参数,监听对象,属性,这里面还有方法对象。当数据改变时,可以使用set方法来改变。

2023-03-08 20:11:20 531

原创 Proxy代理和拦截器

代理对象 拦截器的应用 通过代理才能直接访问对象创建一个proxy对象,里面传递两个参数

2023-03-08 17:35:38 100

原创 JS25 相同的Set

请补全JavaScript代码,要求以boolean的形式返回两个Set对象参数是否一样,是则返回true,否则返回false。首先判断集合元素个数是否相同,其次用ES6结构转化成数组,再用every方法,用s1中的每一个元素去判断s2。使用了数组every方法,判断数组所有元素是否都满足条件,都满足才返回true,不满足返回false。判断集合Set是否相同,使用集合方法。

2023-03-08 10:10:16 236

原创 JS24 Symbol

请补全JavaScript代码,要求以键/值对的对象形式返回参数数组。

2023-03-08 09:51:43 38

原创 JS14 参数解析器

Map 是JavaScript中的数据结构,它允许存储【键,值】对,其中任何值都可以用作键或值;Map集合中的键和值可以是任何类型,并且如果使用集合中已存在的键将值添加到Map集合中,新值将替换旧值。slice方法有两个参数,indexStart 和 indexEnd,分别表示截取的起始位置和结束位置,indexStart是必选的,indexEnd是可选的。2.**slice()**表示切片 slice方法并不改变原数组,而是返回新的数组。1.**lastIndexOf()**是记录最后一个问号的位置。

2023-03-07 22:26:43 145

原创 闭包的概述

此时存在闭包,将object2的this用that保存起来,存在内部函数引用外部函数的变量。1.产生:在嵌套内部函数定义执行完就产生了(不是在调用) 只是创建了内部函数对象。因为执行fn1创建了一个闭包,执行f()会执行fn2。当一个嵌套的内部(子)函数引用了嵌套外部(父)函数变量时,就产生了闭包。为什么因为调用时返回了一个函数,再执行函数,是this是window。1.函数执行完之后,函数内部声明的局部变量是否还在。2.在函数外部能直接访问到内部函数的局部变量吗。内部函数引用外部函数数据(变量)

2023-03-07 21:09:01 49

原创 原型与原型链

在图中实例对象,也是Object函数构造出来的,内置Object函数具有prototype属性,那么Object函数中有toString()方法,所以fn.toString()可以调用成功,因为可以根据隐式原型链查找。当在Fn的原型对象中添加test()方式后,由于fn是Fn的实例对象,当fn.test()方式时,在本身属性查找不到时,会根据隐式原型_proto_去查找方法。1.函数显示原型指向的对象,默认是空的Object实例对象 Object函数除外。中的地址找到原型对象,可以通过实例调用原型的方法。

2023-03-06 21:03:53 51

原创 JS9 新数组

请补全JavaScript代码,该函数接受两个参数分别为数组、索引值,要求在不改变原数组的情况下返回删除了索引项的新数组。howmany 可选规定应该删除多少元素 如果未规定此参数,则删除从index开始到原数组结尾的所有元素。splice() 通过splice截取目标索引的数组项,且会直接改变被操作的数组。但是concat()返回的是浅拷贝,如果数组中有引用类型,那么这个引用类型是共享的。这里复习splice方法用于添加或者删除数组中的元素。item 可以要添加到数组的新元素。

2023-03-06 10:57:50 49

原创 JS8 数组排序

数组排序

2023-03-05 22:32:19 51

原创 js中的正则表达式(二)

js正则表达式

2023-03-05 20:47:47 160

原创 JS3 分隔符

js3 分隔符

2023-03-04 22:31:53 57

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除