自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(48)
  • 收藏
  • 关注

原创 Element 组件库也支持暗黑模式啦

前言   最近参考了Element Plus风格样式,修改了Element内部样式源文件,并发布了自定义的暗黑主题包 element-theme-darkplus。   效果预览 👉戳这里。 背景   Vue版本经历了2到3的大迭代,与之相关的一些生态系统也发生了变化和改动。   例如组件库 Element 升级为了 Element Plus。   Element Plus相较于Element。 组件上新增加了 TreeSelect 树形选择、Text 文本等 性能上优化了用户体验,例如表格组件在大数据量

2023-07-11 14:57:26 2318 2

原创 自动化签到稀土掘金,拥抱 GitHub Actions 吧

前言   最近儿童节刚过不久,就收到了腾讯云的扣费短信,原来是之前部署在腾讯云的SCF没有免费额度,开始付费了。根据短信提示呢,结掉了长达一天的逾期费用。比较纳闷的是,快到期了不提前通知吗,或者说临时暂停云函数都可。但是呢,不,就不,一定要先强制扣费,然后才发通知。   之前部署的腾讯云,仅仅用在简单且普遍的功能上,例如自动化脚本,或者提供功能函数等。实际上,腾讯云函数的功能还有些问题,部分配置参数没有文档,只能与在线客服沟通解决,过程中也提交了很多的改进建议。总体来说,非常繁琐,也浪费了时间,于是干脆注销

2022-07-17 20:17:53 3943 3

原创 关于 JS 与 CSS 是否阻塞 DOM 的渲染和解析

前言  最近系统梳理HTML5所有涉及到的标签时,梳理至<link>和<script>标签时,碰巧想到一个困扰很久的问题,即一般把<script>放在<body>尾部,<link>标签放在<head>内部,而页面通过CDN引入第三方框架或库时,基本都是将其<script>标签放在<link>标签前面。  可能此方式已经成为了约定俗成,但是究竟其好处在哪里,或者说其它的方式为什么不可取,想必你也和我有同样的疑.

2021-06-17 09:05:20 5755

原创 vue element web 表单设计工具

工具概述简介  项目名 dw-form-making,基于 element-ui 组件库的Web端表单设计工具。  项目技术栈vue、vue-cli3,可视化设计element-ui输入框、选择器、单选框等控件组成的Form表单,配置表单字段、标签、校验规则等。  较早版本采用vuex,由于发布npm包以及项目对vuex依赖性较高(即npm安装后还需配置vuex)等原因,故此种方案抛弃。使用vue.observable实现vuex的state、mutations部分。  项目第三方组件包括vue.

2020-12-07 22:22:17 37830 1

原创 参考 Promise/A+ 规范和测试用例手写 Promise

这可能是手写promise较清晰的文章之一。由浅至深逐步分析了原生测试用例,以及相关Promise/A+规范。阅读上推荐以疑问章节为切入重点,对比Promise/A+规范与ECMAScript规范的内在区别与联系,确定怎样构建异步任务和创建promise实例。然后开始手写章节,过程中代码与测试可参考仓库。也试着回答以下关键问题。什么是广义对象?如何检验promise类型?promise与thenable两类型有何区别?Promise有多种社区规范,例如Promise/APromise/B。

2023-03-01 22:28:51 506 1

原创 ES6 Reflect

前言   此文总结了Reflect对象的部分语法,对比了与Object方法的差异性,希望对你有用。 语法   Reflect与Math类似,都是JavaScript内置对象,提供了工具方法。 get   Reflect.get(target, property, receiver) 用于读取对象属性,其中target为目标对象,property为属性名称。   读取目标对象的访问器属性时,访问器getter内this上下文就是参数receiver。未指定参数receiver,默认为目标对象。 set   R

2022-12-04 16:21:25 546

原创 ES6 Proxy

