自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【前端复习笔记】每日10题

JS部分 介绍 js 的基本数据类型 JavaScript 有几种类型的值?你能画一下他们的内存图吗 什么是堆?什么是栈?它们之间有什么区别和联系? 内部属性 [[Class]] 是什么? class 介绍 js 有哪些内置对象? 标准内置对象和全局对象,分别是什么,有什么不一样? typeof的安全防范机制 undefined 与 undeclared 的区别? null 和 undefined 的区别? 如何获取安全的 undefined 值? JavaScript 原型,原型链? 有什么特点? HTM

2020-06-24 21:27:01 248

原创 前端工程化——模块化规范

模块化的相关规范 为什么要模块化: 传统开发模式的主要问题: 命名冲突问题:多个js文件之间如果存在重名的变量就会出现变量冲突问题; 文件依赖问题:js文件之间不能出现相互引用 模块化:把单独的一个功能封装到一个模块文件中。模块之间相关隔离,但是可以通过特定的接口公开内容部成员,也可以以来别的模块。 模块化开发的好处:方便代码管理,提升开发效率,方便后期维护(一个字 厉害!) 模块化规范如下: 服务器端: commonJS 1.模块分为 单文件模块 与 包 2.模块成员导出:module.exports和e

2020-06-23 22:18:33 297

原创 【Ajax】Ajax基础知识

什么是Ajax Ajax的全称是 Asynchronous JavaScript and XML, 即异步的 JavaScript and XML(名称就是简写咯,没发现吧哈哈哈) Ajax的作用 Ajax能够与服务器交换少量数据,从而异步地更新部分网页 异步:指的是当Ajax执行交换数据的操作时,其他的操作依然可以执行 同步:在ajax请求结束之前,都不可以执行其他的操作 **局部更新:**在使用过程是,js取出的数据在页面中,不会影响改变的其他部分 常见应用:百度搜索的时候,输入文字,搜索栏下面会显示出

2020-06-20 21:50:36 198

原创 【vue】vue组件化开发

