自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 前端常见面试题总结

一、如何理解HTML语义化?<!--非语义化写法--><div>标题</div><div> <div>一段文字</div> <div> <div>列表1</div> <div>列表2</div> <div></div><!--语义化写法--><h1>标题</h1><div> &

2020-10-24 21:12:48 243 1

原创 vue项目打包上线的流程

我们在完成项目打包上线的时候,会发现他的文件很大,这个时候我就需要对项目先做一些优化,优化之后在进行打包一、项目打包之前的优化1. 通过 externals 加载外部 CDN 资源默认情况下,通过 import 语法导入的第三方依赖包,最终会被打包合并到同一个文件中,从而导致打包成功后,单文件体积过大的问题。为了解决上述问题,可以通过 webpack 的 externals 节点,来配置并加载外部的 CDN 资源。凡是声明在externals 中的第三方依赖包,都不会被打包。config.se

2020-09-24 21:59:27 4227

原创 关于虚拟DOM和Diff算法的理解及应用场景

1、vue虚拟dom虚拟DOM不是真实的DOM,而是一个JS对象。它的作用是判断DOM是**否改变、 哪些部分需要被重新渲染**。 vdom完全是用js去实现,和宿主浏览器没有任何联系,此外得益于js的执行速度,将原本需要在真实dom进行的创建节点,删除节点,添加节点等一系列复杂的dom操作全部放到vdom中进行,这样就通过操作vdom来提高直接操作的dom的效率和性能。2、vue diff 算法#(1)为什么有diff算法:diff算法用来修改一小段dom,不会引起dom树的重绘#(2)dif

2020-09-20 20:54:36 555

原创 axios封装,api接口封装统一管理

axios封装,api接口封装统一管理一、 axios说明Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中。axios的封装和api接口的统一管理,其实主要目的就是在帮助我们简化代码和利于后期的更新维护。在vue项目中,和后台交互获取数据这块,我们通常使用的是axios库,它是基于promise的http库,可运行在浏览器端和node.js中。他有很多优秀的特性,例如拦截请求和响应、取消请求、转换json、客户端防御XSRF等。二、axios的安装1

2020-09-14 22:00:52 3508 1

转载 事件模型

什么是事件?事件(Event)是JavaScript应用跳动的心脏 ,也是把所有东西粘在一起的胶水。当我们与浏览器中 Web 页面进行某些类型的交互时,事件就发生了。事件可能是用户在某些内容上的点击、鼠标经过某个特定元素或按下键盘上的某些按键。事件还可能是 Web 浏览器中发生的事情,比如说某个 Web 页面加载完成,或者是用户滚动窗口或改变窗口大小。通过使用 JavaScript ,你可以监听特定事件的发生,并规定让某些事件发生以对这些事件做出响应。今天的事件在漫长的演变史,我们已经告别了内嵌式的

2020-09-13 20:22:50 1578 1

原创 事件监听

事件监听事件监听方法:1.事件监听方法是由事件源对象提供的。2.事件监听方法捕获事件源对象上面的动作,如果有动作发生,则事件监听方法捕获动作,收集事件源对象的信息和动作信息,然后将信息交给事件接口的对象进行处理。概念:某些组件被执行了某些操作后,触发某些代码的执行。事件:某些操作。如: 单击,双击,键盘按下了,鼠标移动了事件源:组件。如: 按钮 文本输入框…监听器:代码。注册监听:将事件,事件源,监听器结合在一起。 当事件源上发生了某个事件,则触发执行某个监听器代码。常见的事件

2020-09-13 20:04:50 114

原创 设计模式

设计模式设计模式代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。一、什么是设计类型设计模式是在软件开发过程中面临的一般问题的解决问题,设计模式的使用提到了代码的重用,让代码更容易被理解,保证代码的可靠性,使代码编制真正工程化,设计模式是软件工程的基石,项目中合理的运用设计模式可以完美解决很多问题,其实设计模式就是从大型软件架构出发、便于升级和维护的软件设计思想,它强调降低依赖,降低耦合。二、设计分类模式描述创建型模式工厂模式、抽象工厂模式、单例模式、建造者模式、

2020-09-13 19:36:01 67

原创 includes()方法和indexOf()方法数组去重

