news 2026/10/15 6:47:56

HBA直通卡与阵列卡区别详解:选型、刷IT模式与避坑指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
HBA直通卡与阵列卡区别详解:选型、刷IT模式与避坑指南

装机时最容易被忽视、也最容易栽跟头的零件,往往不是CPU也不是内存,而是那块插在PCIe槽里、看似不起眼的存储扩展卡。我见过不少人折腾NAS,硬盘买了一大堆,结果系统里只认出一半;也有人给服务器配了阵列卡,跑ZFS却频繁报错,最后才发现是存储架构叠了两层,数据都不知道该听谁的。HBA卡(直通卡)和阵列卡,就是这里最容易混淆的两个东西。它们外形相似、接口相近,但工作方式一个像透明的管道,一个像独立的加工厂。这篇内容就把它们的区别、选型思路、刷固件和实际部署中的坑一次讲清楚,希望能帮准备攒NAS、扩存储或者折腾虚拟化的朋友少走点弯路。

1. 直通卡与阵列卡到底差在哪

1.1 一句话理解核心区别

用生活里最直白的类比:HBA直通卡就是一根透明水管,水龙头那边是硬盘,出水口这边是操作系统,中间没有任何加工和拦截,系统能看到每一块物理硬盘的完整状态。阵列卡则更像一个自来水厂,它把多路水源汇合、过滤、加压,最后只给你一根统一的水管,操作系统只能看到水厂出口的“虚拟水塔”,至于里面有几台水泵、每台水泵什么状态,操作系统统统不知道,得靠水厂自己的管理面板去查。

翻译成存储术语:直通卡把每一块硬盘以独立磁盘的形式完整交还给操作系统,系统里的SMART信息、通电时间、温度、坏道重映射这些都能直接读到。阵列卡则把多块硬盘组合成RAID逻辑卷,操作系统只看到一个或多个虚拟磁盘,物理盘的健康状态被卡上的RAID芯片隔了一道。

这个差异直接决定了后面所有的选型逻辑。如果系统软件本身需要直接管理物理硬盘,比如TrueNAS的ZFS、Unraid、OpenMediaVault,那接阵列卡就等于自找麻烦;反过来,如果环境里需要硬件RAID的稳定性和缓存加速,只靠直通卡又远远不够。

1.2 硬件层面:芯片、缓存和接口的差距

从硬件结构上看,两者最大的区别集中在三点:芯片方案、缓存配置和保护机制。

HBA直通卡的芯片一般就是一颗SAS控制器,工作逻辑相对简单,负责把PCIe总线上的指令转换成SAS/SATA协议发给硬盘。这类卡大多没有板载缓存,或者只有很少的SRAM做队列管理,不需要电池也不需要掉电保护,成本自然低,发热也小,一张被动散热的卡就能稳稳跑很多年。

阵列卡的复杂程度就要高一个档次,板卡上通常有一块独立的RAID处理芯片、一颗或多颗DRAM缓存颗粒,还会配电池或者超级电容模块。写缓存(Write Back)模式下,数据先落到缓存里、确认写成功后才会最终落到硬盘,这个过程中如果突然断电,缓存里那批“还没落盘”的数据就会丢,所以电池和电容不是可选配件,而是保命装置。

接口方面,两者长得几乎一样。常见的是SFF-8087(迷你SAS,对应6Gb/s时代)和SFF-8643(对应12Gb/s时代),都是那种扁扁的小接口,内部通过线材引出4个SATA或SAS通道。市面上还有SFF-8088、SFF-8644这类外部接口,用来接外置硬盘柜。只看接口或者外观,很难第一时间分辨是直通卡还是阵列卡,真正要靠芯片型号和固件模式来判断。

1.3 IT、IR与JBOD:模式决定身份

这里有个特别容易误导人的地方:同一条产线上出来的硬件,刷不同固件就能在不同的身份之间切换。行业里常说的IT模式(Initiator Target)、IR模式(Integrated RAID)和JBOD模式,指的就是固件层面的状态。

