自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Token无感刷新

token是有时效时间的,存在一种情况:表单提交,不知道用户要提交多久时间,可能会有填了一个小时刚写完结果点击提交回到登录页面了。为提升用户体验——token无感刷新登录的时候返回短token(失效时间短)401代表短token失效。

2025-04-08 21:06:22 333

原创 前端里的作用域&变量提升&闭包问题

首先是var和函数声明会有变量提升,当然了,var的变量只有声明提升,定义不会。没有用var/let/const声明的变量默认是全局变量,var有函数作用域,用它声明的在函数作用域内不是全局变量。js变量的作用域在定义的时候就确定好了,跟this不一样。

2025-02-17 13:09:51 334

原创 前端里的this指向问题

改变this指向的四种方式:函数默认指向,this是window对象调用函数,函数里的this指向对象显示绑定:call、apply、bind绑定,有参数绑定参数,null或者undefined就是window通过new绑定this其中new>显示>对象调用>默认指向箭头函数里的this是一开始就定义好的,与后来谁去调用没有关系,this会继承自定义时的外层作用域,而且对象不会创建作用域,所以往外翻的时候只能翻到函数上。

2025-02-16 20:51:47 691

原创 LeetCode代码随想录(二)——977.有序数组平方、209长度最小子数组、59螺旋矩阵2

(2)由于有负数,所以平方之后的最大数肯定是在数组的两侧出现的,那么我们就可以从两侧找,最大的那个就放进新的数组里,但是题目要求的是从小到大排序,为了不让排序完再倒一遍就直接用数组最后一个去装第一个找到的最大的数,依次装入(因为知道数组总长度)首先i(起始)、j(末端)都在数组0位置,然后j依次向后移,同时sum+=,直到sum和大于等于s之后进入循环,此刻这个终止位置就固定了,i开始左移,左移完之后的sum不是重新计算,而是减去移动完的那些项 并且i++。然后j再开始向后移动···

2025-01-06 17:17:24 476

原创 LeetCode代码随想录(一)—— 704.二分查找法、27.移除元素

还有就是,我们现在的条件是左闭右闭情况所以left<=right,如果是左闭右开情况就得是left<right了,因为right这点的数已经不在考虑范围之内了,当a[mid]>key时,更新right为mid而不是mid-1。(1)a[mid]=33<key 更新left=mid+1=5 mid=(left+right)/2=7。(2)a[mid]=61>48 更新right=mid-1=6 mid=5。比如说我要查找的是48,key=48。

2024-12-19 22:06:49 306

原创 CSS3新特性——字体图标、2D、3D变换、过渡、动画、多列布局

* 定义动画 *//* 第一帧 */from{/* 最后一帧 */to{第一帧就是我们最开始放盒子的那个位置,所以不用再写。这里的from 、、to、、也可以写成0%、、100%、、,同理还能再加50%、、、有点像过渡,区别:过渡需要有一个触发条件,但是动画规定动的时间上来就会动,不需要条件。如果动画最后一帧也改变了背景颜色的话,可能会出现前面卡顿的现象是浏览器渲染机制的问题,需要把这个打开,都不行的话就加一个延迟animation-delay:0.5s;

2024-11-20 15:14:50 3138 2

原创 CSS3新特性——概述、私有前缀、盒子模型、背景、边框、渐变色

在C2的基础上,增加了许多强大的新功能,从而解决一些实际面临的问题;C3未来会按照模块化的方式去发展(分为文本、盒子、2D、3D、、)。

2024-11-13 15:54:48 1269

原创 Vue3(二):computed、watch、生命周期、hooks

点击加1</button>'">点击加!

2024-07-28 15:28:03 1177

原创 vue3(一):Vue3简介、创建vue3工程、Vue3中的响应式

打包速度快、内存小、渲染快ref经常定义基本数据类型,reactive定义数组、对象数据类型注:ref也可以定义数组、对象数据类型,内部通过reactive转为代理对象。

2024-05-28 17:40:42 4226

原创 Vue2电商前台项目(四):完成Detail详情页模块业务

直接给表单加type="number",确实除了数字而且是整型的其他都加不了了,结果表单右边又来了一个数字加减框(2)本来我想直接上parseInt,但是这样它把字母在前的识别为NAN,数字在前的就取了前面的那个数字,我们的需求是只要有字母都不合格

