自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(82)
  • 资源 (1)
  • 收藏
  • 关注

原创 ES6的Generator函数

button元素绑定submit函数,按钮点击之后会获取Generator函数并让Generator函数先执行到第一个yield,等到setTimeout执行完成,回调函数输出“发送1号请求”,再让Generator函数执行到第二个yield或者return处。ES6新增了Generator函数,Generator函数不同于其他函数,Generator函数可以将函数的执行流程挂起(暂停或停止函数的执行)Generator函数除了*号,还有yield关键字,yield关键字有点类似return。

2023-05-21 23:09:40 153

原创 DOM事件流

用户点击元素的时候,会先找到第一层元素(html),再找到第二层元素(body),再继续找到下一层元素(div),最后找到目标元素(p)。因为红色方块元素是html——body——div(.one)中的元素,所以点击红色方块元素冒泡会让所有的父元素绑定的函数都执行。获取目标之后就是 冒泡阶段,代码中元素绑定的事件(onclick)一般是冒泡阶段执行的。冒泡阶段也是从目标元素依次往外层元素执行,所以最外层元素绑定的事件也会被执行。DOM事件流分为三个阶段:捕获阶段——目标阶段——冒泡阶段。

2023-05-01 21:20:42 882

原创 JS的BroadcastChannel与MessageChannel

BroadcastChannel以广播的形式进行通信BroadcastChannel用于创建浏览器标签页之间的通信使用BroadcastChannel的浏览器标签页面必须要遵循同源策略页面1使用BroadcastChannel创建一个频道,页面2使用BroadcastChannel链接频道,页面1与页面2即可通信。实例。

2023-03-09 22:47:44 1388

原创 CSS实现元素翻转效果

翻转效果建议IOS系统、安卓系统、window系统都要进行实机测试,免得线上环境出现兼容问题。1、定义一个父元素,父元素中两个子元素,两个子元素分别是背面与正面,2、定义一个父元素,父元素中两个子元素,两个子元素分别是背面与正面,元素翻转的效果能让用户有良好的体验感。CSS实现元素翻转的效果有两种思路。

2023-02-04 11:56:05 4577

原创 Vue的匿名插槽、具名插槽、作用域插槽

Vue插槽相当于一个占位元素,在组件中留下占位元素,不同的父组件使用相同的子组件,就可以自定义不同的子组件内容。Vue有3种类型的插槽:匿名插槽、具名插槽、作用域插槽。

2023-01-17 14:40:56 202

原创 JavaScript监听DOM节点变化事件

DOMCharacterDataModified监听的是元素中文本节点的变化,但是innerHTML、innerText与textContent都是监听不到的,使用el.firstChild.nodeValue才会触发DOMCharacterDataModified的监听。DOMNodeInserted监听的是元素的插入,属性节点的添加是监听不到的。DOMNodeRemoved监听的是元素的移除,属性节点移除是监听不到的。DOMAttrModified监听的是元素属性的变化。

2022-12-09 22:56:27 4110 1

原创 ES6的Proxy实现双向绑定的Demo

双向绑定我们可以简单的理解为,当js中的数据发生改变,视图层/结构层(标签)就会重新渲染。比如,在JS中定义了一个a变量,操作a变量赋值,一旦赋值完成,html的标签就会重新渲染。,在没有Proxy的时候,要实现双向绑定,就会使用Object.defineProperty,Vue2使用的就是Object.defineProperty。那就离不开Object.defineProperty与Proxy这两个API了。只要修改了state对象中的值,就会改变DOM结构。既然要实现双向绑定,

2022-10-30 14:22:18 252

原创 flex布局的align-items与align-content

该文章主要描述的是align-content,并且与align-items的区别

2022-10-09 00:00:23 1346

原创 在Vue中搭建前端监控日志

监控可以观察到人的动作、周围的环境,如果有情况也可以通过监控还原现场。前端也可以通过设置“监控”观察用户,在遇到一些无法复现、奇奇怪怪的问题,或者单个用户所在的环境与大部分用户的环境不一样时产生的问题,例如 该用户对浏览器设置了不允许cookie 等;这些问题通过前端监控记录下来,让开发者模拟出问题环境、操作步骤,能更好的解决问题。

2022-09-05 22:13:21 4611 2

原创 Vue的transition组件

Vue2与Vue3都有该组件可以用于控制组件切换时的效果,让用户有更好的体验感。先看效果:页面切换的时候由透明逐渐显示。

