Web前端和后端之区分,以及…

原文地址:Web前端和后端之区分,以及面临的挑战【转】作者:joyostyle

  在我们实际的开发过程中,我们当前这样定位前端、后端开发人员。

  1)前端开发人员:精通JS,能熟练应用JQuery,懂CSS,能熟练运用这些知识,进行交互效果的开发。

  2)后端开发人员:会写Java代码,会写SQL语句,能做简单的数据库设计,会Spring和iBatis,懂一些设计模式等。

  现在来看,我们对前后端的要求还是蛮低的,尤其是后端,新员工经过培训之后都是可以参与到后端开发的,没有太高的技术门槛,唯一需要做的就是先变成熟练工种,这个阶段没有涉及到设计模式、架构、效率等一些列问题。

  还是先google一下,看看网上对Web前端开发、Web后端开发分别是什么?

  Web前端:
顾名思义是来做Web的前端的。我们这里所说的前端泛指Web前端,也就是在Web应用中用户可以看得见碰得着的东西。包括Web页面的结构、Web的外观视觉表现以及Web层面的交互实现。

  Web后端:后端更多的是与数据库进行交互以处理相应的业务逻辑。需要考虑的是如何实现功能、数据的存取、平台的稳定性与性能等。

  我们再来看看大公司对前后端人员招聘的要求,通过这个角度看看前端、后端的技术要求:

  Web前端:

  1)精通HTML,能够书写语义合理,结构清晰,易维护的HTML结构。

  2)精通CSS,能够还原视觉设计,并兼容业界承认的主流浏览器。

  3)熟悉JavaScript,了解ECMAScript基础内容,掌握1~2种js框架,如JQuery

  4)对常见的浏览器兼容问题有清晰的理解,并有可靠的解决方案。

  5)对性能有一定的要求,了解yahoo的性能优化建议,并可以在项目中有效实施。

  6)......

  Web后端:

  1)精通jsp,servlet,java
bean,JMS,EJB,Jdbc,Flex开发,或者对相关的工具、类库以及框架非常熟悉,如Velocity,Spring,Hibernate,iBatis,OSGI等,对Web开发的模式有较深的理解

  2)练使用oracle、sqlserver、mysql等常用的数据库系统,对数据库有较强的设计能力

  3)熟悉maven项目配置管理工具,熟悉tomcat、jboss等应用服务器,同时对在高并发处理情况下的负载调优有相关经验者优先考虑

  4)精通面向对象分析和设计技术,包括设计模式、UML建模等

  5)熟悉网络编程,具有设计和开发对外API接口经验和能力,同时具备跨平台的API规范设计以及API高效调用设计能力

  6)......

  从几个公司的招聘要求可以看到,做Web开发,对前端和后端的要求是各自所不同的。而我们目前的实际情况,也和这个差不多,但是,我们无论在知识的掌握程度上,还是知识掌握的宽度上,都是不够的。

  首先,我们在前端缺乏积累,没有沉淀,专业的前端技术的积累是从去年才开始的,同时,在前端也缺乏支撑与高手,所以,走起来比较困难。同时,前端人员培养的较少,一个原因是对前端了解太少,另外一个原因就是对前端与后端的工作比例估计不足。所幸,我们在这一年也在前端有了很快的进步,培养了几个优秀的开发人员,有意识的解决了前端的用户体验,这都是可喜的。今年,需要更进一步,专业化。

  其次,我们在后端发展的不够宽,后端的知识体系已经比较完善,但是,很多应用点都没有涉及到。同时,对现有技术框架的理解都不够深入,太浮躁。我们目前的设计团队在解决互联网高并发、大数据量的存取上经验与能力都还不足,需要正视这些问题。后端技术的发展需要更加的精进,以解决实际存在的问题为主。

  最后,我们在前端、后端都缺乏熟练工,这会影响到开发的速度,同时,也不利于后期技术的研究。

 

  web前端跟后端有什么区分,经过搜罗也找到这么一篇文章,附上:

 

  我们经常对Web designer(网页设计师)和Web