前言   全文共计5万字左右,大约可阅读两小时,并不定时持续更新中。   此文可能是关于Proxy相对较全的文章之一,总结了Proxy代理几乎所有的用法、示例和注意事项,也有对部分代码的细节分析。结合语法和ECMAScript规范,系统性地阐释了JavaScript对象的内部方法和内部槽,对比了普通对象与代理对象之间的差异和共同点。另外也包括一些运用场景,如何分析代理的错误问题,以及如何优化解决等等。   建议阅读中根据目录细化拆分,并试着回答以下问题。 什么是trap? 内部方法与trap、不变量三者的关

2022-10-24 10:31:20 9674

原创 ES6 集合

前言   此文介绍了ES6中集合相关的Set和Map结构,跟随此文你将了解到。 ES6为什么引入Set结构 强弱引用与垃圾回收 WeakMap之polyfill实现 WeakMap的应用场景 Set   Set 是值的集合,类似数组,元素有序且唯一。 属性方法 Set.prototype.size 用于返回Set实例中的元素个数 Set.prototype.add 用于向Set实例末尾添加元素,并返回实例   注意重复的元素不会被添加进去,也就说明了Set内元素是唯一的。 Set.prototype.del

2022-09-27 17:21:34 720

原创 ES6 Symbol

前言   此文对ES6中涉及的Symbol类型做了简单说明,也包括部分开放的内置Symbol。 属性方法   Symbol 为符号类型,属于基本数据类型之一。   Symbol()可以用来生成唯一值,也是ES6引入Symbol的原因。   创建一个Symbol包装对象。 Symbol.prototype.description   Symbol.prototype.description 用于返回Symbol的描述信息,String或toString方法会包含Symbol()字符串。 Symbol.for

2022-08-11 16:54:53 563

原创 ES6 不完全手册(上)

前言   此篇是阅读《ES6 标准入门》的记录小册,保留了阅读当时的记忆和拓展,以便于后续查阅,分享出来,希望对你有用。关于ES6的API更为详细的部分还是推荐参考《ES6标准入门》,只是文中相对会精简很多,同时也包括一些未提及的内容。 语法提案   一个新语法从提出到成为正式标准,需要经历 5个阶段,一般只要能进入Stage 2阶段,就可能会包括在以后的正式标准中。 Stage 0:Strawman,稻草人阶段,只能由TC39成员或TC39构建者提出 Stage 1:Proposal,提案阶段,只能由TC

2022-07-23 19:14:32 4104

原创 JavaScript 属性描述符

前言   此文总结了属性描述符的作用和特性,以及限制对象操作的部分方法。 Object.defineProperty   Object.defineProperty 用于指定对象属性的描述符。   函数的第三个参数descriptor为属性的描述符,包括数据描述符和存取描述符两种。   注意属性描述符固定包括configurable、enumerable、writable和value四个键,存取描述符两种。   注意属性描述符固定包括configurable、enumerable、writable和valu

2022-07-23 18:50:47 3138

原创 JavaScript 中常见的排序类型

前言  此文浅总结了常见的几大排序,并介绍了相关特性和优化方式。对稳定性、复杂度的含义和分析也做了简单说明,另外对于递归函数中,分析时间复杂度的master公式也做了阐述,希望对你有用。排序冒泡排序  冒泡排序(Bubble Sort)非常形象,数组在每次循环时,从左至右,相邻元素两两比较,将最大的元素逐渐交换到最后,每一轮循环最大元素在视觉上像是冒泡一样上浮到数组末尾。  以数组[4, 3, 2, 1]为例子,数组前一个元素与后一个元素比较,若前一个元素大则交换,一轮下来最大值被交换至末尾。.

2022-05-30 21:25:13 2849

原创 ES6 flat 与数组扁平化

前言  flat 用于将多维数组拉平(扁平化),不影响原数组,返回新的数组。[1, 2, [3, [4]]].flat() // [1, 2, 3, [4]]  仅有一个参数depth,用于指定拉平的深度,默认值为1。若depth指定为非正数,将返回原数组,指定为Infinity,无论多少层都将扁平化为一维数组。[1, 2, [3, [4]]].flat(2) // [1, 2, 3, 4][1, 2, [3, [4]]].flat(0) // [1, 2, [3, [4]]][1, 2, .