2022-08-14 16:50:03 1334

原创 Vue的watch初始化执行

immediate属性可以让watch在页面初始化后就执行。

2022-07-26 23:48:08 5829

原创 Uniapp中调整web-view的高度、获取当前的web-view页面URL

Webview是一个基于webkit引擎,可以解析DOM元素,展示html页面的控件,它和浏览器展示页面的原理是相同的,所以可以把它当做浏览器看待。(chrome浏览器也是基于webkit引擎开发的,Mozilla浏览器是基于Gecko引擎开发的)开发过小程序的话对这个标签应该比较熟悉,web-view标签与iframe标签类似,可以在我们的页面中渲染第三方页面。...

2022-07-17 19:58:15 5924

原创 熟悉Vue路由的beforeEach陷入死循环的情况

不了解路由守卫的next很容易让页面陷入死循环。以全局前置路由为例,陷入路由死循环一般报错是堆栈溢出也就是:RangeError: Maximum call stack size exceededrouter.js当从Index.vue离开时就会陷入死循环。要清楚前置路由陷入死循环的原因,就要明白前置路由守卫的next函数流程解析:刚开始的时候 目标路由是/Center,来源路由是/Index,执行前置路由守卫,判断到if为true,于是执行next(‘/an’),目标路由改成了/an,但来源路由仍

2022-07-01 22:39:05 968 1

原创 Vue中先执行App.vue文件中生命周期的异步操作再执行组件中的生命周期函数

先看要求:有个公共函数需要在进入页面前就要执行,用于设置缓存,首页或者其他页面都需要使用这个缓存数据,并且用户可以自由进出不同页面,所以设置缓存的函数在首页执行并不可取,但每个页面都执行设置缓存函数会使得代码变得有些冗余。App.vuemain.jsindex.vue因为async/await可以将Promise的异步操作像同步一样操作。...

2022-06-25 22:35:21 3921

原创 JS中字符串对比

先在浏览器复现问题在浏览器控制台中,可以发现’3’>'200’的结果是true。如果在浏览器控制台中输入 3>200,结果是false。字符串对比是ASCII码的对比,而且是用字符串首位进行对比,例如’3’>‘200’这里的对比实际上是’3’>'2’的对比,最后根据变量的ASCII码得出结果ASCII码表:根据ASCII码表,字符串类型的3,ASCII值是51;字符串类型的2,ASCII值是50;‘3’>'200’的对比可以看成 51>50,所以结果是true。String.fromCharCod

2022-06-12 22:03:13 1021

原创 Vue使用i18n实现国际化

Vue2、3框架使用i18n实现国际化

2022-06-04 19:19:04 665

原创 Vue全局自动化组件

Vue全局注册组件Vue2//Vue2注册全局组件//main.jsimport Vue from 'vue'import App from './App.vue'import router from './router'import store from './store'import helloworld from '@/components/helloworld.vue'Vue.config.productionTip = falseVue.component('hellowo

2022-05-28 23:21:18 174

原创 Vue挂载变量

Vue挂载变量或者函数Vue2挂载变量//main.js//挂载变量Vue.prototype.$variant="变量";//挂载函数Vue.prototype.$fun=function(){ return "function"}//在页面中通过this即可获取挂载的变量//index.vuemounted(){ //使用挂载的变量 console.log(this.$variant); //使用挂载的函数 this.$fun();}Vue3挂载变量Vue3相比Vu

2022-05-21 23:40:02 436

原创 JS中的 || 、&&运算符