IT模式下,卡只做纯直通,系统能看到每块物理盘,这是NAS玩家最想要的状态。IR模式则是在直通的基础上内建了简单的RAID能力,一般支持RAID 0/1/10,部分芯片还能支持RAID 5,但RAID计算还是由芯片完成。JBOD模式严格说是阵列卡的一种特殊映射,它把每块物理盘单独打包成一个逻辑卷交出去,表面看好像每块盘都独立了,但物理盘上面还罩着一层RAID层的壳,SMART等底层信息照样会被过滤。

很多服务器拆机卡出厂默认是IR模式,买回来插上发现系统里看不到硬盘,就觉得是坏的,其实只是没刷成IT模式。反过来,也有不少阵列卡芯片可以通过刷IT固件变成纯直通卡,这也是二手市场里“刷好直通模式”的卡特别多的原因。一句话,判断卡的身份,别只看包装贴纸,一定要看芯片方案和固件模式,后面我详细说怎么查。

2. 选型思路:什么场景该选哪张卡

2.1 NAS玩家为什么普遍选直通卡

我自己装NAS的第一原则是:只要跑ZFS或Unraid,优先考虑HBA直通卡,而且不带犹豫。原因并不复杂,ZFS这类文件系统最大的卖点就是软RAID、数据校验和自愈能力,它需要直接掌握每一块物理硬盘的SMART信息、坏块状态和错误日志,这样才能在数据出问题前提前预警,也才能在阵列重建时只修复真正损坏的盘。

如果中间隔了一层硬件阵列卡,ZFS看到的只是虚拟磁盘,物理盘哪里有问题全被RAID层吞了。更严重的是,硬件RAID之上再做软件RAID,业内叫“RAID on RAID”,不但性能会打折扣,一旦出现磁盘故障,两层的错误处理逻辑还可能“打架”,重建过程比正常情况危险得多。Unraid更直接,官方要求必须让系统直接管理每块硬盘,不然整机阵列都起不来。

从成本和使用体验上说,直通卡也占优势。一块芯片方案成熟、拆机成色不错的8口直通卡,在二手市场几十到两三百元就能收到,功耗普遍只有几瓦,Linux、Windows、各NAS系统基本都有原生驱动,插上就能用。我的经验是,家用或者小型工作室的场景,只要不是跑关键业务数据库,直通卡加软件RAID几乎覆盖所有需求,而且坏了也好排查,至少能看到是哪块盘在报错。

2.2 阵列卡真正的主场在哪

阵列卡并不是全无用处,它在特定场景下依然是更稳的选择,尤其是数据库服务器、虚拟化集群和传统企业存储环境。

数据库这类负载对写入一致性和随机小写性能非常敏感。阵列卡的写缓存可以在内存里批量合并写入,再在空闲时落盘,性能提升非常明显;加上电池和电容保护,掉电时缓存数据还能安全落盘,这是软件RAID短时间内很难替代的可靠性。虚拟化场景里,硬件RAID逻辑卷可以简化运维,新加一块逻辑盘直接挂给虚拟机或集群,不用关心底层物理盘到底是什么姿势。传统老环境里还有很多系统对硬件RAID卡的兼容性更好,直接按厂商适配好的配置,省心。

不过选阵列卡要多操一份心:缓存策略要设置合理,Write Back模式要确认电池或电容健康,电池老化之后卡会强制切到Write Through模式,性能瞬间掉一半以上。我有一次折腾一台老服务器,怎么测都慢,查了半天才发现是阵列卡电池早就挂了,写缓存一直没启用,直接等于拿普通盘在跑。所以选阵列卡从来不是插上就完事的买卖,定期巡检缓存和电池状态是必须的功课。

2.3 型号与芯片对照速查

很多人问到底买哪张,这里给一张基于常见公开芯片方案的对照表,不依赖某个特定品牌,按芯片定位选卡基本不会踩大坑:

芯片方案接口速率典型内部接口物理通道数定位与建议
SAS20086Gb/sSFF-80878通道经典入门,PCIe 2.0,适合6-8盘位NAS
SAS23086Gb/sSFF-80878通道高频率版本,性能和兼容性更好
SAS300812Gb/sSFF-86438通道主流选择,PCIe 3.0,适合SAS/SATA SSD
SAS340812Gb/sSFF-86438通道面向更高负载,支持NVMe扩展等新特性

