![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
网页
文章平均质量分 93
笔记
法玛梅林
这个作者很懒,什么都没留下…
展开
-
websocket
socket,中文名称套接字,可以将其理解成一个抽象层,用于在网络上执行进程间的通信。它为应用程序提供了发送和接收数据的机制,通过ip和接口来标识网络中唯一的位置我们平时最常用的就是基于TCP的流套接字,websocket也是基于此socket最大的特点就是服务器和客户端可以任意进行通信,通信内容不限制于格式,也不限于发送和接收方,除非某一方主动断开,否则socket会一直保持连接状态。原创 2024-06-22 20:01:32 · 1143 阅读 · 0 评论 -
vue常见优化手段(下)
下篇主要内容为开发vue项目时的风格规范,良好的风格规范可以规避小纠结于反模式,同时提高项目的可读性和可维护性以及能带来良好的开发体验,上篇主要提及了vue项目的最佳实践,最佳实践可以帮助我们规避错误。原创 2024-06-21 09:39:12 · 568 阅读 · 0 评论 -
vue常见优化手段(上)
上篇主要提及开发vue.js项目中的最佳实践,最佳实践通常可以规避错误,同时大幅提高应用的性能,下篇主要提及了开发vue.js项目中的风格规范,良好的风格规范可以改善可读性和开发体验。原创 2024-06-21 09:38:48 · 721 阅读 · 0 评论 -
虚拟DOM的比较
将虚拟DOM渲染成DOM,这就是patch的作用在vue运行的时候会生成新旧两个虚拟DOM树,通过比较这两棵DOM树,我们就能针对性的修改真实DOM事实上,我们大可以在每次比较两棵DOM树的时候删除现有的DOM结构,然后根据新的虚拟DOM来渲染最新的DOM,但这样做的结果就是性能开销过大,所以vue并没有采取这种方式,vue会比对新旧两个vnode之间有哪些不同,然后根据对比结果找出需要更新的节点进行更新。原创 2024-06-20 09:03:03 · 1352 阅读 · 0 评论 -
虚拟DOM
理论上,用户的任何操作都有可能造成状态的改变,当状态改变时我们就需要重新渲染,直接操作DOM向来是简单且直接的,我们大可以将现有的DOM直接删除,然后重新根据现有状态来生成一个DOM,但是访问DOM是非常昂贵的。在Web开发的早期,因为网页的展现十分简陋,我们所维护的状态也十分的简单,我们大可以直接操作DOM来进行开发,然而随着时代的发展,我们所开发的web也变的十分复杂,维护的状态也十分的多,DOM操作也十分频繁。幸运的是,现代的主流框架,如vue,react,angular等都支持声明式操作DOM。原创 2024-06-20 09:02:14 · 676 阅读 · 0 评论 -
web标准与浏览器前缀
CSS1的规范发表于1996年,内容十分的少,用一个html就能完全表示,到了1998年,CSS2问世,它带来了更严谨的语法,更丰富的样式,此时的CSS已经十分复杂,靠人脑已无法完全记忆,人们意识到,此时的CSS已无法作为一个规范来发展,庞杂的内容导致人们难以修改和阅读,每个CSS属性都必须具备两个独立实现,但这几乎是不可能的。取而代之的是,这些实验性特性需要通过配置开关来启用,可以宣布的是,浏览器前缀已经彻底成为了一个失败的产物,不过我们还需要很长的时间,才能从浏览器前缀所引发的涟漪效应中解脱出来。原创 2024-06-19 09:35:02 · 1022 阅读 · 0 评论 -
HTML文档声明
GML是一个标记语言,通过特定的标识包裹数据,使得计算机能够识别和处理信息。在GML的基础上,SGML被开发出来,它是一种极为严格的文件描述语言SGML由语法定义、DTD以及文件实例这三个部分构成,由于SGML的规范非常严格,文档达到了500多页,因此它被认为难以学习、使用和实现,基于这些原因,人们在SGML的基础上发展出了其他更易用的标记语言。原创 2024-06-19 09:33:43 · 623 阅读 · 0 评论 -
针对indexedDB的简易封装
我们首先创建一个DBManager类,通过这个类new出来的对象管理一个数据库具体关于indexedDB的相关内容可以看我的这篇博客我们首先需要打开数据库,打开数据库需要数据库名和该数据库的版本在constructor中我们先初始化数据库相关信息,dbName为该对象管理的数据库的数据库名,version为该数据库的版本,db为该数据库的IDBDatabase对象现在我们开始实现openDB方法因为打开数据库涉及i/o操作,所以是异步的,所以我们需要返回一个Promise。原创 2024-06-18 08:26:10 · 789 阅读 · 0 评论 -
indexedDB
indexedDB是一种现代浏览器持久化数据存储解决方案, 可以把它理解成用户浏览器端的数据库,它可以存储包括文件/二进制大型对象blobs等大量结构化数据,通过索引来实现对数据的高性能检索indexeddb内部的数据均是通过键值对的形式存储,所以不同于其他关系型数据库,不支持sql语句,indexeddb更类似于nosql数据库,通过提供的大量api来实现数据的增删改查需要注意的是,因为indexedDB中的很多api涉及i/o操作,所以是异步的。原创 2024-06-18 08:25:06 · 680 阅读 · 0 评论 -
HTML语义化
HTML语义化指的是在创建HTML页面时,使用合适的标签来准确描述内容的意义和结构在HTML页面的构建过程中,语义化扮演着至关重要的角色。它涉及到使用合适的HTML标签来准确地表达内容的意义和组织结构。这不仅仅是关于标签的选择,更是一种确保内容正确表达的实践。原创 2024-06-17 13:18:03 · 537 阅读 · 0 评论 -
HTML中的资源提示关键词
如果该script元素的src属性为空,则defer和async属性不生效如果该script元素的type属性为空或者为一个JavaScript MIME类型时,该script为普通脚本,普通脚本会受到defer和async的影响,但这些的前提为src属性不为空如果该script元素的type属性为module时,该script为JavaScript模块脚本,该类型脚本不受defer的影响,但会受到async的影响,与src属性无关。原创 2024-06-17 13:16:36 · 842 阅读 · 0 评论 -
super与this
我们可能会对一个问题感到好奇:为什么在派生类中,我们需要在调用之前调用。我们通常将其视为一种规范,却很少深入探究这个规范的真正意义。许多人认为不过是之前继承方式的语法糖。但实际上,这种看法是不准确的。要真正理解的必要性,我们必须探究中继承机制的内部工作原理。原创 2024-04-27 21:28:06 · 928 阅读 · 4 评论 -
JS手写set与map
但是Object.is有一个问题,在Object.is中+0和-0被认为是两个不同的东西,所以我们需要将Object.is再封装一层,这个封装可有可无,但set内部是针对Object.is封装了的。set是一个没有重复元素的集合,事实上我们无法完全的使用js来模拟出set的全部功能,因为浏览器原生的set底层是使用c++实现,能直接访问内存,所以我们只能实现set的一部分功能。在set中我们只需要针对constructor中传入的对象进行判断,而在map中我们需要针对对象中的各个元素进行判断是否可迭代。原创 2024-04-25 23:31:13 · 736 阅读 · 2 评论 -
js深浅拷贝
我们知道,像对象这种复杂数据类型,在定义它的时候我们所指定的变量只会存储这个对象的地址,我们通过这个地址来寻找对象并且操作它,而将这个变量赋值给其他变量时,复制的也仅仅只是地址,对象本身并没有被复制,当我们通过某一个变量去修改对象的成员时,另一个对它保持引用的变量也会同步的更新。我们定义一个deepClone函数,这个函数会传入一个值,我们并确定现在传入的是什么值,如果是一个基本类型的值我们需要直接将其返回,如果是一个复杂数据类型的值我们需要将其深度克隆之后返回一个新对象。原创 2024-04-25 23:29:47 · 966 阅读 · 3 评论 -
JS包管理
包是一个或多个js的集合,一个工程可以是包,通俗的讲,我们在项目中所使用到的依赖就是包,依赖可以是一个完整的框架,如Vue或React,也可以是一个很小的工具库,如mockJS,jQuery,我们通常将这些由别人编写,我们使用的包叫做第三方库。显而易见的是,每个包可能都会或多或少的依赖其他第三方库,这些被依赖的第三方库可能本身也会依赖其他第三方库,如果去手动维护这些依赖关系是十分复杂的,而包管理器就能自动帮助我们维护这些依赖关系。都需要使用到的,在打包的时候都需要被囊括进去。中,包有两种安装方式,一种是。原创 2024-04-24 17:59:05 · 986 阅读 · 2 评论 -
js手写call、bind、apply
手写call,apply,bind原创 2024-04-24 17:57:40 · 787 阅读 · 0 评论 -
JS模块化
在ES6之前实现模块化,CMJ,AMD,ESM,export,require,import,模块,模块化原创 2024-04-22 20:50:56 · 956 阅读 · 0 评论 -
js通过Object.defineProperty实现数据响应式
数据响应式,依赖收集,派发更新,属性描述符,get,set,Object.defineProperty原创 2024-04-08 00:36:44 · 623 阅读 · 4 评论 -
CSS样式计算
CSS样式计算,用户代理样式表,层叠冲突,CSS选择器权重,继承原创 2024-04-05 23:44:28 · 915 阅读 · 2 评论 -
js中的事件循环
JS事件循环,浏览器进程模型,异步,消息队列原创 2024-04-03 14:46:09 · 974 阅读 · 2 评论 -
js的Proxy和Reflect
js的Proxy和Reflect,对象的基本操作,ES6原创 2024-04-02 14:49:38 · 1048 阅读 · 2 评论 -
js手写Promise(下)
js手写Promise,resolve,reject,catch,all,race原创 2024-02-08 15:17:07 · 1034 阅读 · 1 评论 -
js手写Promise(上)
js手写Promise,构造器,then,onFulfilled,onRejected,resolve,reject原创 2024-02-08 15:14:59 · 1181 阅读 · 2 评论 -
js的属性描述符
js属性描述符,writable,enumerable,configurable,set,get原创 2024-02-05 19:51:19 · 1202 阅读 · 1 评论 -
js的防抖与节流
js防抖与节流,手写防抖与节流函数,防抖与节流函数的this与参数绑定、首部尾部执行控制、获取返回值。原创 2024-01-17 19:06:42 · 573 阅读 · 6 评论 -
js中的class类
ES6,class,extend,super,minix,js多态原创 2024-01-11 20:51:57 · 1416 阅读 · 7 评论 -
jsES6+新语法
jsES6新语法,Symbol,Set,Map原创 2024-01-07 01:59:52 · 1161 阅读 · 6 评论 -
js网络编程
js网络请求,Fetch,Axios,XHR,AJAX原创 2023-09-24 16:44:07 · 230 阅读 · 0 评论 -
js迭代器与生成器
迭代器,生成器,async和await,js异步的最终解决方案原创 2023-08-11 19:02:17 · 404 阅读 · 0 评论 -
js的Promise
回调地域,Promise,Promise的实例方法,类方法原创 2023-08-10 12:43:20 · 186 阅读 · 0 评论 -
js原型以及原型链
原型,原型链,继承,原型链继承,借用构造函数继承,原型式继承,寄生继承,组合继承,原型继承关系原创 2023-07-29 23:19:04 · 216 阅读 · 0 评论 -
js函数增强
js纯函数,柯里化函数,组合函数,函数属性,arguments,rest,with,eval,严格模式原创 2023-07-22 16:41:16 · 93 阅读 · 0 评论 -
js闭包以及垃圾回收机制
js闭包,内存泄漏,js垃圾回收机制,常见GC算法原创 2023-07-21 18:52:18 · 443 阅读 · 0 评论 -
js代码的执行原理
js代码执行原理,作用域以及作用域链原创 2023-07-18 22:30:10 · 232 阅读 · 2 评论 -
js的this绑定规则以及箭头函数
this的绑定规则原创 2023-07-16 11:47:38 · 272 阅读 · 2 评论 -
浏览器视口
浏览器视口原创 2023-07-14 20:20:32 · 255 阅读 · 0 评论 -
CSS盒模型
css盒模型,包含块,行盒,BFC原创 2023-07-02 22:45:02 · 290 阅读 · 1 评论 -
前端网络基础
前端网络基础原创 2023-06-28 22:09:40 · 619 阅读 · 3 评论 -
浏览器渲染原理
浏览器渲染原理原创 2023-06-08 16:38:00 · 478 阅读 · 2 评论 -
js实现一个简单的扫雷
2. 我们使用类来完成相应功能3. 之后我们则是要定义一个地图这里我们使用二维数组来实现,其中有一点需要注意,在扫雷当中对于边角,边缘,内部的布雷方式是不同,即在内部单元格周围一圈最多可以有8个雷,但在边缘或者边角的话最多就只有5个甚至是3个雷,为了以后在布雷时更方便的对此单元格进行校验(判断周围一圈的雷的数量是否合理,在边角,在边缘,在内部三种情况都需要进行单独判断)我们在定义地图时需要额外再扩大一层,比如我们界面当中的地图是5 * 5的,但我们在定义时的二维数组是6 * 6的,这么做的话我们巧妙地原创 2023-03-16 19:12:42 · 2348 阅读 · 0 评论