JS中的 || 与 &&符号的区别JS在判断中使用 let a=1,b=2;if(a==1||b==1){ // 在判断中,只要有一个满足为true的条件就执行 console.log(a==1); console.log(b==1);}if(a==1&&b==2){ //&&需要多个判断条件都为true console.log(a==1); console.log(b==2);}结果都是输出:在语法中使用||的使

2022-04-23 22:36:17 381 1

原创 JS实现长按事件功能

长按点击功能主要用到的是onmousedown、onmouseup、setTimeout()、clearTimeout()事件移动端中则是ontouchstart、ontouchend

2022-04-17 20:17:01 16736

原创 Vue中获取各类型input标签的值

Vue中获取各类型input标签的值HTML中input标签的tyle类型实际上有23种;常用的有text、password、radio、checkbox、button、file。现在就在Vue中获取常用的值获取text类型的值//html<input type="text" v-model="val">//jsconsole.log(this.val);获取password类型的值//html<input type="password" v-model="val"

2022-04-10 16:09:33 3045

原创 Vue的路由守卫

Vue路由守卫Vue的路由,简单来说 主要提供的是组件间互相跳转的帮助;例如从首页跳转到设置页····路由守卫——作用就在于监听组件间互相跳转的时候,也可以理解为拦截;例如从首页跳转到设置页时,路由守卫会监听到页面来自首页,目标页面是设置页。路由守卫分为全局守卫、独享守卫、组件内的守卫 !以下示例代码是在vue脚手架创建的项目中使用的 !全局守卫全局,顾名思义是指的整个项目,全局守卫监听的是整个项目的路由import Vue from 'vue'import VueRouter f

2022-03-20 19:38:04 1250

原创 ES6的Async/Await

Async/Await的作用Async的意思是:异步Await的意思是:等待在ES6中,使用async/await的意思是:等待异步完成后再继续执行代码。JS中,执行代码先在主线程运行,遇到异步时,异步会去到消息队列,等到主线程运行完后才执行消息队列的异步任务。Async/Await的使用Async/Await的使用并不复杂。async function a(){ await ···//异步代码}这就是async/await的使用。虽然使用很方便,但是有许多要注意的事项。Async/A

2022-02-27 22:47:39 686

原创 由浅入深—Websocket

WebsocketWebsocket介绍websocket使用概括:Websocket介绍Websocket是一种协议,与http协议类似,这两种协议用于客户端与服务器端之间的通信。但是,Websocket与http是有差别的。我们常用的http与服务器端通信是有限制的,服务器端不能主动向客户端发送数据。客户端发送请求,服务器响应请求,服务器无法主动向客户发送数据。websocket可以使服务器端主动向客户端通信websocket使用单单看理论介绍是不能更好的了解websocket。

2022-02-20 00:58:14 193

原创 原生JS实现复制文本功能

原生JS实现复制文本功能原生JS实现复制功能。使用的是DOM的execCommand。 <input type="text"> <button onClick="copyFn()">点击复制</button> <script> function copyFn(){ let txt=document.getElementsByTagName('input')[0].value;

2022-01-02 21:24:11 914

原创 JS中对象取值方式 . 与 []

JS使用 . 与 使用 [] 取值的区别JS中对象取值的方式有两种——分别是 使用 . 与使用 []一般来说,对象取值使用的方式是使用 .写法:let obj={ name:"昵称", value:"值",}console.log(obj.name);//输出昵称console.log(obj.value);//输出值使用 . 的方式取值比较常见,但是无法使用字符串变量或者数字为属性名比如这样子://错误写法obj.'name';obj.10;//这样子的写法是错误的/

2021-12-26 14:43:53 4689

原创 Vue的filters传入多个参数的写法

Vue的filters传入多个参数的写法Filters是Vue的过滤器//传入一个参数时<template> <div> <h1>{{content | filter}}</h1> </div></template><script>export default { data(){ return{ content:""

2021-12-17 21:45:05 4421

原创 Vue的filter过滤器的使用

Vue的filter过滤器的使用Vue官方文档:过滤器在项目中还是比较常见的,让文本格式化、筛选出元素的对应的样式······过滤器的用法:在需要过滤的值后边加上 |,<template> <div> <h1 :class="style_h1 | filter_style">HOME</h1> </div></template><script>export default

2021-11-27 21:28:51 1404

原创 Vue的Mixins——接收一个混入对象的数组

Mixins是到底是什么先看一下官方文档的介绍:关键语句:混入对象可以像正常的实例对象一样包含实例选项,这些选项将会被合并到最终的选项中这句话的意思是:JS对象可以合并到Vue当前实例中。直接上代码能更清楚:Home.vue组件,引入Obj.js文件<template> <div> <h1>HOME</h1> </div></template><script>impor

2021-11-13 13:07:35 1074

原创 Vue强制重新渲染组件

Vue强制重新渲染组件首先看一下官网对$forceUpdate的介绍首先看一下官网对$forceUpdate的介绍例子:<template> <div> <h1>HOME</h1> <p>名字:{{arr[0]}}</p> <input type="button" value="点击改变名字" @click="changName"> </div&g

2021-11-07 20:43:44 177

原创 Vue监听Vuex的数据

Vue监听Vuex的数据Vue监听Vuex数据跟监听data数据一样,使用watch属性监听。监听data数据:<template> <div> <h1>Compontent</h1> </div></template><script>export default { data(){ return{ content:"value", obj:{ name:"obj" }

2021-10-24 20:21:41 834

原创 WEB页面的SEO优化

SEO优化SEO介绍SEO优化SEO介绍SEO全称:Search English OptimizationSEO中文名称:搜索引擎优化,就是利用搜索引擎规则提高网站在搜索引擎的排名。SEO优化SEO优化就是将网站尽量排在前面。1、语义化标签,符合W3C规则标签语义化简单来说是使用“合适的标签”,例如标题标签使用h1,导航标签使用nav,页面头部使用header等2、合理的title、description、keywords<html> <title>页面标题&l

2021-10-21 21:34:03 464

原创 Vue中一个组件内使用多个router-view

Vue一个组件内使用多个router-view先看实例:不同的组件出现在对应的位置代码:Home.vue<template> <div> <h1>HOME</h1> <router-view name="one" class="one"></router-view> <router-view name="two" class="two"></rout

2021-10-17 16:43:42 9516 1

原创 Vue的keep-alive标签

Vue使用keep-alive标签实现组件缓存首先看一下使用keep-alive的效果keep-alive的使用方式keep-alive的属性与缓存组件的钩子函数实际代码首先看一下使用keep-alive的效果简单介绍:Son1组件切换到Son2组件后,再回到Son1组件,Son1组件的输入框并没有恢复初始值。这就是将Son1组件缓存了下来。keep-alive的使用方式<keep-alive> <router-view></router-view>&l

2021-10-12 21:40:29 273

原创 JS的微任务、宏任务与Event Loop

JS中异步分为微任务和宏任务要了解微任务与宏任务就要知道JS代码运行的顺序。JS是单线程,也就是事情只能一个个去做。JS是先执行完主线程的任务后才去执行任务队列。任务队列:在JS运行时,先执行同步的代码,而异步的代码则会挂到任务队列中,等主线程执行完成后才执行任务队列的异步代码。console.log(1);console.log(2);setTimeout(()=>{ console.log(3);},0);console.log(4);先了解上面代码的执行顺序

2021-09-30 20:35:33 100

原创 普通函数与箭头函数的this指向

普通函数的this指向与箭头函数的this指向普通函数:普通函数:function fun(){ console.log("定义普通函数的方式");}前言:普通函数的this是指向调用者的。也就是哪一个对象调用普通函数,普通函数就指向哪一个对象。...

2021-09-11 10:51:22 534

原创 CSS3的filter属性

CSS——filter属性1、元素模糊2、元素亮度3、元素投影4、元素的灰色程度5、元素对比度6、元素颜色7、元素反转颜色8、元素透明程度9、元素饱和度10、元素的褐色1、元素模糊filter:blur(像素值)像素值越高,元素越模糊img{ filter:blur(10px);}/*HTML:*/<img src="./1.jpg"></img>效果:2、元素亮度filter:brightness(百分比);100%是正常亮度,百分比越小,元素亮度

2021-09-05 18:26:53 721

原创 WebStorage

WebStorageWebStorage是HTML5推出,是一种web本地存储方式。WebStorage分为SessionStorage与localStorageSessionStorage:用于临时保存同一窗口(或标签页)的数据,在关闭窗口或标签页之后将会删除这些数据。localStorage:用于长久保存整个网站的数据,保存的数据没有过期时间,直到手动去除。SessionStorage://设置SessionStoragewindow.sessionStorage.setItem("存储的

2021-09-02 17:29:31 156

原创 Vue深度监听

Vue深度监听Vue框架中监听一般写法为:watch:{ a(newVal,oldVal){ console.log(newVal); }}当监听对象的属性时:watch:{ "obj.name"(newVal,oldVal){ console.log(newVal); }}如果需要监听整个对象时:watch:{ obj:{ deep:true,//true为进行深度监听,false为不进行深度监听 handler(newVal){ console.log

2021-08-30 21:10:10 23477 1

原创 ES6的Map与Set

ES6的Map与SetES6新增了Map与Set定义对象ES5.1定义对象的方式:let obj={ name:"obj_name", value:"content",}Map 对象Map 对象保存键值对。任何值(对象或者原始值) 都可以作为一个键或一个值。换句简单易懂的话就是说:定义JS对象的方式新增Map的方式;具体用法://new出Map实例对象let m=new Map();//添加key和value值m.set("keyname","valueconten

2021-08-22 13:55:10 152

phpstudy需要的运行库

32位(vc9、vc11、vc14)

2021-05-09

空空如也

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

TA关注的人

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