导读:要成为一名高效的Web开发者,这须要咱们作不少工做,来提升咱们的工做方式,以及改善咱们的劳动成果。而在开发中不免会遇到一些困难,从前端到后端,近日,在问答网站知乎上,有人抛出了“
Web前端开发面临的挑战主要有哪些?
”和“
后端开发主要的挑战有哪些?
”话题,众技术大牛各抒己见,CSDN软件研发频道对本文内容进行了整理,方便你们学习与参考。
1、Web前端开发所面临的挑战
盛大Web工程师
曹刘阳
:前端语言的胶水性需求太强 前端必须重视可维护性
1.CSS和DOM提供的接口水平过低了,而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的组合实在太强大了,同一个效果能够有多种彻底不一样的实现方式,每一种实现方式都会有不一样的开发难度、扩展性、可维护性。解决方案太多,看到一个效果首先会先想到如何用CSS和DOM里那些low level的接口实现,这是一个“创造”的过程,这时脑子里可能冒出好多种不一样的实现方法,“创造”完了以后还要“比较”,权衡各类解决方案的优劣,纠结一阵以后,才能选出最适合的方案。固然,并不是前端都是完美主义,必定要选一个最好的方式出来,而是由于前端是GUI编程,直接面向用户,是最直接的产品呈现的部分,是门面。正由于如此,因此前端也是最容易被反复修改的部分。反复“修改”有多可怕,是个程序员都懂的,若是可维护性很差,那简直是恶梦。因此前端不得不重视可维护性,不重视可维护性直接等于自虐。
4.浏览器兼容性。浏览器种类很是多,IE、Firefox、Chrome、Opera、还有众多的IE加壳浏览器,相似搜狗、傲游、360,再加上这些浏览器的移动终端版本。须要有Web标准,前端的知识大部分是通用于各个浏览器,但仍是会有历史遗留问题,不一样的浏览器有不一样的问题特别是市场占有率最高的IE系,就IE本身市面上就有六、七、八、9这4个版本,4个版本之间各有各的问题。若是不积累点经验,面对疑难杂症那是一头雾水。
第一大挑战:兼容性。虽然微软已经决定将IE 6安乐死,IE 9/10看起来至关标准。向后兼容彷佛轻松了,但向前兼容又开始愈来愈让人头疼了。Android上的webkit是多么混乱,在桌面浏览器上老是有CSS Hack能够摆平,但在mobile上只能考虑退化方案。从兼容浏览器(外加套壳的浏览器)到兼容设备,实际上兼容性变得更复杂了。
第二大挑战:交互的复杂度。和目前UI/交互的要求相比,浏览器引擎给咱们接囗的确过低级了。因而今年前端技术的热门话题是各类Javascript,CSS的预处理器、各类MVC框架和微框架的讨论。
第三大挑战:代码可维护性。复杂度的提高直接影响代码的维护性。JS/CSS/HTML代码生命周期愈来愈长,也就愈来愈须要从代码质量、架构和工具上保证它们的可维护性。代码的历史问题是永远的痛点。
第四大挑战:性能。
第五大挑战:我的成长。
前端的开发,若是没有整体的设计思路,会成为一种碎片似地程序,一个效果一堆代码,一个功能一滩脚本,一个需求片逻辑,我曾经遇到过,由于ue调整,把整个前端的代码除了核心数据处理函数保留,其他的所有修改的状况。基本上前端的开发,处于DOM操做,数据处理,数据交互三部分,若是合理的分配这三部分的功能,那么前端的代码就很容易扩展和调整。他认为真正的前端开发挑战,还在于开发者的思路。兼容性,布局,CSS和JS都不是问题,问题在于如何合理的组织语言逻辑,若是正确抽象出需求中的模块。如何用代码处理,清楚的用代码表达出思路,清楚的写好注释,给后续维护者一个可阅读的思路。前端的改动量,是后端的数倍,前端没有绝对,只有跟随需求不停的修改。
程序员,品聚网前端主管,KindEditor做者
罗龙浩:
挑战1:解决浏览器兼容性,各类浏览器,不一样版本,不一样操做系统。
挑战2:优化性能,主要是DOM方面,须要不少技巧。
挑战3:设计、交互感受,常常为一个UI细节反复折腾。
挑战4:耐心,在国内互联网公司前端工做很是杂,常常为别人擦屁股,却得不到重视,坚持下来的都是牛人。
Web前端的开发主要问题在于这是一个变化过快的领域,刚有沉淀就可能已经更新换代。不过自从Yahoo提出了前端工程 (Front-end Engineering)的概念以后,能够说已经打开了一个新的局面,经过把软件工程中一些成熟的思想引入Web前端领域,一些重要的概念开始获得普遍的关注和实践,好比页面的架构化设计、定量分析、浏览器兼容矩阵等。我看到目前最大的挑战仍是在Web前端的根基,即浏览器标准上。Web前端要基于浏览器才能呈现给最终用户,交互也严重依赖于浏览器提供的基础构件,目前的浏览器局面,基本上不是慢慢归一,而是愈见复杂,这对开发者提出的要求就太高了,固然跨浏览器的代码框架发展也很好很快,不过仍是一个即有效又不失灵活性的基本标准才是治本之道。
2、Web后端开发面临的挑战:
盛大创新研究院研究员 庄表伟:规模、安全、效率、需求、教条
1.第一大挑战,后端开发最重要的挑战,来自于规模
规模的扩大,好比访问量扩大,文件存储量扩大,数据量扩大,服务器数量扩大等。一个前端看起来如出一辙的网站,某一种指标若是扩大十倍,几乎都会面临一大堆的问题和挑战。另外一方面,在规模扩大之后,后端系统架构,必定会复杂化。原来只有一台Server,LAMP都装在一块儿。而后数据库分出来,反向代理,负载均衡,分库分表,Memcache,Message Queue,事务处理,CDN,NOSQL,种种架构,Server,就逐渐的演化出来了。架构的复杂化,天然会带来更多的问题和更多的挑战。
2.第二大挑战,来自于安全
安全问题层出不穷,防不胜防。须要技术手段,也须要管理制度。
3.第三大挑战,来自于效率
可否提供足够的处理速度,可否提供足够的带宽,可否保证响应能力,这些是对外的效率。可否使用更少的服务器,可否使用更加便宜的服务器,可否使用更加节省能源的服务器,这些是对内的效率。
4.第四大挑战,来自于需求变动
固然,不管前端后端,都会面临需求变动,只要是软件开发,这都是大挑战。可是当一个系统已经稳定的,高效的运行时,需求变动来了,在知足需求以后,本来来没有问题的部分,会不会忽然崩溃,一旦崩溃,就是后端工程师的噩梦。
5.第五大挑战,来自于教条
这个世界上有无数IT大公司,他们都很开放,都愿意分享本身的架构与技术。因而,对于“眼界开阔”的后端工程师而言,困难不在于如何解决,而在于如何从众多的解决方案中作出挑选。框架、实践不断涌现,成功案例也不断涌现。人家都用得好好的,你敢用吗?究竟是敢于尝鲜,仍是保守要紧呢?这个很难。
1. Design for failure。后端至关比例的代码不是为了通常状况下正确而存在,而是为了保证特殊或者极端状况下系统可接受的响应而存在的。这里有很是多的折衷要作:渐进改进仍是超前设计?水平扩展、业务优化、前台仍是后台处理?大量的折衷都是要根据不断变化的环境和需求去权衡的,因此很容易犯错。
2. Architecture is about abstract。为何要抽象?由于抽象的概念有更好的适应性,更易于复用,更能灵活适应变化。可是抽象是很难的,不恰当的抽象更是贻害无穷,要命的是,这些并无很好的方法论,多数是依靠一组基本的原理,凭经验做出的。而Web后端开发在很长时间里并无很重视这些,不少网站都是粗放型设计和开发出来的,因此补丁叠补丁的结构就瓜熟蒂落的成为了主流。
3. Architecture IS product。架构自己即产品,一个软件产品包含了不一样的视角,其中最重要的包括用户看到的视角、以及软件骨架即架构的视角。但产品就是产品,全部这些视角都是必须统一和一致的,这就要求架构必须理解产品的灵魂,而产品要理解架构的困难所在,不然很容易出现想作的事情作不到或者以巨大的架构代价实现一个边角功能这类悲剧。