朋友圈有人说希望我聊一下前端先进性,这是个不太好讨论的问题,尝试着从框架定位方面讲讲。
首先,我们看一下前端的问题是啥,我以为最重要的问题是前后端比例失衡问题,本质上这个是不可以解的,只要有地方不叫,那就是需要成本优化的。公司是商业组织,这是很容易理解的。从更大的角度看,整个前端开源生态也面临一样的问题,从3大框架混战到2018年之后就进入相对稳定的时期,能做的更多是微创新,也是一个尴尬的困境。
如果说一定要找解法,优化解法如下。
造轮子,提效,以前造业务相关广度优先,现在是深度优先。
产研链路优化,提效
pk需求,管理预期,降低分子,降压
提升自己产能,坚持每日有点进步
都是打破自身边界的事儿,每个领域其实都是可以有先进性的。以上4点其实是我在阿里4年经历的总结。但论先进性,有些话是不好讲的。以阿里的技术来做品评也是不合适的。如果想做到中立,又能讲清楚,以框架来讨论应该是个好主意。我本人也对开源也还算熟悉,对各种框架也还算熟悉。
框架设计定位的4点想法:人无我有,人有我优,人优我特,人特我转
人无我有:如果市面上没有,那是创新,比如前端同学苦webpack久已,如果能做到bundless,那就是蝎子粑粑独一份,比如snowpack(2018年开始)就是很好的例子。
人有我优:虽然snowpack是第一个,但它还是有很多可以改进的空间,vite(2020年初)做到了真正的按需编译,快速的冷启动,即时的模块热更新,使用rollup插件机制,站在rollup生态上,更方便。
人优我特:在我们做ssr的时候,研究了市面上的所有ssr方案,彼时egg已经做的相当好了,所以我们采用了next的写法,做了ssr和csr无缝降级,在大流量c端方面做了降级,兜底等方面的优化,所以egg-react-ssr的定位是略显小众,特别的,好处是在ssr领域做到最好,聚焦,极致。
人特我转:ssr领域其实能做的,egg-react-ssr已经都做到没有对手了,next转型做大而全,那么ssr接下来如何走呢?2019年Serverless在前端开始成为探索方向,二者结合,将ssr和csr放到Serverless上渲染,于是就有了Serverless-side rendering,即基于Serverless的端渲染。网上说的Serverless ssr其实是被带偏了的,他们只是看到了ssr和Serverless的集合,这是不专业的。
简单的讲了一下框架设计的定位方法,本质上,它考验的是作者的格局,框架定位是否准确,和它能够做到多大是有直接关系的。从定位是可以看出框架的先进性的,比如vite很明显就是踩在风口,根植于rollup生态,最差情况vue自己收益,所以这样的设计是一定会受到开发者的认可的。
再看几个我坚持的原则
遵循DRY原则,不要做同质化的东西。做不出特别的点便不要做。比如fastify就是很好的,虽然是web框架,但在性能领域,无论模块,还是node源码,还是http client都在做优化,这种持续且有深度的开源是非常棒的。相反,如果只是简单的搞一个Web框架,换个写法,不做也罢。
克制,先专精,然后再考虑后面的事儿,毕竟人的精力是有限的。首先能知道自己该做啥的不多,毕竟俯视视角不是一天二天就能形成的。其次,大家习惯性做加法,想改变这种想法是非常困难的,挑战人性。
设计的时候要大,做的时候要小。设计的时候是可以随便讨论的,将所有问题抛出,批判性的反复讨论,最终形成框架的定位,这个过程一定要透明,公允,不然容易带有过多个人意志,虽然很多时候是对的。做的时候小是因为精力问题,先有再优,后面正常迭代就好了。
先解决自己的问题,其次挑一个有挑战的努努力能够搞定的业界难题,如果二者能结合是最好的。很多时候,社会责任很多人是没到考虑的时候,格局不大到一定程度是不会这样思考的。
当然,我们看别人的项目也要有一定的包容性。
先看定位,理解意图,你就会更包容
理解所处阶段,如果业务很忙,如果底子或沉淀不足,如果人不够。。。有很多因素决定框架的质量
基本功是否够硬,比如文档,架构,代码规范等等,多看优点,有思考,有不同,从观赏者的角度有收获就好
其实说白了,换位思考而已,大家都不容易,不必苛责。
先进性本身也是相对的,能够满足自身需求,能够对社区有帮助就更好了。