以框架定位論前端的先進(jìn)性
朋友圈有人說希望我聊一下前端先進(jìn)性,這是個(gè)不太好討論的問題,嘗試著從框架定位方面講講。
首先,我們看一下前端的問題是啥,我以為最重要的問題是前后端比例失衡問題,本質(zhì)上這個(gè)是不可以解的,只要有地方不叫,那就是需要成本優(yōu)化的。公司是商業(yè)組織,這是很容易理解的。從更大的角度看,整個(gè)前端開源生態(tài)也面臨一樣的問題,從3大框架混戰(zhàn)到2018年之后就進(jìn)入相對(duì)穩(wěn)定的時(shí)期,能做的更多是微創(chuàng)新,也是一個(gè)尷尬的困境。
如果說一定要找解法,優(yōu)化解法如下。
-
造輪子,提效,以前造業(yè)務(wù)相關(guān)廣度優(yōu)先,現(xiàn)在是深度優(yōu)先。
-
產(chǎn)研鏈路優(yōu)化,提效
-
pk需求,管理預(yù)期,降低分子,降壓
-
提升自己產(chǎn)能,堅(jiān)持每日有點(diǎn)進(jìn)步
都是打破自身邊界的事兒,每個(gè)領(lǐng)域其實(shí)都是可以有先進(jìn)性的。以上4點(diǎn)其實(shí)是我在阿里4年經(jīng)歷的總結(jié)。但論先進(jìn)性,有些話是不好講的。以阿里的技術(shù)來做品評(píng)也是不合適的。如果想做到中立,又能講清楚,以框架來討論應(yīng)該是個(gè)好主意。我本人也對(duì)開源也還算熟悉,對(duì)各種框架也還算熟悉。
框架設(shè)計(jì)定位的4點(diǎn)想法:人無我有,人有我優(yōu),人優(yōu)我特,人特我轉(zhuǎn)
-
人無我有:如果市面上沒有,那是創(chuàng)新,比如前端同學(xué)苦webpack久已,如果能做到bundless,那就是蝎子粑粑獨(dú)一份,比如snowpack(2018年開始)就是很好的例子。
-
人有我優(yōu):雖然snowpack是第一個(gè),但它還是有很多可以改進(jìn)的空間,vite(2020年初)做到了真正的按需編譯,快速的冷啟動(dòng),即時(shí)的模塊熱更新,使用rollup插件機(jī)制,站在rollup生態(tài)上,更方便。
-
人優(yōu)我特:在我們做ssr的時(shí)候,研究了市面上的所有ssr方案,彼時(shí)egg已經(jīng)做的相當(dāng)好了,所以我們采用了next的寫法,做了ssr和csr無縫降級(jí),在大流量c端方面做了降級(jí),兜底等方面的優(yōu)化,所以egg-react-ssr的定位是略顯小眾,特別的,好處是在ssr領(lǐng)域做到最好,聚焦,極致。
-
人特我轉(zhuǎn):ssr領(lǐng)域其實(shí)能做的,egg-react-ssr已經(jīng)都做到?jīng)]有對(duì)手了,next轉(zhuǎn)型做大而全,那么ssr接下來如何走呢?2019年Serverless在前端開始成為探索方向,二者結(jié)合,將ssr和csr放到Serverless上渲染,于是就有了Serverless-side rendering,即基于Serverless的端渲染。網(wǎng)上說的Serverless ssr其實(shí)是被帶偏了的,他們只是看到了ssr和Serverless的集合,這是不專業(yè)的。
簡(jiǎn)單的講了一下框架設(shè)計(jì)的定位方法,本質(zhì)上,它考驗(yàn)的是作者的格局,框架定位是否準(zhǔn)確,和它能夠做到多大是有直接關(guān)系的。 從定位是可以看出框架的先進(jìn)性的,比如vite 很明顯就是踩在風(fēng)口,根植于rollup生態(tài),最差情況vue自己收益,所以這樣的設(shè)計(jì)是一定會(huì)受到開發(fā)者的認(rèn)可的。
再看幾個(gè)我堅(jiān)持的原則
-
遵循DRY原則,不要做同質(zhì)化的東西。做不出特別的點(diǎn)便不要做。比如fastify就是很好的,雖然是web框架,但在性能領(lǐng)域,無論模塊,還是node源碼,還是http client都在做優(yōu)化,這種持續(xù)且有深度的開源是非常棒的。相反,如果只是簡(jiǎn)單的搞一個(gè)Web框架,換個(gè)寫法,不做也罷。
-
克制,先專精,然后再考慮后面的事兒,畢竟人的精力是有限的。首先能知道自己該做啥的不多,畢竟俯視視角不是一天二天就能形成的。其次,大家習(xí)慣性做加法,想改變這種想法是非常困難的,挑戰(zhàn)人性。
-
設(shè)計(jì)的時(shí)候要大,做的時(shí)候要小。設(shè)計(jì)的時(shí)候是可以隨便討論的,將所有問題拋出,批判性的反復(fù)討論,最終形成框架的定位,這個(gè)過程一定要透明,公允,不然容易帶有過多個(gè)人意志,雖然很多時(shí)候是對(duì)的。做的時(shí)候小是因?yàn)榫栴},先有再優(yōu),后面正常迭代就好了。
-
先解決自己的問題,其次挑一個(gè)有挑戰(zhàn)的努努力能夠搞定的業(yè)界難題,如果二者能結(jié)合是最好的。很多時(shí)候,社會(huì)責(zé)任很多人是沒到考慮的時(shí)候,格局不大到一定程度是不會(huì)這樣思考的。
當(dāng)然,我們看別人的項(xiàng)目也要有一定的包容性。
-
先看定位,理解意圖,你就會(huì)更包容
-
理解所處階段,如果業(yè)務(wù)很忙,如果底子或沉淀不足,如果人不夠。。。有很多因素決定框架的質(zhì)量
-
基本功是否夠硬,比如文檔,架構(gòu),代碼規(guī)范等等,多看優(yōu)點(diǎn),有思考,有不同,從觀賞者的角度有收獲就好
其實(shí)說白了,換位思考而已,大家都不容易,不必苛責(zé)。
先進(jìn)性本身也是相對(duì)的,能夠滿足自身需求,能夠?qū)ι鐓^(qū)有幫助就更好了。