惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

aimingoo的专栏
aimingoo的专栏
人人都是产品经理
人人都是产品经理
M
MIT News - Artificial intelligence
C
Cybersecurity and Infrastructure Security Agency CISA
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
爱范儿
爱范儿
Spread Privacy
Spread Privacy
P
Palo Alto Networks Blog
Security Archives - TechRepublic
Security Archives - TechRepublic
T
The Blog of Author Tim Ferriss
The Cloudflare Blog
WordPress大学
WordPress大学
小众软件
小众软件
H
Help Net Security
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Blog — PlanetScale
Blog — PlanetScale
V2EX - 技术
V2EX - 技术
H
Hacker News: Front Page
Last Week in AI
Last Week in AI
D
DataBreaches.Net
V
V2EX
S
Securelist
C
CXSECURITY Database RSS Feed - CXSecurity.com
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
T
Tenable Blog
Cloudbric
Cloudbric
月光博客
月光博客
Y
Y Combinator Blog
博客园 - 三生石上(FineUI控件)
N
News and Events Feed by Topic
K
Kaspersky official blog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
S
Secure Thoughts
S
Security Affairs
W
WeLiveSecurity
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
The Last Watchdog
The Last Watchdog
AI
AI
有赞技术团队
有赞技术团队
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
博客园 - 【当耐特】
罗磊的独立博客
Google DeepMind News
Google DeepMind News
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
N
Netflix TechBlog - Medium
PCI Perspectives
PCI Perspectives
SecWiki News
SecWiki News
IT之家
IT之家
Microsoft Azure Blog
Microsoft Azure Blog
V
Visual Studio Blog

WSH

凑数日子 2026年,大概将会是最后一个人口保持在14亿以上的年份 感谢之人 数字经济中的注意力交易 突然的噩耗 一株洋瓜藤 再见到姑妈 港澳掠影 Miniflux 中文搜索能力增强 慢慢吹~~~轻轻送~~~ 房子梦 探索云南-大理 证书过期导致的错误 过年被追问工资 在秋天开始 水里的鱼 斩断联系1 云南壮族婚恋 我有一颗乳牙 世界的底色是争,抢,偷 无题4 无题3 人来人往 AI见闻 无题2 滇池掠影 WebGIS 三维空间分析之参考超图实现的天际线分析 我原来是个同步单线程 往事如烟1 净月潭之行 一万次悲伤 开源丑闻的碎碎念 浏览器标签页进程引发的性能问题 山的那边 想回到过去去去去去去去去去去去去~ WebGIS开发之glsl支持 WebGIS三维空间分析之坡度计算 WebGIS 三维分析之阴影率分析 幸福(或我的女儿叫波兰) 最后一课 Markdown解析高亮及Mermaid 上海掠影 Cesium/QGIS加载图新地球LRC自定义图层 端午粽子 如何清晰地写作 清明扫墓 自编写,自用的开源工具 饮食 AI在GIS领域的实践之QGIS-MCP 燕南飞 WebGIS 三维空间分析之剖面线分析 WebGIS三维开发中的面积量测 WebGIS空间分析之坡向分析的实现 收藏自由-新的书签工具 月夜杂谈 花海,指弹版 三维之Cesium分屏显示 请验证您是真人 GIS数据转换——从点到栅格 自定义「ONE · 一个」订阅源 西湖美人峰徒步 给开源RSS服务应用Miniflux添加「标题翻译」 五一青山湖骑行 将chatGPT集成到微信机器人 动手更换旧手机——google pixel3的电池 Vue组件检测无效属性 ArcGIS复杂插件处理 两件关于博客网站变更的事情 Vue开发个人守则 账户注销后遗症 《纳瓦尔宝典 财富与幸福》前两章的一些摘录 听一首黄歌—Yellow 坏事总是成双 出差消小记 cesium-控高分析 当你孤单你会想起谁 穿越城市-青山湖 Harry Browne关于个人金融安全17条黄金守则—财富之道 批量裁剪矢量数据的几种途径 小而美的软件 想回到过去 热!热!热! 那么近,又那么远——遥望 为什么win笔记本触摸板没有mac好用呢 一只猫 二月份的检讨 自定义Cesium缩放控件 线段简化的几种算法 今天看球了吗? HDF转为GeoTIFF QGIS插件编写 乐高风格地图 基于Python的遥感可视化记录 使用Python提取遥感影像中的土壤线 接触pandas QQ音乐评论可视化 拆分-应用-联合 阳光打在我身上 淘宝商品信息可视化
提高开发幸福感所做的举措之构建前端基础设施
WSH · 2025-09-13 · via WSH

