- 博客(84)
- 资源 (2)
- 收藏
- 关注
原创 前端SEO优化
前端SEO技术通过优化HTML结构(语义化标签、标题层级、图片alt属性)、提升页面加载速度(资源压缩、懒加载、缓存策略)、适配移动端(响应式设计)及优化JavaScript兼容性(SSR/SPA处理)提升网站在搜索引擎中的排名。同时规范元标签、URL结构和内部链接,结合工具监测数据并持续迭代。2025年趋势聚焦核心网页指标、AI分析及边缘计算,需平衡技术优化与用户体验,实现流量与转化双提升。
2025-11-25 10:08:06
686
原创 JavaScript--链表操作
JavaScript 中的链表是一种由节点组成的动态数据结构,每个节点包含数据和指向下一节点的引用。本文介绍了链表的基本实现,包括节点类(ListNode)和链表类(LinkedList),详细说明了追加(append)、头部插入(prepend)、按索引获取(getNodeByIndex)、插入(insert)、删除(remove)等核心操作,并提供了将链表转为数组的方法(toArray)和使用示例。链表适用于实现栈/队列、管理动态数据、哈希表冲突处理等场景,特别适合数据频繁变动的需求。
2025-10-20 18:20:03
229
原创 微前端--前端架构的模块化革命
微前端不是 “银弹”,而是 “复杂前端项目的架构解决方案”—— 它通过 “拆分巨石应用、解耦团队协作、支持技术栈无关”,解决了大型项目的核心痛点,但同时也带来了 “架构复杂度、性能开销” 等挑战。若项目规模小、团队单一:优先选择传统巨石应用,避免过度设计;若项目规模大、多团队协作:优先选择成熟框架(如 qiankun),降低落地成本;若需模块级复用、且用 Webpack 5:可考虑 Webpack Module Federation;
2025-09-18 17:34:19
1030
原创 Vue--Composition API 的设计思想
摘要: Vue Composition API 是 Vue 3 的核心特性,旨在优化代码组织和复用。其设计理念包括: 逻辑组合:通过组合函数聚合分散的逻辑,解决传统 Options API 的代码碎片化问题; 类型安全:函数式设计天然支持 TypeScript,提升开发体验; 渐进式采用:兼容 Options API,支持逐步迁移; 性能优化:减少组件实例开销; 跨框架共享:支持逻辑复用(如 Vueuse)。 Composition API 并非替代 Options API,而是为复杂应用提供更灵活、可维护
2025-08-29 16:27:12
428
原创 HTTP、HTTPS 与 WebSocket 详解
本文详细解析了HTTP、HTTPS和WebSocket三种网络协议的核心特性。HTTP是基础请求-响应协议,HTTPS通过SSL/TLS加密增强安全性,而WebSocket支持全双工实时通信。三者均基于TCP,但通信模式不同:HTTP/HTTPS是单向短连接,WebSocket是持久双向连接。HTTP适用于网页浏览和API调用,HTTPS用于敏感数据传输,WebSocket则适合实时交互场景。理解这些协议的特点有助于根据实际需求选择合适的网络通信方案。
2025-08-25 09:56:45
1338
1
原创 Vue3.0性能优化(v-memo指令)
Vue3.0的v-memo指令通过缓存渲染结果优化性能,特别适合处理大型静态列表或复杂组件。它接收一个依赖数组,仅当数组值变化时才重新渲染。使用场景包括:大型静态列表、复杂组件嵌套和条件渲染分支。性能对比显示v-memo能有效减少不必要的重渲染。使用时需注意避免滥用,确保依赖数组精确,并与v-for合理配合。合理使用v-memo可显著提升Vue应用在处理大量数据时的性能表现。
2025-07-18 15:17:52
423
原创 React--Fiber 架构
React 16引入的Fiber架构重新设计了协调算法,以解决大型应用的性能瓶颈。其核心是将渲染拆分为可中断的小任务,支持优先级调度和增量渲染,避免主线程阻塞。Fiber节点包含组件信息、状态和副作用标记,通过双缓存树(current树和workInProgress树)实现高效更新。工作流程分为调度、协调(可中断)和提交(同步)三个阶段,使用链表遍历替代递归,支持时间切片和优先级控制。相比传统算法,Fiber提升了响应速度,支持错误边界,并通过概念示例展示了节点结构和工作循环机制。
2025-07-10 16:43:43
1041
原创 浅谈Solana
摘要: Solana 是一个高性能区块链平台,以高速交易(理论 TPS 达 5 万+)和低成本(单笔交易约 0.0001 美元)著称,核心技术包括 PoH(历史证明)共识机制和 Sealevel 并行处理。其生态覆盖 DeFi(如 Serum)、NFT(如 Metaplex)和支付应用,优势在于用户体验友好和开发者支持(Rust/C++)。但面临网络宕机(如 2022 年宕机事件)、监管风险(SOL 被 SEC 列为证券)及以太坊 Layer2 竞争的挑战。SOL 代币用于支付、质押和治理,通胀机制激励节点
2025-07-04 18:23:58
1011
1
原创 B 树和 B+ 树
B树和B+树是两种高效的外存索引结构。B树是一种平衡多路搜索树,所有叶子节点在同一层,节点包含键值和子节点,适合随机访问。B+树是B树的优化版本,其特点是非叶子节点仅存储索引,所有数据存储在叶子节点中,并通过指针连接形成有序链表,更适合范围查询。两者都通过控制节点最小/最大子节点数来保持平衡,减少磁盘I/O。文中提供了JavaScript实现代码,包含节点结构、插入、分裂等核心操作,展示了如何构建和打印这两种树结构。B+树在数据库系统中应用更广泛,因其查询效率更稳定且适合顺序访问。
2025-06-25 10:03:06
912
原创 浅谈区块链
区块链是一种去中心化的分布式账本技术,通过密码学、共识机制和区块链式结构确保数据难以篡改。核心技术包括哈希算法、公钥加密和PoW/PoS等共识机制。主要类型有公有链、联盟链和私有链。应用涵盖数字货币、金融、供应链管理等领域,具有去中心化、透明和可追溯等优势。但面临性能瓶颈、高能耗、监管等挑战。未来将优化技术性能、探索跨链融合,并推动绿色区块链发展,持续拓展应用场景。
2025-06-24 17:00:14
3221
1
原创 浅谈Web3
Web3 是对下一代互联网的构想,也被称为 “去中心化网络”。它旨在通过区块链、加密货币、智能合约等技术,改变当前互联网(Web2)以平台为中心的集中化模式,让用户重新掌握数据所有权和控制权。
2025-05-29 13:08:38
1806
原创 树结构详细介绍(javascript版)
平衡二叉树是一种特殊的二叉搜索树,它的每个节点的左右子树的高度差不超过 1。红黑树是一种自平衡的二叉搜索树,它通过为每个节点分配一个颜色(红色或黑色)并遵循一些特定的规则来保持树的平衡。上面的二叉树实现实际上就是一个二叉搜索树的实现,它提供了高效的查找、插入和删除操作,时间复杂度为 O (log n)。深度优先遍历沿着树的深度遍历树的节点,尽可能深的搜索树的分支。二叉树是一种特殊的树,每个节点最多有两个子节点,通常称为左子节点和右子节点。树的遍历是指按照某种顺序访问树中的所有节点。
2025-05-27 13:57:24
762
原创 React--函数组件和类组件
React 中的函数组件和类组件是两种定义组件的方式,现代 React 开发中,函数组件配合 Hooks 已成为主流,因为它们更简洁、可复用性更高,并且能更好地处理状态和副作用。
2025-05-21 13:13:51
1176
原创 字典和哈希表(javascript版)
字典是一种抽象概念,JavaScript 中常用 Object 或 Map 实现。哈希表是一种具体实现,JavaScript 的 Map 底层通常使用哈希表。优先使用 Map:它提供了更完善的 API、类型支持和性能,适合大多数场景。手动实现哈希表:仅在需要控制底层细节(如哈希函数、冲突处理)时使用。在实际开发中,无需严格区分字典和哈希表,根据需求选择合适的实现即可。
2025-05-20 14:48:33
703
原创 快慢指针算法(Floyd 判圈算法)
快慢指针(又称龟兔赛跑算法)是一种常用的链表操作技巧,通过两个移动速度不同的指针遍历链表,用于解决链表中环检测、中点查找等问题
2025-05-16 17:28:16
892
原创 javaScript--数据结构和算法
二叉树是一种灵活且强大的数据结构,不同的遍历方式适用于不同的场景。后序遍历常用于释放二叉树的节点内存;冒泡排序是一种简单的排序算法,它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。二叉树是每个节点最多有两个子节点的树结构,这两个子节点通常被称为左子节点和右子节点。队列是一种先进先出(FIFO)的数据结构,元素从队尾入队,从队头出队。链表是由节点构成的数据结构,每个节点包含数据和指向下一个节点的指针。数组是最基础的数据结构,用于存储一系列有序的数据。
2025-04-27 10:40:01
698
原创 弹性布局--Flexbox
flex:1 属于一个简写属性,它是 flex-grow、flex-shrink 和 flex-basis 这三个属性的缩写,等同于 flex: 1 1 0。弹性布局(Flexbox)的兼容性整体较好,但在不同浏览器及其不同版本中存在一定差异。
2025-04-25 14:23:29
954
原创 javaScript--数组方法
Array.prototype.push(),接收任意数量的参数,把它们逐个添加到数组末尾,并返回修改后数组的长度。Array.prototype.pop(),从数组末尾移除最后一项,减少数组的length值,然后返回移除的项。Array.prototype.unshift(),在数组前端添加任意个数选项并返回新数组的长度。Array.prototype.shift(),移除数组中的第一个项并返回该项,同时将数组长度减1。Array.prototype.splice(),向数组的中部插入项。
2025-04-21 14:01:44
601
原创 vue状态管理--Pinia 和 Vuex的区别
Pinia使用 defineStore 函数来定义一个 store,其中 state 是一个返回对象的函数,Pinia 会自动将这个对象通过 Vue3 的 reactive 函数转换为响应式对象。这里 state 返回的 { count: 0 } 对象会被 reactive 处理成响应式对象,对 count 属性的修改会自动触发响应式更新。Vuex在 Vuex 中,state 是一个普通的对象,在创建 Vuex store 实例时进行定义。
2025-04-11 14:28:27
910
原创 Vue--状态管理pinia
getters 会自动追踪其依赖的 state 属性,当依赖的 state 属性发生变化时,getters 会重新计算并更新相关的组件。当使用 defineStore 定义一个 Store 时,Pinia 会利用 Vue 3 的 reactive 函数将 state 函数返回的对象转换为响应式对象。当调用 increment 方法时,this.count 的值会增加,由于 state 是响应式的,任何依赖于 count 的组件或 getters 都会自动更新。
2025-04-08 19:42:57
1406
原创 TypeScript--基础讲解
在 TypeScript 里,你可以为变量、函数参数和返回值等指定类型。常见的基本类型有 number、string、boolean、null、undefined 等。TypeScript 支持类的概念,并且可以使用访问修饰符(如 public、private、protected)。类型断言能够告诉编译器 “相信我,我知道自己在做什么”,它允许你手动指定一个值的类型。元组类型允许表示一个已知元素数量和类型的数组,各元素的类型不必相同。在 TypeScript 中,你可以为函数的参数和返回值指定类型。
2025-04-02 10:00:00
465
原创 前端工程化--Rollup的使用
集成 Babel,将 ES6+ 代码转换为向后兼容的 JavaScript 代码。将 CommonJS 模块转换为 ES6 模块,以便 Rollup 可以处理。打包完成后,会在dist目录下生成bundle.js文件。用于解析node_modules中的第三方模块。用于压缩和混淆打包后的代码。
2025-04-01 10:00:00
2146
原创 vue--Tree-shaking技术
由于 ES6 模块的导入和导出是静态的,打包工具(如 Webpack、Rollup)在编译时就可以确定哪些模块被使用,哪些未被使用,然后将未使用的模块从最终的打包文件中移除。这里的Vue是一个全局对象,包含了 Vue 的所有功能,即使我们只使用了其中一部分,打包工具也无法将未使用的部分移除。综上所述,Vue 3.x 通过组合式 API 和按需引入的设计,极大地提升了对 Tree-shaking 的支持,使得开发者能够更方便地减少打包文件的体积,优化应用性能。Vue 3.x 的全局 API 也支持按需引入。
2025-03-31 09:45:00
1003
原创 前端工程化--gulp的使用
gulp介绍gulp 是一个基于 Nodejs 的自动化构建工具,中文主页: http://www.gulpjs.com.cn/能自动化地完成 javascript/coffee/sass/less/html/image/css 等文件的合并、压缩、检查、监听文件变化、浏览器自动刷新、测试等任务使用步骤:安装 nodejs全局安装 gulpnpm install gulp -g4. 局部安装gulp ```shell npm install gulp --save
2025-03-27 10:13:50
993
1
原创 前端安全加密方式
HTTPS 是基础,必须强制启用。对称加密(AES)+ 动态密钥管理。前端哈希 + 后端加盐哈希双重防护。非对称加密安全传输对称密钥。防 XSS、防 CSRF、密钥安全是核心。前端加密需结合场景选择算法(如 AES 加密、RSA 密钥交换、SHA 哈希),并通过 HTTPS 和安全实践(如防 XSS、CSRF)构建防护体系。同时,避免过度依赖前端加密,关键数据需后端二次验证。
2025-03-25 16:07:19
4312
原创 iOS--iframe滚动穿透问题
在移动端的项目中,需要实现有效阅读标记的需求,此功能在实现iframe 嵌入PDF预览时,需要在下滑到底部时显示标记按钮,但是在iOS中,因为滚动穿透的问题,在PDF区域触底后无法触发外层的滚动事件,后经过查询得知,这是因为 iOS 的滚动机制和 iframe 的滚动容器特性导致的。
2025-03-25 10:00:00
435
原创 axios--源码解析
成功的回调函数, 传递的默认是config(也必须是)成功的回调函数, 传递的默认是response。失败的回调函数, 传递的默认是error。失败的回调函数, 传递的默认是error。可以对请求进行检查或配置进行特定处理。在真正发送请求前执行的回调函数。在请求得到响应后执行的回调函数。可以对响应数据进行特定处理。
2025-03-24 14:22:37
1248
原创 ES6--新特性
ECMAScript 61.第1章:ECMASript 相关介绍1.1.什么是ECMAECMA(European Computer Manufacturers Association)中文名为欧洲计算机制造商协会,这个组织的目标是评估、开发和认可电信和计算机标准。1994年后该组织改名为Ecma国际。1.2.什么是ECMAScriptECMAScript 是由Ecma国际通过ECMA-262标准化的脚本程序设计语言。1.3.什么是ECMA-262Ecma国际制定了许多标准,而ECMA-262只
2025-03-23 10:00:00
1074
1
原创 vue+Electron开发桌面应用
使用 Vue CLI 创建一个新的 Vue 项目。打包完成后,可以在 dist_electron 目录下找到生成的安装包。
2025-03-21 10:00:00
979
原创 安全加密--AES算法
1997 年,美国国家标准与技术研究院(NIST)发起征集高级加密标准的活动,旨在寻找一个替代 DES(Data Encryption Standard)的加密算法。经过多轮筛选和评估,比利时密码学家 Joan Daemen 和 Vincent Rijmen 设计的 Rijndael 算法在 2001 年被选定为 AES。使用相同的密钥进行加密和解密操作。这意味着在数据传输前,通信双方需要安全地共享这个密钥。
2025-03-19 14:00:00
1016
原创 react--虚拟dom原理
虚拟 DOM 本质上是一个 JavaScript 对象,它以树状结构来描述真实 DOM 的层次结构和属性信息。例如,对于一个简单的 HTML 元素 < div id=“example”>Hello, World!props: {},
2025-03-19 10:00:00
1568
原创 axios--入门讲解
axios从入门到源码分析第1章:HTTP相关1.1.MDN文档https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Overview1.2.HTTP请求交互的基本过程前台应用从浏览器端向服务器发送HTTP请求(请求报文)后台服务器接收到请求后, 调度服务器应用处理请求, 向浏览器端返回HTTP响应(响应报文)浏览器端接收到响应, 解析显示响应体/保存数据并调用监视回调1.3.HTTP请求报文请求行:method urlGET /p
2025-03-17 14:00:00
1170
原创 react--响应式原理
React 组件通过state(状态)来管理数据,UI 是状态的纯函数。当状态变化时,React 会自动重新渲染组件并更新 DOM。数据从父组件通过props传递给子组件,子组件只能通过回调函数向父组件反馈。这种单向流动保证了数据变化的可预测性。React 通过生命周期方法(类组件)或 Hooks(函数组件)处理副作用,确保状态变化后的副作用逻辑正确执行。调用,减少不必要的渲染。React 会批量处理多个。
2025-03-17 09:45:00
1241
原创 版本管理工具--git
Git 介绍Git 是一款开源免费的分布式的版本控制系统。是 Linux 之父 Linus Torvalds (林纳斯·托瓦兹)为了方便管理 Linux 内核代码而开发的。作用版本控制系统在项目开发中作用重大,能记录文件的历史状态,主要的功能有以下几点代码备份版本回退协作开发权限控制下载安装下载地址 https://git-scm.com/安装方式与 QQ 安装相同,一路下一步,中间可以设置软件的安装路径Linux 常用命令Linux 是一套开源免费的操作系统。与系统的交互通常用
2025-03-14 10:00:00
1015
1
原创 express中操作cookie和session
express中操作cookie和session一、操作cookie:1. 设置cookie(给客户端“种”cookie): 直接使用res.cookie('key','value',{maxAge:??*??*??})即可。 2. 获取cookie(要第三方中间件): * 安装:npm i cookie-parser * 引入:const cookieParser = require('cookie-parser') * 使用:app.use
2025-03-13 13:30:00
2297
原创 Vue.js--keep-alive用法
这里使用了 v-slot 来获取 router-view 渲染的组件,然后用 keep-alive 进行包裹,实现路由组件的缓存。例如,我们有组件newsList和newsInfo,imageList和imageInfo,但是我们只想缓存newsList和imageList这2个列表组件的数据。是Vue的内置组件,包裹动态组件时,会缓存不活动的组件实例,而不是销毁它们。这里需要说明的是,本示例是使用了vue-router的,所以这里的keep-alive中放了1个router-view。
2025-03-13 09:45:00
645
原创 游戏开发--碰撞检测算法
Matter.js 是一个用于创建基于物理的 JavaScript 游戏的引擎,可用于实现复杂的碰撞检测和物理效果。Phaser 是一个功能强大的 HTML5 游戏框架,提供了丰富的游戏开发功能,包括碰撞检测。
2025-03-12 10:00:00
1421
原创 数据库--MongoDB
第1章:数据库1.1数据库是什么数据库(DataBase)是按照数据结构来组织、存储和管理数据的仓库。1.2为什么要使用数据库我们的程序都是在内存中运行的,一旦程序运行结束或者计算机断电,程序运行中的数据都会丢失。所以我们就需要将一些程序运行的数据持久化到硬盘之中,以确保数据的安全性。而数据库就是数据持久化的最佳选择。说白了,数据库就是存储数据的仓库。1.3数据库的分类1.3.1 关系型数据库(RDBS)代表有:MySQL、Oracle、DB2、SQL Server…特点:关系紧密,都是表
2025-03-11 13:15:00
775
1
javascript学习第二天(运算符的使用).md
2020-06-16
JavaScript学习第一天.md
2020-06-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