自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Fabric.js:让网页图形动起来的魔术师!

在网页开发的世界里,图形的创建与操作就像一场精心编排的魔术表演。当我们想要在网页上呈现出绚丽多彩、灵活多变的矢量图形时,原生Canvas虽能实现基础功能,却常常因开发效率低、交互实现复杂等问题,让开发者们头疼不已。而今天要给大家介绍的Fabric.js,就像是一位神奇的魔术师,轻轻挥动魔杖,就能赋予Canvas无限的生命力!

2025-06-09 21:50:17 534

原创 SSE (Server-Sent Events) 技术简介

SSE(Server-Sent Events)是一种基于HTTP的服务器到客户端单向实时通信技术。它通过长连接机制实现数据推送,具有轻量级、自动重连等特点,适合文本数据实时传输。与WebSocket相比,SSE更简单但仅支持单向通信,与长轮询相比则更高效。技术实现上,客户端可使用@microsoft/fetch-event-source库,服务端需设置特殊响应头并保持连接。SSE支持自定义事件类型、断线重连等高级特性,适用于实时通知、数据监控、直播推送等场景。该技术遵循标准HTTP协议,易于集成现有系统,是

2025-06-08 17:42:47 237

原创 ECMAScript 2018(ES2018):异步编程与正则表达式的深度进化

发布时间:2018年6月,由ECMA International正式发布,标准编号为ECMA-262 9th Edition。

2025-05-17 21:17:31 486

原创 ECMAScript 2017(ES2017):异步编程与对象操作的革新

ES2017(ECMA-262 8th Edition)于2017年6月发布,是ES6之后的首次重大更新,主要聚焦于异步编程的标准化与对象属性的深度操作。其核心特性包括async/await语法糖简化Promise链式调用,Object.values()、Object.entries()等对象方法扩展,字符串填充方法padStart()和padEnd(),尾逗号支持,以及SharedArrayBuffer和Atomics的引入。这些特性不仅提升了代码的可读性和可维护性,还推动了React、Vue等框架的异步

2025-05-10 16:46:14 398

原创 ECMAScript 2016(ES2016):JavaScript 生态的精细化完善

ES7通过includes()与**运算符的引入,显著提升了JavaScript的代码可读性与数学运算效率。includes():替代冗长的indexOf()!== -1判断,尤其适用于NaN检测场景。**运算符:简化科学计算与动画缓动函数的实现,消除对Math.pow()的依赖。

2025-05-07 21:49:37 448

原创 ECMAScript 6(ES6):JavaScript 现代化的革命性升级

