本文只做讨论和个人的一些观点,不喜勿喷,文明交流.
我个人是个8年老前端开发,马上就9年了。12年大一,作为亲戚朋友里的本科独苗,选什么专业真的没有人可以参考,那时候互联网不发达,还没有张雪峰老师.只能自己摸索了,当时我爸让我选土木工程,因为他在工地做事看到不少大学生管事的。我当时家里有个小霸王游戏机,我觉得游戏很好玩,想着读个计算机以后去做游戏吧。就鬼使神差的报了计算机科学与技术,还好父母开明,如了我的愿,也算是吃到了互联网最后一波红利了。
大四实习的时候,我可能忘了当时想毕业做游戏的初衷,进了一家内网安全的互联网公司实习,做开发。当时前后端分离还不流行,写的是JSP项目。后来16年的时候Angular.js、Vue.js开始流行,随着用户对前端的要求越来越高,后端连带着写前端已经不能满足当下的市场环境了。前后端分离的项目开始流行,那时候才有了前端工程师。于是我就开始做前端了,开始了我的第一个前端项目。
现在在这家公司,以前端架构师的Title入职,结果进去后,能力遭到质疑,因为领导也不懂开发。让公司总架构师来单独找我谈话,第一个问题就是: 你觉得前端架构师需要具备哪些能力?我当时懵逼了,因为我已经知道领导对我能力质疑了,让他来给我下最后通牒了。然后我就回答了。
- 在前端技术有足够广的涉猎和足够深的基础
- 足够长的前端领域的开发经验
- 保持学习,对新的技术要有钻研态度,要思考新的技术解决了什么问题
- 要有为公司选择合适框架的能力,能分辨项目适合什么技术栈.
架构师接着问:
展开讲讲?
我个人,喜欢看一些技术贴,公众号,掘金等平台,接触一些新的技术,并尝试实践,把合适的运用到实际中,比如说:新的语法,可选链出来好几年了,但之前面试外包,好多人听都没听过,我解释后,他们说这个可以用来替代三元运算符,但再问具体的,就讲不清楚了,这些人没有持续学习的习惯。再比如说Vite为什么比Webpack快,模块联邦为了解决什么问题,和微前端框架有什么区别。Rspack又是什么?Rust又是什么,跟前端开发有什么关系。这些只能是在社区了解,并下手实践才能明白了。
回答完后,公司总架构师顿了顿,问我来了多久,我说不到一个月,然后他就说我们以为你来了一个多月了.然后又问你觉得公司前端团队怎么样,需不需要调整.我当时对内部的几个前端做了一个主观上的评价,谈话就结束了.现在从结果上看是通过了试用期,转正了.但是给我的职位就是开发,没有管理职能.
自己关于前端的一些思考
普通页码可以让AI做了
现在常见的页面,都能用AI生成了,前段时间我认识的一个产品经理,失业在家,用Cursor自己做了一个应用,AI真大厉害了。他说后端接口要自己写,但页码基本上不用自己写。这么说前端离下岗又近了一步了。
模块联邦可能是很好避免重复造轮子的方案
模块联邦做模块复用,可能是解决企业重复造轮子的一个方案,毕竟这个在前公司实践过,把公共组件、模块抽离到一个公共的服务,其他应用去调用,这时候所有应用都能体验模块联邦服务的更新了。免去了npm包的更新问题和发布规范的问题。对模块联邦感兴趣的,可以看我这篇文章。
Rspack可能是未来
最近几年Vite的更新迭代非常快,得益于原生ES module,使得启动和热部署效率非常高,只是生态比Webpack差,但慢慢也能跟上。但是有个缺陷,Vite的开发和生产对于的包体是不一样的。生产还是会编译成Common.js,这个差异会在极少数情况下出问题。Rspack底层全是Rust,并致力于兼容Webpack生态,所以Vite的2个问题它都解决了,有可能Rspack会是未来。
Rust可能会成为前端大型工具的基础开发语言
前端卡顿活捉耗时,无非就2中情况。
1.一次渲染太多Dom,渲染经常和JS主线程互斥,渲染太多Dom导致页面无法响应用户事件,导致卡。
2.JS一次执行太大的任务,比如说遍历一万条数据。这时候主线程繁忙,页码无法渲染,比如页码Loading可能不动了。
对于第一种卡顿,已经有很好的解决方案了,像React和Vue的虚拟Dom,惰性渲染,Diff宣发等,都是为了解决减少不必要的渲染。requestIdleCallbacK和React的Fiber架构可以在浏览器空闲的时候渲染Dom。对requestIdleCallbacK感兴趣的可以看我的这篇文章。
第二种JS执行大型任务在多数情况下,是实现的不合理,比如说很多时候我们都会DeepClone一个数据,再来做业务开发,这个数据可能是后端返回的,里面有下拉框的选项,如果这个选项有一万条,那这个DeepClone会非常耗时,导致页码卡死。这时候要考虑是否是必须要拷贝这一万条数据了,通常情况下是非必须的。如果是必须的可以使用webworker来解决。对webworker感兴趣的可以看我这篇文章。但对于打包这种计算密集型的场景,JS语言的上限就在那里了,很难突破优化。于是就有了Rspack这种打包编译工具。
最后
最后大家有没有一些思考或者建议呢?对于我这个双非普通本科,没有大厂背景的开发仔,怎么才能破局?或者说前端的出路是什么?