自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 手写防抖节流、手写深拷贝、事件总线

head></head><body><script>// 深拷贝函数// 0.如果值是Symbol的类型// 1.如果是原始类型, 直接返回if (!// 2.如果是set类型// 3.如果是函数function类型, 不需要进行深拷贝// 4.如果是对象类型, 才需要创建对象[]: {}// 遍历普通的key// 单独遍历symbolage: 18,friend: {address: {name: "洛杉矶",detail: "斯坦普斯中心"},// mitt。

2024-04-05 17:47:16 297

原创 select远程搜索,返回的option中没有前面选中的选项问题解决

筛选接口返回时。

2024-03-15 10:38:42 284

原创 js性能优化

在HTTP中,客户端给服务器端发起请求,并等待响应。请求和响应都遵循相同的格式,区别在于请求来自客户端,响应来自服务器端。一旦TCP连接建立,在通信双方中的任何一方主动关闭连接之前,TCP连接都将被一直保持下去。在HTTP中,所有的WWW文件都必须遵守这个标准,HTTP协议是建立在TCP协议之上的一种应用。HTTP连接最显著的特点是客户端发送的每次请求都需要服务器回送响应,在请求结束后,会主动释放连接。HTTP和TCP是互联网上应用广泛的两种协议,其中HTTP是应用层协议,而TCP是传输层协议。

2023-12-05 09:04:11 152

原创 vue3动态ref

添加点击事件,确定点击的是哪个ref。

2023-11-27 16:58:01 1161

原创 js面试题

为了使用闭包,我们可以简单的将一个函数定义在另一个函数的内部,然后将其暴露给外部,返回这个函数或者是把它传给另一个函数。当在 JavaScript 中使用一个变量时,JavaScript 引擎会首先在当前作用域中查找该变量,如果找不到,它会继续在上层作用域中查找,以此类推,直到找到该变量或到达全局作用域。在JavaScript中,闭包可能会导致内存泄漏,因为当一个函数返回了一个闭包,并且这个闭包引用了外部函数的变量时,即使外部函数已经执行完毕并被销毁,但由于闭包仍然存在,它仍然可以访问外部函数的变量。

2023-10-01 19:13:56 187

原创 vue项目用到的方法:下载文件

【代码】vue项目用到的方法:下载文件。

2023-05-08 16:57:09 158 1

原创 element-ui中的checkbox只有一个值得时候定义0为未选择1为选中

element-ui中的checkbox只有一个值得时候定义0为未选择1为选中

2022-06-13 16:45:20 494

原创 Vue-Router知识点总结

