ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

meld.js快速上手指南:5分钟给任意函数加日志,不改一行代码

meld.js快速上手指南:5分钟给任意函数加日志,不改一行代码 meld.js快速上手指南5分钟给任意函数加日志不改一行代码【免费下载链接】meldAOP for JS with before, around, on, afterReturning, afterThrowing, after advice, and pointcuts项目地址: https://gitcode.com/gh_mirrors/meld1/meld如果你曾为了调试在业务代码里满屏插console.log而头疼meld.js 就是为你准备的 JavaScript AOP面向切面编程工具一行代码即可给任意函数或对象方法加上日志、计时、缓存等外围功能完全不改动原始代码。本文带你 5 分钟上手这个轻量库 一句话理解 meld.jsmeld.js 把 Java 世界著名的 AOP 思想搬到了 JavaScript不侵入地给函数附加行为。它有 6 种 advice建议/通知分别挂在函数执行的不同时机上before—— 执行前on—— 执行后立刻afterReturning—— 正常返回后拿到返回值afterThrowing—— 抛异常后拿到异常对象after—— 无论返回还是抛异常总会执行around—— 完整包裹能改参数、改返回值甚至拦截原函数不执行 核心优势原函数始终不被修改行为随时可以移除。一行安装3种常用方式Node 环境最简单一条命令搞定npm install meldvar meld require(meld);浏览器 AMD 项目可用bower install meld或克隆源码阅读git clone https://gitcode.com/gh_mirrors/meld1/meld库的核心实现在入口文件meld.js中体积非常小。核心玩法5分钟给任意函数加日志场景想在doSomething方法返回后打印结果但不想动原代码 var myObject { doSomething: function(a, b) { return a b; } }; // 在返回成功后自动记录日志 var remover meld.afterReturning(myObject, doSomething, function(result) { console.log(doSomething 返回: result); }); myObject.doSomething(1, 2); // 控制台输出: doSomething 返回: 3再挂一个执行前的日志只需把afterReturning换成beforemeld.before(myObject, doSomething, function(a, b) { console.log(入参: a , b); });一行 advice日志就有了原函数一行未改 ✅6种advice速查表按需选择Advice触发时机收到的参数典型用途before函数执行前与原函数相同参数校验、入参日志on执行完立刻与原函数相同调用统计、监控埋点afterReturning正常返回后返回值结果日志afterThrowing抛出异常后异常对象错误上报after返回或抛异常都执行返回值或异常兜底清理around完整包裹原函数joinpoint含proceed计时、缓存、修改参数/返回值 新手建议只想打日志beforeafterReturning组合基本够用需要改返回值或做缓存时再上around。批量加日志用点切pointcut一次匹配多个方法第二个参数支持 4 种匹配方式轻松覆盖整组方法匹配方式示例效果字符串save精确匹配单个方法数组[save, update]匹配数组中所有方法正则/^fetch/匹配fetch开头的所有方法函数返回方法名数组的函数完全自定义规则// 一条 advice 覆盖所有 fetch* 方法 meld.before(myObject, /^fetch/, function() { console.log(开始请求...); });内置切面trace、memoize、cache 开箱即用除了手动写 advicemeld 还内置了 3 个组合拳切面一行接入traceaspect/trace.js自动打印每个方法的 CALL / RETURN / THROW排查调用链神器 memoizeaspect/memoize.js相同参数自动记忆结果第二次调用直接返回缓存cacheaspect/cache.js可指定任意存储介质的灵活缓存var trace require(meld/aspect/trace); meld(myObject, trace()); // 所有方法的调用、返回、异常自动打日志随时关闭日志remover.remove()对对象方法添加 advice 时返回值是移除器。调试完日志不再需要一行还原现场var remover meld.afterReturning(myObject, doSomething, fn); // ... 调试期间 remover.remove(); // 日志立刻消失业务代码干干净净⚠️ 小提示advice 直接加在独立函数或构造函数上时返回的是一个新函数原函数保持不变不用移除直接换回原函数即可。进阶学习路线想继续深入按顺序阅读仓库内文档即可无需安装纯 Markdowndocs/api.md—— 完整 API每种 advice 的参数与返回值docs/reference.md—— 概念参考joinpoint、advice 执行顺序、函数/构造函数切面示例docs/aspects.md—— 内置切面详解含自定义 reporter 和 key 生成器test/目录 —— 每类 advice 都有对应的测试用例照着读比看文档更快总结meld.js 把加日志、做监控、上缓存这些横切关注点从业务代码里彻底剥离装一行、写三行、随时移除。给任意函数加日志真的只要 5 分钟剩下的交给 AOP ✨【免费下载链接】meldAOP for JS with before, around, on, afterReturning, afterThrowing, after advice, and pointcuts项目地址: https://gitcode.com/gh_mirrors/meld1/meld创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表