前端的技术难度是什么?
为了避免不必要的争议,我们假设前端指的是Web前端业务开发中的前端部分,也就是狭义的前端。
至于什么可视化、游戏、前端工具框架设计都不重要。
同样,后端也不算编译器、大数据、人工智能、数据库。
我们说的是后端网络业务开发。
逻辑部分。
除了 "文本编辑类、Nwjs的客户端应用 "等特殊应用外,前端的逻辑复杂度基本比后端低很多。
后端需要处理大量的数据和服务,比如双十一的技术难度,这几乎是后端Web开发的技术难点。
性能优化。
性能优化是软件工程中永远的话题,但前端性能优化的大头基本在网络层面。
除了过时的雅虎军规,还离不开缓存、懒加载、组件或路由层面的代码拆分。
还有一些比较难的方面,比如节流、防抖、竞赛请求。
现在比较时髦的PWA和http2也是优化前端的工具,我承认做起来不容易,但是和后端优化相比,它们的难度有多大?
我认为要比后端难度小很多,因为前端层在数据层上太单薄了,比如很多时候后端可以用数据结构性能大大优化。
因为数据量大,请求频繁,这是前端可以通吃的数组,即使双向链表比较合适,但你用了几乎零效果(因为计算量不足以体现),后端的网络层优化并不比前端少。
工程复杂度
以天猫和淘宝为例,这两部门的后台数量远远高于前端,后台系统复杂,后台工程量巨大,双11压力巨大。
我估计后端的代码量是前端的十倍以上(虽然代码量不能直接衡量,但至少不能侧面反映出来)。
我们知道,一个项目的规模与复杂程度密切相关。
前端工程的难度在哪里?为什么前端到了现在还总有岗位?
可能比后端舒适度高一点在于编程复杂度并不高。难在吃青春饭, 到后期确实非常难找工作。只能退居二线三线城市求生存。
岗位方面是不缺的,前端总会有工作等着你,至于薪资高低,就看自己的学历和之前的公司和历史作品了。
业务逻辑复杂多变
“前端的逻辑复杂度没有后端复杂”,只从数据处理的角度来看,前端其实就是一个模板+变量集的数据处理,非常简单。
前端开发的复杂性主要体现在数据、UI和交互的实现上。例如,一个简单的多标签页面功能可以通过CSS或JS来实现。
使用JS可以通过切换、删除DOM元素或添加隐藏类名的方式来实现。虽然可以达到效果,但删除DOM元素无法保持原来的结构状态,而添加类名的CSS方式很难实现一个初始化状态。此外,还需要考虑浏览器的兼容性和响应式设计。
然后,突然有业务需求要求添加一个嵌入他人页面的iframe,或者修改某些效果。如果之前的开发不合理,基本上就需要重新设计。
与后端相比,前端只需输出数据模型,如果业务不需要任何字段,即使前端无法理解,也无需进行修改。但我们的几个重要业务平台需要进行重构,前端需要重新开发(效果和交互完全不同),而后端的模型和数据库可以逐步复用、扩展和升级。这也是导致前端需要投入大量人力创造奇迹的问题所在。