Web前端 VS Web后端
想从事软件业的毕业生们大多要从基础的程序员做起。相较于其他的职位,Web软件开发工程师是一个技术要求较高、前景较好的工作。Web软件开发工程师可以分为Web前端和后端开发。那什么是Web前端,什么是Web后端呢?它们的差异在哪里?在工作中又分别会遇到怎样的问题呢?乔布阅读了大量的资源,为童鞋们整理了这样一份资料,主要分为前端和后端的差异和它们各自所面临的挑战。希望对你有所帮助!
Web前端和后端的差异职能上的差异
首先,我们要分清Webdesigner(页设计师)和Webdeveloper(页开发者,也称程序员)的差异。二者之间的差异主要表现在:一个是有关站的视觉或美学方面,被称为“前端”;另一个则是看不见的编码方面的设计,被称为“后端”。简而言之,漂亮的站界面都是出自页设计师之手,而牛逼强大的功能则是页开发者的杰作。
除职能上的差异以外,二者还有其他许多差异。国外设计站Downgraf特地制作了一张图表来展现——页设计师和页开发者(程序员)都留胡茬,一个没钱,一个没时间;二者都喜欢内涵T恤,一个走字体设计线路,一个走代码风;二者都配自家装备,一个必带MacBookPro,一个只挑小键盘……除以上种种差异,他们还有一个共同点:畏惧MM,看来都是“宅”惹的祸。
再来看一下前端设计师与后端开发师的比较搞怪而又形象的辨别(图片来自雷锋):
技术上的差异
我们再从技术的方面,瞧瞧在实际的招聘中,各大企业要求前端人员与后端人员分别具有怎样的能力。
Web前端:
1.精通HTML,能够书写语义公道,结构清晰,易维护的HTML结构。
2.精通CSS,能够还原视觉设计,并兼容业界承认的主流浏览器。
3.熟习JavaScript,了解ECMAScript基础内容,掌握1~2种js框架,如JQuery。
4.对常见的浏览器兼容问题有清晰的理解,并有可靠的解决方案。
5.对性能有一定的要求,了解yahoo的性能优化建议,并可以在项目中有效实行。
Web后端:
1.精通JSP,servlet,javabean,JMS,EJB,Jdbc,Flex开发,或对相干的工具、类库和框架非常熟习,如Velocity,Spring,Hibernate,iBatis,OSGI等,对Web开发的模式有较深的理解。
2.熟练使用oracle、sqlserver、mysql等经常使用的数据库系统,对数据库有较强的设计能力。
3.熟习maven项目配置管理工具,熟习tomcat、jboss等运用服务器,同时对在高并发处理情况下的负载调优有相干经验者优先斟酌。
4.精通面向对象分析和设计技术,包括设计模式、UML建模等。
5.熟习络编程,具有设计和开发对外API接口经验和能力,同时具有跨平台的API规范设计和API高效调用设计能力。
总而言之,二者的差异在于
职能上,前端主要负责界面的设计;后端主要是制作界面后的功能。
形象上,前端重视情势、美观;后端重视功能、实用性(为此,还特地去了乔布堂的研发部做了实地考察,发现我们的前端工程师买了2台Macbook,而后端工程师买了2个键盘。惊人的符合!)
企业招聘中,前端工程师需要精通JS,能熟练运用JQuery,懂CSS,能熟练应用这些知识,进行交互效果的开发;后端开发人员需要会写Java代码,会写SQL语句,能做简单的数据库设计,会Spring和iBatis,懂一些设计模式等。
要成为1名高效的Web开发者,需要做很多工作,来提高工作方式并改良劳动成果。而在开发中难免会遇到一些困难。那末,前端与后端分别面临的挑战主要有哪些呢?来和一起看一看吧!
Web前端开发面临的挑战前端开发的5大挑战
第一大挑战:兼容性
浏览器种类非常多,IE、Firefox、Chrome、Opera、还有众多的IE加壳浏览器,类似搜狗、傲游、,再加上这些浏览器的移动终端版本。需要有Web标准,前端的知识大部分通用于各个浏览器,但还是会有历史遗留问题,不同版本的浏览器有不同的问题。特别是市场占有率最高的IE系,虽然IE9/10看起来相当标准,但向之前版本间各有各的问题,向前兼容非常头疼。如果不积累点经验,面对疑难杂症那是一头雾水。
第二大挑战:交互的复杂度
CSS和DOM提供的接口水平过低,而BOM提供的控件只有input、select、textarea这几种最基本的,稍复杂一点的UI效果,都要前端自己利用CSS和DOM去组合创造。看到一个需求,头脑里第一步要想如何利用CSS、DOM这些基本的零件组合成终究的效果,实现终究效果其实是一个“创造”的进程,比如说tabView,treeView,richEditor,colorPicker这类看起来常见的组件,其实在前端里都是没有现成可用的,需要自己去实现。
前端语言的胶水性需求太强。CSS、DOM、JS是三种不同的技术,这也是前端知识系统中要掌握的最重要的三个基本功。前端的效果是通过CSS、DOM、JS3者配合起来终究出现出来的,脱了任何一个技术都步履维艰,时刻要同时斟酌多个方向的知识点。前端编程像是开了三个线程同时在跑,复杂度成倍增长。
第三大挑战:代码可维护性
复杂度的提升直接影响代码的保护性。CSS+DOM+JS的组合实在太强大了,同一个效果可以有多种完全不同的实现方式,每一种实现方式都会有不同的开发难度、扩展性、可维护性。解决方案太多,看到一个效果首先会先想到如何用CSS和DOM里那些lowlevel的接口实现,这是一个“创造”的进程,这时候头脑里可能冒出好多种不同的实现方法,“创造”完了以后还要“比较”,权衡各种解决方案的优劣,纠结一阵以后,才能选出最合适的方案。固然,并不是前端都是完善主义,一定要选一个最好的方式出来,而是由于前端是GUI编程,直接面向用户,是最直接的产品出现的部份,是门面。正由于如此,前端也是最容易被反复修改的部份。反复“修改”有多可怕,是个程序员都懂的,如果可维护性不好,那简直是噩梦。所以前端不能不重视可维护性,不重视可维护性直接等于自虐。
第四大挑战:性能
第五大挑战:个人成长
开发者的思路很重要前端的开发,如果没有整体的设计思路,会成为一种碎片似地程序,一个效果一堆代码,一个功能1滩脚本,一个需求片逻辑。曾遇到过,由于ue调剂,把全部前端的代码除核心数据处理函数保存,其余的全部修改的情况。基本上前端的开发,处于DOM操作,数据处理,数据交互3部份,如果公道的分配这3部份的功能,那末前端的代码就很容易扩大和调剂。
真正的前端开发挑战,还在于开发者的思路。兼容性,布局,CSS和JS都不是问题,问题在于如何公道地组织语言逻辑;如何正确抽象出需求中的模块;如何用代码处理,清楚地用代码表达出思路、写好注释,给后续维护者一个可浏览的思路。前端的改动量,是后端的数倍,前端没有绝对,只有跟随需求不停的修改。
Web后端开发面临的挑战后端开发的5大挑战
第一大挑战,后端开发最重要的挑战,来自于范围
范围的扩大,比如访问量扩大,文件存储量扩大,数据量扩大,服务器数量扩大等。一个前端看起来如出一辙的站,某一种指标如果扩大十倍,几近都会面临一大堆的问题和挑战。另一方面,在范围扩大以后,后端系统架构,一定会复杂化。原来只有1台Server,LAMP都装在一起。然后数据库分出来,反向代理,负载均衡,分库分表,Memcache,MessageQueue,事务处理,CDN,NOSQL,种种架构,Server,就逐步的演变出来了。架构的复杂化,自然会带来更多的问题和更多的挑战。
第二大挑战,来自于安全
安全问题层见叠出,防不胜防。需要技术手段,也需要管理制度。
第三大挑战,来自于效力
能否提供足够的处理速度,能否提供足够的带宽,能否保证响应能力,这些是对外的效力。能否使用更少的服务器,能否使用更加便宜的服务器,能否使用更加节省能源的服务器,这些是对内的效力。
第四大挑战,来自于需求变更
不管前端后端,都会面临需求变更,只要是软件开发,这都是大挑战。但是当一个系统已稳定的,高效的运行时,需求变更来了,在满足需求以后,原本来没有问题的部份,会不会突然崩溃,一旦崩溃,就是后端工程师的噩梦。
第五大挑战,来自于教条
这个世界上有无数IT大公司,他们都很开放,都愿意分享自己的架构与技术。因而,对“眼界开阔”的后端工程师而言,困难不在于如何解决,而在于如何从众多的解决方案中做出挑选。框架、实践不断出现,成功案例也不断出现。人家都用得好好的,你敢用吗?到底是勇于尝鲜,还是守旧要紧呢?这个很难。
后端开发的3大法则
Designforfailure
后端相当比例的代码不是为了一般情况下正确而存在,而是为了保证特殊或极端情况下系统可接受的响应而存在的。这里有非常多的折衷要做:渐进改进还是超前设计?水平扩大、业务优化、前台还是后台处理?大量的折衷都是要根据不断变化的环境和需求去权衡的,所以很容易出错。
Architectureisaboutabstract
为何要抽象?由于抽象的概念有更好的适应性,更易于复用,更能灵活适应变化。但是抽象是很难的,不恰当的抽象更是贻害无穷,要命的是,这些并没有很好的方法论,多数是依托一组基本的原理,凭经验作出的。而Web后端开发在很长时间里并没有很重视这些,很多站都是粗放型设计和开发出来的,所以补钉叠补钉的结构就顺理成章的成为了主流。
Architectureisproduct
为架构本身即产品,一个软件产品包括了不同的视角,其中最重要的包括用户看到的视角、和软件骨架即架构的视角。但产品就是产品,所有这些视角都是必须统一和一致的,这就要求架构必须理解产品的灵魂,而产品要理解架构的困难所在,否则很容易出现想做的事情做不到或以巨大的架构代价实现一个边角功能这类悲剧。
北京中科白癜风医院怎么样北京中科医院