问题1

通用三维功能的代码分散在不同项目中,没有形成稳定的基线版,一直在为某个项目的个性化而改来改去,在项目A改一点,又在项目B改一点,这时新来一个项目C,Ta们直接把原A或者B的代码复制到C里,为了C的个性需求,又一通乱改,最后改的“六亲不认”。同一个功能,下意识就会想到复用代码,但是有些项目时间很紧迫,连同着UI组件,很冗余,来不及修改,而且没时间写测试,所以在A,B,C中会出现专属于自己的幽灵bug(还有共同的),修复之后没有在另外的项目中合并更新,以至于出现“同一个bug,重复修改”的奇观。

问题2

业务无关的通用性功能的代码和GIS框架,JS框架互相耦合,剪不断理还乱,彷佛一次性代码,写完即弃,无法在新项目中快速复用。记得当初接触到系统部开发的一个系统,前端仓库代码每个文件动辄几千行代码,所有逻辑都写在Vue2组件里(选项式),这简直就是噩梦。

解决方案

上述问题自我加入公司之后就存在了,一直没人解决,虽然项目都能正常跑,但是开发过程挺难受的,便上书领导尝试去解决。

我的解决方案是直接将通用性功能从业务中剥离,使用MonoRepo + Rollup + Pnpm 构建一个业务无关的SDK(即NPM包),每一个功能对应一个子包,可按需安装子包或完整的主包,接着使用Verdaccio搭建NPM私服,在项目中直接npm install 一把梭哈。

好处如下:

  • 代码共享和复用更简单:多个项目可以轻松共享组件、库而无需跨仓库复制。减少重复工作,并便于维护一致性。
  • 集中测试:在包中引入统一的测试框架,集中编写单元/集成测试,项目中不再单独进行重复测试。
  • 文档自动化:使用如JSDoc或TSDoc自动生成详细的API及示例文档,便于跨团队/项目合作,降低沟通成本。
  • 保护代码:可通过构建工具对产物进行混淆,加密,防止逆向或提高逆向难度,保护代码资产。
  • 精细化提交和变更:跨项目的修改可以作为一个提交处理,例如当为某项目个性化而更新SDK时,同时调整依赖它的应用,确保一致性和减少错误;自动生成ChangeLog,功能迭代变更一目了然。
graph TD
SDK --> a[项目A]
SDK --> b[项目b]
SDK --> c[项目...]

从业务开发的角度看待,就是1.以后项目开发的速度更快(目前基本以项目为主,开发速度对成本控制至关重要),系统基本是各个互相独立的模块的按需组合;2.可以将业务中一些通用的功能沉淀下来,慢慢打磨成一个通用性的产品级系统(模板)或者打造一套类似element-plus的组件库,以便更进一步提高开发速度。

graph TD
SDK --> ui[组件库]
ui --> a[项目a]
ui --> b[项目b]
ui --> c[项目...]

以前我总是犹豫不决,觉得有些问题不属于自己的工作内容和职责,就想着去逃避它,将解决的希望寄托在别人身上,即使问题已经压到我脸上,因此走了很多弯路,今后不管是谁的问题,只要是阻碍我的问题,我都要解决,千方百计去解决它,我要自己救自己。