表格里的8通道意思是可以直连8块盘,如果整机盘位超过8个,要么选16通道版本,要么加SAS扩展器,后面我会专门讲扩展器怎么用。这里还要提醒一句,不要只盯“品牌”,同一个芯片方案下不同牌子、不同成色的卡,价格能差好几倍,但核心能力基本一致。更重要的是拿到手先确认固件模式,该刷的刷成IT模式,远比纠结哪家贴纸更好看有意义。

3. 实战:刷IT模式与部署要点

3.1 刷直通模式前的准备工作

刷固件这件事,没做前觉得挺玄乎,做过一次就知道,关键是准备工作到位。正式动手前需要确认三件事:芯片方案、当前固件模式、是否有原固件备份。

芯片方案怎么看?最简单是开机时看OptionROM自检信息,一般会显示芯片型号和固件版本;进系统后也可以用硬件识别工具看。老一点的卡把散热片拆开,芯片表面丝印也会直接写型号。确认芯片型号是第一优先级,SAS2008/SAS2308用的刷写工具和SAS3008不一样,混用大概率变砖。

当前固件模式怎么确认?进卡的配置界面,不同卡的快捷键不同,常见的是开机时按提示进,有的是Ctrl+C,有的是Ctrl+R,界面里看到“RAID”相关设置说明是IR模式,看到“IT”或“SAS”直连说明已经直通了。买二手拆机卡时,卖家说“已刷直通”,到手后还是要亲自确认一遍,毕竟我遇到过标错的情况。

还需要准备一个DOS启动U盘或EFI Shell环境,把对应芯片的刷写工具和目标固件包放进去。刷机前最重要的一步:备份当前固件和SBR信息。这一步属于不可省略的保险,特别是OEM拆机卡,一旦刷挂,能不能救回来全靠这份备份。

3.2 固件刷写流程实录

下面以一块SAS2008系芯片的拆机卡为例,走一遍从IR模式刷成IT模式的完整流程,这套流程在SAS2008/2308上非常成熟,也是社区里用得最多的路子。

第一步,制作启动盘。拿一个U盘,用写盘工具刻录FreeDOS镜像,再把刷写工具和固件包整体拷进U盘。固件包一般包含几个关键文件:IT模式固件本体(命名类似it.bin)、MPT BIOS或UEFI驱动模块,不同来源的包文件名会有差异,但结构类似。

第二步,清空原固件。从U盘启动进DOS后,执行清空命令,命令格式会根据卡和工具略有差异,常见的是megarec -cleanflsh 0,这里的“0”表示控制器编号。这一步会把原来的IR固件和SBR全部擦掉,擦掉之后卡暂时处于无固件状态,不能重启后放着不管,要立刻准备刷入IT固件。

第三步,刷入IT模式固件并写入引导模块。清空完成后不要断电,重新启动到DOS,执行刷写命令,例如sas2flsh -o -f it.bin -b mptrom.bin,其中“-f”后面是IT固件路径,“-b”后面是引导ROM路径。命令跑完后会有一段时间的等待,千万不能断电,几分钟后提示成功,再重启。

第四步,验证。重启后进卡配置界面,看到模式变成IT,或者进系统后用sas2ircu工具扫描到每块盘都独立出现,就说明刷写成功。sas2flsh和sas3flsh是对应不同芯片系列的工具,参数大体相似但绝对不能混用。OEM卡如果直接刷不进去,通常需要先刷一遍对应厂商的公版SBR,再走上面流程,不同厂商的擦除和写入顺序会有差异,最好对照固件包里的说明操作。

3.3 接线、背板与供电的联动

卡刷好只是第一步,真正让硬盘跑起来靠的是接线和供电的配合。这里最容易出问题的地方不是卡,而是线材和电源。

常见接线分两种情况。手头是普通SATA机械盘或SATA SSD,那就用一分四的转接线,SFF-8087转4个SATA口对应老卡,SFF-8643转4个SATA口对应新卡。SATA盘插在SAS控制器上,协议层面完全兼容,控制器把SATA盘当成标准SATA设备来枚举,SMART照常可读。手头是SAS盘,那就得用原生的SAS线,SAS线一头接卡的SFF-8087或SFF-8643,另一头接背板或者SAS盘。

