库是工具箱。
比如宜家买个便宜的架子,自己装,螺丝刀拧的手痛,就买了个电动螺丝刀,生产力立马跃迁好几倍。螺丝刀,电动螺丝刀,就是不同的库,虽然用法不同,API 不同,但想换就换了,改动不大。
框架是一套通用的解决方案。
比如刚才买的架子,可以放书,可以放花,可以放 DVD。也可以个性化,有的地方装上门,装抽屉,但是,它还是个架子,不能在上面睡觉。
对应软件框架来说,通常针对某类典型问题,预先规定好在什么地方做什么事情,不好僭越。更换框架,也是麻烦,就像架子一样,之前装的门,抽屉都要丢掉,架子里东西也要迁移,重新安置。
架构是高度抽象的需求,是系统中的不变量。
比如架子装好了,要有个房子放。买房子,房型图就是架构,这屋书房,那屋睡觉,二人世界,70 平搞定!装修,北欧风,中国风,都可以;打通墙,换马桶,也行,但承重墙不能动,70 平不会多,这就是架构。
开心的住了一年,怀孕了,三胞胎,噗噗噗,生了,婆婆岳母都来了,乌压压的一屋人,晚上客厅里睡倒一片,书房改胶囊旅店也塞不下了,怎么办?没办法!架构在那里,需求的发展超出了架构师的想象,只能认怂,有钱就买新房,换架构,没钱就受着,谁让你当初低估生殖力呢?
平台是所有可能做的事的集合。
比如带着三胞胎搬进了新小区。想溜娃,去小区的滑梯;想运动,去小区的健身角;想游泳,物业说,不好意思,咱是中档小区,大哥你出门,打车,奥体。
在家里,小区就是平台,你能做的受限于小区的设施。同样,网页上,js 操作 dom,风生水起,但想要随意动硬盘里的文件,就困难了,因为它跑在浏览器里,浏览器是平台,有所限制。如果 js 跑另一个平台上,操作文件也不是大问题。微信之于小程序,浏览器之于前端,JVM 之于 Java,皆是平台,既提供了服务,也限制了可能。
具体到实际操作,平台不需太费脑筋,没多少可选;架构比较考验人,设计的不好以后就被虐;框架看团队偏好,一般选熟悉的;库自己选顺手的即可。
总之,边做边学,不用追求完美,有太大压力,谁知道以后需求怎么变呢。