developer(网页开发者,也称程序员)傻傻分不清楚,其实他们之间有着巨大的差异。两者之间的差异主要表现在:一个是有关网站的视觉或美学方面,被称为“前端”;另一个则是看不见的编码方面的设计,被称为“后端“。简而言之,漂亮的网站界面都是出自网页设计师之手,而牛逼强大的功能则是网页开发者的杰作……

 

  以上只是从双方的职能上来理解彼此的差异,事实上他们的差异远不止这些。为此,国外设计网站Downgraf特意制作了一张图表来展示两个职业的种种差异:网页设计师和网页开发者(程序员)都留胡茬,一个没钱,一个没时间;两者都喜欢内涵T恤,一个走字体设计路线,一个走代码风;两者都配自家设备,一个必带MacBook
Pro,一个只挑小键盘⋯⋯除了以上种种差异,他们还有一个共同点:害怕MM,看来都是“宅”惹的祸。

   
再来看一下前端设计师与后端开发师的比较形象的区分:

  WEB前端和后端开发面临的挑战

  要成为一名高效的Web开发者,这需要我们做很多工作,来提高我们的工作方式,以及改善我们的劳动成果。而在开发中难免会遇到一些困难,从前端到后端,近日,在问答网站知乎上,有人抛出了“Web前端开发面临的挑战主要有哪些?”和“后端开发主要的挑战有哪些?”。

 

  一、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自己市面上就有6、7、8、9这4个版本,4个版本之间各有各的问题。如果不积累点经验,面对疑难杂症那是一头雾水。

  豆瓣前端工程师 张克军:前端开发的五大挑战

  第一大挑战:兼容性。虽然微软已经决定将IE 6安乐死,IE
9/10看起来相当标准。向后兼容似乎轻松了,但向前兼容又开始越来越让人头疼了。Android上的webkit是多么混乱,在桌面浏览器上总是有CSS
Hack可以摆平,但在mobile上只能考虑退化方案。从兼容浏览器(外加套壳的浏览器)到兼容设备,实际上兼容性变得更复杂了。

  第二大挑战:交互的复杂度。和目前UI/交互的要求相比,浏览器引擎给我们接囗的确太低级了。于是今年前端技术的热门话题是各种Javascript,CSS的预处理器、各种MVC框架和微框架的讨论。

  第三大挑战:代码可维护性。复杂度的提升直接影响代码的维护性。JS/CSS/HTML代码生命周期越来越长,也就越来越需要从代码质量、架构和工具上保证它们的可维护性。代码的历史问题是永远的痛点。

  第四大挑战:性能。

  第五大挑战:个人成长。

  互联网评论员 莫言:开发者的思路很重要

  前端的开发,如果没有总体的设计思路,会成为一种碎片似地程序,一个效果一堆代码,一个功能一滩脚本,一个需求片逻辑,我曾经遇到过,因为ue调整,把整个前端的代码除了核心数据处理函数保留,其余的全部修改的情况。基本上前端的开发,处于DOM操作,数据处理,数据交互三部分,如果合理的分配这三部分的功能,那么前端的代码就很容易扩展和调整。他认为真正的前端开发挑战,还在于开发者的思路。兼容性,布局,CSS和JS都不是问题,问题在于如何合理的组织语言逻辑,如果正确抽象出需求中的模块。如何用代码处理,清楚的用代码表达出思路,清楚的写好注释,给后续维护者一个可阅读的思路。前端的改动量,是后端的数倍,前端没有绝对,只有跟随需求不停的修改。

 

  二、Web后端开发面临的挑战:

 

  1.第一大挑战,后端开发最重要的挑战,来自于规模

  规模的扩大,比如访问量扩大,文件存储量扩大,数据量扩大,服务器数量扩大等。一个前端看起来一模一样的网站,某一种指标如果扩大十倍,几乎都会面临一大堆的问题和挑战。另一方面,在规模扩大以后,后端系统架构,一定会复杂化。原来只有一台Server,LAMP都装在一起。然后数据库分出来,反向代理,负载均衡,分库分表,Memcache,Message