背板是整机盘位管理的核心。普通背板就是个简单的物理连通器,把信号分发到各个盘位,热插拔和状态灯这类功能本来就有,但扩展能力有限。带扩展器芯片的背板才真正厉害,它能把一个SAS端口扩展成十几个甚至二十几个盘位,同时带SES管理功能,可以读取每块盘的状态灯、温度、风扇状态。盘位超过8个的机箱,强烈建议直接买带扩展器的背板方案,不然靠卡上的物理接口逐个拉线,机箱里会乱成一锅粥。

供电是另一个容易被忽视的点。SATA一分四转接线出来的那四个口是数据口,盘体供电必须单独接,不要让一根电源线同时拖太多盘。机械盘启动瞬间的电流能达到正常工作电流的好几倍,多盘机箱的电源余量要留够,我见过有人用额定功率刚刚好的电源带10块企业盘,开机时候咔咔掉盘的,其实就是电源顶不住尖峰电流。

3.4 BIOS设置与启动细节

接线完成之后,BIOS设置和启动顺序也是影响体验的关键细节。

第一,如果不是从HBA卡上的硬盘启动系统,强烈建议把卡的OptionROM关闭。直通卡在开机自检阶段会加载自己的扩展ROM,盘多了以后自检时间可以长达几十秒,这种感觉很磨人。关闭OptionROM之后,卡依然能正常工作,系统照样能看到所有硬盘,只是卡的BIOS和自检信息不再显示,开机速度快一大截。但如果系统就要装在HBA卡后面的盘上,这个选项必须留着,或者把启动顺序排在后面。

第二,PCIe槽位不要乱插。优先插CPU直连的PCIe x8槽位,别插经过芯片组桥接的窄槽。虽然直通卡对带宽要求不算极限,但SAS3008这种12Gb/s级别的卡跑满时对PCIe通道宽度还是敏感的,插错槽位会出现性能瓶颈。

第三,固件版本不是越新越好。运行稳定之后,没必要频繁升级。固件主要修兼容性问题和增加新设备支持,但如果当前环境盘多、负载高、一直很稳定,就保持现状,升级前必须做足备份,避免为了一点微小更新冒变砖的险。

4. 使用中的常见坑与排查手册

4.1 盘认不全、盘序乱

最典型的现象是:卡明明标着8口,接了12块盘看不到后面的4块。这种情况不是卡坏了,而是物理通道数到了上限,每张卡的端口数就是硬上限,8口卡最多直连8块盘。解决办法只有两个方向:换16通道的卡,或者加SAS扩展器把单端口扩展成更多盘位。家用盘位不超过8个选8口卡刚刚好,超过8个基本就要靠扩展器或背板。

盘序乱是更隐蔽的坑。多盘环境下,卡BIOS枚举硬盘的顺序跟主板SATA槽位编号、系统盘符往往对不上,如果按照“第一个口接哪块盘”来规划阵列,很容易插错盘。我现在的习惯是装新系统前先把每块盘用标签写上序列号,再在卡或系统里核对一遍,全部记录归档后再组阵列。带扩展器的背板如果支持物理盘位映射,把映射关系固化好,之后扩容会省很多事。

还有一个不算坑的坑:开机识别慢。如果插了十几块盘,卡的自检时间几十秒是正常的。想提速,直接把卡的OptionROM关了,反正系统不一定从卡启动,少加载一个ROM能快很多。在意启动速度的,这一步几乎是必做的。

4.2 SMART信息读不到

很多人刷完直通卡,兴高采烈接上SATA盘,结果打开硬盘健康工具什么都读不到,第一反应是刷机有问题。其实原因要分几类来看。

SATA盘接直通卡,SMART一般情况下是可以直接读到的,前提是卡确实处于IT模式,且驱动加载正常。读不到的时候先查驱动,Linux里再确认一下SAS控制器模块是否加载、有没有启用相关的透传功能。部分老固件对SATA透传兼容性差,更新固件往往就能解决。

SAS盘的情况不太一样,SAS协议的SMART不是普通ATA标准,很多桌面端工具直接读不到,需要在命令行下用存储厂家的专用工具去查询。这里不是盘坏了,是协议层面的读取方式不同,用对工具就能看到。

还有一类情况是卡工作在JBOD模式而非真正的IT模式。JBOD模式下物理盘虽然被单独映射出去,但中间还隔着一层RAID层,SMART信息会被过滤掉。遇到这类环境,想读到完整健康数据,最彻底的办法还是把卡刷成IT模式,别拿JBOD当直通用。

