- 博客(119)
- 收藏
- 关注
原创 git 回退版本
第三步:git reset --hard [版本号]就回退到merge前的代码状态了。第二步:git reflog查出要回退到merge前的版本号。第四步:git push -f是进行强制推送,覆盖远程分支。第一步:git checkout到你要恢复的那个分支上。至此回退代码的目标达成。
2023-01-12 10:18:59
299
原创 antd 日期选择
<div> <DatePicker onChange={this.handleStartTime} locale={zhCN} disabledDate={this.startDisabledDate} picker="month" /><DatePicker onChange={this.handleEndTime} locale={zhCN} disabledDate={this.endDisabledDate} picker="month" /></di.
2021-10-20 09:53:21
343
原创 parseInt第二个参数问题
parseInt()第二个参数介于2~36之间否则结果为NaNparseInt(123,5)=1*5的2次方+2*5的1次方+3*5的零次方=25+10+3=38次方是根据第一个参数的length-1判断的
2021-08-20 18:05:53
162
原创 vue组件通讯方式
1.props $emit2.$parent $children3.$attrs和$listeners 结合$emit $arrts 绑定属性,$listeners绑定方法4.provide和inject 父组件provide注入 子组件inject接收5.vuex
2021-08-14 16:28:38
132
原创 vue路由传参
params与query两种params路由定义//在APP.vue中<router-link :to="'/user/'+userId" replace>用户</router-link> //在index.js{path: '/user/:userid',component: User,},路由跳转// 方法1:<router-link :to="{ name: 'users', params: { uname: wade...
2021-08-14 15:40:01
105
原创 shouldComponentUpdate与PureComponent
react效率高的做法只有当组件的state或props数据发生改变时才重新render()原因Component中的shouldComponentUpdate()默认放回true解决办法1重写shouldComponentUpdate()方法比较新旧state或props数据,如果有变化才返回ture,如果没有返回fasle办法2使用PureComponentPureComponent重写了should...
2021-08-14 11:59:30
197
原创 js继承的方式
// 父类function Person(name){ this.name=name; this.sum=function(){ console.log(this.name) }}Person.prototype.age=16;// 1. 原型链继承function Per(){ this.name='原型继承'}Per.prototype=new Person('小伙')Per.prototype.mm='大拿' let p1=new P.
2021-07-29 10:20:42
80
原创 组件库设计原则
1.1标准性任何一个组件都应该遵循一套标准,可以使得不同区域的开发人员距此标准开发出一套标准统一的组件1.2独立性描述了组件的细粒度,遵循单一职责原则,保持组件的纯粹性属性配置等API对外开放,组件内部状态对外封闭,尽可能的少业务耦合1.3复用与易用UI差异,消化在组件内部(注意并不是写一堆if/else)输入输出友好,易用1.4使用SPOT法则SinglePointOfTruth,就是尽量不要重复代码1.5避免暴露组件...
2021-07-28 15:59:03
773
原创 Intersection 节点出现在视口内
`var io = new IntersectionObserver(callback, option);上面代码中,IntersectionObserver是浏览器原生提供的构造函数,接受两个参数:callback是可见性变化时的回调函数,option是配置对象(该参数可选)。// 开始观察io.observe(document.getElementById(‘example’));// 停止观察io.unobserve(element);// 关闭观察器io.disconnect();
2021-07-28 10:47:06
310
原创 跨域问题
一、如何解决跨域问题1.通过jsonp跨域2.document.domain+iframe 跨域3.location.hash+iframe4.window.name+iframe5.postMessage跨域6.跨域资源共享(CORS)7.nginx代理跨域8.nodejs中间件代理跨域9.webSocket协议跨域二、关于跨域需要明确的问题跨域并非浏览器限制了发起跨站请求,而是跨站请求可以正常发起,但是返回结果被浏览器拦截了。每次需求都会发出,服务器端也会
2021-07-28 10:08:45
45
原创 箭头函数与普通函数区别
1.箭头函数没有自己的this,只能通过作用域链来向上查找离自己最近的那个函数的this2.箭头函数不能作为constructor,因此不能通过new来调用,所以他并没有new.target这个属性3.箭头函数没有argument属性,可以通过rest可以获取4.箭头函数不能直接使用call和apply,bind来改变this5.箭头函数不能使用yield,不能用来做为generator函数6.箭头函数语法比普通函数更加简洁注意:ES6为new命令引入了一个new.t...
2021-07-27 17:36:17
125
原创 手写bind apply 方法
Function.prototype.myapply = function (context, ...argus) { if (typeof this !== 'function') { throw new TypeError('not funciton') } const fn = this let result = null context = context || window .
2021-07-27 17:35:25
94
原创 get、post、put区别
区别put与postPUT和POS都有更改指定URI的语义.但PUT被定义 idempotent的方法,POST则不是。idempotent的方法:如果一个方法重复执行多次,产生 效杲是一样的,那就是idempotent的。也就是说:。PUT请求:如果两个请求相同,后一个请求会把 第一个请求覆盖掉。(所以PUT用来改资源)。Post请求:后一个请求不会把第一个请求覆盖掉。 (所以Post用来增资源)get 与 post1. GET参数通过URL传递,POST放在Reques...
2021-07-27 10:45:40
2941
原创 GC垃圾回收机制
一、常用的垃圾回收机制1.引用计数法1.跟踪记录每个值被应用的次数2.当声明变量并将一个引用类型的值赋值给该变量时,则这个值的引用次数加1.3.同一值被赋予另一个变量,该值的引用计数加14.当引用改值的变量被另一个字所取代,则引用计数减15.当计数为0的时候,说明无法再访问这个值了,系统将会回收该值所占用的内存空间。6.缺点循环引用的时候,引用次数不为0,不会被释放。2.标记清除给存储在内存中的变量都加上标记,判断哪...
2021-07-27 10:35:36
47
原创 import原理与require有什么不同
import 原理(实际上就是ES6 module的原理)1.简单来说就是闭包的运用2.为了创建Module的内部作用域,会调用一个包装函数3.包装函数的返回值也就是Module向外公开的API,也就是所有export出去的变量4.import也就是拿到module导出变量的引用与require的不同1.CommonJS模块输出的一个值的拷贝,ES6模块输出的是值的引用2.CommonJS 模块是运行时加载,ES6模块是编译是输出接口CommonJS是运行时加载对应模块,一旦
2021-07-26 15:36:07
313
原创 函数柯里化
//1. 参数长度不固定function add (...args) { //求和 return args.reduce((a, b) => a + b)}function currying (fn) { let args = [] return function temp (...newArgs) { if (newArgs.length) { args = [ ...args, .
2021-07-26 14:24:01
125
原创 Vite与webapck 比较
一、对比分析webpack会先打包,然后启动开发服务器,请求服务器 时直接给予打包结果。而vite是直接启动开发服务器, 请求哪个模块再对该模块进行实时编译。由于现代浏览器本身就支持ES Module,会自动向依赖 的Module发出请求。vite充分利用这一点,将开发环境 下的模块文件,就作为浏览器要执行的文件,而不是像 webpack那样进行打包合并。由于vite在启动的时候不需要打包,也就意味着不需要 分析模块的依赖、不需要编译,因此启动速度非常快。 当浏览器请求某个模块时,再根据需要对模块
2021-07-26 10:14:59
764
原创 栈与堆的理解
理解:栈和堆其实是两种数据结构,栈堆都是一种数据项按序排列的数据结构,只能在一端(称为栈顶top)对数据项进行插入和删除。堆栈四个特殊的存储区,主要功能是暂时存放数据和地址。堆1.堆内存的存储的值的大小不定,是由程序员自己申请并指明大小。因为堆内存是new分配的内存,所以运行效率会较低。2.堆内存是向高地址扩展的数据结构,是不连续的内存区域。系统也是用链表来存储空闲的内存地址,所以是不连续的。因为是记录的内存地址,所以获取是通过引用,存储的对象居多3.堆内存的回收...
2021-07-23 10:06:18
168
原创 防抖与节流
const box=document.getElementById('box') const Input=document.getElementById('Input') function test(){ console.log(123) } function debounce(fn,time){ let setT=null; return function(){ clearTimeout(setT).
2021-07-22 09:45:05
49
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人