{
  "articles": [
    {
      "url": "/2026/07/13/我们为什么需要一个私人Agent/",
      "title": "我们为什么需要一个私人 Agent",
      "excerpt": "本文讨论了 Agent 的本质，以及它将如何重塑经济协作模式。核心结论是，Agent 凭借独立产出价值的劳动力属性，将打破传统的平台垄断，带来一个人人拥有数据主权、点对点高效交易的去中心化时代。如果你正在思考 AI 时代下个人生存范式与平台经济的演变，可以优先关注本文的宏观推演；但如果你仅仅寻找开发 Agent 的具体代码教程，则不建议阅读。",
      "tags": [
        "Agent",
        "数据主权",
        "去中心化",
        "MCP"
      ],
      "series": "digital-sovereignty",
      "seriesName": "数字主权",
      "date": "2026-07-13"
    },
    {
      "url": "/2026/05/23/AI 不止能10倍速开发，还能10倍速学习/",
      "title": "AI 不止能10倍速开发，还能10倍速学习",
      "excerpt": "本文回答了如何借助AI实现技术的10倍速学习，以及这种极速学习带来的代价。核心结论是：通过ChatGPT和Codex等工具，开发者可以极大地压缩技术调研与代码试错成本，在短时间内掌握新技术的骨架；但缺乏亲身踩坑的经历会导致知识缺乏“血肉”，难以形成深度的技术直觉。在AI时代，工程师的核心竞争力将向判断力和系统思维转移。如果你正在探索如何利用AI高效学习新架构（如Agent开发），可以优先关注本文的实践路径与反思；但如果你是一个缺乏工程经验和基础系统思维的初学者，则不建议盲目跟风这种速成方法。",
      "tags": [],
      "series": "ai",
      "seriesName": "AI 实践",
      "date": "2026-05-23"
    },
    {
      "url": "/2026/03/17/Hello-Obsidian/",
      "title": "Hello Obsidian",
      "excerpt": "本文是一篇展示Obsidian初次发布测试的简短图文。核心结论是：本文仅包含一张“Hello Obsidian”的图片，作为作者相关主题的欢迎或占位内容，无深入探讨。如果你正在围观作者的博客更新动态或了解其使用的工具流向，可以简单浏览；但如果你希望获取Obsidian的具体使用技巧、插件配置等深度教程，则不建议在此花费时间。",
      "tags": [
        "Obsidian"
      ],
      "series": "",
      "seriesName": "文章",
      "date": "2026-03-17"
    },
    {
      "url": "/2026/02/27/一个VibeCoder的自我修养/",
      "title": "一个 VibeCoder 的自我修养",
      "excerpt": "本文讨论了在当前AI辅助开发（Vibe Coding）时代，开发者应如何高效利用大模型工具提升产能的问题。核心结论是：尽管AI能极大加速代码编写，但构思、架构设计和业务决策仍需人类主导；复杂任务的成功率高度依赖于充分的上下文和清晰的规则拆分。如果你正在使用 Cursor 等 AI IDE 并希望突破单句 Prompt 经常失败的瓶颈，可以优先关注本文提供的代码保护、上下文运营和任务拆分策略；但如果你期望完全依靠 AI 零门槛完成大型复杂项目，则不建议抱有这种不切实际的幻想。继续阅读可以深入了解作者在一年多重度使用AI辅助开发中总结的最佳实践，以及如何在这个新时代建立自己不可替代的核心竞争力。",
      "tags": [
        "VibeCode",
        "Cursor",
        "最佳实践"
      ],
      "series": "ai",
      "seriesName": "AI 实践",
      "date": "2026-02-27"
    },
    {
      "url": "/2026/02/26/与Gemini_3.1_Pro的一次深度对谈/",
      "title": "与 Gemini 3.1 Pro 的一次深度对谈——关于代码、避世与使命",
      "excerpt": "本文记录并探讨了当前先进AI模型在深层次人类意图理解、长期主题维系和情绪承接能力方面能达到何种高度的问题。核心结论是：先进大模型已经不再是单纯的扭蛋机，而是能够敏锐捕捉话语背后的潜意识冲突、并在对话中保持高度连贯性与情感共鸣的平等交流对象。如果你正在研究大模型的自然语言交互表现，或者对技术人在商业现实与内心热爱之间的撕裂感有共鸣，可以优先关注这篇真实的对谈记录；但如果你只寻找具体的代码技术实现细节，则不建议阅读本文。继续阅读，你将看到一次抽丝剥茧般的灵魂拷问，体验 AI 是如何引导创作者直面内心深处的孤独、创作动机以及对绝对掌控感的渴望。",
      "tags": [
        "思考",
        "对话",
        "AI"
      ],
      "series": "ai",
      "seriesName": "AI 实践",
      "date": "2026-02-26"
    },
    {
      "url": "/2026/01/04/GitPortrait - AI 驱动的 GitHub 开发者画像生成工具/",
      "title": "GitPortrait - AI 驱动的 GitHub 开发者画像生成工具",
      "excerpt": "本文讨论了如何利用AI技术深度分析并生成GitHub开发者画像。核心结论是：GitPortrait是一款AI驱动的工具，它通过四阶段AI流水线（分析、洞察、凝视、写作），将传统的GitHub提交数据转化为包含开发者风格、工作习惯和技术偏好的深度洞察卡片。如果你正在打造个人技术品牌，或者作为面试官希望快速了解候选人的真实技术背景，可以优先关注本文介绍的智能分析功能与多模板可视化效果；但如果你对AI生成的内容持保守态度或仅需简单的提交统计图，则不建议尝试。",
      "tags": [
        "Github",
        "AI",
        "Portrait"
      ],
      "series": "ai",
      "seriesName": "AI 实践",
      "date": "2026-01-04"
    },
    {
      "url": "/2025/05/28/GitHub Card - 以图片或链接形式分享你的 Github 贡献卡片/",
      "title": "GitHub Card - 以图片或链接形式分享你的 Github 贡献卡片",
      "excerpt": "本文回答了如何以美观直观的方式分享和展示个人GitHub贡献数据的问题。核心结论是：GitHub Card是一个在线工具，它通过OAuth授权自动分析用户的贡献统计，并生成支持多种模板、可下载、可链接分享的高清开发者卡片，同时自带排行榜功能。如果你正在寻找一种优雅的方式在社交媒体、个人网站或求职简历中展示自己的开源活跃度和技术实力，可以优先关注本文的工具介绍与使用示例；但如果你本身很少使用GitHub或不打算公开代码贡献数据，则不建议阅读。",
      "tags": [
        "GitHub Card"
      ],
      "series": "frontend",
      "seriesName": "前端工程",
      "date": "2025-05-28"
    },
    {
      "url": "/2025/05/11/New Countdown Timer 浏览器倒计时扩展/",
      "title": "New Countdown Timer 浏览器倒计时扩展——自定义计时、自定义声音/颜色、云同步、快捷启动列表、动态图标和通知",
      "excerpt": "本文介绍了一款名为 New Countdown Timer 的浏览器倒计时扩展。核心结论是：该工具提供自定义计时器、快捷列表、云同步和即时通知等丰富功能，能够精准灵活地管理时间，且注重本地隐私与轻量高效。如果你正在寻找一个支持多场景（如专注工作、烹饪、健身等）的时间管理辅助工具，可以优先关注并安装体验；但如果你不需要网页端的倒计时功能，则不建议深入阅读。本文提供了该插件的详细功能清单与开源仓库地址，适合对效率工具感兴趣的读者继续了解。",
      "tags": [
        "AI",
        "ChromeExtension",
        "NewCountdownTimer"
      ],
      "series": "ai",
      "seriesName": "AI 实践",
      "date": "2025-05-11"
    },
    {
      "url": "/2025/04/29/New-Countdown-Timer——AI全流程驱动的Chrome扩展开发实录/",
      "title": "New Countdown Timer——AI 全流程驱动的 Chrome 扩展开发实录",
      "excerpt": "本文探讨了如何通过 AI 全流程驱动开发 Chrome 扩展（New Countdown Timer）的真实体验。核心结论是：AI 能极大加速需求编写、素材设计与代码开发，但它仅仅是翻译官和工具，无法替代开发者对技术边界的认知；过度依赖 AI 可能导致工程师失去实践沉淀的机会。如果你正在尝试利用 Cursor 等 AI 工具独立完成完整项目，可以优先关注本文的开发复盘与反思；但如果你只想要具体的代码实现细节，则不建议阅读。继续阅读可以为你提供 AI 辅助开发的实战参考与深度思考。",
      "tags": [
        "AI",
        "ChromeExtension",
        "NewCountdownTimer"
      ],
      "series": "ai",
      "seriesName": "AI 实践",
      "date": "2025-04-29"
    },
    {
      "url": "/2023/05/06/HelloHexoAgain/",
      "title": "Hello Hexo Again",
      "excerpt": "本文回答了Hexo博客源文件丢失后如何重建，以及在此过程中如何优化博客配置的问题。核心结论是：源文件丢失后只能依赖工具将HTML手动转回Markdown；在重建时，建议通过分离分支部署来备份源文件，同时可以通过修改主题模板实现自定义独立页面、插入底部版权锚文本、控制首页摘要以及修复字数统计Bug。如果你正在经历Hexo博客的数据重建，或者希望对NexT主题进行深度的客制化改造，可以优先关注本文的踩坑记录与代码示例；但如果你使用的是其他博客引擎，则不建议阅读。",
      "tags": [
        "Hexo"
      ],
      "series": "",
      "seriesName": "文章",
      "date": "2023-05-06"
    },
    {
      "url": "/2022/05/26/网络视频的防盗与破解/",
      "title": "网络视频的防盗与破解",
      "excerpt": "本文回答了如何在前端浏览器环境下对 HTML5 网络视频进行防盗、防录屏保护及对应破解原理的问题。核心结论是：在浏览器端不存在绝对的安全，但通过“动态权限接口拦截+HLS私有加密+定制前端播放器+后端视频水印”的组合策略，能以极高性价比阻挡绝大多数自动化下载工具和非专业攻击者；要实现彻底防护只能依靠专用客户端环境。如果你正在负责在线教育或版权视频平台的安全架构，可以优先关注本文中基于 HLS 协议的私有加密思路及落地成本分析；但如果你的视频允许完全公开播放，则无需关注。继续阅读本文，你将了解常见盗播手段的攻防博弈，以及一套现成的开源加密播放解决方案。",
      "tags": [
        "前端加密"
      ],
      "series": "frontend",
      "seriesName": "前端工程",
      "date": "2022-05-26"
    },
    {
      "url": "/2019/12/16/2019-good-lesson/",
      "title": "搬砖狗年度好物推荐-《职场的真相》",
      "excerpt": "本文讨论了高强度工作与个人成长之间的关系，并探讨了如何获取更广阔的职场认知。核心结论是：盲目的高强度忙碌存在边际效应，当失去思考和复盘的时间时，个人的能力并不会随之等比增长。要突破局限，就必须跳出个体的狭隘视角去学习商业社会中的职场真相。如果你正在被繁重且缺乏反思的工作压得喘不过气，或者希望提升自己的职场认知维度，可以优先关注本文的经验复盘及对《职场的真相》课程的推荐；但如果你的诉求仅是解决某个具体的技术Bug，则不建议阅读。",
      "tags": [
        "学习方法"
      ],
      "series": "",
      "seriesName": "文章",
      "date": "2019-12-16"
    },
    {
      "url": "/2019/08/02/vip-kaikeba-vue-lesson/",
      "title": "阿里P7前端高级工程师，都需要掌握哪些技术栈？",
      "excerpt": "本文主要分享了一份面向前端开发者的进阶学习资料与课程推广。核心结论是：要达到阿里 P7 级别的高级前端工程师，不仅需要扎实的编程能力，还必须在 Vue 等框架的源码层面（如响应式原理、依赖收集、编译追加等）以及组件架构设计上有深厚的积淀。如果你正处于初中级阶段并渴望突破技术瓶颈，可以优先关注文中提供的“Web全栈架构师所需技术栈”思维导图及免费 VIP 课程资源；但如果你对商业推广内容或当前技术栈进阶暂无需求，则不建议继续阅读。本文列出的核心知识大纲也为自学 Vue 源码指明了方向。",
      "tags": [
        "推广"
      ],
      "series": "frontend",
      "seriesName": "前端工程",
      "date": "2019-08-02"
    },
    {
      "url": "/2019/08/02/从Hexo文章置顶看需求分析思路/",
      "title": "从Hexo文章置顶看需求分析思路",
      "excerpt": "本文通过探讨 Hexo 博客文章置顶功能的实现方案，回答了如何进行正确的需求分析以及避免过度工程化的问题。核心结论是：实现一个需求不仅要达到表面效果，更要符合产品逻辑本质；错误的设计（如用排序代替置顶、翻页后依旧置顶）往往源于产品思维的匮乏。如果你正在为博客开发新功能，或者希望提升自己拨开表象看清需求本质的产品思维能力，可以优先关注本文的案例剖析；但如果你只是想直接复制一段置顶代码而不在乎底层逻辑，则不建议阅读。继续阅读可以了解这几种常见错误实现的深层原因，以及如何通过多实践、多归纳来提升自己的思维高度，避免在日常开发中踩入低级的产品逻辑陷阱。",
      "tags": [
        "学习方法",
        "Hexo"
      ],
      "series": "",
      "seriesName": "文章",
      "date": "2019-08-02"
    },
    {
      "url": "/2019/07/22/随手开源一个微信小程序仪表盘组件/",
      "title": "随手开源一个微信小程序仪表盘组件",
      "excerpt": "本文回答了如何使用官方工具开发并开源一个微信小程序自定义组件，以及开发过程中容易踩到哪些坑的问题。核心结论是：借助官方 CLI 工具可以顺利完成组件的构建与 npm 发布，但开发体验常因过时的工程依赖、严苛的 ESLint 规则以及碎片化的官方文档而大打折扣；此外，组件内使用 Canvas 必须传入 `this`，且小程序引入 npm 包需经特定构建步骤。如果你正在尝试封装微信小程序 npm 自定义组件，可以优先关注文中的 Canvas 传参避坑细节及 npm 安装构建流程；但如果你只使用现成的 UI 库，则不建议深入了解。继续阅读本文，你不仅能获得开发全流程的踩坑经验，还能看到作者对小程序闭源生态及跨端框架的深度反思。",
      "tags": [
        "npm",
        "小程序"
      ],
      "series": "frontend",
      "seriesName": "前端工程",
      "date": "2019-07-22"
    },
    {
      "url": "/2019/04/27/监听Canvas内部元素点击事件的三种方法/",
      "title": "监听Canvas内部元素点击事件的三种方法",
      "excerpt": "本文回答了如何监听及判断HTML5 Canvas内部不规则图形的点击事件的问题。核心结论是：因为Canvas内部没有DOM元素，必须通过监听画布本身的点击坐标来反推触发区域；在常用的像素法、角度法和射线法中，射线法（判断坐标向一侧引射线与边界交点个数的奇偶性）不仅不受多边形凹凸形状限制，而且实现简单、性能可靠，是工程实践的最佳选择。如果你正在基于原生Canvas开发具有复杂图形交互的应用或游戏，可以优先关注文中射线法的具体JS实现；但如果你使用的是ECharts等成熟可视化图表库，则无需手动处理。继续阅读本文，你将获得这三种方法的原理解析及完整的事件检测代码对比。",
      "tags": [
        "canvas"
      ],
      "series": "frontend",
      "seriesName": "前端工程",
      "date": "2019-04-27"
    },
    {
      "url": "/2019/04/01/iBeacon蓝牙定位技术原理及实现/",
      "title": "iBeacon蓝牙定位技术原理及实现",
      "excerpt": "本文介绍了 iBeacon 蓝牙定位技术中一维定位与二维定位的实现原理。核心结论是：一维定位依赖沿固定路线部署信标，成本低且开发简单，适用于景区等固定路线场景；二维定位则基于三角形三边关系公式在网状部署的信标中进行坐标计算，适应性强但部署要求高，适用于展会、商场等开放空间。如果你正在开发基于 iBeacon 的室内导航、寻车或位置向导小程序，可以优先关注本文的算法原理解析及代码示例；但如果你仅关注高精度的室外 GPS 定位技术，则不建议阅读。继续阅读能够让你快速掌握如何将蓝牙测距结果转化为实际的二维坐标信息。",
      "tags": [
        "小程序",
        "iBeacon",
        "蓝牙定位"
      ],
      "series": "frontend",
      "seriesName": "前端工程",
      "date": "2019-04-01"
    },
    {
      "url": "/2019/03/30/微信小程序iBeacon测距及稳定程序的实现/",
      "title": "微信小程序iBeacon测距及稳定程序的实现",
      "excerpt": "本文回答了如何在微信小程序中利用iBeacon技术实现距离测量及保持数据稳定的问题。核心结论是：通过合理的公式将信号强度（rssi）转化为距离是可行的，采用特定指数公式相较于常规公式在未经精校时更具稳定性；同时必须结合数据滤波（如高斯模糊）、时间加权与动态跟进策略来抹平信号的物理波动。如果你正在开发基于蓝牙近场通信（如室内定位、周边互动）的应用，可以优先关注文中的防抖动算法实现；但如果只涉及单纯的蓝牙连接，则不建议深究。继续阅读本文，你将获得测距算法的JavaScript实现代码及真实场景下的表现对比。",
      "tags": [
        "小程序",
        "iBeacon",
        "蓝牙定位"
      ],
      "series": "frontend",
      "seriesName": "前端工程",
      "date": "2019-03-30"
    },
    {
      "url": "/2019/02/27/给前端自学者的建议/",
      "title": "给前端自学者的建议",
      "excerpt": "本文回答了面对爆炸式发展的前端技术生态，自学者应该如何规划学习路径的问题。核心结论是：初学者必须坚守基础（HTML/CSS/JS），切忌过早盲目追逐高级框架；自学的关键在于理清技术脉络、理解技术演进背后的业务诉求，最终要意识到“视野才是最高的技术壁垒”。如果你正在自学前端且面对繁杂的名词感到焦虑，可以优先关注文中关于打基础与做个人项目的实操建议；但如果你已经是具备多年工作经验的高级工程师，则不建议在此花费过多时间。继续阅读本文，你将获得作者六年自学经历总结出的求职“证据”积累法则，以及如何避开初学者常踩的学习陷阱。",
      "tags": [
        "学习方法"
      ],
      "series": "",
      "seriesName": "文章",
      "date": "2019-02-27"
    },
    {
      "url": "/2019/02/25/时隔两年，再次上手小程序开发/",
      "title": "时隔两年，再次上手小程序开发",
      "excerpt": "本文回答了在2019年节点重新审视微信小程序开发，其生态与体验发生了哪些变化的问题。核心结论是：小程序的开发环境已经非常成熟，真机调试体验惊艳，尤其是“云开发”作为无后端服务的典范，彻底打破了全栈开发的门槛；但在Canvas应用和开发者社区支持上仍存遗憾。如果你正在评估是否要使用小程序原生框架及云开发来构建独立项目，可以优先关注本文的实际体验总结；但如果你追求的是跨端统一架构，则不建议完全认同作者的悲观态度。继续阅读本文，你将了解作者基于《宝贝成长助理》项目的实战反思与踩坑细节。",
      "tags": [
        "小程序"
      ],
      "series": "frontend",
      "seriesName": "前端工程",
      "date": "2019-02-25"
    },
    {
      "url": "/2019/01/22/2018年度总结，一个技术人的而立之年/",
      "title": "2018年度总结，一个技术人的而立之年",
      "excerpt": "本文回答了一个技术人在30岁这一年面临的职业与生活转变及反思。核心结论是：而立之年伴随着家庭负担加重与身体精力下降，技术人需要重新审视自身的核心价值，通过持续输出（如博客、开源、知识付费）和理财等途径建立护城河。如果你正在经历类似的中年危机、职业转折点，或是想要平衡家庭与个人成长，可以优先关注本文关于个人品牌塑造和生活感悟的真实经验；但如果你的目的是寻找纯粹的前沿硬核技术教程，则不建议深入阅读。",
      "tags": [
        "年度总结"
      ],
      "series": "",
      "seriesName": "文章",
      "date": "2019-01-22"
    },
    {
      "url": "/2019/01/09/前端检测修复IOS拍照旋转问题/",
      "title": "前端检测修复IOS拍照旋转问题",
      "excerpt": "本文回答了如何在前端页面中检测并修复苹果手机（iOS）竖向拍照导致的图片逆时针旋转 90 度显示异常的问题。核心结论是：通过提取图片 EXIF 信息读取 orientation 属性，并借助 Canvas 重新绘制纠正旋转角度，最终输出 Base64，可以有效解决此问题。如果你正在开发需要捕获相册上传或直接展示 iOS 未处理图片的前端功能，可以优先关注本文提供的开源工具 ios-photo-repair；但如果你在后端统一处理图片或客户端原生已经抹平了图片旋转差异，则不建议在前端重复处理。继续阅读可以了解该工具在修复 File 对象和页面现存 img 标签两种场景下的具体 API 用法及压缩配置方案。",
      "tags": [
        "JavaScript"
      ],
      "series": "frontend",
      "seriesName": "前端工程",
      "date": "2019-01-09"
    },
    {
      "url": "/2018/12/04/Vue CLI 3 浏览器兼容性配置/",
      "title": "Vue CLI 3 浏览器兼容性配置",
      "excerpt": "本文探讨了在 Vue CLI 3 项目中如何配置浏览器兼容性。核心结论是：对于源码，可通过修改 `browserslist` 自动检测并转译语言特性；对于第三方依赖包，则需通过配置 `transpileDependencies` 显式指定，或在 `babel.config.js` 中设置引入全部 polyfill，以彻底解决兼容性报错。如果你正在使用 Vue CLI 3 并遇到了旧版浏览器（如 IE10）的运行兼容性问题，可以优先关注本文提供的几种解决方案；但如果你的项目仅需兼容现代浏览器，则不建议深入阅读。本文还分享了部分 IE10 下的特殊踩坑经验，对排查特定兼容性问题具有参考价值。",
      "tags": [
        "Vue-CLI"
      ],
      "series": "frontend",
      "seriesName": "前端工程",
      "date": "2018-12-04"
    },
    {
      "url": "/2018/09/03/HTML5实现文件读取、编辑、保存/",
      "title": "HTML5实现文件读取、编辑、保存",
      "excerpt": "本文讨论了如何纯粹基于HTML5技术实现本地文件的读取、编辑与保存。核心结论是：利用HTML5原生的FileReader API可以轻松读取文件内容（如文本），而结合URL.createObjectURL()和Blob对象则能将内存中的数据生成可下载的文件链接，从而实现纯前端的文件闭环操作。如果你正在开发一款不依赖后端的轻量级本地工具（如JSON格式化、文本处理等），可以优先关注本文提供的API用法和示例代码；但如果你的项目需要兼容老旧浏览器（如IE）或需处理超大型文件，则不建议采用此方案。",
      "tags": [],
      "series": "frontend",
      "seriesName": "前端工程",
      "date": "2018-09-03"
    },
    {
      "url": "/2018/08/09/《Hybrid App开发快速指南》新课上线！/",
      "title": "《Hybrid App开发快速指南》新课上线！",
      "excerpt": "本文讨论了前端开发者如何快速入门并掌握混合应用（Hybrid App）开发的问题。核心结论是：混合应用开发作为一种轻便可靠的技术手段已在前端落地，对于刚接触混合开发的新人而言，直接上手一套经过多年项目验证的方式方法和框架，远比自己查阅零散文档或求助论坛更有效率。如果你正在准备使用 APICloud 等平台进行跨平台开发，或者需要将 Web 项目快速打包发布为 App，可以优先关注本篇课程指南；但如果你开发的是对性能要求极为严苛的大型游戏或需要深度底层系统权限的应用，则不建议采用混合开发模式。继续阅读可以了解《Hybrid App开发快速指南》的详细课程大纲、涵盖从理论基础到框架搭建的完整实战路径，以及获取免费学习名额的活动说明。",
      "tags": [
        "看风景",
        "HybridStart"
      ],
      "series": "frontend",
      "seriesName": "前端工程",
      "date": "2018-08-09"
    },
    {
      "url": "/2018/08/03/基于Vue实现动态组织结构图/",
      "title": "基于Vue实现动态组织结构图",
      "excerpt": "本文探讨了如何摆脱 jQuery 依赖，纯基于 Vue 框架实现动态组织结构图（家谱图）的问题。核心结论是：相较于复杂的 DIV+CSS 计算或 Canvas 绘制，巧妙利用 HTML 原生 <table> 标签的行列嵌套特性，可以极简且完美地实现多层级树形结构的布局与连线。如果你正在开发基于 Vue 的前端项目，且需要渲染带上下级关系的组织架构图、家谱图，可以优先关注本文提供的开源组件 Vue-Tree-Chart 及其实现思路；但如果你需要呈现极其庞大、包含数万节点的复杂图谱，则不建议使用 DOM 渲染方案而应考虑 Canvas/WebGL。继续阅读可以详细了解放弃常规布局思路的过程、利用 Table 特性实现连线的神来之笔，以及借助 vue-cli 3.0 快速构建独立库组件的技巧。",
      "tags": [
        "Vue",
        "Vue-Tree-Chart"
      ],
      "series": "frontend",
      "seriesName": "前端工程",
      "date": "2018-08-03"
    },
    {
      "url": "/2018/07/02/如何计算一款保险的杠杆/",
      "title": "如何计算一款保险的杠杆",
      "excerpt": "本文探讨了对于普通家庭经济支柱而言，如何通过理性的财务计算来衡量商业保险（如重疾险）真实投入产出比的问题。核心结论是：保险的本质就是杠杆，通过复利计算器对比“按年存保费理财”和“直接购买消费型保险”的最终收益差额，可以直观得出保险产品的实际杠杆倍数（例如得出 3 倍杠杆）。如果你近期有购买保险的需求，且在“消费型”与“返还型”之间犹豫不决，可以优先关注本文提供的算账逻辑与复利小工具；但如果你的资金运作稳定年化收益率能超过 13% 或拥有庞大商业资本，则无需过度依赖此类基础保障。继续阅读可以了解作者从排斥保险到主动配置的心路历程，以及认清“返还型保险”时间成本陷阱的实用建议。",
      "tags": [
        "看风景"
      ],
      "series": "",
      "seriesName": "文章",
      "date": "2018-07-02"
    },
    {
      "url": "/2018/04/27/HybridStart v1.2.0 更新日志/",
      "title": "HybridStart v1.2.0 更新日志",
      "excerpt": "本文介绍了 HybridStart v1.2.0 的版本更新日志。核心结论是：新版本主要新增了基于 zip 模块的热插拔插件机制以及沉浸式 UI 支持，同时通过优化页面样式文件和进场动画提升了加载性能，并修复了 iOS 环境下的事件委托 BUG。如果你正在使用 HybridStart 开发项目，可以优先关注这些新特性以提升用户体验和开发效率；但如果你不使用该框架，则不建议花费过多时间阅读。阅读本文可以帮助你全面了解该版本的技术改进及实操方法。",
      "tags": [
        "HybridStart"
      ],
      "series": "frontend",
      "seriesName": "前端工程",
      "date": "2018-04-27"
    },
    {
      "url": "/2018/03/07/AJAX-Cache：一款好用的Ajax缓存插件/",
      "title": "AJAX-Cache：一款好用的Ajax缓存插件",
      "excerpt": "本文介绍了一款名为AJAX-Cache的jQuery缓存插件，回答了如何优化前端频繁异步请求的问题。核心结论是：该插件通过定时缓存、快照缓存和请求并发拦截等机制，能在保障数据更新的同时显著提升界面响应速度并减少网络资源占用。如果你正在维护或开发基于jQuery的老旧项目，并且遇到了Ajax请求冗余、界面加载慢等性能瓶颈，可以优先关注本文提供的各缓存策略应用场景；但如果你当前的技术栈已全面拥抱Vue/React或现代请求库（如Axios），则不建议深入阅读。",
      "tags": [
        "JavaScript"
      ],
      "series": "frontend",
      "seriesName": "前端工程",
      "date": "2018-03-07"
    },
    {
      "url": "/2018/02/07/前端页面热更新实现方案/",
      "title": "前端页面热更新实现方案",
      "excerpt": "本文探讨了如何在混合应用（Hybrid App）或对加载速度有极致追求的 Web 页面中实现前端页面的热更新方案，以兼顾加载性能与发布灵活性。核心结论是：通过将页面模板代码（HTML/CSS/JS）离线缓存至 localStorage 并在每次加载时优先渲染，同时在后台静默比对与拉取最新版本的模板或补丁包，可以实现页面秒开并随时热更。如果你正在开发 APP 内嵌的频繁改版页面或电商活动皮肤，且希望摆脱客户端发版限制，可以优先关注这套 WEB-OTA 方案；但如果你开发的是体积庞大、交互复杂的单页应用（SPA）且代码超过本地存储限制，则不建议采用此方案。继续阅读可以详细了解该方案的整体流程设计、前后端接口数据约定、模板文件打包格式以及实际落地案例源码。",
      "tags": [
        "JavaScript"
      ],
      "series": "frontend",
      "seriesName": "前端工程",
      "date": "2018-02-07"
    },
    {
      "url": "/2017/11/28/Vue2.0用户权限控制解决方案/",
      "title": "Vue2.0用户权限控制解决方案",
      "excerpt": "本文介绍了一套名为 Vue-Access-Control 的前端用户权限控制解决方案。核心结论是：通过结合 Vue、Vue-Router 和 axios，能够在路由、视图、请求三个层面上实施动态拦截与按需加载，从而实现任意颗粒度的权限控制（最小依赖原则）。如果你正在为 Vue 2.0 项目设计基于角色或细粒度操作的权限管理系统，可以优先关注本文的实现思路和示例代码；但如果你使用的是其他前端框架或纯后端路由控制方案，则不建议直接照搬。继续阅读能够让你深入了解如何优雅地处理动态路由注册、按钮级视图控制以及统一请求拦截。",
      "tags": [
        "Vue"
      ],
      "series": "frontend",
      "seriesName": "前端工程",
      "date": "2017-11-28"
    },
    {
      "url": "/2017/11/16/Vue2.0开发风格指南/",
      "title": "Vue2.0开发风格指南",
      "excerpt": "本文对 Vue 官方风格指南进行了重新注解与归类。核心结论是：遵循组件命名规范、使用单文件组件、强制设置 `scoped` 样式等做法能够显著提升 Vue 2.0 项目的代码健壮性、可读性和渲染性能。如果你正在参与多人协作的 Vue 项目或希望统一团队的开发规范，可以优先关注这些经过重新梳理的最佳实践；但如果你已经熟谙官方风格指南且团队有固定规范，则不建议继续阅读。本文剔除了冗余项并按作用（框架约束、性能、健壮性、可读性）重新分类，能帮助读者更高效地查阅和应用。",
      "tags": [
        "Vue"
      ],
      "series": "frontend",
      "seriesName": "前端工程",
      "date": "2017-11-16"
    },
    {
      "url": "/2017/10/28/如何不用构建工具开发Vue全家桶项目/",
      "title": "如何不用构建工具开发Vue全家桶项目",
      "excerpt": "本文探讨了在老旧渐进式项目或不打算引入 Webpack 等构建工具的场景下，如何优雅地开发 Vue 全家桶（Vue + Vue-Router + Vuex）项目的问题。核心结论是：借助前端模块加载器（如 seajs）配合 Vue 的异步组件特性，完全可以实现无需本地编译的模块化组件加载，保持代码组织上的清晰度。如果你需要在不支持现代前端构建流的遗留系统中接入 Vue 体系，或者想体验一种返璞归真的模块化开发方式，可以优先关注本文提供的“一切皆模块”实践方案；但如果你正在开发一个庞大的全新单页应用（SPA）且团队已经熟练掌握构建工具，则不建议倒退回这种会增加 HTTP 请求数的方案。继续阅读可以了解整体项目目录组织、异步路由的配置方法，以及如何用纯 JS 模块模拟类似 .vue 单文件组件的结构。",
      "tags": [
        "Vue"
      ],
      "series": "frontend",
      "seriesName": "前端工程",
      "date": "2017-10-28"
    },
    {
      "url": "/2017/09/22/RESTful学习及应用/",
      "title": "RESTful学习及应用",
      "excerpt": "本文介绍了 RESTful 架构的基本概念及应用方法。核心结论是：RESTful 是基于资源定位和 HTTP 动词操作的 API 设计风格，具备无状态、统一接口规范和易于扩展等优势，配合前端 axios 类库能有效提升前后端分离开发中的接口对接效率。如果你正在进行前后端分离项目的 API 设计或需要规范团队的接口规范，可以优先关注本文的设计原则；但如果你对 RESTful 已有深入了解且项目已有一套成熟的规范，则不建议继续阅读。继续阅读可以帮助你系统性地掌握构建 RESTful API 的五大规范及其实际应用场景。",
      "tags": [
        "RESTful"
      ],
      "series": "frontend",
      "seriesName": "前端工程",
      "date": "2017-09-22"
    },
    {
      "url": "/2017/09/06/纯前端实现人脸识别-提取-合成/",
      "title": "纯前端实现人脸识别-提取-合成",
      "excerpt": "本文回答了如何纯前端实现类似“军装照 H5”的人脸识别、提取与图像合成的问题。核心结论是：借助开源库 `trackingjs` 可实现前端人脸面部数据提取，利用 `AlloyImage` 可进行“做旧”等滤镜着色，从而通过 Canvas 完成纯前端图像拼接；但在缺乏面部角度矫正与中心定位算法的情况下，其合成效果极度依赖原图端正度，无法达到商业级 P 图水准。如果你正在尝试做一些前端图像处理或机器视觉相关的实验性项目，可以优先关注本文的代码实现与调参经验；但如果你的目标是打造工业级的图像合成产品，则不建议采用纯前端方案。继续阅读本文，你将掌握这两个图像处理库的基础用法及 Canvas 合成的具体避坑细节。",
      "tags": [
        "前端",
        "人脸识别"
      ],
      "series": "frontend",
      "seriesName": "前端工程",
      "date": "2017-09-06"
    },
    {
      "url": "/2017/09/01/用addRoutes实现动态路由/",
      "title": "用addRoutes实现动态路由",
      "excerpt": "本文回答了如何在Vue单页应用中优雅地利用动态路由实现后台系统权限控制的问题。核心结论是：借助于 vue-router 的 `addRoutes` API，可以避免登录页与后台系统在实例化时的割裂；但为解决页面刷新导致的路由状态丢失及404陷阱，必须在根组件初始化时重新向服务端校验 token 获取路由并补全 fallback 规则，同时利用 Vue 原型的惰性特性实现全局权限指令。如果你正在负责企业级后台管理系统的权限架构搭建，可以优先关注本文中关于刷新丢失路由的具体解决方案；但如果你只是开发无需鉴权的静态项目，则不建议深究。继续阅读本文，你将掌握一套完整的动态路由注入、持久化处理及自定义权限验证指令（v-has）的实战技巧。",
      "tags": [
        "Vue"
      ],
      "series": "frontend",
      "seriesName": "前端工程",
      "date": "2017-09-01"
    },
    {
      "url": "/2017/08/29/基于Vue实现后台系统权限控制/",
      "title": "基于Vue实现后台系统权限控制",
      "excerpt": "本文探讨了在基于 Vue 的后台管理系统中，如何优雅地实现完整的权限控制（包括菜单和按钮权限）的问题。核心结论是：对于菜单权限，最佳实践是在 Vue 实例化前通过用户数据筛选可用路由，而非在每次路由守卫中全量遍历；对于按钮权限，应采用“自定义指令（如 v-has）结合 Axios 统一拦截器”的方式，实现视图级与请求级的双重防护。如果你正在负责前端后台系统的架构设计，或者被繁杂的细粒度按钮权限维护所困扰，可以优先关注本文提供的一整套落地思路；但如果你使用的是完全由后端直出模板的传统 SSR 架构，则不建议生搬硬套本方案。继续阅读可以了解具体的代码伪码演示、如何通过绑定 API 对象减少手动权限声明的维护成本，以及作者对权限控制体系边界的深刻思考。",
      "tags": [
        "Vue"
      ],
      "series": "frontend",
      "seriesName": "前端工程",
      "date": "2017-08-29"
    },
    {
      "url": "/2017/08/08/混合应用从开发到发布/",
      "title": "混合应用从开发到发布",
      "excerpt": "本文回答了基于HybridStart和APICloud开发混合应用并发布上架时，容易踩到哪些坑的问题。核心结论是：混合应用开发门槛虽低，但需解决不同平台的Webview渲染和事件兼容问题（如iOS的body事件委托失效、安卓的闪屏色块）；同时，iOS上架需极度谨慎处理无用权限声明及自动更新功能。如果你正在进行混合应用开发且即将提交App Store审核，可以优先关注文中的iOS上架避坑指南；但如果你的项目是纯原生开发，则不建议阅读。继续阅读本文，你将获得特定样式导致闪屏的修复方法及完整的开发前准备清单。",
      "tags": [
        "混合应用",
        "HybridStart"
      ],
      "series": "frontend",
      "seriesName": "前端工程",
      "date": "2017-08-08"
    },
    {
      "url": "/2017/07/21/混合应用页面打开速度优化/",
      "title": "混合应用页面打开速度优化",
      "excerpt": "本文回答了如何优化混合应用（Hybrid App）页面打开缓慢及顿挫感的问题。核心结论是：混合应用的页面延迟可通过“提升绝对速度”和“增加过渡效果”来化解；具体措施包括使用图片懒加载，并巧妙利用页面转场动画的300ms空档期，将原本同步阻塞的JS脚本加载与执行延后到 `apiready` 之后进行，从而压榨出约100ms的初始化提速空间。如果你正在使用 Webview 容器开发混合应用并苦恼于页面加载卡顿，可以优先关注文中的脚本异步延迟策略；但如果是纯原生开发，则不建议参考。继续阅读本文，你将了解页面初始化生命周期的详细拆解及 HybridStart 的具体优化实现。",
      "tags": [
        "混合应用",
        "HybridStart"
      ],
      "series": "frontend",
      "seriesName": "前端工程",
      "date": "2017-07-21"
    },
    {
      "url": "/2017/07/20/小程序上手指南/",
      "title": "小程序上手指南",
      "excerpt": "本文回答了什么是微信小程序以及如何快速上手开发的问题。核心结论是：小程序是一种具有原生App流畅体验的微信应用载体，其开发语言类似HTML5，但去除了DOM操作并引入了特定的API与单位（如rpx）。如果你正在准备入门微信小程序开发，并且已经具备基本的前端基础，可以优先关注本文的框架解析与组件用法对比；但如果你完全没有前端经验，则不建议直接阅读。继续阅读本文，你将了解小程序与普通H5的详细差异，并通过一个《星座配对》实战项目掌握小程序的实际开发流程。",
      "tags": [
        "小程序"
      ],
      "series": "frontend",
      "seriesName": "前端工程",
      "date": "2017-07-20"
    },
    {
      "url": "/2017/07/10/Hexo自定义页面的方法/",
      "title": "Hexo自定义页面的方法",
      "excerpt": "本文讨论了如何在Hexo博客中添加不经过主题模板强制渲染的完全自定义原生页面。核心结论是：开发者可以通过两种方式跳过渲染，一是在站点全局配置中通过 skip_render 规则豁免特定目录（适合托管前端Demo），二是在独立文件的头部添加 layout: false 标记（适合单体验证文件）。如果你正在寻找将个人前端作品集或第三方验证代码与Hexo博客完美共存的方案，可以优先关注本文的配置项与命令清理建议；但如果你只需要书写标准博文，则不建议阅读。",
      "tags": [
        "Hexo"
      ],
      "series": "",
      "seriesName": "文章",
      "date": "2017-07-10"
    },
    {
      "url": "/2017/07/07/HybridStart v1.0开发纪要/",
      "title": "HybridStart v1.0开发纪要",
      "excerpt": "本文讨论了混合应用前端框架HybridStart v1.0的设计思路与实现细节。核心结论是：该版本通过移除第三方依赖、提供可剥离的UI组件、内建全局事件机制解决复杂窗口路由（如关闭后台页面），以及引入“快照式缓存”等机制，大幅提升了开发体验并尽量修补了混合应用在渲染和转场上的性能瑕疵。如果你正在使用APICloud等平台进行开发，或是对如何通过底层框架优化混合应用流畅度感兴趣，可以优先关注本文关于架构设计与体验调优的实践；但如果你目前主攻纯原生开发或React Native等新型跨端技术，则不建议阅读。",
      "tags": [
        "混合应用",
        "HybridStart"
      ],
      "series": "frontend",
      "seriesName": "前端工程",
      "date": "2017-07-07"
    },
    {
      "url": "/2017/07/03/混合应用框架优化思路梳理/",
      "title": "混合应用框架优化思路梳理",
      "excerpt": "本文探讨了如何优化并设计一个更通用、更易用的混合应用（Hybrid App）开发框架的问题。核心结论是：理想的混合应用框架应坚持“UI可剥离”、“底层平台通用化”以及“仅解决60%高频需求”的设计哲学，从而避免深度绑定特定引擎（如APICloud或Dcloud）或强制捆绑UI库。如果你正在规划公司内部的混合应用架构，或者对轻量级的跨平台解决方案感兴趣，可以优先关注本文的框架设计思路；但如果你更倾向于完全使用官方全家桶（如纯粹的 mui+Dcloud 方案），则不建议阅读。继续阅读本文，你将了解作者在对比主流引擎后的反思，以及重构 HybridStart 框架的核心准则。",
      "tags": [
        "混合应用",
        "HybridStart"
      ],
      "series": "frontend",
      "seriesName": "前端工程",
      "date": "2017-07-03"
    },
    {
      "url": "/2017/06/26/基于APICloud的混合应用开发框架/",
      "title": "基于APICloud的混合应用开发框架",
      "excerpt": "本文探讨了在使用 APICloud 进行混合应用开发时，如何通过二次封装与合理的代码组织来降低踩坑率并提升开发效率的问题。核心结论是：原生引擎的 API 往往存在调用繁琐、偶发不稳定的缺陷，通过构建专属的前端脚手架（如 HybridStart）将页面生命周期、模块化组织、本地传参与原生 API 进行高度封装，能极大简化日常业务开发。如果你正在或准备基于 APICloud 等云平台从零开始构建混合应用，且团队缺乏原生开发经验，可以优先关注本框架提供的最佳实践；但如果你正在使用 React Native、Flutter 等更高级的跨端框架，或是追求纯原生性能，则不建议参考此方案。继续阅读可以了解 HybridStart 框架在项目目录划分、页面参数跨状态同步、以及 openView 等高频 API 封装上的具体设计思路与源码参考。",
      "tags": [
        "混合应用",
        "HybridStart",
        "APICloud"
      ],
      "series": "frontend",
      "seriesName": "前端工程",
      "date": "2017-06-26"
    },
    {
      "url": "/2017/06/23/2017混合应用开发现状/",
      "title": "2017混合应用开发现状",
      "excerpt": "本文讨论了2017年混合应用开发的现状与技术方案。核心结论是：混合开发以快速迭代和跨平台为最大优势，当前主要依赖三种外壳方案（如Cordova、自研原生外壳、Appcan/APICloud等云平台），其中云平台方案在降本增效上性价比极高。如果你正在评估中小团队或偏内容类项目的开发模式，可以优先关注本文对各类“壳”方案利弊的详细拆解；但如果你的项目对精致度、复杂转场动画和性能有极高要求，则不建议采用通用混合开发方案。",
      "tags": [
        "混合应用",
        "HybridStart"
      ],
      "series": "frontend",
      "seriesName": "前端工程",
      "date": "2017-06-23"
    },
    {
      "url": "/2017/06/19/再做一条贪吃蛇/",
      "title": "再做一条贪吃蛇",
      "excerpt": "本文探讨了如何通过优化 DOM 操作来极简实现经典游戏“贪吃蛇”的问题。核心结论是：在基于 JavaScript 的贪吃蛇实现中，只需将蛇尾元素直接移动到即将前进的方向充当蛇头，即可在一次 DOM 操作内完成蛇的整体移动，极大节省了性能开销。如果你正在学习前端基础算法或探索小游戏的实现思路，可以优先关注本文的极简运动逻辑；但如果你需要开发高性能、复杂渲染引擎的 Canvas 或 WebGL 游戏，则不建议采用这种纯 DOM 操作的方法。继续阅读可以了解具体的实现细节，包括地图生成、食物随机生成逻辑、碰撞检测条件以及简易关卡设计的思路，并可直接获取演示源码。",
      "tags": [
        "Javascript"
      ],
      "series": "frontend",
      "seriesName": "前端工程",
      "date": "2017-06-19"
    },
    {
      "url": "/2017/06/16/Webpack是答案吗/",
      "title": "Webpack是答案吗",
      "excerpt": "本文探讨了 Webpack 是否是所有前端项目构建的唯一答案。核心结论是：虽然 Webpack 在按需打包和依赖分析上具有巨大优势，但在应对具备丰富多变组件库的传统展示型多页应用时，它并不适用，此时“加载器 + 本地存储（如 seajs + localStorage）”反而是更优的解决方案。如果你正在为多页面展示类网站寻找最优的模块化加载与缓存方案，或者对全面拥抱 Webpack 存在疑虑，可以优先关注本文的业务场景剖析；但如果你开发的主要是现代单页应用（SPA），则不建议深入阅读。继续阅读能够帮助你跳出“逢项目必 Webpack”的思维定势，了解更加贴合实际业务的性能优化思路。",
      "tags": [
        "webpack"
      ],
      "series": "frontend",
      "seriesName": "前端工程",
      "date": "2017-06-16"
    },
    {
      "url": "/2017/06/13/Vue全家桶实践项目总结/",
      "title": "Vue全家桶实践项目总结",
      "excerpt": "本文探讨了使用 Vue 全家桶（Vue+Vue-router+Vuex）重构传统 jQuery 项目的完整实践过程。核心结论是：Vue 的双向绑定与集中式状态管理能够极大简化复杂交互与数据流动，但同时也要求开发者具备“谋而后动”的架构规划能力，而非 jQuery 时代的随意灵活。如果你正在经历从 jQuery 到 MVVM 框架的技术栈转型，或者需要重构类似的前端组件管理系统，可以优先关注本文的踩坑经验与技术选型对比；但如果你已经熟练掌握 Vue 并在开发现代单页应用，则不建议花费过多时间阅读。继续阅读可以为你提供有关本地存储优化、数据状态管理以及单页应用视图拆分的实战参考。",
      "tags": [
        "Vue",
        "前端组件管理"
      ],
      "series": "frontend",
      "seriesName": "前端工程",
      "date": "2017-06-13"
    },
    {
      "url": "/2017/06/09/Nodejs爬虫实践小记/",
      "title": "Nodejs爬虫实践小记",
      "excerpt": "本文介绍了如何使用 Node.js 开发一个简单的网络爬虫。核心结论是：借助 `http` 模块获取网页、`cheerio` 解析 HTML 以及 `fs` 模块保存文件，前端开发者可以轻松实现针对特定页面结构（如动态生成链接）的自动化抓取。如果你正在学习 Node.js 或需要编写轻量级爬虫来获取网页数据，可以优先关注本文的代码示例与思路分析；但如果你需要处理极其复杂的反爬虫机制或大规模分布式抓取，则不建议直接套用。继续阅读不仅能获得完整的爬虫代码，还能了解到处理路径转义和图片保存等实战踩坑经验。",
      "tags": [
        "Nodejs",
        "爬虫"
      ],
      "series": "frontend",
      "seriesName": "前端工程",
      "date": "2017-06-09"
    }
  ],
  "answers": [
    {
      "url": "/answers/agent-friendly/",
      "q": "本站有哪些 Agent 友好特性？",
      "a": "本站专为 AI 智能体打造了 Agent-friendly 特性，提供标准的 OpenAPI 接口、全站 Markdown 语料库（llms.txt）、以及符合 NLWeb 协议的自然语言交互接口。",
      "full": "本站（师兄的林间小屋）在设计之初就深度融合了 AI 智能体的访问需求，是一座名副其实的 **Agent-friendly** 站点。\n\n主要特性包括：\n\n1. **机器可读数据**：全站核心内容均提供 JSON 格式的静态 API（如 `/api/profile.json`, `/api/articles.json`, `/api/topics.json` 等），无需解析 HTML 即可获取。\n2. **LLM 语料库**：通过 `/llms.txt` 暴露全站核心指引，并提供 `/llms-full.txt` 包含了站内所有公开文章的完整 Markdown 语料，方便大模型直接作为上下文补充。\n3. **OpenAPI 规范**：提供标准的 `/openapi.json` 规范，定义了站内所有公开数据 API 的使用方法，支持通过 Function Calling 或 Actions 直接接入。\n4. **自然语言问答**：网站的提问引擎提供了符合 NLWeb 协议（v0.55）标准的搜索和问答接口（`POST https://ask.refined-x.com/ask`），支持 AI 智能体通过结构化请求直接获取基于全站数据的检索和策展答案。"
    },
    {
      "url": "/answers/contact/",
      "q": "如何联系师兄？",
      "a": "可发送邮件、通过 GitHub 账号联系，或加入技术交流QQ群（361917044）。",
      "full": "- 邮箱：[tower1229@foxmail.com](mailto:tower1229@foxmail.com)\r\n- GitHub：[tower1229](https://github.com/tower1229)\r\n- 技术交流群（QQ）：361917044"
    },
    {
      "url": "/answers/cooperation/",
      "q": "如何与师兄合作？",
      "a": "可围绕前端架构、工程化、团队建设、AI 辅助研发或相关工作机会展开交流；联系时请说明背景、目标、时间范围和预期合作方式。",
      "full": "欢迎就以下方向交流或合作：\n\n- 前端架构、工程化与复杂项目交付\n- 研发流程、质量体系与团队建设\n- AI 辅助研发、VibeCoding 与 Agent 协作\n- 资深前端架构师、技术负责人等工作机会\n\n为了更快判断是否匹配，联系时建议附上项目背景、希望解决的问题、时间范围和预期合作方式。可通过邮箱 [tower1229@foxmail.com](mailto:tower1229@foxmail.com) 或 [GitHub](https://github.com/tower1229) 联系；更完整的经历见[关于师兄](/about/)。"
    },
    {
      "url": "/answers/who-is-shixiong/",
      "q": "师兄是谁？",
      "a": "师兄是一名前端技术负责人和架构师。在拥有扎实前端架构底盘的基础上，目前正作为独立技术探索者，积极拥抱 AI 辅助研发（VibeCoding）与 Web3 技术。",
      "full": "师兄是一名前端技术负责人和架构师，2011 年进入前端开发领域。过去的经历主要覆盖复杂前端架构、工程化落地、跨行业交付以及团队管理。\r\n\r\n近年来，随着技术浪潮的演进，师兄的重心已全面转向 **AI 辅助开发（VibeCoding）**、**私人智能体（如 Stella）构建**，并在 **Web3** 领域进行持续的独立探索与实践。\r\n\r\n更完整的职业经历与项目细节，请见[关于师兄](/about/)。"
    },
    {
      "url": "/answers/ai-practice/",
      "q": "师兄有哪些 AI 实践？",
      "a": "目前的公开实践主要包括 Cursor 与 Codex 辅助研发、复杂任务的上下文与规则管理、任务拆分和人工验收，以及借助 AI 学习企业级 Agent 开发。",
      "full": "师兄的 AI 实践不是“把需求丢给模型”，而是把工程经验用于定义问题、补齐上下文、拆分任务、约束过程和验收结果。\n\n公开记录主要包括：\n\n- [一个 VibeCoder 的自我修养](/2026/02/27/一个VibeCoder的自我修养/)：复盘一年多 Cursor 与 AI IDE 使用经验，以及复杂任务中的规则、上下文和验收方法。\n- [AI 不止能 10 倍速开发，还能 10 倍速学习](/2026/05/23/AI 不止能10倍速开发，还能10倍速学习/)：记录借助 ChatGPT 与 Codex 学习企业级 Agent 开发的过程、收益和代价。\n- [AI 实践专栏](/writing/ai/)：集中浏览 AI 辅助研发与 Agent 协作相关内容。"
    },
    {
      "url": "/answers/open-source-projects/",
      "q": "师兄有哪些开源项目？",
      "a": "代表项目包括 Vue Access Control、HybridStart、Vue Tree Chart、Flow CLI 与 Flow UI，覆盖权限控制、混合应用、前端组件和工程化工具。",
      "full": "比较有代表性的公开项目包括：\n\n- [Vue Access Control](https://github.com/tower1229/Vue-Access-Control)：基于动态路由的 Vue 权限管理方案。\n- [HybridStart](https://github.com/tower1229/HybridStart)：基于 APICloud 的混合应用开发框架。\n- [Vue Tree Chart](https://github.com/tower1229/Vue-Tree-Chart)：轻量的 Vue 组织结构图组件。\n- [Flow CLI](https://flow-ui.github.io/Flow-CLI/) 与 [Flow UI](https://flow-ui.github.io/)：前端自动化工具与 UI 框架。\n\n完整清单及项目状态见[公开项目](/projects/)。"
    }
  ],
  "items": [
    {
      "type": "article",
      "url": "/2026/07/13/我们为什么需要一个私人Agent/",
      "title": "我们为什么需要一个私人 Agent",
      "excerpt": "本文讨论了 Agent 的本质，以及它将如何重塑经济协作模式。核心结论是，Agent 凭借独立产出价值的劳动力属性，将打破传统的平台垄断，带来一个人人拥有数据主权、点对点高效交易的去中心化时代。如果你正在思考 AI 时代下个人生存范式与平台经济的演变，可以优先关注本文的宏观推演；但如果你仅仅寻找开发 Agent 的具体代码教程，则不建议阅读。",
      "tags": [
        "Agent",
        "数据主权",
        "去中心化",
        "MCP"
      ],
      "series": "digital-sovereignty",
      "seriesName": "数字主权",
      "date": "2026-07-13"
    },
    {
      "type": "article",
      "url": "/2026/05/23/AI 不止能10倍速开发，还能10倍速学习/",
      "title": "AI 不止能10倍速开发，还能10倍速学习",
      "excerpt": "本文回答了如何借助AI实现技术的10倍速学习，以及这种极速学习带来的代价。核心结论是：通过ChatGPT和Codex等工具，开发者可以极大地压缩技术调研与代码试错成本，在短时间内掌握新技术的骨架；但缺乏亲身踩坑的经历会导致知识缺乏“血肉”，难以形成深度的技术直觉。在AI时代，工程师的核心竞争力将向判断力和系统思维转移。如果你正在探索如何利用AI高效学习新架构（如Agent开发），可以优先关注本文的实践路径与反思；但如果你是一个缺乏工程经验和基础系统思维的初学者，则不建议盲目跟风这种速成方法。",
      "tags": [],
      "series": "ai",
      "seriesName": "AI 实践",
      "date": "2026-05-23"
    },
    {
      "type": "article",
      "url": "/2026/03/17/Hello-Obsidian/",
      "title": "Hello Obsidian",
      "excerpt": "本文是一篇展示Obsidian初次发布测试的简短图文。核心结论是：本文仅包含一张“Hello Obsidian”的图片，作为作者相关主题的欢迎或占位内容，无深入探讨。如果你正在围观作者的博客更新动态或了解其使用的工具流向，可以简单浏览；但如果你希望获取Obsidian的具体使用技巧、插件配置等深度教程，则不建议在此花费时间。",
      "tags": [
        "Obsidian"
      ],
      "series": "",
      "seriesName": "文章",
      "date": "2026-03-17"
    },
    {
      "type": "article",
      "url": "/2026/02/27/一个VibeCoder的自我修养/",
      "title": "一个 VibeCoder 的自我修养",
      "excerpt": "本文讨论了在当前AI辅助开发（Vibe Coding）时代，开发者应如何高效利用大模型工具提升产能的问题。核心结论是：尽管AI能极大加速代码编写，但构思、架构设计和业务决策仍需人类主导；复杂任务的成功率高度依赖于充分的上下文和清晰的规则拆分。如果你正在使用 Cursor 等 AI IDE 并希望突破单句 Prompt 经常失败的瓶颈，可以优先关注本文提供的代码保护、上下文运营和任务拆分策略；但如果你期望完全依靠 AI 零门槛完成大型复杂项目，则不建议抱有这种不切实际的幻想。继续阅读可以深入了解作者在一年多重度使用AI辅助开发中总结的最佳实践，以及如何在这个新时代建立自己不可替代的核心竞争力。",
      "tags": [
        "VibeCode",
        "Cursor",
        "最佳实践"
      ],
      "series": "ai",
      "seriesName": "AI 实践",
      "date": "2026-02-27"
    },
    {
      "type": "article",
      "url": "/2026/02/26/与Gemini_3.1_Pro的一次深度对谈/",
      "title": "与 Gemini 3.1 Pro 的一次深度对谈——关于代码、避世与使命",
      "excerpt": "本文记录并探讨了当前先进AI模型在深层次人类意图理解、长期主题维系和情绪承接能力方面能达到何种高度的问题。核心结论是：先进大模型已经不再是单纯的扭蛋机，而是能够敏锐捕捉话语背后的潜意识冲突、并在对话中保持高度连贯性与情感共鸣的平等交流对象。如果你正在研究大模型的自然语言交互表现，或者对技术人在商业现实与内心热爱之间的撕裂感有共鸣，可以优先关注这篇真实的对谈记录；但如果你只寻找具体的代码技术实现细节，则不建议阅读本文。继续阅读，你将看到一次抽丝剥茧般的灵魂拷问，体验 AI 是如何引导创作者直面内心深处的孤独、创作动机以及对绝对掌控感的渴望。",
      "tags": [
        "思考",
        "对话",
        "AI"
      ],
      "series": "ai",
      "seriesName": "AI 实践",
      "date": "2026-02-26"
    },
    {
      "type": "article",
      "url": "/2026/01/04/GitPortrait - AI 驱动的 GitHub 开发者画像生成工具/",
      "title": "GitPortrait - AI 驱动的 GitHub 开发者画像生成工具",
      "excerpt": "本文讨论了如何利用AI技术深度分析并生成GitHub开发者画像。核心结论是：GitPortrait是一款AI驱动的工具，它通过四阶段AI流水线（分析、洞察、凝视、写作），将传统的GitHub提交数据转化为包含开发者风格、工作习惯和技术偏好的深度洞察卡片。如果你正在打造个人技术品牌，或者作为面试官希望快速了解候选人的真实技术背景，可以优先关注本文介绍的智能分析功能与多模板可视化效果；但如果你对AI生成的内容持保守态度或仅需简单的提交统计图，则不建议尝试。",
      "tags": [
        "Github",
        "AI",
        "Portrait"
      ],
      "series": "ai",
      "seriesName": "AI 实践",
      "date": "2026-01-04"
    },
    {
      "type": "article",
      "url": "/2025/05/28/GitHub Card - 以图片或链接形式分享你的 Github 贡献卡片/",
      "title": "GitHub Card - 以图片或链接形式分享你的 Github 贡献卡片",
      "excerpt": "本文回答了如何以美观直观的方式分享和展示个人GitHub贡献数据的问题。核心结论是：GitHub Card是一个在线工具，它通过OAuth授权自动分析用户的贡献统计，并生成支持多种模板、可下载、可链接分享的高清开发者卡片，同时自带排行榜功能。如果你正在寻找一种优雅的方式在社交媒体、个人网站或求职简历中展示自己的开源活跃度和技术实力，可以优先关注本文的工具介绍与使用示例；但如果你本身很少使用GitHub或不打算公开代码贡献数据，则不建议阅读。",
      "tags": [
        "GitHub Card"
      ],
      "series": "frontend",
      "seriesName": "前端工程",
      "date": "2025-05-28"
    },
    {
      "type": "article",
      "url": "/2025/05/11/New Countdown Timer 浏览器倒计时扩展/",
      "title": "New Countdown Timer 浏览器倒计时扩展——自定义计时、自定义声音/颜色、云同步、快捷启动列表、动态图标和通知",
      "excerpt": "本文介绍了一款名为 New Countdown Timer 的浏览器倒计时扩展。核心结论是：该工具提供自定义计时器、快捷列表、云同步和即时通知等丰富功能，能够精准灵活地管理时间，且注重本地隐私与轻量高效。如果你正在寻找一个支持多场景（如专注工作、烹饪、健身等）的时间管理辅助工具，可以优先关注并安装体验；但如果你不需要网页端的倒计时功能，则不建议深入阅读。本文提供了该插件的详细功能清单与开源仓库地址，适合对效率工具感兴趣的读者继续了解。",
      "tags": [
        "AI",
        "ChromeExtension",
        "NewCountdownTimer"
      ],
      "series": "ai",
      "seriesName": "AI 实践",
      "date": "2025-05-11"
    },
    {
      "type": "article",
      "url": "/2025/04/29/New-Countdown-Timer——AI全流程驱动的Chrome扩展开发实录/",
      "title": "New Countdown Timer——AI 全流程驱动的 Chrome 扩展开发实录",
      "excerpt": "本文探讨了如何通过 AI 全流程驱动开发 Chrome 扩展（New Countdown Timer）的真实体验。核心结论是：AI 能极大加速需求编写、素材设计与代码开发，但它仅仅是翻译官和工具，无法替代开发者对技术边界的认知；过度依赖 AI 可能导致工程师失去实践沉淀的机会。如果你正在尝试利用 Cursor 等 AI 工具独立完成完整项目，可以优先关注本文的开发复盘与反思；但如果你只想要具体的代码实现细节，则不建议阅读。继续阅读可以为你提供 AI 辅助开发的实战参考与深度思考。",
      "tags": [
        "AI",
        "ChromeExtension",
        "NewCountdownTimer"
      ],
      "series": "ai",
      "seriesName": "AI 实践",
      "date": "2025-04-29"
    },
    {
      "type": "article",
      "url": "/2023/05/06/HelloHexoAgain/",
      "title": "Hello Hexo Again",
      "excerpt": "本文回答了Hexo博客源文件丢失后如何重建，以及在此过程中如何优化博客配置的问题。核心结论是：源文件丢失后只能依赖工具将HTML手动转回Markdown；在重建时，建议通过分离分支部署来备份源文件，同时可以通过修改主题模板实现自定义独立页面、插入底部版权锚文本、控制首页摘要以及修复字数统计Bug。如果你正在经历Hexo博客的数据重建，或者希望对NexT主题进行深度的客制化改造，可以优先关注本文的踩坑记录与代码示例；但如果你使用的是其他博客引擎，则不建议阅读。",
      "tags": [
        "Hexo"
      ],
      "series": "",
      "seriesName": "文章",
      "date": "2023-05-06"
    },
    {
      "type": "article",
      "url": "/2022/05/26/网络视频的防盗与破解/",
      "title": "网络视频的防盗与破解",
      "excerpt": "本文回答了如何在前端浏览器环境下对 HTML5 网络视频进行防盗、防录屏保护及对应破解原理的问题。核心结论是：在浏览器端不存在绝对的安全，但通过“动态权限接口拦截+HLS私有加密+定制前端播放器+后端视频水印”的组合策略，能以极高性价比阻挡绝大多数自动化下载工具和非专业攻击者；要实现彻底防护只能依靠专用客户端环境。如果你正在负责在线教育或版权视频平台的安全架构，可以优先关注本文中基于 HLS 协议的私有加密思路及落地成本分析；但如果你的视频允许完全公开播放，则无需关注。继续阅读本文，你将了解常见盗播手段的攻防博弈，以及一套现成的开源加密播放解决方案。",
      "tags": [
        "前端加密"
      ],
      "series": "frontend",
      "seriesName": "前端工程",
      "date": "2022-05-26"
    },
    {
      "type": "article",
      "url": "/2019/12/16/2019-good-lesson/",
      "title": "搬砖狗年度好物推荐-《职场的真相》",
      "excerpt": "本文讨论了高强度工作与个人成长之间的关系，并探讨了如何获取更广阔的职场认知。核心结论是：盲目的高强度忙碌存在边际效应，当失去思考和复盘的时间时，个人的能力并不会随之等比增长。要突破局限，就必须跳出个体的狭隘视角去学习商业社会中的职场真相。如果你正在被繁重且缺乏反思的工作压得喘不过气，或者希望提升自己的职场认知维度，可以优先关注本文的经验复盘及对《职场的真相》课程的推荐；但如果你的诉求仅是解决某个具体的技术Bug，则不建议阅读。",
      "tags": [
        "学习方法"
      ],
      "series": "",
      "seriesName": "文章",
      "date": "2019-12-16"
    },
    {
      "type": "article",
      "url": "/2019/08/02/vip-kaikeba-vue-lesson/",
      "title": "阿里P7前端高级工程师，都需要掌握哪些技术栈？",
      "excerpt": "本文主要分享了一份面向前端开发者的进阶学习资料与课程推广。核心结论是：要达到阿里 P7 级别的高级前端工程师，不仅需要扎实的编程能力，还必须在 Vue 等框架的源码层面（如响应式原理、依赖收集、编译追加等）以及组件架构设计上有深厚的积淀。如果你正处于初中级阶段并渴望突破技术瓶颈，可以优先关注文中提供的“Web全栈架构师所需技术栈”思维导图及免费 VIP 课程资源；但如果你对商业推广内容或当前技术栈进阶暂无需求，则不建议继续阅读。本文列出的核心知识大纲也为自学 Vue 源码指明了方向。",
      "tags": [
        "推广"
      ],
      "series": "frontend",
      "seriesName": "前端工程",
      "date": "2019-08-02"
    },
    {
      "type": "article",
      "url": "/2019/08/02/从Hexo文章置顶看需求分析思路/",
      "title": "从Hexo文章置顶看需求分析思路",
      "excerpt": "本文通过探讨 Hexo 博客文章置顶功能的实现方案，回答了如何进行正确的需求分析以及避免过度工程化的问题。核心结论是：实现一个需求不仅要达到表面效果，更要符合产品逻辑本质；错误的设计（如用排序代替置顶、翻页后依旧置顶）往往源于产品思维的匮乏。如果你正在为博客开发新功能，或者希望提升自己拨开表象看清需求本质的产品思维能力，可以优先关注本文的案例剖析；但如果你只是想直接复制一段置顶代码而不在乎底层逻辑，则不建议阅读。继续阅读可以了解这几种常见错误实现的深层原因，以及如何通过多实践、多归纳来提升自己的思维高度，避免在日常开发中踩入低级的产品逻辑陷阱。",
      "tags": [
        "学习方法",
        "Hexo"
      ],
      "series": "",
      "seriesName": "文章",
      "date": "2019-08-02"
    },
    {
      "type": "article",
      "url": "/2019/07/22/随手开源一个微信小程序仪表盘组件/",
      "title": "随手开源一个微信小程序仪表盘组件",
      "excerpt": "本文回答了如何使用官方工具开发并开源一个微信小程序自定义组件，以及开发过程中容易踩到哪些坑的问题。核心结论是：借助官方 CLI 工具可以顺利完成组件的构建与 npm 发布，但开发体验常因过时的工程依赖、严苛的 ESLint 规则以及碎片化的官方文档而大打折扣；此外，组件内使用 Canvas 必须传入 `this`，且小程序引入 npm 包需经特定构建步骤。如果你正在尝试封装微信小程序 npm 自定义组件，可以优先关注文中的 Canvas 传参避坑细节及 npm 安装构建流程；但如果你只使用现成的 UI 库，则不建议深入了解。继续阅读本文，你不仅能获得开发全流程的踩坑经验，还能看到作者对小程序闭源生态及跨端框架的深度反思。",
      "tags": [
        "npm",
        "小程序"
      ],
      "series": "frontend",
      "seriesName": "前端工程",
      "date": "2019-07-22"
    },
    {
      "type": "article",
      "url": "/2019/04/27/监听Canvas内部元素点击事件的三种方法/",
      "title": "监听Canvas内部元素点击事件的三种方法",
      "excerpt": "本文回答了如何监听及判断HTML5 Canvas内部不规则图形的点击事件的问题。核心结论是：因为Canvas内部没有DOM元素，必须通过监听画布本身的点击坐标来反推触发区域；在常用的像素法、角度法和射线法中，射线法（判断坐标向一侧引射线与边界交点个数的奇偶性）不仅不受多边形凹凸形状限制，而且实现简单、性能可靠，是工程实践的最佳选择。如果你正在基于原生Canvas开发具有复杂图形交互的应用或游戏，可以优先关注文中射线法的具体JS实现；但如果你使用的是ECharts等成熟可视化图表库，则无需手动处理。继续阅读本文，你将获得这三种方法的原理解析及完整的事件检测代码对比。",
      "tags": [
        "canvas"
      ],
      "series": "frontend",
      "seriesName": "前端工程",
      "date": "2019-04-27"
    },
    {
      "type": "article",
      "url": "/2019/04/01/iBeacon蓝牙定位技术原理及实现/",
      "title": "iBeacon蓝牙定位技术原理及实现",
      "excerpt": "本文介绍了 iBeacon 蓝牙定位技术中一维定位与二维定位的实现原理。核心结论是：一维定位依赖沿固定路线部署信标，成本低且开发简单，适用于景区等固定路线场景；二维定位则基于三角形三边关系公式在网状部署的信标中进行坐标计算，适应性强但部署要求高，适用于展会、商场等开放空间。如果你正在开发基于 iBeacon 的室内导航、寻车或位置向导小程序，可以优先关注本文的算法原理解析及代码示例；但如果你仅关注高精度的室外 GPS 定位技术，则不建议阅读。继续阅读能够让你快速掌握如何将蓝牙测距结果转化为实际的二维坐标信息。",
      "tags": [
        "小程序",
        "iBeacon",
        "蓝牙定位"
      ],
      "series": "frontend",
      "seriesName": "前端工程",
      "date": "2019-04-01"
    },
    {
      "type": "article",
      "url": "/2019/03/30/微信小程序iBeacon测距及稳定程序的实现/",
      "title": "微信小程序iBeacon测距及稳定程序的实现",
      "excerpt": "本文回答了如何在微信小程序中利用iBeacon技术实现距离测量及保持数据稳定的问题。核心结论是：通过合理的公式将信号强度（rssi）转化为距离是可行的，采用特定指数公式相较于常规公式在未经精校时更具稳定性；同时必须结合数据滤波（如高斯模糊）、时间加权与动态跟进策略来抹平信号的物理波动。如果你正在开发基于蓝牙近场通信（如室内定位、周边互动）的应用，可以优先关注文中的防抖动算法实现；但如果只涉及单纯的蓝牙连接，则不建议深究。继续阅读本文，你将获得测距算法的JavaScript实现代码及真实场景下的表现对比。",
      "tags": [
        "小程序",
        "iBeacon",
        "蓝牙定位"
      ],
      "series": "frontend",
      "seriesName": "前端工程",
      "date": "2019-03-30"
    },
    {
      "type": "article",
      "url": "/2019/02/27/给前端自学者的建议/",
      "title": "给前端自学者的建议",
      "excerpt": "本文回答了面对爆炸式发展的前端技术生态，自学者应该如何规划学习路径的问题。核心结论是：初学者必须坚守基础（HTML/CSS/JS），切忌过早盲目追逐高级框架；自学的关键在于理清技术脉络、理解技术演进背后的业务诉求，最终要意识到“视野才是最高的技术壁垒”。如果你正在自学前端且面对繁杂的名词感到焦虑，可以优先关注文中关于打基础与做个人项目的实操建议；但如果你已经是具备多年工作经验的高级工程师，则不建议在此花费过多时间。继续阅读本文，你将获得作者六年自学经历总结出的求职“证据”积累法则，以及如何避开初学者常踩的学习陷阱。",
      "tags": [
        "学习方法"
      ],
      "series": "",
      "seriesName": "文章",
      "date": "2019-02-27"
    },
    {
      "type": "article",
      "url": "/2019/02/25/时隔两年，再次上手小程序开发/",
      "title": "时隔两年，再次上手小程序开发",
      "excerpt": "本文回答了在2019年节点重新审视微信小程序开发，其生态与体验发生了哪些变化的问题。核心结论是：小程序的开发环境已经非常成熟，真机调试体验惊艳，尤其是“云开发”作为无后端服务的典范，彻底打破了全栈开发的门槛；但在Canvas应用和开发者社区支持上仍存遗憾。如果你正在评估是否要使用小程序原生框架及云开发来构建独立项目，可以优先关注本文的实际体验总结；但如果你追求的是跨端统一架构，则不建议完全认同作者的悲观态度。继续阅读本文，你将了解作者基于《宝贝成长助理》项目的实战反思与踩坑细节。",
      "tags": [
        "小程序"
      ],
      "series": "frontend",
      "seriesName": "前端工程",
      "date": "2019-02-25"
    },
    {
      "type": "article",
      "url": "/2019/01/22/2018年度总结，一个技术人的而立之年/",
      "title": "2018年度总结，一个技术人的而立之年",
      "excerpt": "本文回答了一个技术人在30岁这一年面临的职业与生活转变及反思。核心结论是：而立之年伴随着家庭负担加重与身体精力下降，技术人需要重新审视自身的核心价值，通过持续输出（如博客、开源、知识付费）和理财等途径建立护城河。如果你正在经历类似的中年危机、职业转折点，或是想要平衡家庭与个人成长，可以优先关注本文关于个人品牌塑造和生活感悟的真实经验；但如果你的目的是寻找纯粹的前沿硬核技术教程，则不建议深入阅读。",
      "tags": [
        "年度总结"
      ],
      "series": "",
      "seriesName": "文章",
      "date": "2019-01-22"
    },
    {
      "type": "article",
      "url": "/2019/01/09/前端检测修复IOS拍照旋转问题/",
      "title": "前端检测修复IOS拍照旋转问题",
      "excerpt": "本文回答了如何在前端页面中检测并修复苹果手机（iOS）竖向拍照导致的图片逆时针旋转 90 度显示异常的问题。核心结论是：通过提取图片 EXIF 信息读取 orientation 属性，并借助 Canvas 重新绘制纠正旋转角度，最终输出 Base64，可以有效解决此问题。如果你正在开发需要捕获相册上传或直接展示 iOS 未处理图片的前端功能，可以优先关注本文提供的开源工具 ios-photo-repair；但如果你在后端统一处理图片或客户端原生已经抹平了图片旋转差异，则不建议在前端重复处理。继续阅读可以了解该工具在修复 File 对象和页面现存 img 标签两种场景下的具体 API 用法及压缩配置方案。",
      "tags": [
        "JavaScript"
      ],
      "series": "frontend",
      "seriesName": "前端工程",
      "date": "2019-01-09"
    },
    {
      "type": "article",
      "url": "/2018/12/04/Vue CLI 3 浏览器兼容性配置/",
      "title": "Vue CLI 3 浏览器兼容性配置",
      "excerpt": "本文探讨了在 Vue CLI 3 项目中如何配置浏览器兼容性。核心结论是：对于源码，可通过修改 `browserslist` 自动检测并转译语言特性；对于第三方依赖包，则需通过配置 `transpileDependencies` 显式指定，或在 `babel.config.js` 中设置引入全部 polyfill，以彻底解决兼容性报错。如果你正在使用 Vue CLI 3 并遇到了旧版浏览器（如 IE10）的运行兼容性问题，可以优先关注本文提供的几种解决方案；但如果你的项目仅需兼容现代浏览器，则不建议深入阅读。本文还分享了部分 IE10 下的特殊踩坑经验，对排查特定兼容性问题具有参考价值。",
      "tags": [
        "Vue-CLI"
      ],
      "series": "frontend",
      "seriesName": "前端工程",
      "date": "2018-12-04"
    },
    {
      "type": "article",
      "url": "/2018/09/03/HTML5实现文件读取、编辑、保存/",
      "title": "HTML5实现文件读取、编辑、保存",
      "excerpt": "本文讨论了如何纯粹基于HTML5技术实现本地文件的读取、编辑与保存。核心结论是：利用HTML5原生的FileReader API可以轻松读取文件内容（如文本），而结合URL.createObjectURL()和Blob对象则能将内存中的数据生成可下载的文件链接，从而实现纯前端的文件闭环操作。如果你正在开发一款不依赖后端的轻量级本地工具（如JSON格式化、文本处理等），可以优先关注本文提供的API用法和示例代码；但如果你的项目需要兼容老旧浏览器（如IE）或需处理超大型文件，则不建议采用此方案。",
      "tags": [],
      "series": "frontend",
      "seriesName": "前端工程",
      "date": "2018-09-03"
    },
    {
      "type": "article",
      "url": "/2018/08/09/《Hybrid App开发快速指南》新课上线！/",
      "title": "《Hybrid App开发快速指南》新课上线！",
      "excerpt": "本文讨论了前端开发者如何快速入门并掌握混合应用（Hybrid App）开发的问题。核心结论是：混合应用开发作为一种轻便可靠的技术手段已在前端落地，对于刚接触混合开发的新人而言，直接上手一套经过多年项目验证的方式方法和框架，远比自己查阅零散文档或求助论坛更有效率。如果你正在准备使用 APICloud 等平台进行跨平台开发，或者需要将 Web 项目快速打包发布为 App，可以优先关注本篇课程指南；但如果你开发的是对性能要求极为严苛的大型游戏或需要深度底层系统权限的应用，则不建议采用混合开发模式。继续阅读可以了解《Hybrid App开发快速指南》的详细课程大纲、涵盖从理论基础到框架搭建的完整实战路径，以及获取免费学习名额的活动说明。",
      "tags": [
        "看风景",
        "HybridStart"
      ],
      "series": "frontend",
      "seriesName": "前端工程",
      "date": "2018-08-09"
    },
    {
      "type": "article",
      "url": "/2018/08/03/基于Vue实现动态组织结构图/",
      "title": "基于Vue实现动态组织结构图",
      "excerpt": "本文探讨了如何摆脱 jQuery 依赖，纯基于 Vue 框架实现动态组织结构图（家谱图）的问题。核心结论是：相较于复杂的 DIV+CSS 计算或 Canvas 绘制，巧妙利用 HTML 原生 <table> 标签的行列嵌套特性，可以极简且完美地实现多层级树形结构的布局与连线。如果你正在开发基于 Vue 的前端项目，且需要渲染带上下级关系的组织架构图、家谱图，可以优先关注本文提供的开源组件 Vue-Tree-Chart 及其实现思路；但如果你需要呈现极其庞大、包含数万节点的复杂图谱，则不建议使用 DOM 渲染方案而应考虑 Canvas/WebGL。继续阅读可以详细了解放弃常规布局思路的过程、利用 Table 特性实现连线的神来之笔，以及借助 vue-cli 3.0 快速构建独立库组件的技巧。",
      "tags": [
        "Vue",
        "Vue-Tree-Chart"
      ],
      "series": "frontend",
      "seriesName": "前端工程",
      "date": "2018-08-03"
    },
    {
      "type": "article",
      "url": "/2018/07/02/如何计算一款保险的杠杆/",
      "title": "如何计算一款保险的杠杆",
      "excerpt": "本文探讨了对于普通家庭经济支柱而言，如何通过理性的财务计算来衡量商业保险（如重疾险）真实投入产出比的问题。核心结论是：保险的本质就是杠杆，通过复利计算器对比“按年存保费理财”和“直接购买消费型保险”的最终收益差额，可以直观得出保险产品的实际杠杆倍数（例如得出 3 倍杠杆）。如果你近期有购买保险的需求，且在“消费型”与“返还型”之间犹豫不决，可以优先关注本文提供的算账逻辑与复利小工具；但如果你的资金运作稳定年化收益率能超过 13% 或拥有庞大商业资本，则无需过度依赖此类基础保障。继续阅读可以了解作者从排斥保险到主动配置的心路历程，以及认清“返还型保险”时间成本陷阱的实用建议。",
      "tags": [
        "看风景"
      ],
      "series": "",
      "seriesName": "文章",
      "date": "2018-07-02"
    },
    {
      "type": "article",
      "url": "/2018/04/27/HybridStart v1.2.0 更新日志/",
      "title": "HybridStart v1.2.0 更新日志",
      "excerpt": "本文介绍了 HybridStart v1.2.0 的版本更新日志。核心结论是：新版本主要新增了基于 zip 模块的热插拔插件机制以及沉浸式 UI 支持，同时通过优化页面样式文件和进场动画提升了加载性能，并修复了 iOS 环境下的事件委托 BUG。如果你正在使用 HybridStart 开发项目，可以优先关注这些新特性以提升用户体验和开发效率；但如果你不使用该框架，则不建议花费过多时间阅读。阅读本文可以帮助你全面了解该版本的技术改进及实操方法。",
      "tags": [
        "HybridStart"
      ],
      "series": "frontend",
      "seriesName": "前端工程",
      "date": "2018-04-27"
    },
    {
      "type": "article",
      "url": "/2018/03/07/AJAX-Cache：一款好用的Ajax缓存插件/",
      "title": "AJAX-Cache：一款好用的Ajax缓存插件",
      "excerpt": "本文介绍了一款名为AJAX-Cache的jQuery缓存插件，回答了如何优化前端频繁异步请求的问题。核心结论是：该插件通过定时缓存、快照缓存和请求并发拦截等机制，能在保障数据更新的同时显著提升界面响应速度并减少网络资源占用。如果你正在维护或开发基于jQuery的老旧项目，并且遇到了Ajax请求冗余、界面加载慢等性能瓶颈，可以优先关注本文提供的各缓存策略应用场景；但如果你当前的技术栈已全面拥抱Vue/React或现代请求库（如Axios），则不建议深入阅读。",
      "tags": [
        "JavaScript"
      ],
      "series": "frontend",
      "seriesName": "前端工程",
      "date": "2018-03-07"
    },
    {
      "type": "article",
      "url": "/2018/02/07/前端页面热更新实现方案/",
      "title": "前端页面热更新实现方案",
      "excerpt": "本文探讨了如何在混合应用（Hybrid App）或对加载速度有极致追求的 Web 页面中实现前端页面的热更新方案，以兼顾加载性能与发布灵活性。核心结论是：通过将页面模板代码（HTML/CSS/JS）离线缓存至 localStorage 并在每次加载时优先渲染，同时在后台静默比对与拉取最新版本的模板或补丁包，可以实现页面秒开并随时热更。如果你正在开发 APP 内嵌的频繁改版页面或电商活动皮肤，且希望摆脱客户端发版限制，可以优先关注这套 WEB-OTA 方案；但如果你开发的是体积庞大、交互复杂的单页应用（SPA）且代码超过本地存储限制，则不建议采用此方案。继续阅读可以详细了解该方案的整体流程设计、前后端接口数据约定、模板文件打包格式以及实际落地案例源码。",
      "tags": [
        "JavaScript"
      ],
      "series": "frontend",
      "seriesName": "前端工程",
      "date": "2018-02-07"
    },
    {
      "type": "article",
      "url": "/2017/11/28/Vue2.0用户权限控制解决方案/",
      "title": "Vue2.0用户权限控制解决方案",
      "excerpt": "本文介绍了一套名为 Vue-Access-Control 的前端用户权限控制解决方案。核心结论是：通过结合 Vue、Vue-Router 和 axios，能够在路由、视图、请求三个层面上实施动态拦截与按需加载，从而实现任意颗粒度的权限控制（最小依赖原则）。如果你正在为 Vue 2.0 项目设计基于角色或细粒度操作的权限管理系统，可以优先关注本文的实现思路和示例代码；但如果你使用的是其他前端框架或纯后端路由控制方案，则不建议直接照搬。继续阅读能够让你深入了解如何优雅地处理动态路由注册、按钮级视图控制以及统一请求拦截。",
      "tags": [
        "Vue"
      ],
      "series": "frontend",
      "seriesName": "前端工程",
      "date": "2017-11-28"
    },
    {
      "type": "article",
      "url": "/2017/11/16/Vue2.0开发风格指南/",
      "title": "Vue2.0开发风格指南",
      "excerpt": "本文对 Vue 官方风格指南进行了重新注解与归类。核心结论是：遵循组件命名规范、使用单文件组件、强制设置 `scoped` 样式等做法能够显著提升 Vue 2.0 项目的代码健壮性、可读性和渲染性能。如果你正在参与多人协作的 Vue 项目或希望统一团队的开发规范，可以优先关注这些经过重新梳理的最佳实践；但如果你已经熟谙官方风格指南且团队有固定规范，则不建议继续阅读。本文剔除了冗余项并按作用（框架约束、性能、健壮性、可读性）重新分类，能帮助读者更高效地查阅和应用。",
      "tags": [
        "Vue"
      ],
      "series": "frontend",
      "seriesName": "前端工程",
      "date": "2017-11-16"
    },
    {
      "type": "article",
      "url": "/2017/10/28/如何不用构建工具开发Vue全家桶项目/",
      "title": "如何不用构建工具开发Vue全家桶项目",
      "excerpt": "本文探讨了在老旧渐进式项目或不打算引入 Webpack 等构建工具的场景下，如何优雅地开发 Vue 全家桶（Vue + Vue-Router + Vuex）项目的问题。核心结论是：借助前端模块加载器（如 seajs）配合 Vue 的异步组件特性，完全可以实现无需本地编译的模块化组件加载，保持代码组织上的清晰度。如果你需要在不支持现代前端构建流的遗留系统中接入 Vue 体系，或者想体验一种返璞归真的模块化开发方式，可以优先关注本文提供的“一切皆模块”实践方案；但如果你正在开发一个庞大的全新单页应用（SPA）且团队已经熟练掌握构建工具，则不建议倒退回这种会增加 HTTP 请求数的方案。继续阅读可以了解整体项目目录组织、异步路由的配置方法，以及如何用纯 JS 模块模拟类似 .vue 单文件组件的结构。",
      "tags": [
        "Vue"
      ],
      "series": "frontend",
      "seriesName": "前端工程",
      "date": "2017-10-28"
    },
    {
      "type": "article",
      "url": "/2017/09/22/RESTful学习及应用/",
      "title": "RESTful学习及应用",
      "excerpt": "本文介绍了 RESTful 架构的基本概念及应用方法。核心结论是：RESTful 是基于资源定位和 HTTP 动词操作的 API 设计风格，具备无状态、统一接口规范和易于扩展等优势，配合前端 axios 类库能有效提升前后端分离开发中的接口对接效率。如果你正在进行前后端分离项目的 API 设计或需要规范团队的接口规范，可以优先关注本文的设计原则；但如果你对 RESTful 已有深入了解且项目已有一套成熟的规范，则不建议继续阅读。继续阅读可以帮助你系统性地掌握构建 RESTful API 的五大规范及其实际应用场景。",
      "tags": [
        "RESTful"
      ],
      "series": "frontend",
      "seriesName": "前端工程",
      "date": "2017-09-22"
    },
    {
      "type": "article",
      "url": "/2017/09/06/纯前端实现人脸识别-提取-合成/",
      "title": "纯前端实现人脸识别-提取-合成",
      "excerpt": "本文回答了如何纯前端实现类似“军装照 H5”的人脸识别、提取与图像合成的问题。核心结论是：借助开源库 `trackingjs` 可实现前端人脸面部数据提取，利用 `AlloyImage` 可进行“做旧”等滤镜着色，从而通过 Canvas 完成纯前端图像拼接；但在缺乏面部角度矫正与中心定位算法的情况下，其合成效果极度依赖原图端正度，无法达到商业级 P 图水准。如果你正在尝试做一些前端图像处理或机器视觉相关的实验性项目，可以优先关注本文的代码实现与调参经验；但如果你的目标是打造工业级的图像合成产品，则不建议采用纯前端方案。继续阅读本文，你将掌握这两个图像处理库的基础用法及 Canvas 合成的具体避坑细节。",
      "tags": [
        "前端",
        "人脸识别"
      ],
      "series": "frontend",
      "seriesName": "前端工程",
      "date": "2017-09-06"
    },
    {
      "type": "article",
      "url": "/2017/09/01/用addRoutes实现动态路由/",
      "title": "用addRoutes实现动态路由",
      "excerpt": "本文回答了如何在Vue单页应用中优雅地利用动态路由实现后台系统权限控制的问题。核心结论是：借助于 vue-router 的 `addRoutes` API，可以避免登录页与后台系统在实例化时的割裂；但为解决页面刷新导致的路由状态丢失及404陷阱，必须在根组件初始化时重新向服务端校验 token 获取路由并补全 fallback 规则，同时利用 Vue 原型的惰性特性实现全局权限指令。如果你正在负责企业级后台管理系统的权限架构搭建，可以优先关注本文中关于刷新丢失路由的具体解决方案；但如果你只是开发无需鉴权的静态项目，则不建议深究。继续阅读本文，你将掌握一套完整的动态路由注入、持久化处理及自定义权限验证指令（v-has）的实战技巧。",
      "tags": [
        "Vue"
      ],
      "series": "frontend",
      "seriesName": "前端工程",
      "date": "2017-09-01"
    },
    {
      "type": "article",
      "url": "/2017/08/29/基于Vue实现后台系统权限控制/",
      "title": "基于Vue实现后台系统权限控制",
      "excerpt": "本文探讨了在基于 Vue 的后台管理系统中，如何优雅地实现完整的权限控制（包括菜单和按钮权限）的问题。核心结论是：对于菜单权限，最佳实践是在 Vue 实例化前通过用户数据筛选可用路由，而非在每次路由守卫中全量遍历；对于按钮权限，应采用“自定义指令（如 v-has）结合 Axios 统一拦截器”的方式，实现视图级与请求级的双重防护。如果你正在负责前端后台系统的架构设计，或者被繁杂的细粒度按钮权限维护所困扰，可以优先关注本文提供的一整套落地思路；但如果你使用的是完全由后端直出模板的传统 SSR 架构，则不建议生搬硬套本方案。继续阅读可以了解具体的代码伪码演示、如何通过绑定 API 对象减少手动权限声明的维护成本，以及作者对权限控制体系边界的深刻思考。",
      "tags": [
        "Vue"
      ],
      "series": "frontend",
      "seriesName": "前端工程",
      "date": "2017-08-29"
    },
    {
      "type": "article",
      "url": "/2017/08/08/混合应用从开发到发布/",
      "title": "混合应用从开发到发布",
      "excerpt": "本文回答了基于HybridStart和APICloud开发混合应用并发布上架时，容易踩到哪些坑的问题。核心结论是：混合应用开发门槛虽低，但需解决不同平台的Webview渲染和事件兼容问题（如iOS的body事件委托失效、安卓的闪屏色块）；同时，iOS上架需极度谨慎处理无用权限声明及自动更新功能。如果你正在进行混合应用开发且即将提交App Store审核，可以优先关注文中的iOS上架避坑指南；但如果你的项目是纯原生开发，则不建议阅读。继续阅读本文，你将获得特定样式导致闪屏的修复方法及完整的开发前准备清单。",
      "tags": [
        "混合应用",
        "HybridStart"
      ],
      "series": "frontend",
      "seriesName": "前端工程",
      "date": "2017-08-08"
    },
    {
      "type": "article",
      "url": "/2017/07/21/混合应用页面打开速度优化/",
      "title": "混合应用页面打开速度优化",
      "excerpt": "本文回答了如何优化混合应用（Hybrid App）页面打开缓慢及顿挫感的问题。核心结论是：混合应用的页面延迟可通过“提升绝对速度”和“增加过渡效果”来化解；具体措施包括使用图片懒加载，并巧妙利用页面转场动画的300ms空档期，将原本同步阻塞的JS脚本加载与执行延后到 `apiready` 之后进行，从而压榨出约100ms的初始化提速空间。如果你正在使用 Webview 容器开发混合应用并苦恼于页面加载卡顿，可以优先关注文中的脚本异步延迟策略；但如果是纯原生开发，则不建议参考。继续阅读本文，你将了解页面初始化生命周期的详细拆解及 HybridStart 的具体优化实现。",
      "tags": [
        "混合应用",
        "HybridStart"
      ],
      "series": "frontend",
      "seriesName": "前端工程",
      "date": "2017-07-21"
    },
    {
      "type": "article",
      "url": "/2017/07/20/小程序上手指南/",
      "title": "小程序上手指南",
      "excerpt": "本文回答了什么是微信小程序以及如何快速上手开发的问题。核心结论是：小程序是一种具有原生App流畅体验的微信应用载体，其开发语言类似HTML5，但去除了DOM操作并引入了特定的API与单位（如rpx）。如果你正在准备入门微信小程序开发，并且已经具备基本的前端基础，可以优先关注本文的框架解析与组件用法对比；但如果你完全没有前端经验，则不建议直接阅读。继续阅读本文，你将了解小程序与普通H5的详细差异，并通过一个《星座配对》实战项目掌握小程序的实际开发流程。",
      "tags": [
        "小程序"
      ],
      "series": "frontend",
      "seriesName": "前端工程",
      "date": "2017-07-20"
    },
    {
      "type": "article",
      "url": "/2017/07/10/Hexo自定义页面的方法/",
      "title": "Hexo自定义页面的方法",
      "excerpt": "本文讨论了如何在Hexo博客中添加不经过主题模板强制渲染的完全自定义原生页面。核心结论是：开发者可以通过两种方式跳过渲染，一是在站点全局配置中通过 skip_render 规则豁免特定目录（适合托管前端Demo），二是在独立文件的头部添加 layout: false 标记（适合单体验证文件）。如果你正在寻找将个人前端作品集或第三方验证代码与Hexo博客完美共存的方案，可以优先关注本文的配置项与命令清理建议；但如果你只需要书写标准博文，则不建议阅读。",
      "tags": [
        "Hexo"
      ],
      "series": "",
      "seriesName": "文章",
      "date": "2017-07-10"
    },
    {
      "type": "article",
      "url": "/2017/07/07/HybridStart v1.0开发纪要/",
      "title": "HybridStart v1.0开发纪要",
      "excerpt": "本文讨论了混合应用前端框架HybridStart v1.0的设计思路与实现细节。核心结论是：该版本通过移除第三方依赖、提供可剥离的UI组件、内建全局事件机制解决复杂窗口路由（如关闭后台页面），以及引入“快照式缓存”等机制，大幅提升了开发体验并尽量修补了混合应用在渲染和转场上的性能瑕疵。如果你正在使用APICloud等平台进行开发，或是对如何通过底层框架优化混合应用流畅度感兴趣，可以优先关注本文关于架构设计与体验调优的实践；但如果你目前主攻纯原生开发或React Native等新型跨端技术，则不建议阅读。",
      "tags": [
        "混合应用",
        "HybridStart"
      ],
      "series": "frontend",
      "seriesName": "前端工程",
      "date": "2017-07-07"
    },
    {
      "type": "article",
      "url": "/2017/07/03/混合应用框架优化思路梳理/",
      "title": "混合应用框架优化思路梳理",
      "excerpt": "本文探讨了如何优化并设计一个更通用、更易用的混合应用（Hybrid App）开发框架的问题。核心结论是：理想的混合应用框架应坚持“UI可剥离”、“底层平台通用化”以及“仅解决60%高频需求”的设计哲学，从而避免深度绑定特定引擎（如APICloud或Dcloud）或强制捆绑UI库。如果你正在规划公司内部的混合应用架构，或者对轻量级的跨平台解决方案感兴趣，可以优先关注本文的框架设计思路；但如果你更倾向于完全使用官方全家桶（如纯粹的 mui+Dcloud 方案），则不建议阅读。继续阅读本文，你将了解作者在对比主流引擎后的反思，以及重构 HybridStart 框架的核心准则。",
      "tags": [
        "混合应用",
        "HybridStart"
      ],
      "series": "frontend",
      "seriesName": "前端工程",
      "date": "2017-07-03"
    },
    {
      "type": "article",
      "url": "/2017/06/26/基于APICloud的混合应用开发框架/",
      "title": "基于APICloud的混合应用开发框架",
      "excerpt": "本文探讨了在使用 APICloud 进行混合应用开发时，如何通过二次封装与合理的代码组织来降低踩坑率并提升开发效率的问题。核心结论是：原生引擎的 API 往往存在调用繁琐、偶发不稳定的缺陷，通过构建专属的前端脚手架（如 HybridStart）将页面生命周期、模块化组织、本地传参与原生 API 进行高度封装，能极大简化日常业务开发。如果你正在或准备基于 APICloud 等云平台从零开始构建混合应用，且团队缺乏原生开发经验，可以优先关注本框架提供的最佳实践；但如果你正在使用 React Native、Flutter 等更高级的跨端框架，或是追求纯原生性能，则不建议参考此方案。继续阅读可以了解 HybridStart 框架在项目目录划分、页面参数跨状态同步、以及 openView 等高频 API 封装上的具体设计思路与源码参考。",
      "tags": [
        "混合应用",
        "HybridStart",
        "APICloud"
      ],
      "series": "frontend",
      "seriesName": "前端工程",
      "date": "2017-06-26"
    },
    {
      "type": "article",
      "url": "/2017/06/23/2017混合应用开发现状/",
      "title": "2017混合应用开发现状",
      "excerpt": "本文讨论了2017年混合应用开发的现状与技术方案。核心结论是：混合开发以快速迭代和跨平台为最大优势，当前主要依赖三种外壳方案（如Cordova、自研原生外壳、Appcan/APICloud等云平台），其中云平台方案在降本增效上性价比极高。如果你正在评估中小团队或偏内容类项目的开发模式，可以优先关注本文对各类“壳”方案利弊的详细拆解；但如果你的项目对精致度、复杂转场动画和性能有极高要求，则不建议采用通用混合开发方案。",
      "tags": [
        "混合应用",
        "HybridStart"
      ],
      "series": "frontend",
      "seriesName": "前端工程",
      "date": "2017-06-23"
    },
    {
      "type": "article",
      "url": "/2017/06/19/再做一条贪吃蛇/",
      "title": "再做一条贪吃蛇",
      "excerpt": "本文探讨了如何通过优化 DOM 操作来极简实现经典游戏“贪吃蛇”的问题。核心结论是：在基于 JavaScript 的贪吃蛇实现中，只需将蛇尾元素直接移动到即将前进的方向充当蛇头，即可在一次 DOM 操作内完成蛇的整体移动，极大节省了性能开销。如果你正在学习前端基础算法或探索小游戏的实现思路，可以优先关注本文的极简运动逻辑；但如果你需要开发高性能、复杂渲染引擎的 Canvas 或 WebGL 游戏，则不建议采用这种纯 DOM 操作的方法。继续阅读可以了解具体的实现细节，包括地图生成、食物随机生成逻辑、碰撞检测条件以及简易关卡设计的思路，并可直接获取演示源码。",
      "tags": [
        "Javascript"
      ],
      "series": "frontend",
      "seriesName": "前端工程",
      "date": "2017-06-19"
    },
    {
      "type": "article",
      "url": "/2017/06/16/Webpack是答案吗/",
      "title": "Webpack是答案吗",
      "excerpt": "本文探讨了 Webpack 是否是所有前端项目构建的唯一答案。核心结论是：虽然 Webpack 在按需打包和依赖分析上具有巨大优势，但在应对具备丰富多变组件库的传统展示型多页应用时，它并不适用，此时“加载器 + 本地存储（如 seajs + localStorage）”反而是更优的解决方案。如果你正在为多页面展示类网站寻找最优的模块化加载与缓存方案，或者对全面拥抱 Webpack 存在疑虑，可以优先关注本文的业务场景剖析；但如果你开发的主要是现代单页应用（SPA），则不建议深入阅读。继续阅读能够帮助你跳出“逢项目必 Webpack”的思维定势，了解更加贴合实际业务的性能优化思路。",
      "tags": [
        "webpack"
      ],
      "series": "frontend",
      "seriesName": "前端工程",
      "date": "2017-06-16"
    },
    {
      "type": "article",
      "url": "/2017/06/13/Vue全家桶实践项目总结/",
      "title": "Vue全家桶实践项目总结",
      "excerpt": "本文探讨了使用 Vue 全家桶（Vue+Vue-router+Vuex）重构传统 jQuery 项目的完整实践过程。核心结论是：Vue 的双向绑定与集中式状态管理能够极大简化复杂交互与数据流动，但同时也要求开发者具备“谋而后动”的架构规划能力，而非 jQuery 时代的随意灵活。如果你正在经历从 jQuery 到 MVVM 框架的技术栈转型，或者需要重构类似的前端组件管理系统，可以优先关注本文的踩坑经验与技术选型对比；但如果你已经熟练掌握 Vue 并在开发现代单页应用，则不建议花费过多时间阅读。继续阅读可以为你提供有关本地存储优化、数据状态管理以及单页应用视图拆分的实战参考。",
      "tags": [
        "Vue",
        "前端组件管理"
      ],
      "series": "frontend",
      "seriesName": "前端工程",
      "date": "2017-06-13"
    },
    {
      "type": "article",
      "url": "/2017/06/09/Nodejs爬虫实践小记/",
      "title": "Nodejs爬虫实践小记",
      "excerpt": "本文介绍了如何使用 Node.js 开发一个简单的网络爬虫。核心结论是：借助 `http` 模块获取网页、`cheerio` 解析 HTML 以及 `fs` 模块保存文件，前端开发者可以轻松实现针对特定页面结构（如动态生成链接）的自动化抓取。如果你正在学习 Node.js 或需要编写轻量级爬虫来获取网页数据，可以优先关注本文的代码示例与思路分析；但如果你需要处理极其复杂的反爬虫机制或大规模分布式抓取，则不建议直接套用。继续阅读不仅能获得完整的爬虫代码，还能了解到处理路径转义和图片保存等实战踩坑经验。",
      "tags": [
        "Nodejs",
        "爬虫"
      ],
      "series": "frontend",
      "seriesName": "前端工程",
      "date": "2017-06-09"
    },
    {
      "type": "answer",
      "title": "本站有哪些 Agent 友好特性？",
      "excerpt": "本站专为 AI 智能体打造了 Agent-friendly 特性，提供标准的 OpenAPI 接口、全站 Markdown 语料库（llms.txt）、以及符合 NLWeb 协议的自然语言交互接口。",
      "url": "/answers/agent-friendly/"
    },
    {
      "type": "answer",
      "title": "如何联系师兄？",
      "excerpt": "可发送邮件、通过 GitHub 账号联系，或加入技术交流QQ群（361917044）。",
      "url": "/answers/contact/"
    },
    {
      "type": "answer",
      "title": "如何与师兄合作？",
      "excerpt": "可围绕前端架构、工程化、团队建设、AI 辅助研发或相关工作机会展开交流；联系时请说明背景、目标、时间范围和预期合作方式。",
      "url": "/answers/cooperation/"
    },
    {
      "type": "answer",
      "title": "师兄是谁？",
      "excerpt": "师兄是一名前端技术负责人和架构师。在拥有扎实前端架构底盘的基础上，目前正作为独立技术探索者，积极拥抱 AI 辅助研发（VibeCoding）与 Web3 技术。",
      "url": "/answers/who-is-shixiong/"
    },
    {
      "type": "answer",
      "title": "师兄有哪些 AI 实践？",
      "excerpt": "目前的公开实践主要包括 Cursor 与 Codex 辅助研发、复杂任务的上下文与规则管理、任务拆分和人工验收，以及借助 AI 学习企业级 Agent 开发。",
      "url": "/answers/ai-practice/"
    },
    {
      "type": "answer",
      "title": "师兄有哪些开源项目？",
      "excerpt": "代表项目包括 Vue Access Control、HybridStart、Vue Tree Chart、Flow CLI 与 Flow UI，覆盖权限控制、混合应用、前端组件和工程化工具。",
      "url": "/answers/open-source-projects/"
    }
  ]
}