Queue,事务处理,CDN,NOSQL,种种架构,Server,就逐渐的演化出来了。架构的复杂化,自然会带来更多的问题和更多的挑战。

  2.第二大挑战,来自于安全

  安全问题层出不穷,防不胜防。需要技术手段,也需要管理制度。

  3.第三大挑战,来自于效率

  能否提供足够的处理速度,能否提供足够的带宽,能否保证响应能力,这些是对外的效率。能否使用更少的服务器,能否使用更加便宜的服务器,能否使用更加节省能源的服务器,这些是对内的效率。

  4.第四大挑战,来自于需求变更

  当然,无论前端后端,都会面临需求变更,只要是软件开发,这都是大挑战。但是当一个系统已经稳定的,高效的运行时,需求变更来了,在满足需求之后,原本来没有问题的部分,会不会突然崩溃,一旦崩溃,就是后端工程师的噩梦。

  5.第五大挑战,来自于教条

  这个世界上有无数IT大公司,他们都很开放,都愿意分享自己的架构与技术。于是,对于“眼界开阔”的后端工程师而言,困难不在于如何解决,而在于如何从众多的解决方案中做出挑选。框架、实践不断涌现,成功案例也不断涌现。人家都用得好好的,你敢用吗?到底是勇于尝鲜,还是保守要紧呢?这个很难。

  互联网评论员 Neo Lee:后端开发的三大法则

  1. Design for
failure。后端相当比例的代码不是为了一般情况下正确而存在,而是为了保证特殊或者极端情况下系统可接受的响应而存在的。这里有非常多的折衷要做:渐进改进还是超前设计?水平扩展、业务优化、前台还是后台处理?大量的折衷都是要根据不断变化的环境和需求去权衡的,所以很容易犯错。

  2. Architecture is about
abstract。为什么要抽象?因为抽象的概念有更好的适应性,更易于复用,更能灵活适应变化。但是抽象是很难的,不恰当的抽象更是贻害无穷,要命的是,这些并没有很好的方法论,多数是依靠一组基本的原理,凭经验作出的。而Web后端开发在很长时间里并没有很重视这些,很多网站都是粗放型设计和开发出来的,所以补丁叠补丁的结构就顺理成章的成为了主流。

  3. Architecture IS
product。架构本身即产品,一个软件产品包含了不同的视角,其中最重要的包括用户看到的视角、以及软件骨架即架构的视角。但产品就是产品,所有这些视角都是必须统一和一致的,这就要求架构必须理解产品的灵魂,而产品要理解架构的困难所在,否则很容易出现想做的事情做不到或者以巨大的架构代价实现一个边角功能这类悲剧。

时间: 2024-11-02 04:14:29

Web前端和后端之区分,以及…的相关文章

《单页Web应用:JavaScript从前端到后端》——第1章 第一个单页应用 1.1 定义、一些历史和一些关注点

第1章 第一个单页应用 单页Web应用:JavaScript从前端到后端 本章涵盖的内容 定义单页应用 比较最流行的单页应用平台:Java.Flash和JavaScript 编写第一个JavaScript单页应用 使用Chrome开发者工具查看单页应用 探讨单页应用对用户的好处 本书是为Web开发人员.架构师和产品经理而编写的,他们至少要有些JavaScript.HTML和CSS的经验.如果你从来没有涉猎过Web开发,本书就不适合你,但不管怎样还是欢迎购买.有很多非常不错的教初学者开发和设计网站

《单页Web应用:JavaScript从前端到后端》——导读

前言 Josh是我在找工作的时候认识的,2011年夏天他给我提供了一个Web架构师的职位.尽管最终我决定接受另外一个机会,但是我们相见甚欢,并讨论了一些关于单页Web应用的有趣问题以及互联网的未来.有一天,Josh天真地建议我们俩合写一本书,我傻傻地同意了,于是数百个周末我们把自己关起来,经历着相同的命运.我们最开始预计这会是一本很薄的书,少于300页.最初的想法是作为经验丰富的开发者提供从前端到后端都使用JavaScript来创建产品级单页Web应用的深刻见解.本书中的概念适用于任何开发Jav

《Python爬虫开发与项目实战》——第2章 Web前端基础 2.1 W3C标准

