中土建设集团有限公司网站网站如何做搜索功能的
2026/1/24 4:27:57 网站建设 项目流程
中土建设集团有限公司网站,网站如何做搜索功能的,3合1网站建设公司,wordpress 用户徽标最近在维护博客侧边栏时#xff0c;遇到了一次非常典型、也非常“真实”的问题#xff1a; 最近刚换上的 Hexo 时钟插件#xff0c;突然因为第三方 API 挂了#xff0c;直接失效。 这篇文章记录了我从问题出现到完整解决的全过程#xff0c;包括插件改造与 npm 发布。 这篇…最近在维护博客侧边栏时遇到了一次非常典型、也非常“真实”的问题最近刚换上的 Hexo 时钟插件突然因为第三方 API 挂了直接失效。这篇文章记录了我从问题出现到完整解决的全过程包括插件改造与 npm 发布。这篇文章会讲什么排查hexo-butterfly-clock-remake失效原因自行修改并重写 IP 定位逻辑接入高德地图 Web 服务 API打包并发布自己的 npm 插件完成Hexo 插件的安装与更新一、问题背景IP 定位接口失效我上一篇 Blog 使用的是下面这个插件hexo-butterfly-clock-remake用于 Butterfly 主题侧边栏显示时间 天气 城市原插件依赖的 IP 定位接口为https://api.vore.top/api/IPdata某天开始出现异常表现为插件完全不渲染浏览器控制台请求失败结论非常明确第三方 IP 定位 API 已不可用接口直接炸了而插件本身已经多年未维护也没有任何备用定位方案。二、解决思路用高德地图 Web 服务接管 IP 定位问题集中在IP → 城市这一步因此整体思路非常清晰保留原有插件结构与注入方式只替换 IP 定位来源不影响原有和风天气QWeather逻辑为什么选择高德地图高德地图 Web 服务提供了稳定可靠的 IP 定位接口https://restapi.amap.com/v3/ip?key{你的Key}优点非常明显接口稳定国内访问速度快返回城市 / 省份信息已足够使用免费额度对博客场景完全充足三、我具体做了哪些改动1. 新增配置项在站点配置或主题配置中新增一项gaud_map_key: xxxxxxxxxxxxxxxxxxxxx说明这是高德地图 Web 服务 Key与 JS SDK Key 不同专用于 IP 定位接口2. 修改 IP 获取逻辑原逻辑简化IP API → city → QWeather新逻辑高德 IP API → city / province → QWeather当 IP 接口返回的city为空时自动 fallback 到province最大限度避免出现「未知城市」。四、为什么我选择单独发布一个新插件我没有直接向原仓库提 PR而是选择独立维护保持向下兼容重新发布 npm 包不影响原插件用户最终插件命名为hexo-butterfly-clock-veeink GitHub 仓库地址 https://github.com/kitia01/hexo-butterfly-clock-veeink这是一个只增强、不破坏的改进版本。五、发布 npm 包的全过程1. 登录 npmnpm login按提示输入npm 用户名密码邮箱OTP如开启 2FA2. 配置package.json确保关键信息正确{ name: hexo-butterfly-clock-veeink, version: 1.0.0, main: index.js, keywords: [hexo, butterfly, clock], license: MIT }3. 发布到 npm重点npm publish⚠️ 注意npm不允许覆盖已发布版本号每次发布必须升级版本。六、Hexo 中如何安装 / 更新插件1️⃣ 安装1卸载旧时钟插件如存在npm uninstall hexo-butterfly-clock npm uninstall hexo-butterfly-clock-anzhiyu npm uninstall hexo-butterfly-clock-anzhiyu-yang npm uninstall hexo-butterfly-clock-remake2安装本插件npm install hexo-butterfly-clock-veeink2️⃣ 使用方式1添加配置在站点配置_config.yml或主题配置_config.butterfly.yml中加入使用前需注册和风天气开发者账号 https://dev.qweather.com# electric_clock # seehttps://github.com/kitia01/hexo-butterfly-clock-veeink electric_clock: enable: true # 插件开关 priority: 5 # 过滤器优先级 enable_page: all # 应用页面可写特定路径或 all exclude: # 排除页面可留空或写具体路径 # - /posts/ # - /about/ layout: type: class # 容器类型class 或 id name: aside-content # 目标容器的 class 或 id # insert_before: user-countdown # 插入到该元素前面 insert_after: card-announcement # 插入到该元素后面二选一 loading: https://cdn.cbd.int/hexo-butterfly-clock-veeink1.0.0/lib/loading.gif clock_css: https://cdn.cbd.int/hexo-butterfly-clock-veeink1.0.0/lib/clock-min.css clock_js: https://cdn.cbd.int/hexo-butterfly-clock-veeink1.0.0/lib/clock-min.js qweather_api_host: {YOUR API HOST} qweather_key: {YOUR KEY} # 新增高德地图 Web 服务 Key gaud_map_key: {YOUR KEY} # 高得地图web服务key default_city: 资兴2参数说明参数类型释义prioritynumber【可选】过滤器优先级数值越小执行越早默认为10选填enabletrue/false【必选】控制开关enable_pagepath【可选】填写想要应用的页面,如根目录就填’/‘,分类页面就填’/categories/。若要应用于所有页面就填all默认为allexcludepath【可选】填写想要屏蔽的页面可以多个。写法见示例。原理是将屏蔽项的内容逐个放到当前路径去匹配若当前路径包含任一屏蔽项则不会挂载。layout.typeid/class【可选】挂载容器类型填写id或class不填则默认为idlayout.nameid/class【必选】挂载容器名称layout.insert_beforeid/class【可选】 插入到该元素前面二选一layout.insert_afterid/class【可选】插入到该元素后面二选一loadingURL【可选】电子钟加载动画的图片clock_cssURL【可选】电子钟样式CDN资源clock_jsURL【可选】电子钟执行脚本CDN资源qweather_keykey【必选】和风天气 keyqweather_api_hostURL【必选】和风天气 api_hostgaud_map_keystring【可选】高得地图web服务key如果没有填写则根据默认城市优先选择default_citystring【可选】当默认城市为空优先根据IP定位填写了默认城市将优先使用默认城市的定位和天气3️⃣ 重新生成博客hexo cl hexo g hexo s确认侧边栏时间天气城市定位均正常显示。七、踩坑记录真实❌ JS 压缩minify时错误混淆作用域运行时报ReferenceError❌ 过度依赖第三方 API 的稳定性✅ Key 通过配置传入而非写死✅ IP 定位失败时增加 fallback避免 UI 直接炸掉八、总结这次经历让我非常清楚地意识到博客长期稳定 ≠ 第三方 API 永久可靠同时也完整走了一遍 npm 插件发布流程整体并不复杂但每一步都有坑。如果你也在使用hexo-butterfly-clock-remake并遇到城市定位失效的问题希望这个插件和这篇记录能帮到你。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询