Web 前端开发面临的挑战主要有哪些?

1) css和dom提供的接口都太low level了,而BOM提供的控件只有input、select、textarea这几种最基本的,稍复杂一点的UI效果,都要前端自己利用css和dom去组合创造。看到一个需求,脑子里第一步要想如何利用css、dom这些基本的零件组合成最终的这个效果,实现最终效果其实是一个“创造”的过程,比如说tabView,treeView,richEditor,colorPicker这种看起来常见的组件,其实在前端里都是没有现成可用的,需要自己去实现。 

2) 前端语言的胶水性需求太强。css、dom、js是三种不同的技术,这也是前端知识系统中要掌握的最重要的三个基本功。server端编程当然也会需要不同方向的知识,比如php、sql等,但server端编程大部分时间只用专注在某一个知识点上,只要必要时粘一下其它语言。但前端不同,前端的效果是通过css、dom和js三者配合起来最终呈现出来的,脱了任何一个技术都寸步难行,时刻要同时考虑多个方向的知识点。这么说吧,server端编程像是一个单线程,即使有技术交差,也是串行的,而前端编程像是开了三个线程同时在跑,复杂度是成倍增长的。  

3)css+dom+js的组合实在太强大了,同一个效果可以有多种完全不同的实现方式,每一种实现方式都会有不同的开发难度、扩展性、可维护性。解决方案太多,看到一个效果首先会先想到如何用dom和css里那些low level的接口实现他,这是一个“创造”的过程,这时脑子里可能冒出好多种不同的实现方法,“创造”完了之后还要“比较”,权衡各种解决方案的优劣,纠结一阵之后,才能选出最适合的方案。当然,并非前端都是完美主义,一定要选一个最好的方式出来,而是因为前端是GUI编程,直接面向用户,是最直接的产品呈现的部分,是门面了。正因为如此,所以前端也是最容易被反复修改的部分。反复“修改”有多可怕,是个程序员都懂的,如果可维护性不好,那简直是恶梦。所以前端不得不重视可维护性,不重视可维护性直接等于自虐。   

4)浏览器兼容性。浏览器各类非常多,ie、firefox、chrome、opera、还有众多的ie加壳浏览器,搜狗傲游360什么的,再加上这些浏览器的移动终端版本。。。需要有了web标准,前端的知识大部分是通用于各个浏览器,但还是会有历史遗留问题,不同的浏览器有不同的问题特别是市场占有率最高的ie系,就ie自己市面上就有6、7、8、9这4个版本,4个版本之间各有各的问题。如果不积累点经验,面对疑难杂症那是一头雾水。

原文地址:https://www.cnblogs.com/cly84920/p/4426558.html