为什么都说前端开发难?

  前端开发的难点在哪里?

  由于这两年单身时间多,我大部分时间都是在学习中度过的。基本上Java是和前端双修。前几个月,我被拖了三个月,因为我所在部门的前端实在找不到人(现在有这么缺前端吗?)。

  现在我对这个题目有一些疑问,前端的技术难度是什么?

  为了避免不必要的争议,我们假设前端指的是Web前端业务开发中的前端部分,也就是狭义的前端。至于什么可视化、游戏、前端工具框架设计都不重要。同样,后端也不算编译器、大数据、人工智能、数据库。我们说的是后端网络业务开发。

  逻辑部分。除了 “文本编辑类、Nwjs的客户端应用 “等特殊应用外,前端的逻辑复杂度基本比后端低很多。后端需要处理大量的数据和服务,比如双十一的技术难度,这几乎是后端Web开发的技术难点。

  性能优化。性能优化是软件工程中永远的话题,但前端性能优化的大头基本在网络层面。除了过时的雅虎军规,还离不开缓存、懒加载、组件或路由层面的代码拆分。还有一些比较难的方面,比如节流、防抖、竞赛请求.现在比较时髦的PWA和http2也是优化前端的工具,我承认做起来不容易,但是和后端优化相比,它们的难度有多大?我认为要比后端难度小很多,因为前端层在数据层上太单薄了,比如很多时候后端可以用数据结构性能大大优化.因为数据量大,请求频繁,这是前端可以通吃的数组,即使双向链表比较合适,但你用了几乎零效果(因为计算量不足以体现),后端的网络层优化并不比前端少。

  工程复杂度

  。以天猫和淘宝为例,这两部门的后台数量远远高于前端,后台系统复杂,后台工程量巨大,双11压力巨大。我估计后端的代码量是前端的十倍以上(虽然代码量不能直接衡量,但至少不能侧面反映出来).我们知道,一个项目的规模与复杂程度密切相关。

  那么,前端工程的难度在哪里?为什么前端会如此缺乏?

  虽然很多人说前端注重用户体验,但我看不出来,更多的是注重编码本身,可能比后端好一点。

  业务逻辑复杂多变

  ”前端的逻辑复杂度没有后端复杂”,但从数据处理的角度来看,前端其实就是一个模板+变量集的数据处理,非常简单。

  前端逻辑复杂度主要在于数据+UI+交互的实现,比如一个简单的多标签页面功能,可以用CSS或者JS来实现。JS可以通过切换删除DOM或者添加类名隐藏来实现,虽然可以达到效果,删除DOM不能是原来结构的状态,添加类名CSS这种方式很难达到一个初始化的状态.另外,浏览器可能需要兼容+响应式.然后突然有业务需求说要添加一个iframe来嵌入别人的页面,或者要改什么效果,如果之前的开发不合理,基本上就会重做。

  与后端相比,只给前端输出数据模型,如果业务不需要任何字段,即使前端读不懂,也不需要改,我们有几大业务平台重构,前端要重新开发(效果和交互完全不一样),后端模型和数据库可以逐步复用、扩展和升级,这也是导致前端需要很多人去创造奇迹的问题。

  

标签