4.3 散热、固件与兼容性隐患

直通卡大部分是被动散热设计,就是一块散热片贴在芯片上,靠机箱风道带走热量。机箱里有前置风扇和顺畅风道的时候没问题,但如果把卡插在开放式测试平台,或者机箱风道堵得严实,芯片温度很容易飙到七八十度,这时候掉盘、卡顿都会冒出来。我在开放式环境里都会在卡上方放一个4cm小风扇朝芯片吹,温度能压下去二三十度,省心很多。

固件层面的兼容性坑也值得单独说。老固件可能存在大容量硬盘识别问题,比如超过2TB或者使用4K扇区格式的盘,识别异常。这种问题优先看卡固件版本,太老的固件建议刷到稳定新版本再部署。如果遇到休眠唤醒后掉盘,大多是系统的PCIe电源管理策略在捣乱,把相关电源管理改成性能模式通常能缓解。

排查掉盘问题时,我有个固定的顺序:先看线材有没有松动,再看供电是否充足,然后看温度,最后才怀疑卡本身。这个顺序是按故障概率排的,统计下来线材和供电占了大头,卡的芯片本身反而很少出问题。

4.4 假卡与打磨卡避坑

二手市场的拆机卡性价比很高,但水也深。最怕买到的是打磨卡,就是把芯片上的丝印磨掉重新印一个型号,以次充好。遇到价格异常便宜的“豪华参数卡”,留个心眼,先看芯片表面丝印是否清晰、是否有打磨痕迹,再看PCB板材的做工和金手指的磨损情况,最后上机对照最终识别到的芯片型号是否与售卖描述一致。

翻新卡则要关注电容、散热片和接口的成色。散热片被重新贴过、金手指有明显深划痕、固定螺丝有锈迹的,大概率是拆修货。买二手卡时优先选口碑稳定的卖家,到手先做一次完整验证:识别芯片、记录原固件、跑一遍多盘压力测试,确认没问题再正式部署。买卡省下的几十块钱,不值得用整机数据去赌。

5. 进阶玩法:虚拟化直通与大容量扩展

5.1 把直通卡整个交给虚拟机

直通卡在虚拟化平台里有个非常实用的玩法:把整张卡通过PCIe直通技术直接交给某台虚拟机使用。比如物理机上跑着Proxmox VE或ESXi,里面开一台TrueNAS虚拟机,只要把HBA卡直通给这台VM,虚拟机就能直接管理卡后面所有硬盘,物理机完全碰不到这些盘,数据隔离效果和独立物理机一样干净。

具体设置上,Proxmox VE需要在引导参数里打开IOMMU,不管是Intel还是AMD平台都要把这行参数加进去,然后更新引导配置重启。重启后确认卡的PCIe设备是不是在自己的IOMMU分组里,如果分组干净可以直接添加PCI设备给虚拟机;如果和别的设备挤在一个组里,直通可能受限。ESXi平台类似,也需要在硬件直通配置里把卡的PCI设备标记为可直通,然后分配给对应虚拟机。

这里提醒一句,直通之后整张卡上的所有端口都归这台虚拟机所有,不能再分给别的VM,物理机也没法访问这些硬盘。虚拟机的迁移也会受限,因为PCIe直通设备跟物理主板绑定很紧。如果只想在多个VM之间分硬盘,更好的方案是给虚拟化系统挂载虚拟磁盘,而不是做整卡直通,这个取舍要看实际需求。

5.2 用一个扩展器带满整机硬盘

当盘位需求从8口涨到16口、24口,甚至更多,加扩展器是比换卡更常见的选择。SAS扩展器的工作原理类似网络交换机,它一端连接SAS控制器,另一端提供大量SAS/SATA通道,让控制器通过一个端口连接很多设备。机械盘场景下,单块盘的顺序读写速度通常远低于一条SAS通道的带宽,所以多块机械盘共享链路并不会构成明显瓶颈。

举个例子,一张SAS3008芯片的8口卡提供8条12Gb/s通道,接一个支持24盘位的带扩展器背板后,24块盘全部可以用,带宽由所有盘共享。只要盘位里不是全部塞满高速SSD,实际体验完全够用。如果盘位里全是高吞吐的SAS SSD,共享带宽就会紧张,这时候要评估扩展器支持的通道数和整体带宽,必要时选用更高带宽的控制器方案。