数组去重常用的两种方法includes()方法和indexOf()1.includes()数组去重实现原理includes()方法来判断一个数组是否包含一个指定的值,根据情况,如果包含就返回true,不包含就返回falseArray.isArray() 用于确定传递的值是否是一个数组var arr = [1,1,15,15,true,false,true,false,NaN,0,"0"]function fn(arr){ if(!Array.isArray(arr)){ cosloe.lo

2020-09-09 19:52:23 1191 1

原创 ES6新增数组方法

数组方法1、find()find()查找数组中符合条件的元素,若有多个符合条件的元素,则返回第一个元素(如果数据有空位则处理为undefined)let arr = Array.of(1, 2, 3, 4);console.log(arr.find(item => item > 2)); // 3// 数组空位处理为 undefinedconsole.log([, 1].find(n => true)); // undefined2、findIndex()查找数组中符合条

2020-09-08 22:02:56 131

原创 ES6的数组方法详解(ES5新增)

ES5的数组方法ES5定义了六个新的数组方法来遍历,映射,过滤,简化和搜宿舍数组1.forEach()forEach()方法从头至尾遍历数组,为每个元素调用指定的函数,它有三个参数:数组元素、元素的索、数组本身var data = [1,2,3,4,5]var sum = 0data.forEach(function(val){ sum += value})sum //15data.forEach(function(v,i,a){ a[i] = v + 1})data // [2,

2020-09-08 21:12:15 602

转载 generator(特点,项目应用)

Generator 函数的定义语法上,可以把理解成,Generator 函数是一个状态机,封装了多个内部状态。形式上,Generator 函数是一个普通函数。它不同于普通函数,是可以暂停执行的,所以函数名之前要加星号,以示区别。整个Generator函数就是一个封装的异步任务,或者说是异步任务的容器,异步操作需要暂停的地方,都用yield语句。什么是Generator函数function 关键字和函数之间有一个星号(*),且内部使用yield表达式,定义不同的内部状态。调用Generator函数

2020-09-06 21:38:41 353

原创 async,await(特点,项目中应用)

一、async,await的特点 **async/ await来发送异步请求,从服务端获取数据,代码很简洁,同时async/await 已经被标准化**特点:▲asayc的用法,它作为一个关键字放到函数前面,这样普通函数就变为了异步函数▲异步async函数调用,跟普通函数的使用方式一样▲异步async函数返回一个promise对象▲async函数配合await关键字使用(阻塞代码往下执行)是异步方法,但是阻塞式的async/await的优点:★方便级联调用:即调用依次发生的场景;★同

2020-09-06 21:29:45 278

原创 promise(特点,项目中如何应用)

一、PromisePromises的概念是由CommonJS小组的成员在Promises/A规范中提出来的。一般来讲,有以下的名词约定:**promise(首字母小写)**对象指的是Promise实例对象Promise首字母大写且单数形式,表示Promise构造函数Promises首字母大写且复数形式,用于指代Promises规范二、什么是promisePromise,简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果。从语法上说,promise 是一个对象,从它

2020-09-06 20:49:07 607

原创 深入了解 var let const的区别

var let 和const的区别let 和 const是ES6新增的命令,用于声明变量,这两个命令和ES5的var有很多的不同,let和const也是有细微的不同区别:1.块级作用域2.不存在变量提升3.暂时性死区4.不可重合声明5.let和const声明的全局变量不会挂在顶层对象下面1、块级作用域首先我们为什么需要块级作用域因为ES5只有全局作用域和函数作用域,没有块级作用域,他给我们带来了很多不合理的场景:1.内层变量可以覆盖外层变量2.用来计数的循环变量泄漏为全局变量▲js

2020-09-06 20:31:32 255

原创 关于vuex的理解,用法

1.vuex是什么Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。Vuex背后的基本思想,就是前面所说的单向数据流2.Vuex状态管理跟使用传统全局变量的不同之处1)Vuex的状态存储是响应式的:就是当你的组件使用到了这个Vuex的状态,一旦它改变了,所有关联的组件都会自动更新相对应的数据2)**不能直接修改Vuex的状态:**如果是个全局对象变量,要修改很容易,但是在Vuex中不能这样做,想修改就得使用Vuex提供的唯一途径:显示地提交(commint)mutations来实现修改

2020-09-03 21:46:32 215

原创 关于原型和原型链的理解

1.原型的概念JavaScript 的所有对象中都包含了一个 [proto] 内部属性,这个属性所对应的就是自身的原型JavaScript 的函数对象,除了原型 [proto] 之外,还有 prototype 属性,当函数对象作为构造函数创建实例时,该 prototype 属性值将被作为实例对象的2.原型链的概念当一个对象调用自身不存在的属性/方法时,就会去自己 [proto] 关联的前辈 prototype 对象上去找,如果没找到,就会去该 prototype 原型 [proto] 关联的前辈

2020-09-02 21:43:44 136

原创 JS继承方法和实现原理

1.js中继承实现的方法实现继承首先需要一个父类,在js中实际上是没有类的概念,在es6中class虽然很像类,但实际上只是es5上语法糖而已js中实现继承的方法共有七种,分别是:1)原型链继承2)借用构造函数继承3)实例继承(原型式继承)4)拷贝继承5)组合式继承6)寄生组合式继承7)es6继承★原型链继承:把父类的实例作为子类的原型(利用原型让一个引用类型继承另一个引用类型的属性和方法)优点:简单易于实现,父类新增的实例与属性子类都能访问到缺点:♢ 可以在子类中增加实例属性,

