abcbuzhiming
2020-02-18 01:11:44 +08:00
说说我自己对 node 和 js 当前发展路线的“困惑”:
首先,用户群体本身没有啥问题的,js 在语言排名上长期处于 5 名左右。用户社群可能比不上排第一的 java,但是也差不到哪里去。
按理说,当一门技术有相当的使用者,哪怕这个技术本来其实不咋地,但是用户的需求会倒逼技术本身进步,使它逐步补全自己的短板,比如 JVM 刚诞生的时候也不咋地,硬是靠着开源社区的反馈磕磕碰碰但是逐步完善到了今天。
我曾经也是这么看待 JS 语言以及 NodeJS,甚至几年前 NodeJS 向后端渗透时,我曾经很乐观的认为,对后端的介入会让 JS 和 NodeJS 理解到自身的短板在哪里,并加速进步。
然而几年过去了,JS 和 NodeJS 进步了吗?进步了,但是那些应该补上的短板呢?补上了吗?没!
JS 委员会忙着添加各式各样的语法糖,但对前端业界面对的业务复杂度上升,需要工程化,需要更严谨,需要多人协作的呼声视而不见——你们去用 TS 好了,TS 挺好的,类型系统完善,语法优美,社区支持度高。至于我们 JS,那当然要添加更多的特性,更加的灵活,更加的“动态”。。。
你们 JS 技术委员会真的认为只挖新坑不填旧坑就可以了吗?
再说 NodeJS 向后端进军的努力,前后端使用一种语言,降低开发者心智负担,伟大的理想,应该支持啊。然而几年过去了,NodeJS 仍然守着事件机制不放手,好不容易加入了多线程支持,我一看那实现方式我就觉得自己受到了智商侮辱,你管这个叫多线程解决方案?
NodeJS 这几年的技术发展没有一点向别的语言技术学习长处弥补短板的意思,始终停留在自己的舒适区里。若非如此,哪怕 js 本身有各种问题,NodeJS 也不至于只是在 SSR 这个保留地蹲着,早就该扩散了,毕竟前后端同一种语言可是能节约巨量的成本的,然而现在拿 NodeJS 搞 web api 的都没几家(不用拿我公司用了之类的留言,事实就是没几家,对 web 的传统服务领域一点威胁都没有)。
用户真的不是傻逼,1 个领域经过长期发展遗留下来的有历史包袱,但也有时宝贵经验,你总觉得那些都是历史包袱,我和他们不一样是我先进,所以我能取胜,那你只会换来冷遇。不是所有的不同都是你先进,也可能其实是你落后,该补课。
最后说一嘴 NPM,这里我不谈技术好坏,我就想问问,bug 各家包管理里的代码都有,但是,你这包管理工具三天两头的被黑客黑进去放恶意代码,你是缺钱呢还是缺人呢还是缺钱呢??
说真的,我看到 NodeJS 和 JS 现在这个样子,对我自己的经验产生了深深的怀疑,因为历史上没有哪家技术获得了用户的广泛使用后,发展路径是这个样子的。感觉 js 和 nodejs 的技术掌舵人们一副我行我素,完全不理会工程界实际需求的味道,而且 NPM 屡次出现黑客渗透事故也让整个 NodeJS 背后的组织透出一股贫穷的气息。这不符合你的身份啊,全世界的 web 都要用的东西,你缺钱缺人?也许我老了,看错了,NodeJS 其实根本没到大众推广阶段,还只是早期使用阶段,所以才这么多问题?需要再给多点时间?
我会继续关注 JS 和 NodeJS,毕竟一个控制着世界上最广泛使用的开放标准 UI 系统,一个有着前后端同一种语言编写的梦想。但你要说他们现在就很有前景。。。我心里有困惑。
最后 PS 一下,JS 和 NodesJS 的主要竞争对手可没闲着,JVM 正在执行瘦身计划以解决启动内存占用过大问题,Go 正在突飞猛进。并且你 JS 在挖后端的墙角,就没注意到那个 TS 其实是你在前端最大的问题吗,一众后端语言都觉得和尚摸得我摸不得?为啥不能借着编译干脆把 JS 埋葬掉算了?更别提那个野心勃勃的 WebAssembly。别到时候后端没啃下来,前端的基本盘岌岌可危啊