扩展器的部署方式一般有两种:一是买带扩展器芯片的整机背板,适合全新装机;二是单独购买SAS扩展器卡,再通过内部线或外部线接到硬盘柜。前者更整洁,后者灵活性更高,可以根据手头机箱决定。接线时务必注意扩展器自身的供电和散热,24盘长时间跑起来,扩展器芯片的发热不容小觑。

扩充盘位还有一个方向,就是接外部硬盘柜。通过SFF-8644或SFF-8088外部接口连接盘柜,适合不需要整机内置那么多盘、但偶尔要临时接入大量数据的场景。

我个人实际用下来的体会是:如果只是加几块盘,直通卡的物理端口完全够用;一旦整机盘位超过12个,趁早规划扩展器或带扩展器的背板,千万别想把盘位一个个用线拉出来,那种理线噩梦试过一次就不想再试。另一点心得是,所有刷机、接线、扩展的折腾都建立在可靠备份之上。无论新卡旧卡,拿到手先保存好原固件,再开始各种操作。我身边就有朋友因为跳过备份、刷到一半机器断电,卡直接变砖的事,后来找人用编程器才救回来。省那几分钟备份的时间,搞不好要赔上几十倍的时间和一张卡的钱。

最后一句话总结我的习惯:纯粹存数据,闭眼选HBA直通卡;要跑数据库或者搞虚拟化需要省心RAID,再考虑阵列卡。方向选对了,后面基本都是水到渠成的事。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/15 6:47:02

CMS还是自主开发?2026年网站选型成本与决策指南

1. 先把账算清楚:CMS和自主开发分别买的是什么前两天有个朋友问我,2026年了,做网站到底该用CMS(内容管理系统)还是自己写代码?他手里有个内容型项目,既怕CMS后期被业务牵着走,又怕自…

作者头像 李华
网站建设 2026/10/15 6:45:46

超微 X12DAI-N6 主板装机避坑指南:从跳线到 BIOS 实战

简介:超微 X12DAI-N6 主板用户手册面向服务器运维、数据中心部署及高性能计算平台的硬件工程师与装机人员,用于解决主板规格查询、组件安装与故障排查等实际问题。手册围绕 Intel Xeon Scalable 处理器支持、多通道 DDR4 ECC 内存插槽、PCIe 扩展槽、SAT…

作者头像 李华
网站建设 2026/10/15 6:45:46

AI论文写作工具横评:知微AI写作 vs 学林智搜实测对比

又是一个凌晨两点,电脑屏幕的光打在脸上,我盯着导师微信里那句“你这版逻辑还是散的,重写吧”发呆。相信每个被这句话砸过的本科生都知道那种感觉——不是态度问题,是真不知道从哪下手。也是从那天起,我开始认真把手头…

作者头像 李华
网站建设 2026/10/15 6:45:41

SpringBoot电影评论网站系统设计与实现:从数据库到答辩全流程解析

每年这个时候,都会有人拿着“基于SpringBoot的电影评论网站系统设计与实现”这个题目来问我:好不好做?是不是就是个增删改查?这个题目确实是毕设里出现频率很高的方向之一。原因不难理解:业务模型直观,大家…

作者头像 李华
网站建设 2026/10/15 6:45:40

基于FPGA的智能门锁仿真:从课程设计到上板验证的完整路径

简介:本资源为基于FPGA的智能门锁仿真课程设计资料,面向电子信息工程、微电子等专业学生及FPGA初学者,帮助完成EDA技术课程设计或数字电路综合实践。内容围绕Verilog HDL硬件描述语言与Xilinx Vivado开发环境展开,涵盖电子密码锁设…

作者头像 李华
网站建设 2026/10/15 6:45:30

Python面向对象思想:类、self、继承与多态实战解析

如果要投票选出Python里最容易被低估的概念,我一定会投给“面向对象思想”。几乎每本入门教材都会花几页讲class、init、self,但很多人学完之后依然在写函数式脚本;或者反过来,把所有逻辑都塞进类里,最后得到一个比过程…

作者头像 李华