ES6 是 JavaScript 生态的“现代化革命”,它通过引入类模块Promise等特性,将语言从“脚本工具”提升为“专业编程语言”。ES6 不仅解决了 ES5 的遗留问题,更直接推动了前端框架的爆发(如 React、Vue)和工程化实践(如 Webpack、Babel)。对现代开发的影响现代框架(如 React、Vue 3)的核心逻辑深度依赖 ES6 特性(如类组件、模块化)。ES6 的设计哲学(如函数式编程、异步解决方案)深刻影响了后续版本(如 ES7 的、ES2022 的学习建议。

2025-05-06 21:39:02 1213 1

原创 ECMAScript 5(ES5):JavaScript 现代化的关键转折

启用,限制危险行为(如禁用。、禁止未声明变量赋值)。,标准化数据序列化。

2025-05-05 08:40:55 821

原创 ECMAScript 4(ES4):被“搁置”的革命性版本

它的遗产被拆分到后续版本中,以更温和的方式推动了 JavaScript 的进化。破坏 JavaScript 的原型继承模型,与 ES6 的类语法有部分冲突(ES6 保留了原型链)。增加语言复杂度,与 JavaScript 的动态特性相悖,且与 TypeScript 方案竞争。ES4 是 JavaScript 历史上最激进的版本,其失败并非因为技术缺陷,而是。模块化系统,支持命名空间、导入/导出语句(类似 Java 的包管理)。增加语法复杂度,且与 JavaScript 的对象字面量解构方案重复。

2025-05-04 09:05:17 905

原创 ECMAScript 3(ES3):JavaScript 崛起的关键版本

1. 版本背景与发布●发布时间:1999 年 12 月,由 ECMA International 正式发布,标准编号为 ECMA-262 Edition 3。

2025-05-03 08:59:19 611

原创 ECMAScript 2(ES2):标准化的微调与巩固

增加对 Unicode 字符集的明确引用(尽管 ES1 已隐式支持)。强调字符串处理需兼容多语言字符(如中文、日文),为后续国际化特性铺路。修复 ES1 中部分语法规则的模糊表述(如函数声明、运算符优先级)。调整章节顺序、补充缺失的上下文说明,提升规范的可维护性。消除“方法”与“属性”在文档中的混淆,提升规范可读性。修复正则表达式示例中的语法错误,确保开发者可正确参考。将“错误处理”章节与“异常”定义合并,避免内容重复。修正 ES1 中示例代码的逻辑错误或拼写错误。关键字与标识符的空格要求,避免解析歧义。

2025-05-02 10:26:57 346

原创 ECMAScript 1(ES1):JavaScript 的开端

作为 JavaScript 的“宪法”,定义了语言的基本语法与数据模型,尽管功能有限,但为后续版本提供了可扩展的框架。○其原型继承机制至今仍是 JavaScript 对象模型的核心(ES6 的 class 语法仅是语法糖)。○动态类型与函数一等公民特性成为 React、Vue 等现代框架的设计基础。

2025-04-25 21:37:35 841

原创 从零搭建一套前端开发环境

nvm(Node Version Manager) 是一个用于管理多个 Node.js 版本的工具,允许开发者在同一台机器上轻松安装、切换和使用不同版本的 Node.js。它特别适合需要同时维护多个项目(依赖不同 Node.js 版本)的场景,或用于测试新版本功能。

2025-04-17 10:25:23 1407

原创 一篇文章带你搞懂js的this指向

基于以上的分析,我们可以简单的得出this指向简单记忆方式script 标签中,this指向全局对象函数作用域中,this指向函数调用对象,如果函数独立调用会出现特殊情况(严格模式指向undefined,非严格指向全局)箭头函数中,this指向会沿着作用域链向上级作用域中查找this,直到找到为止。new 关键字调用函数生成对象时,this一定指向新创建的对象,这一点是无法被改变的,尽管使用显示绑定函数去主动绑定this,也无法改变this指向。

2025-04-03 20:04:35 954

原创 浏览器扫码

H5端调用浏览器使用摄像头扫码功能必须要保证当前网页的上下文是安全上下文,否则浏览器默认不允许获取摄像头权限。

2025-03-30 21:21:30 749

原创 Vue2和Vue3的区别

Vue2使用的是Object.defineProperty()来劫持各个属性的setter/getter,在数据发生变化的时候通知订阅者更新视图。

2025-03-23 11:00:09 5584

原创 uniapp 和 webview 之间的通信

这段代码会在webview的全局作用域中执行。在webview中我们可以使用当前webview实例的postMessage方法来触发webview组建的onPostMessage方法来传递数据,重点就需要放在了如何将uniapp的webview实例来加入到webview的h5项目当中。这个是在引入webview的SDK之后,当webview页面被加载完成之后会触发,该事件触发表示着uniapp和webview之间的桥成功搭建,uni对象被成功的注入到当前H5的上下文中。)之间安全地传递消息。

2025-03-22 16:49:55 3125

原创 闭包的理解

所以尽管是函数作用域销毁,其捕获变量仍然可以被访问到。经过查询资料我得知,上述所理解的变量声明确实存在于局限性,我们都知道js中存在三种作用域(全局作用域,函数作用域,块级作用域,后两者也称为局部作用域),其中只有局部作用域的变量声明是符合上述的变量声明规则的。在函数作用域或者是块级作用域中声明的变量是临时变量,其会被保存到栈空间中,待到当前作用域内所有的代码执行完毕后会将这些变量回收。所谓闭包,指的是一个函数返回另一个函数,而返回函数作用域中使用了外部函数的变量,导致变量被保存到内存中无法回收的现象。

2025-02-08 10:00:28 559

原创 面试回顾——1

重写(override):在子对象中定义和父对象中同名的成员,结果:再使用这个成员时,总是优先使用子对象自己的同名属性,而永久屏蔽了父对象中的同名属性。构造函数虽然可以重用代码,但是却浪费了内存,定义在构造函数中的方法,每创建一个对象,都会执行一次function,都会创建该方法的一个完全相同的副本给每个新创建的对象。注意:应该在创建子对象之前更换,这样新创建的子对象才能自动继承新的原型对象,在创建子对象之后更换,虽然构造函数的原型对象发生改变,已经创建的子对象仍然继承旧的原型对象。

