Live2d Test Env

【论道】前端之路总结

逝者如斯夫,不分昼夜——《论语·子罕》

一转眼五年快过去了,除了一直想写一个论道篇以外,除了日渐后移的发际线和日益退化的表达能力以外,也想写一些别的。想到哪写到哪,读者慢慢看,笔者慢慢写

除了有限的一两年以外,开发生涯中大部分时间都是自己在摸索,好在幸运赶上了AI时代,极大的开拓了自己的视野。不幸的是赶上了AI时代,近几年积累而来的心血比不过一个合理有意义的prompt

自从去年无意发现某媛卷前端后,笔者就在思考前端岗与后端岗的区别。

后端注重的是数据的安全性,正确性以及合理性,前端注重的是与用户的交互及数据正确合理的展示。react哲学中有一个叫UI=fn(state)中的说法,大致意思是说根据状态返回对应的ui(也有说法是UI=fn(props),即ui根据父组件传递的值来改变,此说法有争议,此处不做讨论),结合23年承权哥展示了一手对数据的处理后就如同醍醐灌顶一般清晰了。如何处理的?现在想来很简单,无非将后端返回的数据再进行二次处理罢了。为什么一直记得?因为这件事使笔者领悟到了身为开发者的天职:对数据的处理。后端建表用以规范格式化对数据的处理,但前端并没有这些条条框框,只要确保数据正确(合理)、通俗易懂(可读性强)就可。

做事总要有度,关于写代码也同样如此,个人认为可读性与优雅性似乎是一个天然的对头,可读性太强的近义词是代码冗余,优雅简洁又会让人觉得晦涩难懂,关键在哪?关键点就在于对度的掌握性。 所谓平衡的艺术便是如此。

不得不说vue2极大的降低了前端的学习曲线: 一个this走遍整个单页面,结合生命周期+模板语法即可完成大部分常规业务开发,剩下的则是一些所谓有最好无也行的奇技淫巧的运用。

传统开发中,其实大多数服务器接口开发,就是检验下前端数据和身份的合法性,然后写个SQL操作下数据库,返回JSON给前端。其实很无聊。----截自unicloud官网。

一个导师曾经教导我,一个技术也好,一个库也好,学会它30%的东西可以在80%中的日常开发中使用,这句话在近几年尤其是在去年,越发深刻的体会到这句话的意义

所谓第三方库存在的意义就是为了大幅度减少重复开发的工作,也许会因为性能以及空间问题或被迫或主动不断迭代,但是它或它们存在的本质意义不会改变——为了适应需求。在这里也分享一句话:真正赚钱的永远是商业模式和资源流动,技术主要是用来提高效率。

如何理解?

市场因需求而产生,而技术本质上是为了实现需求而产生的一类工具,具体的工具是什么,可能因开发者的使用习惯而定,可能因框架本身的优缺点而定,可能因技术调研的结果而定,但本质上它仅仅是实现需求的工具,是为了尽可能快的达到目的而使用的一种手段。

以jq与vue举例,jq被认为前端划时代的产物,一个$符号使开发者免于使用原生js查找dom的苦恼,因而它显得大而全,异议者则认为它大大增加了页面的渲染成本。

而vue则是继jq后又一划时代的作品:脱胎于NG但又没有NG那么大的学习成本,开发者不必再为了dom抓马,而可以将关注的点放在逻辑处理方面。异议者同样会因其额外的指令语法,额外的template对其报以鄙视,认为其并不是真正的js(尤其对于主张all in js的react开发者而言)。

至于react与vue的本质区别,《react设计原理》对其这样描述:

我们多次提到两个概念--逻辑与UI。JSX 和模板语法都能描述这两个概念,但是出发点不同。模板语法的出发点是,既然前端框架使用 HTML 描述 UI, 就扩展 HTML语法,使它能够描述逻辑,即“从UI出发,扩展UI,描述逻辑”。JSX的出发点是,既然前端框架使用ES描述逻辑,就扩展ES语法,使它能够描述UI,即“从逻辑出发扩展逻辑,描述 UI”。虽然两者达到了同样的目的,但是会对框架的实现产生影响。

​在react/vue的发展趋势上我们也可以发现一个有趣的现象:

react从16.8版本后逐渐放弃了使用类组件,即抛去了类的概念,hook函数的出现使函数式编程在react中成为主流。

vue在vue3后也抛去了this的概念,万物皆函数。

客观一点说,就是从面向对象编程逐渐转向了函数式编程

至于基于vue/react而衍生出来的跨端技术框架,而在理解了vue/react后也会变得轻车熟路:不论是基于react的rn/taro,亦或者基于vue的uniapp,他们的亮点在于抹平了端与端之间的大部分差异(注意是大部分),使开发者可以将重心放在实现需求上,同样的,由于本质上是兼容,因而也会产生许多意料之外的bug,写此类项目时,一要额外注意排期,二要注意真机状态下项目的真实形态,所谓模拟器是框架开发者给业务开发者编织的一场美梦,是一场理想状态下的完美的梦。所谓语法糖,也无非是底层开发者为业务开发者提供的兼容。

这几年其实也有尝试过写一些后端的小玩意,比如前年学了python,发觉它的语法跟js没什么太大区别,向上推而论之,感觉别的语言也都大差不差,只要注意这个语言特有的规范,其实所有的语言都大差不差,为什么?因为所谓的编程语言,无非是人类在计算机领域表达意图的符号化表达,由此也想到了一个问题:既然大差不差,是不是也算另类的造轮子?不过在研究了几个语言的发展史后发现其实也找到了答案:一个语言的诞生的原因之一是当下的编程语言满足不来当下的项目需求。 编程语言本身并没有好坏之分,在评估使用它的风险以及付出成本后选择的那个语言就是项目的最优解。

上面都是编的

以上。

posted @ 2025-04-30 10:36  致爱丽丝  阅读(123)  评论(0)    收藏  举报