2022-04-10 14:16:50 4885

原创 ES6 copyWithin

前言  copyWithin 用于浅复制数组的一部分到另一位置。[1, 2, 3, 4, 5].copyWithin(0, 2, 4) // [3, 4, 3, 4, 5]  其中参数分别为target(复制到的索引)、start(开始复制的索引)、end(结束复制的索引,不包括end位置的元素)。参数  参数start默认值为0,end默认值为数组长度,若参数为负数,函数toAbsoluteIndex会将其转换为正数。function toAbsoluteIndex(target, le.

2022-04-07 15:57:24 2940

原创 关于取消 ES6 函数尾递归的相关探究

前言  ES6中的尾递归优化非常实用,于是乎去初步探究。但是你会非常失望,发现绝大多数浏览器已经不支持,node也在很早的版本中取消了支持。关于尾递归优化的相关文档,也都仅仅是简单提及,只言片语,优化点原理几乎就不提,了解起来非常麻烦。  因此查阅了很多文档,并简单汇总,希望可以由斐波那契数列,逐步展开,引导你了解尾递归的知识点。  以下内容中的知识点包括。STC、TCO和STC分别是什么尾调用优化的优化点是什么V8为何取消支持尾调用优化PTC与STC的优缺点尾调用调用栈  Jav.

2022-03-31 20:13:09 3132

原创 多种方式同步 GitHub 代码至镜像仓库

前言  大多数的开发者都或多或少在GitHub上维护有项目,但是通常GitHub访问起来都很慢,或者无法响应。为了不能正常访问GitHub的用户,一般会将Gitee或其它平台托管作为镜像。  我们通常只考虑维护在GitHub上的仓库就足够了,而对于其它镜像仓库,更多的是希望在GitHub更新的同时,都以静默的方式自动同步。  因此以下将以Gitee作为镜像仓库,对比多种同步方式的利弊,跟随此文你将了解到。同步GitHub和Gitee代码仓库的多种方式webhooks是什么什么是GitHub A

2022-03-15 19:22:30 5194

原创 JavaScript 箭头函数

前言  ES6中的 箭头函数 作用非常简单,即简化函数且不绑定this。  内容仅是记录箭头函数的部分特性,包括一些发散和总结,希望对你有用。语法特性没有 this  箭头函数没有this,它的this是根据词法作用域派生而来,由上下文决定。function fn() { setTimeout(() => { console.log(this) })}fn() // Window {}  结合babel转换后的es5代码,简单概括就是,箭头函数的this总是.

2022-03-09 14:11:24 3197

原创 进行浏览器原生的图片懒加载的几种方式和原理

前言  对于图片较多的网站,倘若一次性加载所有图片,一方面由于同时加载的图片较多,页面的DOM元素将非常多,会造成页面卡顿性能严重下降,另外服务器的压力也会很大。另一方面若加载了很多图片,而用户浏览的图片仅有几张,将会耗费大量流量,造成浪费。  而懒加载就是针对此情况做的优化,同时会极大地提升用户体验。一句话总结就是,懒加载即延时加载,当图片要用到的时候再去加载。offsetTop  懒加载的图片一般是固定宽高的,为避免图片较大时拉伸,可运用object-fit: cover来裁剪。<st.

2022-03-07 19:02:22 1497

原创 JavaScript 严格模式差异性对比

前言  严格模式(strict mode)由ES5引入,用于消除部分语法错误,提高运行效率,规范JavaScript语法等。  此文细致梳理了严格模式与非严格模式的差异, 目的仅是为了加深对严格模式的认识。开启脚本文件  为脚本文件开启严格模式,以下第一个脚本未开启严格模式,第二个脚本将开启严格模式。<body> <script> foo = 33 console.log(window.foo) // 33 </script> .

2022-01-24 14:05:57 3066

原创 关于 ES6 参数默认值形成的第三作用域问题