第2章 Web前端基础 爬虫主要是和网页打交道,了解Web前端的知识是非常重要的.Web前端的知识范围非常广泛,不可能面面俱到和深入讲解,本章主要是抽取Web前端中和爬虫相关的知识点进行讲解,帮助读者了解这些必备的知识,为之后的Python爬虫开发打下基础. 2.1 W3C标准 如果说你只知道Web前端的一个标准,估计肯定是W3C标准了.W3C,即万维网联盟,是Web技术领域最具权威和影响力的国际中立性技术标准机构.万维网联盟(W3C)标准不是某一个标准,而是一系列标准的集合.网页主要由三部分组

如何成为一名优秀的web前端工程师

我所遇到的前端程序员分两种: 第一种一直在问:如何学习前端? 第二种总说:前端很简单,就那么一点东西. 我从没有听到有人问:如何做一名优秀.甚至卓越的WEB前端工程师. 何为:前端工程师? 前端工程师,也叫Web前端开发工程师.他是随着web发展,细分出来的行业. Web前端开发技术主要包括三个要素:HTML.CSS和JavaScript! 它要求前端开发工程师不仅要掌握基本的Web前端开发技术,网站性能优化.SEO和服务器端的基础知识,而且要学会运用各种工具进行辅助开发以及理论层面的知识,包括

走近Web前端工程师 看前端工程师的价值

这是一个很老的话题"前端工程师的价值体现在哪里?". 有人说:"前端工程师之于网站的价值犹如化妆师之于明星的价值."一位好的 Web 前端开发工程师在知识体系上既要有广度,又要有深度.当然,Web 前端工程师并不是设计师,每天接触最多的是代码,代码,还是代码.对此,你是如何给自己定位的?你的价值是否能够得到很好的体现?如今,旧话重提无非是想 与开发者们共同探讨下前端工程师的价值所在,希望对你有所感悟. 前端工程师的价值体现在哪里? 一起来看下业内资深大牛对前端工程师

JavaScript资源:前端和后端的Node.js

文章简介:JavaScript开发者值得收藏的7个资源.  Web 开发者通常会期望自己在 Web 领域的方方面面都是专业级别的人物,JavaScript 开发者也不例外.几年前 JavaScript 似乎还不是那么流行,但现在 JavaScript 可以说是 Web 开发界的"上等公民"了,关于 JavaScript 的资源也大量出现. 我最近一直在用 JavaScript,包括前端和后端的 Node.js.因此想和大家分享一些 JavaScript 库.项目和一般参考的资源,这些资

web前端的弱架构导致的代码污染

就要开始新的项目了,全站的前端架构也要开始构思,得益于之前做雅虎关系时的一些或成功或失败的实践总结,还是应当从架构的层面着手,去解决一些前端团队开发的问题.如今市面上有着各种各样的js库和框架,但库和框架还是有很大区别的,首先,"库"是widget的一个集合,特点是上手容易使用简便,参照例子只大概只需要引用一个script标签到页面中,再加上一些简单的类似a.start(config)的启动代码就可以了,而框架则是网站的树状结构的抽象,包括模块关系,功能之间的依赖,入口的先后顺序,以及

网页制作心得:WEB前端优化的方法

随着WEB2.0时代来,给网络的带来了空前的发展.前端用户体验变得越来越显的重要,从而来弥补B/S结构的用户交互型差的一些弊端,可是这样会带来一个问题就是会增加客户端的压力,比如大量运用JS代码,大家都知道JS代码是运行在客户端的,会影响到整个网页的在浏览器的解析效率,这样也可能暗示着会增加客户端的流量,所以不管是从服务器负载角度还是站在用户的角度来看,对客户端的代码进行优化都显得尤为重要!本文主要内部和外部两方面来阐述WEB前端优化的方法.希望能给读者一些体会和启发. 首先,我们通过一个雅虎的

Java Web前端的高性能

引言 在前端优化的第一部分中,主要讲解了对静态资源的一些优化措施,包括图片压缩.CSS Sprites 技术. GZIP 压缩等.这一部分,本文将讲解前端优化里重要的 Flush 机制.动静分离.HTTP 持久连接.HTTP 协议灵活应用. CDN 等.结合这些技术或思想,相信会使 Java Web 应用程序的性能更上一层楼. Flush 机制的使用 实际上 在 Web 技术中,Flush 机制并不新鲜,它的思想是无需等到网页内容全部加载完毕,一次性写回客户端,而是可以部分逐 次的返回.如果网页