1.简介SPA(Single Page Application)Ajax前端渲染(前端渲染提高性能,但是不支持浏览器的前进后退操作) SPA(Single Page Application)单页面应用程序:整个网站只有一个页面,内 容的变化通过Ajax局部更新实现、同时支持浏览器地址栏的前进和后退操作 SPA实现原理之一:基于URL地址的hash(hash的变化会导致浏览器记录访问历 史的变化、但是hash的变化不会触发新的URL请求 在实现SPA过程中,最核心的技术点就是前端路由前端...

2021-12-12 09:29:37 1507

原创 VUE知识点总结

1.计算属性的作用计算属性出现的目的是解决模板中放入过多的逻辑会让模板过重且难以维护的问题.计算属性是根据data中已有的属性,计算得到一个新的属性.使用计算属性还有一个好处:计算属性是有缓存性:如果值没有发生变化,则页面不会重新渲染也就是说:只要相关依赖没有改变,对此访问计算属性得到的是之前缓 存的结果,不会多次执行。 所以说在进行大量耗时计算的时候,通过计算属性可以提升性能。2.2. 侦听器侦听器就是侦听data中的数据变化,如果数据一旦发生变化就通知侦听器所绑定方法,来执行

2021-12-11 14:41:10 1054

原创 css:移动端适配、less

1.字体2.关键帧动画3.3D动画

2021-12-07 22:45:50 210

原创 包管理工具npm

包管理工具npm:Node Package Manager,也就是Node包管理器; 但是目前已经不仅仅是Node包管理器了,在前端项目中我们也在使用它来管理依赖的包; 比如vue、vue-router、vuex、express、koa、react、react-dom、axios、babel、webpack等等;npm管理的包存放在哪里呢?我们发布自己的包其实是发布到registry上面的; 当我们安装一个包时其实是从registry上面下载的包;npm的配置文件是package.json

2021-12-02 11:02:34 801

原创 模块化:ESModule、CommonJS

一、CommonJS导出const name = "why"const age = 18function sum(num1, num2) { return num1 + num2}// 1.导出方案 module.exportsmodule.exports = { // aaa: "hahahahaah", // bbb: "bbb" name, age, sum}// 第二种导出方式exports.name = nameexports.age = a

2021-11-29 20:16:51 458

原创 ES6中class类、类的继承extends、多态、字面量的增强、解构、let/const、字符串模板、函数的默认参数、展开语法、数值、Symbol使用、Set、Map、es7-13总结

一、认识class定义类我们会发现,按照前面的构造函数形式创建 类,不仅仅和编写普通的函数过于相似,而且代码并不容易理解。在ES6(ECMAScript2015)新的标准中使用了class关键字来直接定义类;但是类本质上依然是前面所讲的构造函数、原型链的语法糖而已;可以使用两种方式来声明类:类声明和类表达式// 类的声明class Person {}// 类的表达式var Animal = class {}类和构造函数的异同类的一些特性和我们的构造函数的特性其实是一

2021-11-17 11:30:02 2368 1

原创 JS对象创建-封装、原型、原型链、寄生组合式继承、对象的方法补充

一、创建对象 – 构造函数和原型组合我们在构造函数的方式创建对象时,有一个弊端:会创建出重复的函数,比如running、eating这些函数那么有没有办法让所有的对象去共享这些函数呢?可以,将这些函数放到Person.prototype的对象上即可function Person(name, age, height, address) { this.name = name this.age = age this.height = height this.address = a

2021-11-12 09:39:10 1224 1

原创 JS手写代码:apply、call、bind,认识arguments,箭头函数中没有arguments,纯函数,slice纯函数,splice不是纯函数

一、call函数实现// 给所有的函数添加一个hycall的方法Function.prototype.hycall = function(thisArg, ...args) { // 在这里可以去执行调用的那个函数(foo) // 问题: 得可以获取到是哪一个函数执行了hycall // 1.获取需要被执行的函数 var fn = this // 2.对thisArg转成对象类型(防止它传入的是非对象类型) thisArg = (thisArg !== null &

2021-11-08 18:13:31 944 1

原创 数组中的高阶函数、JS闭包、闭包的内存泄漏

一、数组中的5个高阶函数1.filter: 过滤// [10, 5, 11, 100, 55]// 10 => false => 不会被放到newNums// 5 => false => 不会被放到newNums// 11 => false => 不会被放到newNums// 100 => false => 不会被放到newNums// 55 => false => 不会被放到newNumsvar newNums = nums

2021-11-05 17:55:32 661 2

原创 JS函数执行-作用域链-内存管理

一、函数调用执行过程var message = "Hello Global"function foo() { console.log(message)}function bar() { var message = "Hello Bar" foo()}bar()代码执行都需要加入调用栈(ECStack)中执行,所以先有调用栈编译阶段,就会先创建一个GO对象(Global Object),里面有window、string等等除了有本来的还要对代码进行编译,会发现还.

2021-11-03 21:23:08 416

原创 js面试题汇总

1.var let const的区别

2021-10-14 10:55:56 253

原创 vue面试题真题

1.v-if和v-show的区别2.v-for中为什么用key3.描述Vue组件生命周期(父子组件)4.Vue组件如何通讯5. 描述组件渲染更新的过程6.双向数据绑定v-model的实现原理7.对MVVM的理解8.computed有何I我特点9.为何组件data必须是一个函数data() { return { 对象} } data是函数,return出对象export default看似是一个对象,.vue文件编译出来...

2021-10-01 20:02:38 282 1

原创 Vue原理面试题

一、大厂必考原理1.组件化和MVVM2.响应式原理3.vdom和diff算法4.模板编译5.组件渲染过程6.前端路由1.组件化基础=>(MVVM模型)传统组件,知识静态渲染,更新依赖于操作DOM数据驱动视图 - Vue MVVMMVVM是Model-View-ViewModel缩写,也就是把MVC中的Controller演变成ViewModel。Model代表数据模型,View代表UI组件,ViewModel是View和Model层的桥梁,数据会绑定到View.

2021-10-01 17:43:36 7042

原创 vue基础面试题

一、vue的基本使用1、computed & watch的去区别computed计算属性,有缓存,data不变则不会从新计算 watch如何深度监听? handler true watch监听引用类型,拿不到oldVal<template> <div> <input v-model="name"/> <input v-model="info.city"/> </div>...

2021-09-29 15:04:05 573

原创 vue3项目搭建规范:第三方库集成(项目实战)

一、vue.config.js配置vue.config.js有三种配置方式:三选一即可* 方式一:直接通过CLI提供给我们的选项来配置:比如publicPath:配置应用程序部署的子目录(默认是 `/`,相当于部署在 `https://www.my-app.com/`);比如outputDir:修改输出的文件夹;* 方式二:通过configureWebpack修改webpack的配置:可以是一个对象,直接会被合并;可以是一个函...

2021-09-20 18:54:49 1121

原创 运行环境面试题

题目:1. 从输入url到渲染出页面的整个过程2. window.onload和DOMContentLoaded的区别知识点:加载资源的形式 加载资源的过程 渲染页面的过程一、资源的形式html代码媒体文件,如图片、视频等js、css二、加载过程1.DNS解析:域名 -> IP地址:域名服务解析,把域名变成ip地址。ip地址很难记,而且ip地址在不同区域是不一样的,所以访问域名的时候,域名解析服务会根据地域来解析不同的域名,让域名访问更快。2.浏览器根据.

2021-09-20 12:54:16 126

原创 开发环境面试题

一、git史上最详细git教程https://blog.csdn.net/zzq_0916s/article/details/81258804常用git命令git add . 添加git checkout xxx :回复修改的git commit -m ”xxx“ :提交,提交一行记录git push orign master:推送到服务端git pull orign master :从服务端下载git branch :查看分支git checkout -b xxx/gi

2021-09-16 21:14:09 133

原创 http面试题

题目:1.http常见的状态码有哪些2.http常见的header有哪些3.什么是Restful API4.描述一下http的缓存机制(重要)一、http状态码状态码分类1xx服务器收到请求 2xx请求成功,如200 3xx重定向,如302 4xx客户端错误,如404 5xx服务端错误,如500常见状态码200 成功 301 永久重定向(配合location,浏览器自动处理)。浏览器会记住哪个网址反回了301,让你到另一个网址去,那下次再访问的时候就直接不访问了,

2021-09-14 21:21:32 493

原创 JS WEB API面试题

一、事件题目编写一个通用的事件监听函数 描述事件冒泡流程 无限下拉图片列表,怎样监听每张图片的点击2.描述事件冒泡流程:基于DOM树形结构 事件会顺着触发元素往上冒泡 应用场景:代理3.无限下拉图片列表,怎样监听每张图片的点击通过事件代理 用e.target获取触发元素 用matchs来判断是否是触发元素知识点:事件绑定、事件冒泡、事件代理1.事件绑定//编写一个通用的事件监听函数function bindEvent(elem, type, ...

2021-09-13 14:37:33 388

原创 边框0.5px和解决1px的问题

工作中遇到了一个产品需求,要求把列表分割线改成0.5px,直接写成border:0.5px solid #cccccc;是不符合规范的写法,会存在Android和IOS手机上的兼容问题,故,我们可以利用CSS3的transform特性,放缩边框宽度来实现这一效果。<ul class="mBasicBorder_box"> <li class="mBasicBorder_scale_border">边框宽度0.5px</li> <li class

2021-09-12 15:37:24 598

原创 js必考面试题

原型和原型链答:class的原型本质,怎么理解 1.原型和原型链的演示 2.属性和方法的执行规则(即 怎么通过隐式原型一步步通过链的方式向上找方法)1.类和继承// 类class Student { constructor(name, number) { this.name = name this.number = number // this.gender = 'male' } ...

2021-09-08 17:12:09 325

原创 npm安装依赖报错:npm ERR! A complete log of this run can be found in: npm ERR! C:\Users\misal\A

npm ERR! A complete log of this run can be found in: npm ERR! C:\Users\misal\AppData\Roaming\npm-cache_logs\2020-08-06T05_46_39_769Z-debug.log说明:全局脚手架和本地脚手架版本不一样。解决方法:执行 npm install npm@latest -g升级到最新版本(若升级到最新版本还是报错,则还需要再全局更新一下npm,更新后检查npm版本号不会变,内部应该有更

2021-09-07 13:42:59 4168

转载 前端面试:后台管理系统的权限控制与管理

此文章根据视频教程进行整理前端面试官必问系列-后台系统的权限控制与管理,建议搭配视频教程一起食用效果更佳在Web 系统中,权限很久以来一直都只是后端程序所控制的。 为什么呢? 因为Web 系统的不质围绕的是数据, 而和数据库最紧密接触的是后端程序。所以在很长的一段时间内, 权限一直都只是后端程序要考虑的话题。 但是随看前后端分离架构的流行, 越来越多的项目也在前端进权限控制。一、 权限相关概念1.1 权限的分类后端权限 从根不上讲前端仅仅只是视图层的展示, 权限的核心是在于服务器中的数据变

2021-09-01 19:38:51 3085

原创 前端面试题汇总:css、html、js

1.css与html2.flex布局主要属性:flex-direction:属性决定主轴的方向(即项目的排列方向)。flext-wrap:默认情况下,项目都排在一条线(又称"轴线")上。flex-wrap属性定义,如果一条轴线排不下,如何换行。justify-content:属性定义了项目在主轴上的对齐方式。align-items:属性定义项目在交叉轴上如何对齐align-self:属性允许单个项目有与其他项目不一样的对齐方式,可覆盖align-items属性。默认值为auto,

2021-08-29 11:03:54 214

原创 前端面试题:20 道 Vue 常见面试题

一、讲一讲MVVMMVVM是Model-View-ViewModel缩写,也就是把MVC中的Controller演变成ViewModel。Model代表数据模型,View代表UI组件,ViewModel是View和Model层的桥梁,数据会绑定到ViewModel层并自动将数据渲染到页面中,视图变化的时候通知viewModel层更新数据...

2021-08-26 13:20:06 817

原创 JS面试题(一)对JS中的数据类型检测有哪些

数据类型检测:* + typeof* + 直接在计算机底层基于数据类型的值(二进制)进行检测* + tyepof null "object" 对象存储在计算机中,都是以000开始的二进制存储,null也是,所以检测出来的结果是对象* + typeof 普通对象/数组对象/正则对象/日期对象 "object"** + instanceof 检测当前实例是否属于这个类的* + 底层机制:只要当前类出现在实例的原型链上,结果都是tr...

2021-08-26 13:18:56 114

原创 vue3项目搭建规范:项目搭建、代码规范、git commit规范(项目实战)+遇见问题解决

一、项目搭建如果已经全局安装过旧版本的vue-clinpm uninstall vue-cli -g //yarn global remove vue-cli然后安装npm install -g @vue/cli //yarn global add @vue/cli如果npm run serve出现错误卸载已经安装旧版本的vuenpm uninstall vue安装指定版本npm install vue@3.1.1npm install vue@3..

2021-08-22 23:19:46 2266

原创 TypeScript语法:认识、运行环境

JavaScript缺点:直到今天JavaScript也没有加入类型检测这一机制我们可以给JavaScript加上很多限制,在开发中就可以很好的避免这样的问题了:比如我们的getLength函数中str是一个必传的类型,没有调用者没有传编译期间就会报错;比如我们要求它的必须是一个String类型,传入其他类型就直接报错;那么就可以知道很多的错误问题在编译期间就被发现,而不是等到运行时再去发现和修改TypeScript:解决这一问题与...

2021-08-18 11:51:43 149

原创 Vue3:nexttick、historyApiFallback

nexttick官方解释:将回调推迟到下一个 DOM 更新周期之后执行。在更改了一些数据以等待 DOM 更新后立即使用它。 比如我们有下面的需求: 点击一个按钮,我们会修改在h2中显示的message; message被修改后,获取h2的高度; 实现上面的案例我们有三种方式: 方式一:在点击按钮后立即获取到h2的高度(错误的做法) 方式二:在updated生命周期函数中获取h2的高度(但是其他数据更新,也会执行该操作...

2021-08-12 17:35:34 637

原创 Vuex的状态管理:module(模块)

module的基本使用什么是Module? 由于使用单一状态树,应用的所有状态会集中到一个比较大的对象,当应用变得非常复杂时,store 对象就有可能变得相当臃肿; 为了解决以上问题,Vuex 允许我们将 store 分割成模块(module); 每个模块拥有自己的 state、mutation、action、getter、甚至是嵌套子模块;module的局部状态对于模块内部的 mutation 和 getter,接收的第...

2021-08-12 16:21:54 574

原创 Vuex的状态管理:actions

actions的基本使用Action类似于mutation,不同在于: Action提交的是mutation,而不是直接变更状态;(mutation里是直接更改state状态)Action可以包含任意异步操作;(mutation里不允许异步操作)这里有一个非常重要的参数context: context是一个和store实例均有相同方法和属性的context对象; 所以我们可以从其中获取到commit方...

2021-08-11 15:47:32 842

原创 Vuex的状态管理:Mutation

更改 Vuex 的 store 中的状态的唯一方法是提交 mutation:组件中commit提交,传统写法<template> <div> <h2>当前计数: {{ $store.state.counter }}</h2> <hr> <button @click="$store.commit('increment')">+1</button> <button @c

2021-08-08 20:27:33 155

原创 Vuex的状态管理:state、getters进一步抽取封装

前面在hooks里封装好useState.js和useGetter.js,因为两者代码基本一样,所以还可以进行进一步的抽取,形成useMapper.jsuseMapper.jsimport { computed } from 'vue'import { useStore } from 'vuex'export function useMapper(mapper, mapFn) { // 拿到store独享 const store = useStore() // 获取到对应的对象

2021-08-08 19:25:51 231

空空如也

空空如也

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

TA关注的人

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