自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 (课程设计)使用React+next+express+mongodb 实现一个简易的问卷星系统

基于React + TypeScript + Next + Express + Mongodb 技术, 实现一个简单的仿问卷星系统。

2023-08-08 10:34:30 368 6

原创 vue3 使用element-plus中的dialog像MessageBox一样可以进行方法调用

1.简单场景下实现element-plus中的dialog像MessageBox一样可以进行方法调用。2.不需要维护visible变量。3.支持异步和同步加载弹框组件。4.支持Promise回调。

2023-08-04 16:59:00 1189 1

原创 vuex action可以支持异步,而mutations为什么不可以?

而actions是用来处理异步操作的,它可以触发多个mutations来修改sate中的数据,因此它必须支持异步。通过actions,我们可以将是步提作封装起来,然后围触发mutations来修改state中的数据,从而保证状态的可预测性。Vuex的mutations是用来修改state中的效担的,它的作用是改变state的状态,因此它必须是同步的,否则就无法保证状本的可预测性,如果mutations支持异步,就会存在多个异步操作同时修改state,导致数把不一致的问题。

2023-06-05 18:01:57 719

原创 vue 为什么computer为什么不可以用异步,watch却可以

在Vue中,computed属性是计算属性,它的值会根据它所依赖的属性动态计算出来,并且计算结果会被缓存起来,只有当依赖的属性发生变化时才会重新计算。如果在computed属性中使用异步操作,就会导致计算结果不稳定,而且在异步操作完成前,computed属性无法返回结果,这也违背了omputed属性的设计初表。而watch属性是用来监听效据变化的,它可以通过配置回调函效来响应效据变化,并且这个回调函数可以是异步的。Watch属性的作用是在数据发生变化时执行一些操作,它不需要返回值,因此可以使用异步操作。

2023-06-05 17:57:05 1863

原创 js 数组的方法

JavaScript数组常用方法

2023-02-03 17:50:28 53

原创 js 递归实现 数组转树形

js 递归实现 数组转树形

2022-11-15 10:17:11 321

原创 Vue3比Vue2有什么优势/区别

Vue3比Vue2对比

2022-09-29 16:55:40 407

原创 设计一个“用户-角色-权限”模型 RBAC

例如设计一个博客管理后台:普通成员:查看博客,审核博客,下架博客管理员:普通成员权限+修改博客+删除博客超级管理员: 管理员角色+添加删除、删除用户,绑定用户和角色RBAC-Role-based access control 模型介绍RBAC-三个模型, 两个关系用户模型、角色模型、权限模型以及用户和角色的关系, 角色和权限的关系RBAC举例User表用于Role表关联Role表用于Priority表关联例如:U101 用户登录拥有角色R101, R101拥有权限P101,P1

2022-04-27 14:17:41 142

原创 vue 组件是如何渲染和更新的?

初次渲染过程解析模板为render函数(或在开发环境,vue-loader)触发响应式,监听data属性的getter,setter执行render函数,生成vnode,patch(elem,vnode)更新过程1.修改了data,触发了setter2.重新执行render函数,生成newVnode3.在执行patch(vnode,newVnode)模板编译生成一个render函数,执行render生成一个Vnode节点, 会Touch data中的getter, 触发getter之后

2021-12-01 17:51:52 844

原创 css 面试题

1.盒模型宽度计算<div class="div">123<div><style> .div{ width: 100px; padding: 10px; border: 1px solid red; margin: 10px; } </style>offsetWidth = (内容宽度+内边距+边框),无外边距如何把offsetWidth变成100px,在后面加box-sizing: border-box;

2021-11-25 10:08:00 302

原创 vue $nextTick

1.为什么需要使用$nextTick1.修改完数据之后需要操作dom2.因为JS运行机制,修改dom的操作是为异步的操作 (同步代码获取不到元素)2.先了解一下JS event Loop 机制1.同步代码,一行一行放在Call Stack执行2.遇到异步先记录下来,等待时机(定时,网络请求)3.时机一到立马推入Callback Queue中4.如Call Stack为空(即同步代码执行完毕)->执行当前的微任务(微任务会在放在一个micro task queue)-> 会尝试DO

2021-11-18 11:03:35 772

原创 js 手写instanceof

1.先了解一下js的继承方法是通过原型继承2.instanceof运算符用来判断一个构造函数的prototype属性所指向的对象是否存在另外一个要检测对象的原型链上3.举个例子function isObject(obj){ return typeof obj === 'object' && obj != null } //手写instanceof function myInstanceof (l,r) { // 判断是否为对象 if (!isObject(l)

2021-11-16 14:22:23 167

原创 手写深度比较 isEqual

1.首先判断传入两个参数传入是否为object或者不为空,如果是普通类型则直接比较返回2.在判断两个Obj的长度是否相等,不相等则直接返回false3.在通过递归调用,处理参数深层次问题。function isObject(obj){ return typeof obj === 'object' && obj != 'null'}function isEqual(obj1,obj2){ if ( !isObject(obj1) && ! isObject(o

2021-11-15 09:08:40 502

原创 手写apply,bind,call 方法

apply 和 call 和 bind 的区别,三个方法都是改变this 指向问题,bind 最大区别是返回一个新的函数,apply 和 call 对于参数传入的区别:①:函数.call(对象,arg1,arg2…)②:函数.apply(对象,[arg1,arg2,…]) // step1: 把函数挂在到目标对象上 // step2: 执行函数 // step3: 删除step1中挂到目标对象上的函数,把目标对象”完璧归赵” Function.prototype.myCall = functi

2021-11-12 09:59:01 339

原创 JS 手写深拷贝

1.在 JS 中 Number String Boolean Null Undefined 为 基本数据类型 (存储在栈内存中)2. Object Array Funtion Data 引用数据类型( 使用的是地址,储存在堆内存中 -> 指针 ,一次修改其他地方引用会被修改, 引出浅拷贝和深拷贝的问题 )// 手写深拷贝function deepClone(obj){ // 判断是否对象可抽象成为一个函数 if (obj == null || typeof obj !== 'object

2021-11-11 09:53:27 1015

原创 vue为什么在data中定义的属性能通过this.xx进行访问

1.为什么在data中定义的属性能通过this.xx进行访问在new Vue 的时候会进行一堆初始化,会调用initData 进行data进行初始化,在调用proxy代理方法进行代理!

2021-09-26 17:42:49 401

空空如也

空空如也

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

TA关注的人

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