前言  最近系统回顾《ES6 标准入门》时,在函数的拓展一章下的作用域小节,又看到了以下代码。var x = 1function foo(x, y = function () { x = 2 }) { var x = 3 y() console.log(x)}foo()console.log(x)  大约一分钟时间思考一下结果吧😁。  如果你有仔细阅读文初的结论,一旦设置了参数的默认值,函数进行声明初始化时,参数会形成一个单独的作用域,结果想必一目了然。foo() // .

2022-01-12 17:46:08 3018

原创 你不知道的 JSON.stringify 特性

前言  JSON.stringify可配合JSON.parse来进行对象深拷贝,也可以用于字符串转换为对象,但是会有很多问题。语法特性  JSON.stringify 用于将JavaScript对象或值转换为JSON字符串。undefined、函数、Symbol作为对象属性值  undefined、函数或者Symbol在序列化时会被忽略,换句话说会丢失掉。const object = { foo: undefined, bar: function () { console.l.

2022-01-05 19:38:18 3584

原创 JavaScript 正则表达式

前言  MDN 对正则表达式有更为详细的描述,此文仅是学习正则表达式过程中的记录和发散,相关的内容后面会逐步进行完善。方法test  test 用来检查字符串是否与正则表达式相匹配,返回布尔值。/hello/.test('hello_world') // true  来看一个特殊情况。const reg = /hello/reg.test('hello_world') // truereg.test('say_hello') // trueconst reg = /hello/g.

2021-12-30 15:42:12 2861

原创 JavaScript 浮点数取整

前言  此文整理了JavaScript中常见的浮点数取整函数,当然也包括一些更为高效的位操作取整。Math.trunc  Math.trunc 用于返回数字的整数部分。Math.trunc(-11.25) // -11Math.trunc(NaN) // NaNMath.trunc(Infinity) // InfinityMath.trunc() // NaN  Math.trunc内部也会调用Number将参数隐式转换为数值,然后再取整。const object = { val.

2021-12-30 15:33:58 4744

原创 JavaScript 浮点数陷阱

前言  JavaScript中的浮点数经常会有奇怪的运算结果,例如0.1 + 0.2 != 0.3或者是1.005.toFixed(2)结果为1.00,又或者Number.MAX_VALUE与Number.MAX_SAFE_INTEGER的区别等等。  此处对JavaScript浮点数的存储标准和以上疑问做了比较细致的整理,希望对你有用。IEEE 754  JavaScript与其它语言不同,Number类型是不区分整型和浮点的。对于所有的数字包括整数和小数相同存储,遵循IEEE 754的双精度标.

2021-12-24 13:52:54 3376

原创 vscode 插件与 npm 包,保存时自动修复代码格式错误

前言  日常开发中的绝大多数项目,都是以团队为单位进行的。而由于每个成员的代码习惯和编码差异的不同,最终将导致整个项目的代码参差不齐,出现各式各样风格的代码。  而此差异性会严重导致团队协作效率低下,后期可维护性也会严重降低。例如代码缩进问题,大部分都是以2个或者4个空格为标准,倘若在没有格式化工具的前提下,迭代起来就会显得异常麻烦,只能逐行添加或者删除空格,不仅浪费时间也毫无意义。  因此制定统一规范的代码风格,并以此配置出格式化工具显得尤为重要,并且最好是在开发中就将此问题解决掉,于代码运行之前.

2021-11-04 17:43:58 6309 3

原创 Vuepress 博客搭建与 GitHub 静态页面部署

前言  最近整理博客文章时,偶然想要把本地文章推送到GitHub上维护,毕竟看着很多次的Git提交记录和历史线,时间长了总会萌生再去提交几次的想法。  但是推送到GitHub后,想要便捷跳转到某篇文章,发现没有一个导航系统可以很好地链接到每篇文章,于是动手搭建一个依赖于Vuepress的博客,为了便于访问,再将其部署为GitHub的静态页面。  而此篇文章仅是记录Vuepress搭建博客的具体步骤,且仅对内部涉及到的api作解释,更为详细的部分可参考 Vuepress 官方文档。在线预览  Gi.

2021-10-20 14:30:07 3410 5

原创 解析图片的瀑布流(含懒加载)原理,并搭配服务端交互数据

前言  瀑布流是一种很常见的网页图片交互方式,效果可以参考 花瓣网。准备工作  首先来查看一下目录结构,其中app.js为服务端启动文件,主要用来提供接口,返回所需的图片数据,index.html为瀑布流页面。├── app.js├── index.html├── package.json├── node_modules/  服务端app.js利用express搭建本地服务器,其中访问http://127.0.0.1:3000默认返回瀑布流页面,获取图片接口一般是以pageNo和page.

2021-09-28 17:33:54 4351

原创 HTML5 之 Img 标签

概述  img 用于将图片嵌入文档。  img是行内单标签元素,同时img也是可替换元素(可修改宽高)。可替换元素  HTML元素可分为可替换元素和不可替换元素,详细参考。  绝大多数的HTML元素都是不可替换元素,其内容由DOM内容决定。例如<p>hello world</p>,展示的内容就是文本节点hello world。  而对于可替换元素,其内容则由元素的标签和属性决定。例如<img>元素的内容实际是由src属性读取的图片的原始宽高来确定的。  典.

2021-09-09 18:39:16 16932

原创 HTML5 之 Frame Frameset Noframes 标签

概述  frame 可定义特定区域,用于显示HTML文档。  HTML5已废弃,不再支持frame,但是当前仍有一部分浏览器支持。  frame为块级双标签,只能作为frameset子元素,无法单独使用。  常用属性如下。src:指定显示的HTML文档name:为frame添加标识,若未指定标识,所有链接将在其所在的frame打开noresize:禁止改变区域大小<!DOCTYPE html><html lang="en"><frameset row.

2021-09-01 19:12:48 3961

原创 HTML5 之 Form 标签

概述  form 是块级双标签,用于指定一个表单区域,并向服务器提交信息。属性常用属性action:指定表单提交的URL,表单内提交按钮的formaction属性会覆盖此属性enctype:指定表单的数据编码方式,表单内提交按钮的formenctype属性会覆盖此属性method:指定表单的请求方式,表单内提交按钮的formmethod属性会覆盖此属性。另外若表单在dialog元素中,指定method为dialog将在提交时关闭模态框,详细参考target:表示表单提交时于何处响应,表单内.

2021-08-20 13:49:36 4629

原创 HTML5 之 Figure Figcaption 标签

概述  figure 用于定义一个可附加标题的内容元素,figcaption 用于为figure元素添加标题和描述信息。  页面中的插图卡片比较常见,卡片中包含有图片的描述信息、标题或者按钮等。  一般的实现方式可能会用div元素设置background: url()的方式将图片作为背景,其余的描述信息和标题作为div的子元素。  或者是div元素内部添加img元素,其余的描述信息和标题则定位至图片上方。  虽然两者都能实现上面的卡片样式,但是HTML的结构和语义化不是非常明显。  以下HT.

2021-08-17 20:27:49 6428

原创 HTML5 之 Fieldset 标签

概述  fieldset 用于对表单中的控件元素进行分组。  fieldset是块级双标签,绝大多数浏览器都支持。属性disabled  fieldset的所有子代控件均会继承,即不可编辑状态。<form method="post" action="http://www.baidu.com"> <div> <label for="username">用户名</label> <input type="text" name=.

2021-08-17 11:42:02 9127

原创 HTML5 之 Dialog 标签

概述  dialog 是HTML5新增的语义化双标签,用于展示一个交互式的模态对话框。  绝大多数浏览器都不支持,仅有Chrome等浏览器支持。属性open  用于控制模态框的显隐,即含有open属性就显示,否则隐藏。<dialog open> <p>hello world</p></dialog>  浏览器呈现如下,含有部分默认样式,并且仅水平方向居中。  显示时样式。  隐藏时样式。returnValue  保留clo.

2021-07-31 15:48:09 9784

原创 HTML5 之 Col Colgroup 标签

col  col 用于定义表格中的列。  col为表格内单标签元素,只能在table元素或者colgroup元素中使用。  其属性值主要包括如下几种,均能通过CSS属性实现。span:指定col元素横跨的列数,此属性值为正整数,默认值为1align:指定col元素关联的列的内容的水平对齐方式,包括left(左对齐)、center(居中对齐)、right(右对齐)、char等,注意此属性HTML5已废弃,仅IE7及以下等浏览器可用,绝大多数浏览器已不再支持bgcolor:指定col元素关联的列.

2021-07-26 17:12:43 6244

原创 HTML5 之 Button 标签

概述  button 用于显示一个可点击的按钮,可用在表单或文档的其它地方。  button元素是内联双标签,不同浏览器下button样式不同,可以通过CSS修改。<button>按钮</button>标签属性autofocus  指定页面加载时聚焦此按钮,多个按钮指定autofocus,仅仅只会聚焦首个按钮。<button autofocus>按钮</button>disabled  禁用,用户不能与button交互。<but.

2021-07-17 13:51:45 19944 1

原创 HTML5 之 Audio 标签

概述  audio 用于在文档中嵌入音频元素。  audio元素是HTML5新增的行内标签,IE8及以下浏览器不支持audio标签。  若浏览器不支持video元素或者无法播放音频,则会显示替代文本(开始和结束标签之间的内容)。<audio src="music.mp3">当前浏览器不支持audio标签</audio>标签属性autoplay:音频会尽快自动播放,不会等待整个音频下载完成controls:浏览器提供包括声音、播放进度、播放暂停的控制面板(不同浏览器.

2021-07-12 14:26:00 13241

原创 HTML5 之 Script 标签

概述  script 用于嵌入或者引用可执行脚本。  其中可选属性如下。type:用于定义脚本语言的 MIME 类型,包括text/javascript、text/ecmascript、application/javascript、application/ecmascript,注意HTML5中可以省略掉type,其默认值为text/javascriptsrc:指定引用的外部脚本的URLdefer:仅适用于外链,规定脚本延迟执行async:仅适用于外链,规定脚本异步执行integrity:用.

2021-07-02 17:18:13 4481

原创 HTML5 之 A 标签

概述  a 元素可通过其href属性创建指向其他网页、文件、同一页面内的位置或其他URL的超链接。  其基本属性及含义如下。href:链接目标的URLhreflang:指定目标URL的语言rel:指定当前文档和被链接文档的关系target:指定打开目标URL的方式media:指定目标URL的媒体类型type:指定目标URL的 MIME 类型download:指示浏览器下载URL链接样式  在浏览器中a标签的默认样式带有下划线,其状态和颜色如下。link:未访问状态,字体颜色为.

2021-06-18 17:04:13 8033

原创 HTML5 标签汇总

文档结构  html页面的基本结构如下,其中head为页面的头部信息,body为页面的主体信息。<!DOCTYPE html><html lang="zh-CN"><head></head><body></body></html>文档元素DOCTYPE  DOCTYPE 即文档类型(document type),用于声明当前文档类型,告知浏览器使用哪种HTML版本(<!DOCTYPE htm.

2021-06-16 11:29:24 13472 2

原创 HTML5 之 Link 标签

概述  link 元素用于链接外部css样式表等其他相关外部资源。link  其中link中包括如下属性。href:指明外部资源文件的路径,即告诉浏览器外部资源的位置hreflang:说明外部资源使用的语言media:说明外部资源用于哪种设备rel:必填,表明当前文档和外部资源的关系sizes:指定图标的大小,只对属性rel="icon"生效type:说明外部资源的 MIME 类型,如text/css、image/x-iconrel  rel核心属性的参数值如下,也可参考 MDN.

2021-06-16 11:29:13 18712 1

空空如也

空空如也

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

TA关注的人

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