推荐文章
热门文章
公告展示
最新发布
-
易码付:新一代个人免签约支付解决方案 程序介绍 易码付是一套基于 ThinkPHP5.1 + MySQL 自主研发的个人免签约支付系统,专为独立开发者、小微商户及个人站长设计。系统采用创新的监控技术,实现支付宝、微信支付、QQ钱包的免签约收款,资金直达您的账户,无需第三方中转。 核心特色: 🚀 实时到账:收款后资金直接进入您的账户,无延迟无账期 💰 零手续费:完全免费使用,无任何交易手续费或年费 🔒 资金安全:系统部署在您自己的服务器,资金不经过任何第三方平台 ⚡ 简单集成:提供标准化API和SDK,轻松对接各类网站系统 📱 多端支持:支持手机APP、电脑客户端及云端免挂机模式 🛡️ 安全稳定:无需修改支付软件,避免账号风控风险 📢 使用说明:本系统仅供个人学习测试及合法经营使用,请遵守相关法律法规。商业用途建议申请官方支付接口。源码下载 易码付最新纯净版 下载地址:https://pan.xunlei.com/s/VOg2-yUSZsW-u_lKBLjNVZH6A1?pwd=9hqb# 提取码: 功能特色 功能模块易码付系统传统支付方案授权方式永久免费开源按年收费,费用高昂手续费率0%手续费0.3%-1%交易手续费资金安全资金直达账户存在资金池风险部署方式自主服务器部署依赖第三方平台技术支持开源社区支持客服响应缓慢更新维护持续更新升级更新频率低支付渠道支付宝/微信/QQ通常仅支持1-2种监控方式多模式可选通常仅支持挂机系统展示 支付界面 简洁美观的支付页面,支持自定义样式 管理后台 功能完善的后台管理系统 系统设置图片 监控管理图片 接口说明图片 快速开始 环境要求 服务器:Linux/Windows(推荐Linux) Web服务:Nginx 1.15+ / Apache 2.4+ PHP版本:5.6-7.4(推荐7.2) 数据库:MySQL 5.6+ 其他:开启curl、fileinfo扩展 安装步骤 环境准备 创建网站并设置运行目录为public,配置伪静态规则(ThinkPHP),设置默认文档顺序。 文件部署 上传系统文件到网站目录 设置/config/database.php数据库配置 导入数据库文件/install/pay.sql 系统初始化 访问后台:您的域名/admin 默认账号:admin,密码:123456 首次登录后立即修改密码 基础配置 配置支付回调地址 设置邮件通知(可选) 配置商户信息 选择监控模式 监控配置 方案一:免挂机模式(推荐) 在后台开启云端监控服务 配置支付账号回调地址 系统自动处理订单通知 方案二:APP挂机模式 下载安装易码付监控APP 登录支付账号并保持后台运行 添加到手机白名单避免被清理 开启通知栏监听权限 方案三:模拟器挂机 在电脑安装安卓模拟器 安装监控APP并登录支付账号 设置开机自启动 技术支持 常见问题 Q:系统是否安全? A:系统完全开源,代码透明,无后门风险,资金直接进入您的账户。 Q:支持哪些支付方式? A:支持支付宝个人/商家收款、微信支付、QQ钱包。 Q:需要特殊的手机权限吗? A:仅需要通知栏读取权限,无需ROOT或XP框架。 Q:订单通知如何保证及时? A:采用多重验证机制,确保订单状态实时同步。 注意事项 建议定期备份数据库和系统文件 保持系统更新到最新版本 合理设置订单超时时间 建议关闭服务器不必要的防火墙规则 多账号使用时注意IP限制 获取系统 官方渠道 官方文档:https://docs.emaifu.com 社区支持 技术论坛:http://blog.yihang.info QQ交流群:123456789 版本更新 v1.0.0(2025-12-10):初始版本发布 开源协议 易码付采用MIT开源协议,您可以: ✅ 免费使用、复制、修改、合并、出版发行 ✅ 用于个人或商业项目 ✅ 在软件中包含协议声明 免责声明 本系统仅供技术学习交流使用 用户需自行承担使用风险 不得用于非法经营活动 遵守当地法律法规 开发者不承担任何法律责任 易码付 —— 重新定义个人支付解决方案,让每一分钱都安全直达您的账户。 📧 联系我们:2136118039@qq.com 🌐 官方网站:http://blog.yihang.info -
XQFChat: 现代化现代化实时聊天系统 XQFChat: 现代化现代化实时聊天系统 XQFChat 是一款企业级实时聊天解决方案,融合了简洁界面与强大功能,支持多房间通信、文件协作与机器人集成,为团队协作和社区交流提供高效平台。 注意:此项目目前处于测试阶段可能会有些许不良 核心特性 富媒体支持: 全格式文件传输 多消息类型支持 动态表情面板与最近使用记录 多维度协作: 无限聊天室创建与管理 成员权限分级(管理员/普通用户) 消息历史永久存储与快速检索 扩展能力: 完整RESTful API接口 Webhook机器人框架,支持事件驱动响应 响应式设计,完美适配移动端与桌面端 技术架构 模块技术栈核心组件前端HTML5, CSS3, JavaScriptMDUI框架, 自定义组件系统后端PHP 8.0+自研MVC框架, PSR-4自动加载通信HTTP/HTTPS消息轮询存储MySQL 8.0消息索引, 文件元数据扩展API, Webhook事件回调, 第三方集成快速部署 环境要求 PHP 8.2+ (需开启gd, fileinfo, curl,Redis(可选)扩展) MySQL 5.7+ 或 MariaDB 10.5+ Redis(Webhook推送队列) Web服务器 (Nginx/Apache) Composer (依赖管理) 安装步骤 # 克隆仓库 git clone https://gitee.com/XiaoFengQWQ/xqfchat.git cd xqfchat # 安装依赖 composer install # 启动内置服务器(开发环境) php -S localhost:8000配置伪静态(Apache用户无需手动配置) location / { try_files $uri $uri/ @rewrite; } # 重定向尾部斜杠的 URL location ~ ^(.+)/$ { if (!-d $request_filename) { return 301 /$1; } } # 将特定目录及其子目录和文件返回404 location ~ ^/(App|vendor|System|Writable)(/.*)?$ { return 404; } # 将所有其他请求发送到 index.php location @rewrite { rewrite ^/(.*)$ /index.php?/$1 last; } # 处理 PHP 文件(需要额外的 PHP 配置) location ~ \.php$ { include fastcgi_params; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; }配置WebHook定时推送(可选,如果你有机器人需求) 服务器安装Redis(保持默认用户名和密码) 添加定时任务(推荐一秒执行一次) cd 你的站点目录/CLI php WebhookProcessor.php 开发接口 API 集成 系统提供标准化RESTful接口,支持用户认证、消息管理、房间操作等功能: POST /api/v1/chat/send HTTP/1.1 Authorization: Bearer {token} Content-Type: application/json { "room_id": 42, "content": "Hello World", "is_markdown": false }详细接口文档请查阅 API 参考手册 机器人开发 通过Webhook实现自动化交互,支持消息监听、定时任务等场景: // 事件回调示例 (消息接收) { "event": "message.received", "data": { "message_id": 12345, "room_id": 42, "sender": { "id": 789, "name": "User" }, "content": "请查询今日天气", "timestamp": 1620000000 } }机器人开发指南见 Webhook 文档 📄 许可证 本项目采用 Apache License 2.0 开源许可,详情参见 LICENSE 文件。 Copyright 2025 XiaoFengQWQ Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0🤝 贡献指南 欢迎通过Issue提交反馈或直接PR参与开发,贡献前请阅读 贡献规范。 -
PHP 8.4 属性钩子:告别“又臭又长”的 Getter/Setter,这次终于爽了! 各位 PHP 码农们,有没有被写不完的getter和setter逼疯过? 比如想给一个User类的name属性加个“自动去除首尾空格”的功能,就得吭哧吭哧写个setName(),再在构造函数里调用一下……明明只是个小需求,代码却像老太太的裹脚布——又臭又长! 好消息是:PHP 8.4 带着「属性钩子」(Property Hooks)来拯救你的键盘了! 这玩意儿简直是“魔法属性”,让你用更优雅的方式控制属性的读写,从此和繁琐的样板代码说拜拜~ PHP图片 原来写代码也能“摸鱼”?属性钩子:真香! 以前要控制属性,你得这么干: class User { private string $name; // 写个setter去除空格 public function setName(string $name): void { $this->name = trim($name); } // 再写个getter防止手滑 public function getName(): string { return $this->name; } }内心 OS: 就这?一个属性要写俩方法?如果有 10 个属性,岂不是要写到天荒地老? 现在,属性钩子让你直接“贴脸开大”: class User { public string $name { set(string $value) { $this->name = trim($value); // 自动去空格,无需写setName() } } }翻译成人话: “我要这个属性在赋值时自动去掉空格,其他时候随便用!” 代码量直接减半,摸鱼时间这不就来了? 防坑神器:属性钩子的“超能力” 属性钩子不仅能“摸鱼”,还是个自带防坑 Buff 的“智能管家”: 自动防手残 比如年龄不能为负数?钩子直接给你“焊死”逻辑: public int $age { set(int $value) { if ($value < 0) throw new Exception("年龄还能是负数?你来自黑洞吗?"); $this->age = $value; } }效果: 谁敢赋值-18,直接甩他一脸异常! 偷偷搞事情 想给商品价格自动打九折?钩子微微一笑: public float $price { get => $this->price \* 0.9, // 读取时自动打折 set(float $value) { $this->price = $value > 100 ? 100 : $value; // 最高限价100 } }老板狂喜: 用户看到的永远是折扣价,实际价格还能偷偷限价! 代码可读性:再也不用“捉迷藏”了! 以前看别人的代码,属性逻辑藏在各种getX()和setX()里,像在玩“大家来找茬”: class Product { private $price; // 找吧,逻辑在setPrice()里! public function setPrice($price) { /\*...\*/ } }现在属性钩子直接把逻辑“怼”到你脸上: class Product { public float $price { set => $this->price = max(0, $value), // 价格不能为负,一眼看懂! get => $this->price \* 0.9 } }同事感动到哭: 终于不用满世界翻方法了! 终极偷懒:连初始化都省了! PHP 8.4 还贴心地给了init钩子,连构造函数里的赋值都能省: class BlogPost { public DateTime $createdAt { init { // 对象创建时自动初始化 $this->createdAt = new DateTime(); } } }翻译: “创建时间?不用你管,我出生时自动打上时间戳!” 最后总结:PHP 这次真的站起来了! 属性钩子就像给 PHP 属性装上了“智能开关”——写更少的代码,做更多的事,防更多的坑。 适用场景: 数据验证(比如邮箱格式、数值范围) 自动转换(比如日期格式化、单位换算) 权限控制(比如只读属性、日志记录) 最后一句劝退: 如果你还在用 PHP5.6……对不起,这玩意儿和你无关。但如果你在用现代 PHP,赶紧升级到 8.4,让你的代码体验飞升吧! -
澎湃OS 3.0再次迎来曝光:多终端无缝交互+灵动通知,都来了! 一款手机的市场表现如何,不仅仅和硬件堆料有关系,还和操作系统优化有关系,只有出色的优化,才能更好释放性能表现。 而以前说到系统优化,都会联想到海外的 iOS 系统,但随着时间的推移,国内操作系统的实力也逐渐提升。 不仅针对系统底层来进行优化,还带来了一系列给力的功能特性,加上国产新机的配置参数也在大幅度提升。 这都让国产品牌的竞争价值得到提升,也可以看出来,只有多方面的堆料与优化,才能够带来更好的体验。 图片 而随着时间的推移,澎湃 OS 3.0 的早期功能列表和测试计划近期密集曝光,其核心突破直指智能生态最大痛点:多设备间的无缝交互与智能感知能力。 同时新系统基于 Android 16 深度定制,以“灵动进化”为核心理念,推动小米“人-车-家”全生态体验进入全新阶段。 甚至可以说当汽车从机械代步工具进化为“第三生活空间”,操作系统的重要性已与引擎性能比肩。 关键近期有博主称新系统版本的两个卖点都变得很清晰了,对于米粉来说,未来只需要耐心进行等待即可。 图片 第一个是澎湃 OS 3.0 会打破设备间的数据壁垒,比如新系统引入“异源异构计算”能力,实现手机、汽车、家电间的算力流动与任务接力。 这一能力让用户在家中呼唤小爱同学设定导航路线,走进车库瞬间,SU7 车机已自动加载路线并准备出发。 而且系统通过 AI 学习用户行为习惯,实现硬件资源的智能调度,甚至有望支持情境感知能力,这标志着操作系统从被动响应转向主动服务。 因此多终端无缝交互的卖点与竞争价值,都会让新机的提升幅度更明显,这也是很值得关注的地方。 图片 第二个卖点则是通知系统的智能化,早期版本中被用户昵称为“灵动额头”的统一通知系统,在 3.0 版本中获得跨越式升级。 不出意外,新系统将充电提醒、家居设备状态变化等通知统一归集至屏幕顶部区域,实现信息的高效呈现与零打扰体验。 关键其 AI 能力也会从单纯语音助手升级为主动服务框架,比如系统基于用户习惯提供智能省电、跨应用数据自动同步等贴心服务。 重要通知如打车、外卖、计时器等状态通过“焦点通知”实时显示,用户扫一眼就能获取关键信息。 图片 另外在底层架构上,澎湃 OS 3.0 实现两大技术革命,比如在隐私安全方面,“隐私沙盒+AI 权限管家”将应用权限细化为 687 项可调控参数。 然后配合机器学习动态调整策略,能秒级拦截权限滥用行为,为用户隐私安全筑牢防线。 同时在性能层面,多项创新技术齐发力,Auracast 广播音频共享让手机秒变音频基站;通用测距 API 强化使 AR 应用定位精度突破毫米级。 重点是在生态布局上,其测试规模创小米历史记录,覆盖 27 款高端设备,横跨手机、折叠屏、平板全产品线。 图片 不出意外,系统预计随小米 16 系列在 2025 年 9 月首发,并逐步推送至近两年机型,未来发展值得期待。 虽然目前还只是部分细节爆料,但目前的手机市场内卷程度非常的夸张,无论是新机堆料还是系统功能都是如此。 这也导致小米手机想在竞争激烈的市场中脱颖而出,就必须要带来全新的变化,不然用户则很难对其产生选择欲望。 毕竟在操作系统上,澎湃 OS 系统这几年的发展节奏还是很迅速的,只有长时间维持下去,才能够带来好的结果。 图片 总而言之,如今的操作系统的竞争已超越功能堆砌,进入“懂你所需”的体验层面,只有这样,才能够立于不败之地。 对此,大家有什么想表达的吗?一起来说说看吧。 -
运维强推!贼好用的WAF来了,黑客直接懵圈! 在日新月异的网络安全环境中,0-day 漏洞、SQL 注入、XSS 攻击等层出不穷,运维们为了防护网站安全经常熬夜修补漏洞。而 UUSEC WAF,一款免费的开源 Web 应用防火墙,成为了运维的保护伞,让你轻松搞定网站安全项目简介 图片 UUSEC WAF 是一款业界领先的免费开源 Web 应用防火墙(WAF),它支持 AI 和语义引擎,具备三层防护,包括流量层、系统层和运行时层,专门针对网站被攻击的问题定制解决方案。不论你是新手运维还是高手,都能迅速上手并获得强大的安全能力。核心功能 图片 ⭐ 智能防御「0-day 漏洞」,堵住攻击源头 应用 AI 技术,自动学习正常流量特征,免去频繁更新规则的麻烦。 一有漏洞,自动识别攻击流量,无需加班升级规则库,肝不动的运维同胞有救了。 🚀 极致 CDN 加速,让加速和防护两手都硬 自带高级缓存机制,比传统 Nginx 支持更多样的规则匹配清理。 网站不卡,用户访问体验不打折! 🛡️ 主机与应用双层防护,安全拉满 系统层防御可以限制不必要的进程及网络活动,比如防止权限提升、溢出攻击。 应用层使用 RASP 技术实时拦截攻击,例如 SQL 注入和远程代码执行,网站更安心。 🔍 语义引擎识别更准,拦截攻击不误伤 内置 SQL、XSS 等四大语义分析引擎,结合深度解码技术,可还原 HTTP 中的各种内容,无论是 JSON 还是 Base64 都能完美防护。 告别频繁的误报,减少运维的判断时间。图片 💻 灵活的扩展,满足进阶用户需求 支持高度自定义的 Lua 规则写法,技术宅们可以自己扩展功能,比如写脚本针对高级场景防护,玩出无限可能! 图片 安装指南 🏠 主机版安装 系统要求:RHEL 7 及以上,推荐纯 Linux 服务器。 输入以下命令完成安装: sudo yum install -y ca-certificates curl https://uuwaf.uusec.com/waf-install -o waf-install && sudo bash ./waf-install && rm -f ./waf-install 安装成功后,会显示 "Congratulations, successful installation"。 🐳 Docker 版安装 确保持有 Docker CE 20.10.14+ 和 Docker Compose 2.0 以上版本: curl https://uuwaf.uusec.com/waf.tgz -o waf.tgz && tar -zxf waf.tgz sudo bash ./waf/uuwaf.sh 运行: bash ./waf/uuwaf.sh start🚪 初次使用指南 登录管理后台:https://<服务器 IP>:4443,默认用户为“admin”,密码为 “Passw0rd!” 。 添加网站域名、SSL 证书,全程傻瓜式操作。 修改 DNS 指向 UUSEC WAF 服务器 IP,测试域名访问,成功后 HTTP 头中会显示“uuWAF”。 图片 UUSEC WAF 是一款不可错过的开源神器,让运维从费力的线下防护中解放出来,轻松搞定网站安全。这款免费的 Web 应用防火墙不光保护能力到位,还附带极致 CDN 加速、AI 智能防护、精准语义分析等强大功能,你可以放心打包用它提升安全性能,完全不输商业大厂的解决方案。赶紧试一试吧! -
胖猫之死--为什么龟男绝无好下场 图片 首先,先对龟男下定义 龟男,指在婚恋或人际关系中无底线忍让、过度讨好对方,甚至丧失尊严的男性。常用来形容在不对等关系中盲目付出的男性。 这么看来,胖猫的就是广大龟男的代表 那么胖猫为什么会落得如此下场? 原因众说纷纭 我讲一下我的看法: 胖猫,是一个无害的、有一定财富的、爱打游戏的、宅男。 他的社会化程度过低,对这个世界的理解过少。 他忽略了人与人之间的博弈、算计。 他忽略了女性在婚恋当中会对男性进行废物测试。 总结成一句话就是:胖猫在恋爱当中,既没有任何原则、框架。又没有维护原则框架的能力。导致他只可能遇到捞女,并被对方吃干抹净。 他把小说和爽剧当成现实,天真的以为只要自己给对方花钱,自己就能有美好的爱情。 这绝对大错特错! 无论何时,男性必须不断强化社会化程度,增强社会能量,提高自己的社会地位。在婚恋中坚决反击对方的废物测试,并且贯彻“三要三不要”原则。 再回顾一下三要三不要原则: 三要三不要:男性在婚姻中的6条核心原则 三要:要陪伴,要理解,要立规矩 三不要:不要表演伟大,不要事事讲原则,不要原谅任何原则性错误 很显然,胖猫没有做到。 注意:三要三不要本质是“驭人之术”,是上级管理下级的“术”,但放在婚恋特别好使。 此外,胖猫不仅是一个个体,还是一种遭遇。 对于国家也是一样的道理。你想好好做生意,别的国家就会配合你吗? 绝无可能! 没有强大的国防,你就是任人宰割的牛羊。 清末:鸦片战争、八国联军侵华 民国:日军侵华 新中国:1998印尼排华,1999南斯拉夫大使馆 所以,对国家来讲,必须有强大的军事实力,才能维护自身安全和国际间的基本原则。 回过来讲 事实就是,这个世界一直如此: 1.流泪没有用,承诺靠不住,唯有铁血和手腕可以解决问题。 2.弱肉强食贯彻人类史。 3.宁做胖虎,不做胖猫。 -
PHP 8.5 来了!开发者必读升级指南! PHP 8.5 作为 PHP 语言的下一个重大版本更新,计划于 2025 年 11 月正式发布。本文将详细介绍 PHP 8.5 的预计发布日期、主要新特性、向后兼容性影响以及开发者在升级过程中需要注意的事项。 图片 PHP 8.5 的发布日期 根据 PHP 官方的发布周期政策,PHP 8.5 预计将于 2025 年 11 月正式发布。值得注意的是,PHP 团队有时会提前几天发布,如 PHP 8.4 就比原计划提前了两天发布。 PHP 8.5 发布后,将获得: 两年活跃支持(至 2027 年 12 月 31 日) 四年安全支持(至 2029 年 12 月 31 日) 核心新功能:curl_multi_get_handles PHP 8.5 中 Curl 扩展新增了一个重要函数curl_multi_get_handles,它可以从CurlMultiHandle对象返回一个包含所有CurlHandle对象的数组。 功能详解 $cm = curl_multi_init(); curl_multi_get_handles($cm); // 返回空数组 $ch1 = curl_init('https://example.com/foo'); $ch2 = curl_init('https://example.com/bar'); curl_multi_add_handle($cm, $ch1); curl_multi_add_handle($cm, $ch2); curl_multi_get_handles($cm); // 返回[$ch1, $ch2]这个函数完善了现有的 Curl 多句柄操作函数集,开发者不再需要自行维护CurlHandle对象列表或使用WeakMap来跟踪这些对象。 函数签名 /** * 获取给定CurlMultiHandle对象中的所有CurlHandle对象 * * @param CurlMultiHandle $multi_handle * @return array */ function curl_multi_get_handles(CurlMultiHandle $multi_handle): array {}向后兼容性 除非应用程序已经声明了自己的curl_multi_get_handles函数,否则这个新特性不会带来任何向后兼容性问题。 PHP 8.5 的其他预期改进 虽然目前关于 PHP 8.5 的完整功能列表尚未完全公布,但根据 PHP 近期的开发趋势和社区讨论,我们可以预期以下可能的改进方向: 性能优化:PHP 8.x 系列每个版本都带来了显著的性能提升,8.5 可能会继续这一趋势 类型系统增强:PHP 近年来不断加强类型系统,8.5 可能会引入更多类型相关特性 安全性改进:随着 PHP 对安全性的日益重视,8.5 可能会包含更多安全相关的更新 语言语法糖:简化常见模式的语法,如 PHP 8.0 引入的命名参数、8.1 的枚举等 升级建议 对于计划升级到 PHP 8.5 的开发者,建议: 测试环境先行:在开发或测试环境中先验证应用兼容性 关注弃用通知:检查当前版本中的弃用警告,这些通常会在下个主版本中移除 逐步升级:如果从较旧版本(如 PHP 7.x)升级,考虑先升级到 8.1 或 8.4 作为中间步骤 监控社区动态:关注 PHP 官方发布说明以获取 8.5 的完整变更列表 PHP 版本支持现状 值得注意的是,随着 PHP 8.5 的发布,一些旧版本将失去支持: PHP 8.0:已于 2023 年 11 月结束生命周期 PHP 7.4 及更早版本:已停止支持多年 许多主流服务和 SDK(如 AWS SDK)已开始放弃对这些旧版本的支持,因此升级到受支持的 PHP 版本变得越来越重要。 总结 PHP 8.5 作为 2025 年的主要版本更新,将继续推动 PHP 语言的现代化进程。虽然目前公布的新功能还不多,但curl_multi_get_handles的加入已经显示出 PHP 团队对开发者体验的关注。随着发布日期的临近,更多新特性将被公布,PHP 开发者社区应保持关注,为平稳升级做好准备。 PHP 语言虽然已经 25 岁了,但通过持续的创新和改进,它仍然是 Web 开发领域的重要力量,特别是在内容管理系统(如 WordPress)和企业应用中。PHP 8.5 的发布将进一步巩固其地位,为开发者提供更强大、更安全的工具。 -
一行代码搞定防抖节流:JavaScript新特性解析 防抖(Debounce)和节流(Throttle)是两种前端开发中常用的性能优化技术,尤其在处理高频触发事件如滚动、调整窗口大小、输入等场景中。传统实现这些功能需要编写复杂的函数,但随着 JavaScript 的发展,我们现在可以通过更简洁的方式实现这些功能。 图片 传统实现方式回顾 在深入新特性之前,让我们先回顾一下传统的防抖和节流实现方式: 传统防抖实现 function debounce(fn, delay) { let timer = null; returnfunction(...args) { if (timer) clearTimeout(timer); timer = setTimeout(() => { fn.apply(this, args); }, delay); }; } // 使用示例 const handleSearch = debounce(function(e) { console.log('搜索内容:', e.target.value); }, 300); searchInput.addEventListener('input', handleSearch);传统节流实现 function throttle(fn, delay) { let lastTime = 0; returnfunction(...args) { const now = Date.now(); if (now - lastTime >= delay) { fn.apply(this, args); lastTime = now; } }; } // 使用示例 const handleScroll = throttle(function() { console.log('页面滚动'); }, 200); window.addEventListener('scroll', handleScroll);JavaScript 新特性:函数装饰器 ECMAScript 的提案中引入了函数装饰器(Function Decorators),这是一种能够在不修改原始函数的情况下增强函数行为的语法。 注意:截至 2024 年 10 月,函数装饰器仍处于 TC39 提案阶段,可能需要通过 Babel 或 TypeScript 等工具进行转译才能使用。利用装饰器实现一行防抖 图片 现代化解决方案 使用 requestAnimationFrame 实现的节流 浏览器的requestAnimationFrameAPI 可以帮助我们实现一行代码的节流效果: 图片 利用 AbortController 实现简洁防抖 图片 使用 Web Streams API 实现防抖节流 随着 Web Streams API 的成熟,我们可以利用它实现更声明式的防抖和节流: 图片 第三方库的超简化方案 如果您使用诸如 Lodash、Underscore 等工具库,防抖节流变得极其简单: // Lodash import { debounce, throttle } from 'lodash'; // 一行防抖 element.addEventListener('input', _.debounce(handleInput, 300)); // 一行节流 window.addEventListener('scroll', _.throttle(handleScroll, 200));实际应用场景 搜索输入框:防抖可以避免用户每输入一个字符就发送请求 窗口调整:节流可以限制布局重新计算的频率 无限滚动:节流可以控制加载新内容的频率 游戏中的用户输入:确保按键响应不会过于频繁 拖拽元素:平滑拖拽效果而不造成性能问题 性能比较 实现方式优点缺点传统函数封装兼容性好,灵活性高代码冗长,需要手动管理装饰器语法简洁,声明式编程兼容性问题,需要转译requestAnimationFrame与浏览器渲染周期同步,性能好只适用于视觉相关操作AbortController清晰地管理取消机制相对新的 API,可能需要 polyfillWeb Streams声明式,功能强大API 复杂,兼容性有限第三方库简单,经过测试增加项目依赖和体积JavaScript 的发展让我们能够用越来越简洁的代码实现防抖和节流功能。根据项目需求和浏览器兼容性要求,可以选择最适合的实现方式。对于现代 web 应用,装饰器和最新的 Web API 提供了简洁优雅的解决方案;而对于需要广泛兼容的项目,传统实现或借助成熟的第三方库仍然是可靠的选择。 无论选择哪种方式,防抖和节流都是提升用户体验和应用性能的重要技术,值得每位前端开发者掌握。