2025-01-31 17:27:07 1231

原创 从零搭建一个Vue3 + Typescript的脚手架——day3

在src下创建一个directives文件夹,创建一个index.ts文件// 挂载自定义指令// 使用app.directive()方法注册自定义指令在main.ts文件中引入执行。

2025-01-30 20:12:11 453

原创 从零搭建一个Vue3 + Typescript的脚手架——day2

ElementPlus是一个基于Vue3的组件库,它提供了丰富的组件和样式,可以帮助开发者快速构建现代化的Web应用。ElementPlus是基于ElementUI的Vue3版本,它提供了更多的组件和样式,同时也支持Vue3的CompositionAPI。ElementPlus是一个开源项目,它有丰富的文档和示例,可以帮助开发者快速上手。

2025-01-20 15:25:52 899

原创 从零搭建一个Vue3 + Typescript的脚手架——day1

Vite是一个由尤雨溪开发的现代化前端构建工具,它利用了浏览器对ES模块的原生支持,极大地提升了开发服务器的启动速度和热更新效率。Vite不仅适用于Vue.js,还支持React、Svelte等多种框架,通过其丰富的插件系统和优化的性能,为开发者提供了更加流畅和高效的前端开发体验。

2025-01-14 17:59:33 1082

原创 HTTPS验证流程

http通常是直接和TCP进行通信的,而https中http是和SSL通信,再由SSL与TCP进行通信。SSL协议是一个介于应用层和传输层之间的一个安全协议。

2024-12-27 21:21:46 609

原创 Sass复习篇

Sass 是常见的css预处理器的一种,他提供了许多遍历的写法,让css开发变得更为简单和强大。Sass有两种版本,Sass和Scss,两者之间的区别在于语法,Sass使用缩进的方式书写,而Scss使用大括号的方式书写,Scss是Sass的升级版,兼容Sass的所有功能。所我们一般书写时都是用Scss的语法形式。

2024-12-24 16:28:21 1176

原创 Nuxt样式文件导入

Nuxt或Vite的样式文件导入失效的原因。

2024-12-20 20:22:42 263

原创 浏览器解析页面流程

浏览器首先判断输入的url是否有http缓存,如果有则直接从http缓存中读取数据并显示。如果没有,则进行下一步。进行DNS解析,获取域名对应的IP地址。

2024-12-06 19:08:05 529

原创 前端首屏加载优化

1.首屏加载慢的原因网络延迟资源太大服务器响应慢

2024-12-04 21:55:33 1308

原创 浏览器事件循环浅析

因此,浏览器将无法立即处理的任务放入任务队列中,等待主线程空闲时执行。: 负责页面的渲染,脚本的执行等。: 负责浏览器的界面展示,用户交互,子进程管理,浏览器内核的初始化等。所以浏览器采用了异步的方式,将无法立即处理的一些代码包装成任务,放入任务队列中等待主线程空闲时执行。任务队列是异步任务的集合,浏览器会将无法立即处理的任务放入任务队列中等待主线程空闲时执行。渲染主线程是浏览器渲染进程的核心线程,负责执行任务队列中的任务。事件循环是浏览器渲染进程的核心概念之一,是浏览器渲染进程中异步任务执行的一个机制。

2024-12-02 22:04:37 613

原创 Monorepo 前端项目管理模式

Monorepo 是一种将多个项目存储在一个代码库中的策略,这使得跨项目共享和管理代码变得更加容易。在 Monorepo 模式下,所有相关的项目和组件都被存储在一个统一的代码仓库中,而不是分散在多个独立的代码仓库中。pnpm 是一个高效的包管理器,它通过使用硬链接和符号链接将包存储在共享的内容寻址存储中,从而避免了重复下载和安装。pnpm 的主要优势在于其节省磁盘空间和提高安装速度的能力。

2024-11-29 21:12:26 1126

原创 前端基础面试题·第四篇——Vue(其三)

Vue中组件定义式可以为其添加一个name属性,这个属性是组件的别名。当时组件被渲染时,Vue DevTools 会显示组件的名称,方便开发者调试,增强调试体验。当组件需要在内部调用渲染自己本身时,需要通过name属性来指定组件名称,否则Vue会报错。给组件命名后,我们可以通过全局注册,在全应用范围内使用该组件。方便了组件的使用,提高了组件复用性。使用keep-alive包裹动态组件时,可以通过include和exclude属性来指定哪些组件需要缓存,哪些组件不需要缓存。

