你好!我是 Xingmahao,一名拥有 年实战经验的 Web 前端工程师。
从 2017 年入行以来,我先后在成都海天众意软件有限公司和成都爱信雅克科技有限公司任职,深度参与了50+ 个大大小小的前端项目,涵盖了 PC 端管理系统、微信公众号、微信小程序、移动端 App(HBuilderX/Electron 打包)、可视化数据大屏、3D 离线地图、以及微信自动化机器人等多样化的技术场景。
我热衷于技术探索和工程化实践,善于独立解决问题,也具备良好的团队协作与沟通能力。面对新技术和新挑战,我始终保持学习和尝试的热情。
累计参与 50+ 个项目,以下为代表性项目:
Electron 打包桌面应用时,针对 Win7/Win8/Win10/Win11 不同系统的兼容性处理要点:
① Node.js 版本选择 — 老系统需降低 Electron 版本(如 Electron 13-19 对 Win7 支持较好),高版本 Electron 不再支持旧版 Windows
② 缺少运行时 DLL — 部分精简版 Windows 缺少 VC++ 运行时库,需要将 vcruntime140.dll 等依赖一并打包
③ .NET Framework — Electron 依赖 .NET Framework 3.5+/4.x,老系统可能未安装,需要在安装程序中检测并提示安装
④ 系统 API 兼容 — 部分较新的 Node API 在老系统中不存在,需要做 feature detection 或 polyfill
⑤ 字体回退 — 老系统缺少部分中文字体,CSS 中需设置 font-family 回退方案
在电力内网环境中部署 3D 地图的技术要点:
① 离线瓦片下载 — 使用 Bigemap 自带的离线下载工具,按区域和级别预下载地图瓦片(建议 0-18 级)
② 3D 模型资源倾斜摄影 — 大型倾斜摄影模型需进行切片处理,否则加载缓慢或崩溃
③ 本地服务配置 — Bigemap Server 需要配置本地瓦片路径、端口、跨域策略
④ WebGL 兼容性检查 — 内网电脑显卡可能老旧,需做 WebGL 能力检测并降级到 2D 模式
⑤ 内存优化 — 大范围 3D 场景容易导致内存溢出,需要实现动态加载/卸载机制和 LOD 分级
微信机器人的技术实现路径和注意事项:
① 技术选型 — 基于 itchat / wxpy / 企业微信机器人等方案,需注意接口稳定性和反封号策略
② 消息模板 — 停电信息需要结构化模板(区域、时间、原因、预计恢复时间),便于用户快速获取关键信息
③ 定时调度 — 使用 node-cron 或类似库实现定时拉取停电数据并推送给关注用户
④ 用户管理 — 维护用户关注列表,支持订阅特定区域的停电通知
⑤ 异常重试 — 推送失败需要有重试机制和日志记录,确保重要信息不遗漏
⑥ 合规注意 — 需遵守微信平台规则,避免频繁发送导致账号限制
面对不同尺寸的大屏设备(如 1920×1080、2560×1440、3840×2160 等)的适配策略:
① 设计基准 — 以 1920×1080 为设计基准,使用 rem/vw 单位配合 scale 变换
② ECharts 响应式 — ECharts 实例必须监听 resize 事件重新渲染,避免拉伸变形
③ 字体缩放 — 大屏字体在不同 DPI 下需要调整,可用 JS 计算当前比例系数
④ 组件网格 — 使用 CSS Grid 或百分比布局,避免固定像素定位导致错位
⑤ 性能考量 — 4K 大屏上 ECharts 图表过多会卡顿,需做懒加载和虚拟滚动
⑥ 浏览器兼容 — 大屏常使用定制浏览器(如 Chrome 内核 Kiosk 模式),需提前确认内核版本
在国家电网项目中使用 SM5 国密算法的前端集成要点:
① 算法引入 — 使用 sm-crypto 库(npm install sm-crypto),纯 JS 实现无需编译
② 封装层 — 将 sm4.encrypt/decrypt 封装为通用的 request/response 拦截器,对业务代码透明
③ 密钥管理 — 密钥不能硬编码在前端代码中,通过安全通道从后端动态获取
④ 数据格式 — 注意加密前后的 Base64 编码/解码处理,确保二进制数据传输不丢失
⑤ 调试技巧 — 开发环境可以关闭加密方便调试,生产环境强制开启;使用 console 输出明文对照排查问题
在多个微信小程序项目中积累的性能优化经验:
① setData 优化 — 频繁调用 setData 是性能杀手,尽量合并更新、减少数据量、使用 this.$nextTick
② 图片懒加载 — 列表中大量图片必须懒加载,配合 CDN 和 WebP 格式压缩
③分包加载 — 主包超过 2MB 会无法发布,合理拆分 subPackages 并预下载常用分包
④ WXS 处理 — 复杂交互逻辑(如滑动删除、手势操作)优先用 WXS 而非 setData
⑤ 缓存策略 — 利用 wx.setStorage 做本地缓存,减少网络请求;注意 storage 有 10MB 上限
⑥ 白屏优化 — 骨架屏(Skeleton Screen)提升感知速度;预加载下一页数据