自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 yarn 或者 npm install 下载安装超时的解决办法

有时候我们在安装项目依赖时,经常会遇到安装超时的情况,这个时候一般会采取更换下载源来解决:更换淘宝源:npm config set registry https://registry.npm.taobao.org yarn config set registry 'https://registry.npm.taobao.org一般这种情况下,即可解决下载超时的问题。2. 如果按照上述情况还没有解决超时问题,那可能是网络问题,你很有可能使用了默认超时。那这种情况下我们可以在相关的配置文件.ya

2020-06-12 20:36:30 9084

原创 React——antd4中遇到的 Select 坑

如果要动态渲染 Options ,还要在Select上设置这个属性:filterOption={false}也就是:import React from 'react'import { Select } from 'antd'const { Option } = Select;export default class AtSelect extends Component{ render(){ const { list } = this.state; re

2020-06-10 13:45:43 2622 1

原创 面试题-实现(5).add(3).minus(2),使其输入结果为6

考察类和实例,以及在类的原型上构建方法,并且能够实现链式写法。那么我们说 arr.push() 是因为 arr 是 Array 的实例,可以调用 Array.prototype 上的方法。push 就是其中一个。~ function () { // 每一个方法执行完都要返回一个 Number 这个类的实例,这样才可以继续调取 // Number 类原型中的方法(链式写法) ...

2020-03-30 22:45:57 1042 3

原创 面试题-实现一个 $attr(name, value)遍历,属性为 name,值为 value 的元素集合

实现一个 $attr(name, value)遍历,属性为 name,值为 value 的元素集合let arr = $attr(‘class’, ‘box’); => 获取页面中所有 class 为 box 的元素来看看我们该如何解决:<!DOCTYPE html><html><head> <meta charset="utf...

2020-03-29 12:13:22 426

原创 面试题-Vue 中的 computed 和 watch 的区别在哪里

共同点:都是监听数据变化的方法,用来观察和响应Vue实例上的数据变动。可以将复杂的逻辑放入到计算属性和watch 中,从而使得代码更加整齐,分工明确不同点:computed类型:{ [key: string]: Function | { get: Function, set: Function } }计算属性将被混入到 Vue 事例中。所有 getter 和 setter 的 ...

2020-03-28 14:03:54 520

原创 面试题--为什么普通 `for` 循环的性能远远高于 `forEach` 的性能,请解释其中的原因。

let arrs = new Array(100000);console.time('for');for (let i = 0; i < arrs.length; i++) {};console.timeEnd('for');console.time('forEach'); arrs.forEach((arr) => { });console.timeEnd(...

2020-03-26 11:49:18 1177

原创 面试题-[‘1‘, ‘2‘, ‘3‘].map(parseInt)

[‘1’, ‘2’, ‘3’].map(parseInt)错误答案[1, 2, 3]正确答案[1, NaN, NaN]解析首先我们来看看这里面的两个方法mapmap()方法创建一个新数组,其结果是该数组中的每个元素都调用一个提供的函数后返回的结果参数​ callback​ 生成新数组元素的函数,使用三个参数:​ currentValue​ cal...

2020-03-25 09:13:57 196

转载 简单说下前端中的模块化开发

模块化主要是用来抽离公共代码,隔离作用域,避免变量冲突等。IIFE: 适用自执行函数来编写模块化,特点:在一个单独的函数作用域中执行代码,避免变量冲突(function (){ return { data: [] }})()AMD: 适用 requireJS 来编写模块化,特点:依赖必须提前声明好。define('./index.js', function(code) ...

2020-03-21 19:11:23 142

原创 给Array扩展一个each方法

我们来写一个 each 方法,然后挂载到 Array 的 prototype 上要实现的功能:必传参数 callback,如果有异常则抛出异常如果只有一个callback,则里面的 this 指向 window如果有第二个参数 obj, 则把 this 执行第二个参数 obj生成一个新的数组,用来返回处理过后的数据function each (callback, obj) { ...

2020-03-10 13:03:38 170 1

原创 lazyLoad-懒加载

懒加载也叫延迟加载,指的是在长网页中延迟加载图像,是一种很好优化网页性能的方式。用户滚动到它们之前,可视区域外的图像不会加载。这与图像预加载相反,在长网页上使用延迟加载将使网页加载更快。在某些情况下,它还可以帮助减少服务器负载。适用场景:商城网站或者图片很多的其他展示性网站中。那使用懒加载的优点有哪些呢?能提升用户的体验。减少无效资源的加载,减小服务器和浏览器的负担。防止并发加载的资源...

2020-03-06 12:07:45 963

原创 table表头斜线自适应

需求:要求做一张表格,表头第一栏有斜线分割,且分割线也要跟随表格自适应思路:因为之前用了CSS去写,但是发现,只能实现固定的长和宽,如果页面伸缩,斜线就会破版,跟th或者td衔接不上。因此转而将目标锁定在了 canvas 上面,想通过 canvas 来实现自适应的效果。首先,给第一栏的第一个td 或者th 设置position: relative; 然后在里面嵌套一个 canvas 并设置其...

2020-02-24 14:22:05 1812 2

原创 JS篇-函数防抖和函数节流

函数节流高频触发事件,在 n 秒内只会执行一次,所以节流会稀释函数执行的频率。举个例子,古时候人们治水,一般都是直接用堵起来的水坝,把水堵住。但是后来发现,堵不如疏,你不能让水越聚越多,而是要选择减缓水流的速度。那么在 JS 中其实就在减少高频事件执行的频率,降低性能消耗。实现思路首先我们定义一个标记,当标记为 true 的时候执行函数,然后呢,我们在闭包里去判断如果这个标记为 fal...

2020-02-21 11:12:06 387

原创 JavaScript设计模式——适配器模式

介绍旧接口模式与使用者不兼容中间加一个适配器转换接口类似于笔记本电脑与显示器之间的转换线来看个例子:class Adaptee { specificRequest () { return "显示器接口" }}class Target { constructor () { this.adaptee = new Adaptee() } request () { ...

2020-02-10 13:01:38 134

原创 JavaScript设计模式——单例模式(笔记)

介绍系统中被唯一使用一个类只有一个实例示例登录框购物车在JS中如何使用单例模式:class SingleObject { login() { console.log('login...') }}// 使用闭包SingleObject.getInstance = (function(){ let instance; return function () {...

2020-02-09 16:39:59 161

原创 JavaScript设计模式——工厂模式

介绍将 new 操作单独封装遇到 new 操作时,就要考虑是否使用工厂模式来看代码:class Product { constructor (name) { this.name = name } init() { console.log("这是初始化...") } getName() { console.log(this.name) }}// 工厂fun...

2020-02-07 22:22:01 100

原创 Java-冒泡排序算法

比较相邻的元素,如果第一个元素比第二个元素大,就交换。相同元素的前后顺序并没有改变,所以冒泡排序是一种稳定排序算法。public class Bubblesort { public static void main(String[] args) { int[] nums = {34, 4, 56, 17, 90, 65}; // 这是从小到大的排序 // 外层循环控制轮数,长度减...

2020-02-06 13:52:23 118

原创 用原生js监听vue里调用的bootstrap模态框

因为是MVC的项目,所以虽然用了vue,但不是我们平常写的SPA,而是在页面中去单独引用。那么当我们在vue中去调用bootstrap中的模态框时,怎么去监听模态框的显示和隐藏呢?首先,对于bootstrap中的模态框显示隐藏的监听,bootstrap本身是有一套方法的。事件类型描述show.bs.modalshow方法调用之后立即触发该方法。如果是通过点击某个作为触发...

2020-01-20 17:39:28 1257

原创 Vuex学习笔记(四)——getters

Vuex中的getter,可以认为是store的计算属性。就跟计算属性一样,getter的返回值会根据它的依赖被缓存起来,且只有当它的以来至发生了改变才会被重新计算。我们来看一个例子:// 先创建一个storeconst store = new Vuex.Store({ state: { todos: [ { id: 1, text: '......

2020-01-17 13:51:00 264

转载 事件循环EventLoop机制

1. 宏任务与微任务依据我们多年编写 ajax 的经验:js 应该是按照语句先后顺序执行,在出现异步时,则发起异步请求后,接着往下执行,待异步结果返回后再接着执行。但他内部是怎样管理这些执行任务的呢?在 js 中,任务分为宏任务(macrotask)和微任务(microtask),这两个任务分别维护一个队列,均采用先进先出的策略进行执行!同步执行的任务都在宏任务上执行。宏任务主要有:scri...

2020-01-17 09:49:02 184

原创 Vuex笔记(三)——state

在Vuex中,我们会发现所有的状态都包含在了一个对象state中。即Vuex使用单一状态树。那我们在Vue组件中获取和展示状态的方法,在上一个笔记里已经有写过:// 在vue实例中引入storeconst vm = new Vue({ el: "#app", // 把 store 对象提供给 “store” 选项,这可以把 store 的实例注入所有的子组件 store, /...

2020-01-15 11:50:37 504 2

原创 vuex笔记(一)——什么是vuex?

Vuex是一个专为Vue.js应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态。项目中,它相当于一个中央管理仓库,来存储一些页面共用的数据或状态,主要包含以下几个部分:state,驱动应用的数据源——也就是你初始化定义公共数据状态的部分;Vue Components,以声明方式将state映射到视图——也就是把需要的数据从仓库中取出来并渲染到页面上;actions,...

2020-01-15 11:49:24 204

原创 Vuex笔记(二)——store

Vuex的核心就是store(仓库)。里面包含着项目中共用的数据状态。我们可以来看一个简单的例子:<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, ...

2020-01-14 10:39:34 164

转载 13个提高大脑学习效率的技巧

SPACED REPETITION --间歇重复为了最大化学习效率,短时间学习,但再三进行。FIND YOUR OWN STYLE–找到适合自己的学习模式有的人喜欢与朋友一起学习,有些则喜欢埋头安静学习GOOD NIGHT SLEEP–良好的睡眠睡觉和做梦是处理和储存信息至关重要的部分。FOCUS–集中注意力关闭手机或去像图书馆一样安静的地方POMODORO T...

2020-01-08 13:09:05 923

原创 ES2016/ES2017/ES2018/ES2019 新语法

2020-01-08 09:15:57 1018

原创 VSCode常用插件

material theme—VSCode主题prettier—内容颜色bracket pair colorizer 2indent-rainbow—换行缩进auto rename tag—闭合标签同步HTML CSS SupportLive Server—启动本地服务autoprefixer—自动补全css兼容前缀open in browser —打开浏览器...

2020-01-06 17:57:06 137

原创 使用原生js中的add和remove进行class类的增加和删除

我们可以直接使用原生JavaScript提供的API来做class类的增加和删除,效率更高。Element.classList它是一个只读属性,返回一个元素的类属性的实时DOMTokenList集合。如果类属性未设置或为空,那么它的length为0。虽然element.classList本身是只读的,但是你可以使用add()和remove()方法来修改它。add( String[, Str...

2020-01-06 17:53:21 1121

原创 关于在h5移动端页面中a链接事件

在h5页面中a链接是经常用到的标签,但是在移动端,我们在页面滚动的时候,a链接就会给我们造成很大的困扰。比如我们本来只是想要页面进行滚动,结果当我们刚触碰到页面上时,页面就跳转了。。。那么这里就是在移动端的touch事件所影响的,可以在touch事件的时候阻止a链接的点击事件,然后在释放。<li ontouchstart="cancleDefault(this)" ontouchend=...

2020-01-06 17:50:47 847

原创 bootstrap里模态框调用后禁止页面滚动

首先我们需要判断模态框是否已经被调用,这里使用bootstrap里提供的方法:// 监听点击事件,来触发页面是否滚动// 定义两个函数,来禁止滚动和释放页面滚动$('.modal').on('show.bs.modal', function(e) { stopScroll();})$('.modal').on('hidden.bs.modal', function(e) { ...

2020-01-06 17:48:20 1129

原创 position:fixed失效

项目里使用fixed定位以后发现,它跟relative里包了一个absolute一样,始终不能跑到页面的最外层,也就是说它失效了。原因很令人费解,是因为父级元素里或者祖先元素里有transform导致的。我在设置了transform:none以后,fixed就好了。...

2020-01-03 23:37:03 865

原创 offsettop及相关属性介绍

offsettop及相关属性介绍最近的项目中有用到offsetTop属性配合iscroll插件来进行下拉加载的一个效果,经过测试,在其他浏览器都是OK的,但是在iPhone的safari上页面刚加载完以后,滚动部分会有被遮挡一部分,后来发现是因为获取到的offsetTop值在刚开始进来的时候,并不是0,而是120px,这个刚好是节点元素到页面顶部的距离,所以猜测这里应该是offsetparent...

2020-01-03 23:35:54 1331 1

原创 vue笔记(二):vue的核心思想之数据驱动

vue.js的核心思想包括:数据驱动和组件化思想。什么是数据驱动?什么是事件驱动?1.事件驱动所谓的事件驱动简单来说就是用户通过点击,修改,删除,输入等等,来操作DOM,并触发对应的事件,然后通过后台响应处理,随之更新UI。2.数据驱动,更直白来说就是不操作DOM,用数据来渲染,通过虚拟的抽象数据层来直接更新页面。当数据发生变化的时候,用户界面发生相应的变化,开发者不需要手动的去修改d...

2019-10-20 22:32:02 806

原创 vue笔记(一):什么是vue

vue是一套用于构建用户界面的渐进式框架。什么是渐进式框架?所谓的渐进式框架就是:主张最少。具体可以看看知乎上的文章《Vue2.0 中,“渐进式框架”和“自底向上增量开发的设计”这两个概念是什么?》下面是摘抄的部分观点,以供参考:“在我看来,渐进式代表的含义是:主张最少。每个框架都不可避免会有自己的一些特点,从而会对使用者有一定的要求,这些要求就是主张,主张有强有弱,它的强势程度会影...

2019-10-20 22:30:38 185

原创 vue如何实现双向数据绑定?

vue中实现数据绑定的一个重要点:Object.defineProperty()函数<input type="text" id="a" /><span id="b"></span><script> var obj = {} Object.defineProperty(obj, 'test', { // 不需要监...

2019-10-04 11:51:47 196

转载 什么是声明提升?

浏览器引擎在解释JS代码之前,会对JS代码进行编译,其中一部分工作就是声明提升,也就是找到所有的声明,包括变量声明和函数声明都会被找到并在代码块执行前被处理。比如var i = 0;这句话会被浏览器解读成var i和i = 0两句话执行。其中var i会在编译阶段就会先执行,而i=0这段赋值代码会在原地等待执行。来个例子:console.log(a)var a = 2;// unde...

2019-10-03 16:34:21 1042

原创 VSCode如何设置tab为两个

咱们在实际项目中,经常会用到eslint来规范咱们得代码,而这是咱们得IDE上按下tab以后,一般为四个缩进,那这时eslint会发出警报,告诉你是两个而不是四个,那么这里,我们就需要去设置一下tab得缩进了,以VSCode为例:点击左下角得设置按钮,或者左上角文件-》首选项-》设置-》文本编辑器一定要关掉这个选项,否则会不起作用哦。...

2019-09-24 00:16:09 2809

原创 $router.push,只是路由参数改变,页面无反应的解决方法

这里咱们需要监听路由的变化,从而实现数据的重新加载。首先,把数据加载单独提出来,在created的时候执行这个方法,然后监听路由的变化:watch: { '$router' (to, from) { // 监听路由参数变化,重新加载数据 this.getInit(); }}...

2019-09-08 22:28:15 3719

原创 vue-cli@3.0版本

3.0版本区别于之前的2.0做了很大的调整,之前的2.0在下载安装时是这样的:npm install -g vue-cli那么现在的3.0是这样的:npm install -g @vue/cli其次,快速创建项目的命令也是不一样的,2.0:vue init webpack map// 详见https://blog.csdn.net/qq_42345237/article/detai...

2019-09-04 23:46:29 149

原创 Git冲突

第一次更新代码:git pull origin release (release为分支名)然后输入用户名和密码之后的更新直接git pull如果拉取代码有冲突时,使用 git stash (能够将所有未提交的修改(工作区和暂存区)保存到堆栈中,用于后续恢复当前工作目录。)先把代码挂起解决完冲突后。再 git pull 重新拉取代码然后把代码的挂起放开 git stash po...

2019-08-25 09:56:06 190

原创 引用类型和基本类型的区别?

两者的区别可以主要从以下三个方面说起:内存空间对值的操作变量的复制《javascript高级程序设计》中对于二者的定义是:基本类型值指的是简单的数据段引用类型值指那些可能由多个值构成的对象基本数据类型包括: number string boolean undefined null引用类型包括:array object function内存空间我们将js的内...

2019-08-24 15:09:02 331 3

原创 修改本地hosts

咱们将本地hosts修改之后,可以避免域名的重复,那怎么修改呢?首先找到hosts文件:C:\Windows\System32\drivers\etc然后使用记事本打开hosts文件:<IP> <对应地址>// 如127.0.0.1 test.baidu.cn然后将vue中的config下的index.js中的host改为这个地...

2019-08-17 12:34:45 309 2

空空如也

空空如也

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

TA关注的人

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