发动态
综合 最新发布 最新回复
图文
列表
我们最近刚把一个后台系统从 element-plus 切成了完全自研组件,CSS 层统一用 Tailwind。全员同意设计稿一致性提升了,但代码里怨言开始冒出来。这篇文章不讲原理,直接上代码对比和团队真实使用反馈,看看是谁在享受,谁在撑着。1.组件内样式迁移原先写法(BEM + scoped): <template> <div class="card"> <h2 class="card__title">用户概览</h2> <p class="card__desc">共计 1280 位</p> </div> </template> <style scoped> .card { padding: 16px; background-color: #fff; border-radius: 8px; } .card__title { font-size: 16px; font-weight: bold; } .card__desc { color: #999; font-size: 14px; } </style> Tailwind 重写: <template> <div class="p-4 bg-white rounded-lg"> <h2 class="text-base font-bold">用户概览</h2> <p class="text-sm text-gray-500">共计 1280 位</p> </div> </template> 优点:组件直接可读,不依赖 class 定义样式即结构,调样式时不用来回翻缺点:设计稿变了?全组件搜索 text-sm 改成 text-base?无法抽象:多个地方复用 .text-label 变成复制粘贴【顺便提一嘴】技术大厂,前端-后端-测试,全国均有机=会,感兴趣可以试试。待遇和稳定性都还不错~2.复杂交互样式纯 CSS(原写法) <template> <button class="btn">提交</button> </template> <style scoped> .btn { background-color: #409eff;color:#fff; padding: 8px 16px; border-radius: 4px; } .btn:hover { background-color: #66b1ff; } .btn:active { background-color: #337ecc; } </style> Tailwind 写法 <button class="bg-blue-500 hover:bg-blue-400 active:bg-blue-700 text-white py-2 px-4 rounded"> 提交 </button> 问题来了:✅ 简单 hover/active 很方便❌ 多态样式(如 disabled + dark mode + hover 同时组合)就很难读: <button class="bg-blue-500 text-white disabled:bg-gray-300 dark:bg-slate-600 dark:hover:bg-slate-700 hover:bg-blue-600 transition-all"> > 提交 </button> 调试时需要反复阅读 class 字符串,不能直接 Cmd+Click 查看样式来源。3.统一样式封装,复用方案混乱原写法:统一样式变量 + class $border-color: #eee; .panel { border: 1px solid $border-color; border-radius: 8px; } Tailwind 使用中经常出现的写法: <div class="border border-gray-200 rounded-md" /> 问题来了:设计稿调整了主色调或边框粗细,如何批量更新?BEM 模式下你只需要改一个变量,Tailwind 下必须靠 @apply 或者手动替换所有 .border-gray-200。于是我们项目里又写了一堆“语义类”去封装 Tailwind: /* 自定义 utilities */ @layer components { .app-border { @apply border border-gray-200; } .app-card { @apply p-4 rounded-lg shadow-sm bg-white; } } 最后导致的问题是:我们重新“造了个 BEM”,只不过这次是基于 Tailwind 的 apply 写法。🧪 实测维护成本:100+组件、多人协作时的问题我们项目有 110 个组件,4 人开发,统一用 Tailwind,协作两个月后出现了这些反馈:👨‍💻 A 开发:写得很快,能复制设计稿的 class 直接粘贴🧠 B 维护:改样式全靠人肉找 .text-sm、.p-4,没有结构命名层🤯 C 重构:统一调整圆角半径?所有 .rounded-md 都要搜出来替换所以我们内部的结论是:Tailwind 写得爽,维护靠人背。它适合“一次性强视觉还原”,不适合“结构长期型组件库”。🔧 我们后来的解决方案:Tailwind + token 化抽象我们仍然使用 Tailwind 作为底层 utilities,但同时强制使用语义类抽象,例如: @layer components { .text-label { @apply text-sm text-gray-500; } .btn-primary { @apply bg-blue-500 hover:bg-blue-600 text-white py-2 px-4 rounded; } .card-container { @apply p-4 bg-white rounded-lg shadow; } } 模板中统一使用: <h2 class="text-label">标题</h2> <button class="btn-primary">提交</button> <div class="card-container">内容</div> 这种方式保留了 Tailwind 的构建优势(无 tree-shaking 问题),但代码结构有命名可依,后期批量维护不再靠搜索。📌 最终思考Tailwind 是给设计还原速度而生的,不是给可维护性设计的。 设计师爱是因为它像原子操作; 开发者撑是因为它把样式从结构抽象变成了“字串组合游戏”。如果你的团队更在意开发效率,样式一次性使用,那 Tailwind 非常合适。 如果你的组件系统是要长寿、要维护、要被多人重构的——你最好在 Tailwind 之上再造一层自己的语义层,或者别用。分享完毕,谢谢大家🙂——转载自:ErpanOmer
Tailwind 到底是设计师喜欢,还是开发者在硬撑?
开源硬件平台
此题何解
开源硬件平台
V3.0 – 两板集成方案 版本:V3.0 日期:2026-03-21 用途:厂家评估、出样、量产开发 一、项目目标 开发一套双电机升降控制系统,用于控制: 电机1:桌面升降 电机2:显示器升降 系统需具备: 电容触控控制(4键) 无线遥控控制(433MHz) 记忆位置(站姿/坐姿) 自动行程学习 完整安全保护机制 二、系统架构(强制要求) 2.1 整体架构(两板方案) 主控板(MCB)位于底部金属结构内,负责: 双电机驱动(H桥+PWM) 霍尔信号处理 主逻辑控制与安全保护 电源转换(24~29V → 5V) UART通信接口 ↓ UART通信线(≤2m),信号:5V / TX / RX / GND HMI+无线合并板安装在桌面内部(非金属环境),集成: 电容触控区(4弹簧,中心灯珠) 天线区(433MHz) 本地MCU(处理触控、背光、无线、UART) 集成433无线接收 UART通信接口 2.2 架构设计原则(不可更改) 主控板(MCB)位于底部金属结构内,负责电机驱动与主逻辑。 HMI+无线合并板安装在桌面内部(非金属环境),集成触控与无线功能。 主控与HMI之间采用UART通信,线缆长度 ≤2m。 无线模块必须集成在HMI板上,远离金属,与触控弹簧保持 ≥15mm 间距。 禁止将电容触控原始信号通过长线传输(触控信号在HMI板上本地处理)。 HMI板需独立MCU进行本地处理,不得依赖主控进行触控扫描。 三、硬件系统要求 3.1 主控板(MCB) 功能: 双电机驱动(正反转 + PWM,频率 ≥20kHz) 霍尔信号处理(双路AB相,5V供电) 主逻辑控制 安全保护 与HMI板UART通信 电气要求: 输入电压:24~29V DC 输出:5V(供HMI板使用) 电机驱动:双路独立 H桥 持续电流:≥2A/路 峰值电流:≥3A/路 待机功耗:≤0.5W(休眠状态下) 驱动要求: 必须支持正反转(H桥或等效方案),不接受继电器切换方向 PWM频率 ≥20kHz Hall信号需做RC滤波及施密特触发处理 5V电源方案: 24V→5V 降压建议采用同步降压 DC-DC(如 MP2307 或同类),效率≥85%,输出电流≥500mA(含 HMI 板+霍尔供电余量)。 硬件急停: 硬件急停通过切断 24V 主供电链路实现(串联急停开关或继电器),MCU 软件急停为辅助手段,不可替代硬件断电。 电机接口线序(仅供参考): 电机线序建议按捷昌标准6芯:MOTOR+、MOTOR-、HALL_B、HALL_A、HALL_GND、HALL_5V。若使用其他线序,请提前沟通。 3.2 HMI+无线合并板 功能组成: 电容触控(4键) LED背光(4个,每个弹簧中心一颗) 本地MCU(处理触控、背光、无线、UART通信) 433MHz无线接收模块(集成在板上) 触控要求(不可妥协): 电容弹簧:直径 ≥12mm,高度 8~10mm 面板:木板,感应距离3~5mm(局部薄区约1mm) 触控芯片需具备上电自动基准校准和自适应环境基准跟踪,能稳定穿透木板厚度 触控信号在本地处理,不得通过长线传输 LED要求: 每键1颗LED,支持PWM调光 无线模块要求: 频率:433MHz(学习码) 距离:室内 ≥5米 模块集成在HMI板上,远离金属结构,与触控弹簧保持 ≥15mm 间距 天线区域(后部约53×17mm)正反面禁止铺铜,天线走线做阻抗匹配 无线模块电源需独立滤波(100nF+10µF),不与触控芯片共用 遥控器配套: 配套遥控器由厂家推荐或采购市售 433MHz EV1527 学习码遥控器(4键),需与接收方案兼容,厂家需提供配对测试说明。 布局建议: HMI板尺寸约53×70mm(具体以附图为准),触控区与天线区物理分隔 触控感应走线建议加 Guard Ring(地线包围) 触控IC的模拟地与无线模块的数字地单点汇合,避免大面积混用 UART接口(5V/TX/RX/GND)放置于板侧边,方便与主控连接 3.3 通信接口 主控 ↔ HMI: UART,线长 ≤2m 电平:5V逻辑,建议上拉4.7kΩ 支持校验(建议CRC)和超时机制 HMI ↔ 无线模块: 由模块接口决定(UART/GPIO),直接连接至本地MCU 四、功能逻辑 详细功能逻辑见单独提供的 《功能逻辑表》(含按键映射、唤醒休眠、长按运行、组合键学习、记忆位置、安全保护等)。 请厂家按该表完整实现,本处不再重复。 五、抗干扰要求(必须满足) 系统在电机运行、LED PWM、长线通信等条件下必须稳定运行,不得出现误触发、死机、无线失效。 HMI板布局需分区、单点接地 无线模块电源独立滤波 UART通信线建议使用屏蔽线或双绞线,远离动力线 六、交付要求(量产级) 必须交付以下文件,确保可直接移交生产: 硬件部分: 原理图(源文件+PDF) PCB Layout(源文件+Gerber) BOM(含替代料) 贴片坐标文件 装配图 固件部分: 完整源码(C语言,注释清晰) 烧录文件(hex/bin) 烧录工具及烧录说明 固件版本管理说明 测试部分: 功能测试规范(含测试点说明) 老化测试方案(≥48小时) 不良品判断标准 其他: 线束图纸 接口定义说明 装配说明 物料承认书清单 七、验收标准 功能验收:按《功能逻辑表》逐项验证通过 无线验收:遥控器室内5米稳定控制,配对可靠 稳定性验收:连续运行48小时无异常(含休眠唤醒) 量产文件验收:所有文件齐全,可支持工厂直接生产 八、厂家评估要求 请提供: 方案说明:是否基于现有平台,简要技术路线 样品周期:从合同到提供2套完整样机的时间 报价:NRE(研发费)与BOM成本(按1000套批量)分开列出 重点评估: 53×70mm空间内集成触控、LED、MCU、433模块及天线的布局可行性 3~5mm实木板穿透的触控灵敏度稳定性 天线区净空及抗干扰措施的实现 附:推荐器件参考清单 (厂家可替换,需提前沟通) 主控MCU:STC8H8K64U(LQFP-32,约2元) HMI MCU:STC8G1K08(SOP-16,约0.8元) P-MOS高边:AP40P100K(TO-252,约0.6元) N-MOS低边:HYG180N10LS1P(TO-220FB,约0.6元) 电容触控IC:BS86C04A(合泰,SOP-16,约1.5元) 433接收IC:SYN480R(杰盛微,SOP-8,约0.7元) 5V电源:MP2307/MP1584 类(SOT-23,约0.5元) 说明:以上器件仅为参考,厂家可根据自身供应链选用同等性能、封装兼容的替代料,需提前沟通确认。 附件: 板框示意图(附后) 功能逻辑表(附后)
双电机升降桌控制系统(PRD)
开源硬件平台
"微服务是银弹!" "Docker不是银弹!" "React才是真正的银弹!" 天天在文章和评论区看到这个词语,他到底是个啥,又是从哪里开始的。今天不讲技术,聊一下啥是银弹。概念来源"银弹"(Silver Bullet)这个概念来自于弗雷德里克·布鲁克斯(Fred Brooks) 的经典著作《人月神话》(The Mythical Man-Month)。1986年,布鲁克斯在著名论文《没有银弹:软件工程的本质与偶然性》中提出了这个影响深远的论断:在软件工程领域,没有任何技术或方法能够在十年内使生产率、可靠性和简洁性有数量级的提升。狼人传说的隐喻为什么要用"银弹"这个词?这个比喻来自狼人传说:狼人:被认为是不死的、无坚不摧的怪物银弹:传说中唯一能够杀死狼人的武器布鲁克斯用这个比喻来说明:软件开发的本质复杂性 = 狼人(看似不可战胜的难题)神奇的技术解决方案 = 银弹(人们期望的一招制敌的办法)残酷的现实 = 银弹根本不存在软件困难的分类布鲁克斯将软件开发的困难分为两类:本质性困难(Essence)这些是软件开发固有的、无法避免的困难:概念结构的复杂性:软件本身的概念结构不可见性:软件没有物理实体,无法直观把握一致性和可变性:必须适应不断变化的需求离散性:软件系统的状态组合极其庞大偶然性困难(Accident)这些是由于当前工具和技术限制造成的困难:开发工具的限制编程语言的复杂性硬件性能约束团队协作问题布鲁克斯的核心观点是:银弹最多只能解决偶然性困难,但无法触及本质性困难。 ,虽然我没看完,但总结下来应该就是这个意思😂需要一个跳板工作的,想一手抓主业,一手抓副业的,不妨看看这个机会~:技术大厂,前端-后端-测试,全国均有机会,感兴趣可以试一试;待遇和稳定性都还可以~ 且不需要你耗费很多“人际关系的心力”在上面。2. 现在"银弹"的实际含义银弹 = 能够解决所有问题的技术、方法或工具技术圈中的典型使用当有人说"xxx是银弹"时,通常意味着:这东西太厉害了,能解决我们所有的烦恼有了它,之前的所有问题都不是问题了别的技术都可以不用考虑了典型例子: // React派 const ReactIsSilverBullet = () => {     return "React才是真正的银弹,解决所有前端问题!"; }; // Vue派 const VueIsSilverBullet = () => {     return "Vue才是银弹,简单易学,性能无敌!"; }; // 微服务派 const MicroservicesAreSilverBullet = () => {     return "微服务就是银弹,拆分后所有扩展问题都解决了!"; }; // Docker派 const DockerIsSilverBullet = () => {     return "Docker就是银弹,一次构建到处运行!"; }; 当有人说"xxx不是银弹"时,意思是:这个技术有局限性,不能解决所有问题不要指望它能一劳永逸还是需要配合其他方案典型例子: -- MySQL不是银弹 -- "MySQL虽然不错,但面对大数据量时还是有限制,不是银弹!" -- K8s不是银弹 -- "K8s功能强大,但运维复杂度很高,不是银弹!" -- 敏捷开发不是银弹 -- "敏捷不是银弹,还需要结合其他工程实践!" 3. 银弹概念的传播路径3. 银弹含义的演变过程原始含义(1986年)核心概念: 能够数量级(10倍)提升软件开发生产率、可靠性和简洁性的技术或方法软件开发的本质复杂性是否存在革命性的突破技术软件工程的基本限制现在的技术圈上普遍的含义能够神奇完全解决具体场景的一系列问题的技术、工具或方法React vs Vue 哪个更好微服务 vs 单体如何选择MySQL vs MongoDB 哪个更适合Docker vs K8s 如何选择总结能很清晰的看到银弹这个词从抽象的架构设计理念,演变成了具体的对某件技术、框架、工具、方法的评价。原本:指软件工程中的架构设计和整体方法论现在:变成了对具体某个技术方案、技术框架的评价工具具体含义变化原始含义:布鲁克斯指的是能否根本上解决软件复杂性的架构方法现在含义:用来评价某个具体技术、框架、工具是否万能也反映了大家讨论技术的时候,越来越具体,越来越落地。 普通人也很难接触到什么太抽象,太宏大的架构设计,我们也更应该关心更具体的方案,来更好的解决问题。——转载自:9号达人#嘉立创PCB#
大家天天说的'银弹'到底是个啥?
开源硬件平台
在pcb散热设计中,导热硅胶片的选择常常让工程师陷入困惑。市场上琳琅满目的产品参数中,导热系数(W/m·K) 往往成为最受关注的指标。但真相是:盲目追求高导热系数,可能正在让你的散热方案走入误区。本文将揭示三个最常见的认知偏差,帮助您做出更明智的选择。误区一:导热系数越高,散热效果就一定越好这可能是最具迷惑性的误区。理论上,导热系数越高,材料传导热量的能力越强。然而在实际应用中,散热效果是一个系统性问题。关键点解析:1. 界面接触热阻才是“真正的瓶颈”    即使使用导热系数极高的材料,如果与发热表面和散热器表面接触不充分,其间存在的微观空隙(充满导热效率极差的空气)会形成巨大的接触热阻。这就像在宽阔的高速公路两端设置了狭窄的匝道,整体通行效率依然低下。2. 热路匹配原则    散热系统的热阻是串联的,如同木桶效应。当其他环节(如散热器本身的热阻、对流换热效率)成为短板时,一味提升界面材料的导热系数,带来的整体降温收益将微乎其微,性价比极低。我们的建议:选择导热硅胶片时,应首先评估其在实际压力下的界面贴合能力与压缩性。一款中等导热系数但贴合完美、能有效排挤空气的材料,其实际效果往往优于高导热但坚硬不易贴合的材料。误区二:只需关注导热性能,其他参数可以忽略许多工程师选型时只盯着导热系数,却忽视了决定长期可靠性的关键指标。三个被低估的“生命线参数”:1. 出油率(油离度)     误区:认为轻微出油不影响使用。     真相:硅油持续析出,会污染精密元器件(如光学镜头、连接器),更致命的是,它会导致材料本身干涸、硬化,导热热阻随时间急剧上升,散热性能快速衰减。选择低出油率的材料,是保障设备长期稳定运行的基础。2. 耐老化性与长期稳定性     设备需经历长时间的冷热循环、振动与应力作用。劣质硅胶片会变脆、开裂或过度软化,失去填充作用。必须关注材料在高低温循环测试后的性能保持率。3. 绝缘强度     对于高压应用场景(如新能源汽车、电网设备),导热硅胶片必须具备足够高的绝缘强度(击穿电压),防止漏电或击穿风险。导热与绝缘,需双重保障。我们的实践:在合肥傲琪电子的产品标准中,我们不仅标定初始导热系数,更将低出油率、高耐老化性、优异绝缘性作为核心质量控制点,确保材料在全生命周期内性能可靠。误区三:材料越厚,填充效果越好;硬度越高,导热越佳这是关于物理特性的常见误解。1. 关于厚度:     过厚的硅胶片热阻本身较大,且可能因压缩不足导致接触不良。理想的厚度是略大于装配间隙,在施加组装压力后能产生20%-30%的合理压缩形变,从而形成紧密贴合。应根据实际结构间隙精细化选择厚度,而非“越厚越安心”。2. 关于硬度:     过硬的材料难以填充不规则表面,接触热阻大;过软的材料则可能因过度挤压导致厚度不足,甚至被完全挤出接触区域。关键在于找到适配特定压力与表面粗糙度的最佳硬度,实现最大化有效接触面积。我们的解决方案:合肥傲琪电子提供全系列的厚度(0.3mm-10.0mm)与硬度( Shore C 30至 Shore C 50)选项,并提供免费样品测试,协助工程师匹配最优的机械性能组合,而非简单推荐“最硬”或“最厚”的产品。结语:建立系统化的选型思维选择导热硅胶片,本质上是为您的散热系统选择一位长期、可靠的“合作伙伴”。它不应只是一个冰冷的参数,而应是一套平衡了导热性能、机械特性、长期可靠性与成本的综合解决方案。正确的思路是:1. 明确应用场景(功率密度、工况温度、振动条件、绝缘要求)。2. 系统分析热阻瓶颈,确定界面材料的性能优先级。3. 关键指标综合考量:在满足基本导热需求的基础上,重点考察压缩回弹性、出油率、长期稳定性。4. 进行样品实测:在模拟真实工况的条件下测试验证,数据胜过一切参数表。
导热系数越高越好?关于导热硅胶片的三个认知误区
开源硬件平台
优质硬件创作分享平台
打赏记录
服务时间:周一至周六 9::00-18:00 · 联系地址:中国·深圳(福田区商报路奥林匹克大厦27楼) · 媒体沟通:pr@jlc.com · 集团介绍
移动社区