组件化开发思想 标准 分治 重用 组合 组件化需要解决的问题: 我们希望尽可能多的重用代码 自定义组件的方式不太容易 多次使用组件可能导致冲突 组件化规范:Web Components (通过创建封装好功能的定制元素解决上述问题) 全局组件注册 在使用组件之前,我们需要注册组件 注册组件的语法为: Vue.component(name//组件名称,{ data:,//组件数据 template:})//template组件模板内容 //实例 Vue.component("button-

2020-06-19 19:53:32 248

原创 【vue】vue常规操作——过滤器

过滤器 过滤器可以用来处理数据(格式化数据) 自定义过滤器指令 既可以定义局部指令 也可以定义全局指令 过滤器的使用:既可以在插值表达式中使用,也可以使用到属性绑定中 如下: <div id="app"> <label>用户名</label> <div>{{uname| upper}}</div> <input type="text" v-model.lazy="uname" /&gt

2020-06-19 15:22:18 319

原创 【vue】vue常用特性——计算属性

计算属性 1.为何需要计算属性 表达式的计算逻辑可能会比较复杂,使用计算属性可以是模板内容更加简洁 例如,想要实现一个字符串的反转功能 <div>{{msg}}</div> <script> var vm= new Vue({ el:"#app", data:{},//data中需要添加msg键值对 computed:{ reverseString:function(){ return this.msg.split(“”).reverse().join("")//需要在

2020-06-18 23:23:21 552

原创 【vue】vue常见特性——自定义指令

自定义指令 为什么需要自定义指令呢? 官网有内置指令的相关用法,可以进行查阅 但是内置质量数量有限,有时候不满足我们的需求,所以需要自定义指令 如何定义指令? //自定义focus函数,刷新页面之后光标自动移到绑定的位置 Vue.directive("focus", { inserted: function (el) { el.focus(); } }) 如何使用指令? <input v

2020-06-18 22:30:25 227

原创 【vue】vue常用特性——表单

表单操作 表单是进行数据交互的常用手段 常见表单操作 input:单行文本 select:选择,如果需要多选的话,需要在 slect 标签中选择multple=“true”,表示可以多选,然后对应vue中数据类型为数组 radio:单选操作 checkbox:多选 textarea:多行文本,与text一样的操作,不可以在标签中间输入值 **操作为:**使用v-model实现数据绑定,多选操作则在vue中data选择数组,不是单个的值 表单域修饰符 number:转换为数值 trim:去掉开始和结尾的空格

2020-06-18 21:55:03 339

原创 【JS函数进阶】递归和堆栈

递归 首先什么是递归? 函数在解决某些问题的时候,需要调用其他的函数或者是其本身,那么对于调用其本身的情况,就可以叫做递归。 实现简单函数:x的n次方 第一种使用for 循环,也是初学者容易想到的方法;那么用递归怎么实现呢? function pow(x,n){ if (n==1){ return x}else{ return x*pow(x,n-1) } alert(pow(2,3)); 以上程序可以说明,pow函数不断的调用其本身,那么到n==1的时候,就会停止,也就达到了平方的目的 //简写如下 f

2020-06-18 20:43:36 648

原创 【JS的有趣操作】或运算寻找第一个真值

||运算可以用来寻找第一个真的值 在js中或运算符 || 做了如下的事情: 从左到右依次计算操作数。 处理每一个操作数时,都将其转化为布尔值。如果结果是 true,就停止计算,返回这个操作数的初始值。 如果所有的操作数都被计算过(也就是,转换结果都是 false),则返回最后一个操作数 **大概意思就是:**从左往右开始依次找,如果找到真的值,那就停止,返回真的值,如果没有真的,就返回最后一个值 【并且,返回的值不是做完布尔运算之后的值,而是操作数的初始形式】 let a=""; let b="我是拯救世界

2020-06-17 10:59:33 253

原创 深拷贝和浅拷贝

值的类型 基本类型和对象 基本类型有六种: null,undefined,boolean,number,string,symbol **引用类型:**数组和对象 let a = { name: 'FE' } let b = a b.name = 'EF' console.log(a.name) // EF

2020-06-16 09:30:10 144

原创 【前端性能优化】避免DOM的回流

回流 元素位置发生变化,需要重新排布和渲染 避免DOM的回流 1. 放弃传统的操作dom,基于vue/react数据影响视图模式 mvvp/mvc/虚拟dom/dom diff…[尽可能的避免的重绘和回流] 2. 分离读写模式 浏览器都有批量渲染机制:如果有连续修改样式的内容,浏览器会有渲染队列机制,先统一加载到队列之中,然后进行统一的渲染; **分离读写:**将操作样式和读取样式分开来写,利用浏览器的队列渲染机制【图中:console.log()放在中间问题很大】 4. 样式集中改变 box.style

2020-06-15 22:05:18 808

原创 浏览器渲染原理

用户在浏览器地址栏中输入网址,到页面加载出来,中间发生了哪些事情? 基本概念: **进程:**比如打开n个程序,则是n个进程 **线程:**一个程序中进行多个操作,则是多个线程 **栈内存:**提供环境,用来执行代码 堆内存: 1.HTTP的请求阶段 用户在浏览器输入网址后,浏览器会帮助我们向服务器发送请求; 请求阶段需要注意的: DNS解析、 DNS缓存, TCP协议的三次握手和四次握手、 http和https的区别(http2) 2.响应阶段: 响应阶段需要注意的点: HTTP状态码 304缓存

2020-06-15 20:44:47 186

原创 变量的解构赋值(举例)

各种情况的解构+默认值情况 数组的解构赋值 let [a,b,c]=[3,4,5] //a=3 b=4 c=5 (嵌套模式也适用,只要可以对应) let [foo, [[bar], baz]] = [1, [[2], 3]]; foo // 1 bar // 2 baz // 3 let [ , , third] = ["foo", "bar", "baz"]; third // "baz" let [x, , y] = [1, 2, 3]; x // 1 y // 3 let [head, .

2020-06-13 23:44:38 257

原创 数据结构和算法(对生活的抽象)

数据结构和算法 什么是数据结构? 计算机中,存储和组织数据的方式 数据的组织方法对效率影响很大 数据结构类型: 队列 树 堆 数组 栈 链表 图 散列表 什么是算法(Algorithm)? 不同的算法,执行效率不一样 一个有限指令集,每条指令的描述不依赖于语言 数据结构的实现离不开算法 (解决一个问题的方法步骤就是这个问题的算法) 具体数据结构介绍 数组 熟悉数组ApI的调用 数组是一种线性结构,并且可以在数组的任意位置 插入和删除数据 是一段一段的内存,扩容、插入和删除元素的操作耗时 数组通过下标来去

2020-06-13 21:17:20 377

原创 vue的常见特性

Vue的常见特性 - 表单操作 **表单的作用:**表单是用来做用户交互的重要手段 表单常见类型: input 单行文本 textarea 多行文本 select 下拉多选 radio 单选框 checkbox多选框 通过vue对表单数据进行操作 v-model:双向绑定 **注意:**提交表单的时候是用js进行表单提交,而不是默认的表单提交 表单域修饰符: number:转换为数值 trim:去掉开始和结尾的空格中间的去不掉 lazy:将input时间切换为change事件(input对象在失去焦点的时候

2020-06-12 23:36:05 227

原创 Vue基础语法

vue 渐进式JavaScript框架 参考官网和API文档 库+框架(可以灵活使用) 高效 vue的基本使用 基本流程 1.提供标签用户填充数据 2.引入vue.js文件 3.使用vue的语法结构做功能 4.把vue提供的数据填充到标签里面 实例参数分析: **el:**元素的挂载位置(值可以是css选择器或者DOM元素) **data:**模型数据(值是一个对象,可以存放很多个键值对) **methods:**vue中用来定义方法(函数) 调用方法中的函数,需要用this进行访问,在这里this 就是指

2020-06-12 20:17:15 480

原创 变量提升与函数提升

面试题目: **考察点:**变量提升&作用域 console.log(b)//undefined var b=3; 变量提升 通过var 定义的变量,在定义前就可以访问 值:undefined 函数提升 通过function声明的函数,在之前就可以直接调用 值:函数定义(对象) 变量提升和函数提升的原因 **注意:**用var 声明变量然后赋值的函数不能直接调用 var f=function(){} function f(){}[可以直接调用] ...

2020-06-11 17:29:42 120

原创 原型与原型链

原型(prototype) List item **原型对象:**每个函数都有一个prototype对象,默认指向一个object空对象,即称为原型对象 **constructor:**原型对象中有一个constructor,指向函数本身(函数有prototype,prototype有constructor,指向函数) 给原型对象添加属性,实例可以访问 List item 显式原型和隐式原型 **显式原型:**每个函数都有一个prototype对象【创建函数的时候创建】 隐式原型:每个实例对

2020-06-11 17:09:43 171

空空如也

空空如也

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

TA关注的人

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