2024-04-13 21:01:06 1453

原创 Vue2电商前台项目(三):完成Search搜索模块业务

点击之后就得带着品牌信息向服务器捞数据注意:我们是让父组件发信息给服务器的,因为之前整理的参数都在父组件里,所以我们的子组件需要给父组件传过去品牌信息methods: {//点击品牌之后整理参数,向服务器发请求//trademark是个对象 有相应的name和id//trademark为品牌名},//自定义事件的回调,触发在子组件触发//整理参数,格式要求是id:name//发请求给系统、内存啥的添加面包屑我们点击的是每个小li,给li加点击事件;

2024-04-10 21:22:47 2401

原创 Vue2电商前台项目(二):完成Home首页模块业务

1、书写静态页面(HTML,CSS)2、拆分组件3、获取服务器的数据动态展示4、完成相应的动态业务逻辑经过分析之后,Home首页可以拆分为7个组件:TypeNav三级联动导航,ListContainer,Recommend,Rank,Like,Floor,Brand。主要得看你静态页面把谁谁写在一个结构里面了,组件就得在一个里面。

2024-04-05 21:53:19 1281 1

原创 Vue2电商前台项目(一):项目前的初始化及搭建

路由要求传递params参数,但是你就不传递params参数,发现一件事情,URL会有问题的指定params参数可以传递、或者不传递,在配置路由的时候,在占位的后面加上一个问号【params可以传递或者不传递】

2024-04-03 23:26:15 1548

原创 Vue2(完结):replace属性、编程式路由导航、缓存路由组件、两个新钩子、路由守卫、history与hash

1、作用:控制路由跳转时操作浏览器历史记录的模式2、浏览器的历史记录有两种写入方式:分别为push和replace,push是追加历史记录,replace是替换当前记录。路由跳转时候默认为push3、如何开启replace模式:<router-link replace .......>News</router-link>push是默认模式,可以前进后退,相当于指针指前面还是后面,而replace是指针指哪个就把它之前那个抹掉,就不能后退了。

2024-04-02 15:16:38 3078

原创 Vue2(十三):路由的使用及注意点、嵌套路由、路由的query和params参数、props配置

1、路由就是一组映射关系(key - value),多个路由需要路由器(router)进行管理。2、key 为路径, value 可能是 function 或 component组件3、vue 的一个插件库(vue-router),专门用来实现 SPA 应用。

2024-04-01 15:38:58 1785

原创 Vue2(十二):Vuex环境搭建、Vuex工作原理、Vuex开发者工具、几个配置项、多组件共享数据、Vuex模块化

你写的函数在Actions(数据类型是Object)就会有一个函数跟它对应,然后你自己再去调用commit函数(提交),到了mutations(数据类型也是Object),commit里的jia,mutations也会有一个jia跟它对应,同时它还会拿到两个参数:state状态和2。mutate不用你调用,只需要在mutations里的jia写一句state.sum+=2,底层自动加2,sum就不是0是2了,然后Vuex帮你开始渲染render,页面上的sum就变化了。

2024-03-30 21:47:41 1394 1

原创 Vue2(十一):脚手架配置代理、github案例、插槽

回顾常用的ajax发送方式:(1)xhr比较麻烦,不常用(2)jQuery核心是封装dom操作,所以也不常用(3)axios优势:体积小、是promise风格的、支持请求拦截器和响应拦截器(4)fetch

2024-03-28 22:10:26 1585 1

原创 AJAX(二):axios 和 fetch函数发送AJAX请求、同源策略、 jsonp、CORS

jquery基于回调函数,axios基于promise。

2024-03-27 23:39:44 765

原创 AJAX(一):初识AJAX、http协议、配置环境、发送AJAX请求、请求时的问题

就是异步的JS和XML。。AJAX 不是新的编程语言,而是一种将现有的标准组合在一起使用的新方式。

2024-03-25 21:12:01 1483

原创 Vue2(十):全局事件总线、消息订阅与发布、TodoList的编辑功能、$nextTick、动画

任意组件间通信比如a想收到别的组件的数据,那么就在a里面给x绑定一个demo自定义事件,所以a里面就得有一个回调函数吧,然后我要是想让d组件给a穿数据,那就让d去触发x的自定义事件,并且传参数进去,那么触发自定义事件就也会调用回调函数,就把数据给到a了。

2024-03-24 22:16:06 1638

原创 Vue2(九):浏览器本地存储、组件自定义事件、TodoList自定义事件

点我发送student名字

2024-03-24 13:07:02 1409

原创 Vue2(八):TodoList案例

1.组件化编码流程:(1)拆分静态组件:组件要按照功能点拆分,命名不要与html元素冲突。(2)实现动态组件:考虑好数据的存放位置,数据是一个组件在用,还是一些组件在用:一个组件在用:放在组件自身即可。一些组件在用:放在他们共同的父组件上(状态提升)。(3)实现交互:从绑定事件开始。2.props适用于:(1).父组件 ==> 子组件 通信(2).子组件 ==> 父组件 通信(要求父先给子一个函数)3.使用v-model时要切记。

2024-03-23 20:13:06 1124

原创 Vue2(七):脚手架、render函数、ref属性、props配置项、mixin(混入)、插件、scoped样式

新建文件mixin.js定义两个混合mixin和mixin2methods:{// 分别暴露交出去,别人才能用data(){return{x:100,y:200plugin.js//1.定义一个全局过滤器//返回值别忘了});//2.定义一个全局自定义指令,元素默认获取焦点},el.focus();},})//3.定义一个全局混合,不用引入就能给所有的vm和vcdata() {return {x: 1,y: 2})

2024-03-21 19:15:50 1286

原创 Vue2(六):组件的定义、组件的嵌套、Vuecomponent构造函数、单文件组件

或<school>

2024-03-20 11:44:00 1750

原创 Vue2(五):收集表单数据、过滤器、自定义指令、Vue的生命周期

定义:对要显示的数据进行特定格式化后再显示(适用于一些简单逻辑的处理比如价格1999改成1,999等需求,复杂的用计算属性或方法)。语法:1、注册过滤器:Vue.filter(name,callback) 或 new Vue{filters:{}}2、使用过滤器:{{ xxx | 过滤器名}} 或 v-bind:属性 = "xxx | 过滤器名"(用的少)备注:1、过滤器也可以接收额外参数、多个过滤器也可以串联2、并没有改变原本的数据, 是产生新的对应的数据。

2024-03-18 21:25:41 1427

原创 Vue2(四):Vue监测数据的原理

下面这种方式就不能奏效,但是在控制台查看person[1]姓名年龄啥的都是更改之后的。如果先点击按钮在点击vue后台可以看到信息更改页面却不更改,先点击vue后台就vue也没改页面也没改,这是为啥呢?

2024-03-17 16:23:30 870

原创 Vue2(三):绑定样式、条件渲染(v-if,v-show)、列表渲染(v-for)、key的原理、列表过滤、列表排序

适用于:样式类名不确定,需要动态获取。点击盒子之后从normal到happy,但是sad没用上啊把三种心情装数组里随机生成。

2024-03-16 21:08:18 1436

原创 Vue2(二):计算属性、监视属性、二者的区别

1、computed能完成的功能,watch都可以完成。2、watch能完成的功能,computed不一定能完成,例如:watch可以进行异步操作。两个重要的小原则!1、所被Vue管理的函数,最好写成普通函数,这样this的指向才是vm 或 组件实例对象。2、所有不被Vue所管理的函数(定时器的回调函数、ajax的回调函数等、Promise的回调函数),最好写成箭头函数,这样this的指向才是vm 或 组件实例对象。

2024-03-16 15:43:57 750 1

原创 Vue2(一):Vue介绍、模板语法、数据绑定、el和data的两种写法、MVVM、数据代理、事件

通过一个对象代理另一个对象中属性的操作(读/写)通过obj2来管理obj1里面的x(读/写)//可以有人通过obj2来访问x属性get(){return obj1.x//obj2没有x,交给他的是obj1的x},})

2024-03-15 23:51:30 1089 1

原创 ES6(三):Iterator、Generator、类的用法、类的继承

迭代器是访问数据的一个接口,是用于遍历数据结构的一个指针,迭代器就是遍历器done:返回false表示遍历继续,返回true表示遍历完成。

2024-03-13 23:32:02 779

原创 ES6(二):解构赋值、Symbol、Map和Set、数组的扩展方法

let obj={[s1]:'jj'//jj注意:里面和外面都得用[ ]而且symbol这种方法不能通过for循环(key in obj)来获取,用下面这两种方法。

2024-03-13 09:33:56 2241

原创 ES6(一):let和const、模板字符串、函数默认值、剩余参数、扩展运算符、箭头函数

最后输出来是个10,我悟了,学js的时候遇到过这个问题当时没搞懂,i是全局变量的意思是,如果i变了,其他地方的i都变(整个页面都是这一个i),上面这段输出的不管a[几]都是10。用function的时候,this指向的就是这个函数的调用者,但是用箭头函数,this就得翻两层,第二个指向外面的外面就是window,window没有age属性。中的obj,所以i就从1开始了。老师讲的是只给一个值,像第一种a可以给到,b有值,能出结果,第二种肯定不行,但是我浏览器上第一种也不行,都是NaN。

2024-03-12 15:06:54 1140 1

原创 BOM(三):offset和拖动模态框

top、left:它以带有定位的父亲为准,否则以body为主w、h:返回自己的高度和宽度parent:返回自己的父亲注意:element.parentNode也返回自己最近一级的父亲元素,是不管有没有定位的。

2024-03-11 11:23:20 190

原创 BOM(二):同步和异步、location对象、navigator对象、history对象

js是单线程的,也就是同一时间只能做一件事,为了防止下一个任务等上一个太长时间,产生了js同步和异步。同步:一个任务完成再去做下一个任务异步:可以同时做多个任务,如果上一个任务需要的时间长就可以先做下一个任务这段代码的执行结果是1 2 3,为啥呢?(0的意思是立马执行)先执行执行栈中的同步任务;异步中放的都是回调函数,放入任务队列中。

2024-03-10 22:03:50 309 1

原创 BOM(一):window对象的常见事件(页面加载、调整窗口大小)、定时器

bom管刷新页面或者前进后退页面,还有滚动条啥的,没有统一标准所以在不同网页中alert啥的都不一样。

2024-03-10 15:50:24 702 1

原创 DOM(四):注册和删除事件、DOM事件流、事件对象、事件委托

addEventListener里面的事件类型是是字符串,必须加引号,而且不带on,function函数叫做监听器(function里面的东西就叫监听器),这个可以给同一个元素添加多个处理函数,比如下面这两段代码页面先警示11,再22。

2024-03-10 10:44:18 1126 1

原创 DOM(三):节点操作——获取父子兄节点(查)、添加和删除元素节点

1.获取第一个子元素:parentNode.firstChild获取最后一个子元素:parentNode.lastChild跟childNodes一样,包括空格换行啥的,不好用2.(但是只有ie9以上才支持)3.非常好用的办法!获取第一个子元素:parentNode.children[0];获取最后一个子元素:parentNode.children[parentNode.children.length-1];

2024-03-08 21:31:58 2214 1

原创 DOM(二):属性操作(自定义属性)、tab栏切换(重难点)

规格与包装//结果规格与包装

2024-03-07 20:34:46 1026

原创 DOM(一):获取元素(查)、事件基础、操作元素(改)

dom就是一个接口,用来改变网页的内容结构还有样式。

2024-03-07 08:33:48 1301

原创 JavaScript(五):简单数据类型和复杂数据类型(栈和堆)

为什么第四个里面也是张学友,因为发现p和x他俩指向的是一个地,简单数据类型的栈那块,形参就直接复制了他的数值。复杂数据类型,首先在栈里面存放数值(16进制),然后这个地址指向堆里面的数据。但是堆那里,形参和实数指向的都是一块地址,形参改变,实参就会随之改变。js里面没有堆和栈的定义,这样就是方便理解,两者互不干扰。如果有个变量我们暂时没想好放啥,就先赋值给它null。简单数据类型存放在栈里面,直接开辟一块空间赋值过去。答案是1刘德华2刘德华3 张学友4张学友。

2024-03-05 16:47:51 257

空空如也

空空如也

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

TA关注的人

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