2024-11-09 21:44:05 960 1

原创 鼠标拖尾特效

准备一个元素类来描述速报拖尾的元素。

2024-10-28 15:14:37 302

原创 WebSocket简单使用

WebSocket 是一种网络通信协议,提供了在单个TCP连接上进行全双工通信的能力。这意味着客户端和服务器可以同时发送和接收数据,而不需要等待对方的回应。WebSocket 协议在2011年成为国际标准,并且被大多数现代浏览器所支持。

2024-10-26 16:52:47 1922

原创 canvas鼠标点击特效

8.92 Mjc:/ 01/09 t@r.EH 鼠标点击烟花特效 # 程序员 # 代码 # 前端 # canvas # 艺术在抖音 https://v.douyin.com/iSRSQQJ6/ 复制此链接,打开Dou音搜索,直接观看视频!

2024-10-18 17:50:04 536

原创 Redis简介

启动 这里以zip压缩包为例,我们打开zip压缩包(以下统称redis),右键打开powershell窗口输入 .\redis-server.exe redis.windows.conf 命令就可以启动redis服务了。客户端连接 这里我们在redis中再打开一个powershell窗口,输入 .\redis-cli.exe 命令按回车就可以连接上redis服务了。redis默认是不需要密码就可以连接服务的,这是一种非常不安全的做法,为了安全起见,我们可以自己去设置一下redis的密码。

2024-10-15 17:56:34 1118

原创 前端基础面试题·第四篇——Vue(其二)

路由跳转接收参数params传递参数可以用过页面路由对象route的params属性访问到。2.query传参query 传参是通过URL的查询字符串来传递参数,这种方式传递的参数是可选的。这种方式不需要提前配置路由路径,直接在路由跳转时在路径或者配置中传递参数即可。路由跳转接收参数这种方式传递的参数会挂载到页面路由对象route的query对象上。2. hash和history路由区别hash路由地址上在路径后面带#号,history路由地址上不带#号.在

2024-10-08 17:48:41 1207

原创 vue中如何实现组件通信

则该函数会接受第三个参数,该参数是一个对象,该对象中需要定义persist属性。属性的值和上面一样。同时persist属性可以简写,接收一个布尔值作为值,表示开启或关闭持久化。其缓存策略默认会使用localStorage。key默认会使用store的名称。paths默认会使用所有属性。

2024-10-04 18:48:36 1640 1

原创 个人项目简单https服务配置

SSL证书是一种数字证书,由受信任的证书颁发机构(CA)颁发,用于在互联网通信中建立加密链接。SSL代表“安全套接层”,是用于在互联网上创建加密链接的协议。SSL证书的主要目的是确保数据传输的安全性和隐私性,同时验证网站的所有权。

2024-09-30 17:15:11 2165

原创 前端基础面试题·第四篇——Vue(其一)

如果说请求的数据在后续dom需要渲染或者需要较早渲染,一般在created中请求数据,如果请求的数据在后续dom不需要渲染,则可以在mounted中请求数据。

2024-09-27 11:00:51 1093

原创 Vite项目中eslint的简单配置

使用包管理工具创建一个vite项目。

2024-09-14 21:13:06 1919 2

原创 前端基础面试题·第三篇——JavaScript(其四)

JSON.stringify() 方法将一个 JavaScript 值(对象或者数组)转换为一个 JSON 字符串,如果指定了一个 replacer 函数,则可以替换值。

2024-09-10 16:53:19 1417

原创 前端基础面试题·第三篇——JavaScript(其三)

这其实是promise的封装语法糖,首先他的运行必须是在一个函数中,然后通过async将该函数标记为异步函数,在函数中执行异步操作的代码前面添加await关键字,原本需要通过then方法获取一步结果,现在就可以直接由原本的异步操作直接返回(本质上这里其实是js引擎等待异步代码执行完毕后获取到结果在返回,并不是同步执行,只不过还将回调函数变为了底层自动处理,减少了代码书写量),同样如果是catch方法获取数据,await也会直接获取到。NodeList可以是动态的也可以是静态的,‌具体取决于获取它的方法。

2024-09-09 18:18:08 1954

空空如也

空空如也

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

TA关注的人

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