2020-09-02 21:33:50 2165

原创 this, call, apply, bind详解

1.this1)this的指向在ES5中,this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定this到底指向谁,this的指向永远指向它最后调用的那个对象2)this指向的三种情况  1.如果一个函数中有this,但是它没有被上一级的对象所调用,那么this指向的就是window,这里需要说明的是在js的严格版中this指向的不是window而是undefined。  2.如果一个函数中有this,这个函数有被上一级的对象所调用,那么this指向的就是上一级的对象。  3.如

2020-09-01 20:58:39 183

原创 js数据类型 、数据类型判断

一、js的数据类型值类型(基本类型):字符串(String)、数字(Number)、布尔(Boolean)、对空(Null)、未定义(Undefined)、Symbol。引用数据类型:对象(Object)、数组(Array)、函数(Function)Symbol 是 ES6 引入了一种新的原始数据类型,表示独一无二的值。**1.**JavaScript拥有动态类型,这意味着相同的变量可以作用不同的类型var x ; //此时的X是undefinedvar x = 5 //此时的x是数字类型va

2020-08-31 20:41:15 184

原创 css3动画、H5新特性

1.css3动画1.css动画是什么动画是使元素从一种样式逐渐变化为另一种样式的效果。您可以改变任意多的样式任意多的次数。CSS3 创建的动画,它可以取代许多网页动画图像、Flash 动画和 JavaScript 实现的效果。**CSS3 @keyframes 规则** 要创建 CSS3 动画,我们需要了解 @keyframes 规则。 @keyframes 规则是创建动画。 @keyframes 规则内指定一个 CSS 样式和动画将逐步从目前的样式更改为新的样式。 当在 @keyframes 创

2020-08-30 20:00:56 419 2

原创 如何实现两、三栏布局、水平/垂直居中

1.两栏布局所谓的两栏布局就是在一行中有两个盒子,我们给左边的盒子固定的宽度,让右边的盒子自适应后面的宽度实现代码:<div id="left">左边定宽</div><div id="right">右边,</div>#left{ float: left; width: 200px; margin-right: -200px; height: 50%; background: green;}#right{

2020-08-27 20:54:01 852

原创 弹性盒子布局

一、CSS3弹性盒子弹性盒子是CSS3的一种新布局模式。CSS3 弹性盒,是一种当页面需要适应不同的屏幕大小以及设备类型时确保元素拥有恰当的行为的布局方式。引入弹性盒布局模型的目的是提供一种更加有效的方式来对一个容器中的子元素进行排列、对齐和分配空白空间。弹性盒子由弹性容器(Flex container)和弹性子元素(Flex item)组成。弹性容器通过设置 display 属性的值为 flex 或 inline-flex将其定义为弹性容器。弹性容器内包含了一个或多个弹性子元素。注意: 弹性

2020-08-26 19:05:40 1087 1

原创 盒模型

1.盒模型的基本概念盒子模型是用来存放网页中的各种元素 在网页当中各种元素,如图片丶文字等元素,都可是盒子(div嵌套) css定义所有的元素都可以拥有像盒子一样的外形和平面空间。即都包含内容区、补白(填充)、边框、边界(外边距)这就是盒模型。2.盒模型的分类盒模型分为:标准w3c盒模型、IE盒模型、以及css中的伸缩盒模型标准盒模型在标准模式下的盒模型如下图所示,盒子总宽度/高度=width/height+padding+border+margin怪异盒模型在怪异模式下,盒子的总宽度和高度

2020-08-25 20:42:14 103

原创 Github的基本使用

1、Github用户注册如果仅仅只有你一个人在这个项目里工作,你永远没有机会需要设置一个远程仓库。只有当你需要和你的开发团队共享数据时,设置一个远程仓库才有意义1.访问[github](https://github.com/)首页,点击 Sign up 连接。(注册) 2.填写用户名、邮箱地址、GitHub登陆密码 3.选择计划(选择免费仓库) 4.填写 GitHub 问题 5.验证邮箱(一定要填写正确的邮箱)`` 6.GitHub 个人中心2.多人协作开发流程1.项目组长创建远程仓库2.邀请

2020-08-25 16:19:21 152

原创 Git的基本指令及用法

1.Git的基本概念Git是一个版本管理控制系统*(缩写vcs)*,它可以在任何时间点,将文档的状态作为更新记录保存起来,也可以在任何时间点,将更新记录恢复回来。2.Git的基本工作流程git仓库:用于存放提交记录暂存区:临时存放被修改的文件工作目录:被git管理的项目目录流程:工作目录提交到暂存区 ,暂存区提交到git仓库3.Git使用前的配置1、配置提交人姓名:git config --global user.name2、配置提交人邮箱:git config --global user

2020-08-24 19:14:24 364 1

空空如也

空空如也

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

TA关注的人

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