探索未来:掌握Web开发的核心技术

发表时间: 2024-06-06 11:04

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

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、SQL Server、MySQL等常见数据库系统,具有较强的数据库设计能力

3)熟悉Maven项目配置管理工具,熟悉Tomcat、JBoss等应用服务器,有高并发处理下负载调优相关经验者优先考虑

4)熟练掌握面向对象的分析和设计技术,包括设计模式,UML建模等。

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

6)......

从几家公司的招聘要求可以看出,对前端和后端的Web开发的要求是不一样的,我们目前的情况跟这个差不多,只是在知识掌握程度和知识广度上还不够好。

首先我们在前端缺乏积累和沉淀,专业前端技术的积累是去年才开始的,同时前端缺乏支撑和高手,很难再往前推进。同时,培养出来的前端人员也比较少,一个原因是我们对前端了解的太少,另一个原因是低估了前后端工作的比例。好在这一年我们在前端进步很快,培养了几个优秀的开发人员,并且有意识地解决了前端的用户体验,这是值得欣慰的。今年,我们需要走得更远,做专。

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

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

web前端和后端到底有什么区别呢?搜索了一下,找到了这么一篇文章,附上:

我们经常会把网页设计师和网页开发者混淆,但两者之间有着巨大的区别。两者的区别主要表现在:一个是关于网站的视觉或美学方面,被称为“前端”;另一个是关于看不见的编码设计,被称为“后端”。总之,漂亮的网站界面是网页设计师创造的,而强大的功能则是网页开发者的杰作……

以上只是从职能角度理解两者的区别,其实他们的不同远不止于此。为此,国外设计网站 Downgraf 特意做了一张图表,展示这两个职业的不同之处:网页设计师和网页开发者(程序员)都有胡茬,一个没钱,一个没时间;都喜欢内涵T恤,一个走字体设计,一个走代码风格;都有自己的设备,一个必须带 MacBook Pro,一个只选小键盘……除了以上不同,他们还有一个共同点:怕女生,这似乎是“宅”导致的。

让我们来看看前端设计师和后端开发人员之间更生动的区别:

Web 前端和后端开发的挑战

要成为一名高效的 Web 开发人员,我们需要做很多工作来改进我们的工作方法和工作成果。在开发过程中,我们不可避免地会遇到一些困难,从前端到后端。最近,在问答网站知乎上,有人提出了“Web 前端开发的主要挑战是什么?”和“后端开发的主要挑战是什么?”的问题。

1. Web前端开发面临的挑战

盛大Web工程师曹刘洋:前端语言的粘合性要求太强,前端必须注重可维护性

1、CSS和DOM提供的界面层次太低,BOM提供的控件只有最基本的input、select、textarea等。稍微复杂的UI效果,前端就要用CSS和DOM来组合创作。看到一个需求,脑子里第一步要思考如何用CSS、DOM等基础部分组合成最终的效果。而最终效果的实现,其实也是一个“创作”的过程。比如tabView、treeView、richEditor、colorPicker这些看似常见的组件,其实前端是没有的,需要自己去实现。

2、前端语言的粘合性要求太强。CSS、DOM、JS是三种不同的技术,也是前端知识体系中最重要的三个要掌握的基本功。服务器端编程当然也会需要不同方向的知识,比如PHP、SQL等,但服务器端编程大部分时间只需要专注于某一个知识点,必要的时候才坚守其他语言。但前端就不一样了,前端的效果最终是通过CSS、DOM、JS的结合来呈现的,没有任何技术是很难向前发展的,要时刻考虑多个方向的知识点。换句话说,服务器端编程就像是单线程,即便有技术交集也是串行的,而前端编程就像是同时运行三个线程,复杂度翻倍。

3、CSS+DOM+JS的组合非常强大,同样的效果可以用很多完全不同的方式实现,而每一种实现方式都会有不同的开发难度、扩展性、可维护性。方案太多了,看到一个效果,你首先会想到如何利用CSS、DOM中的底层接口来实现。这是一个“创造”的过程,这时候你的脑海中可能就会冒出很多不同的实现方式。“创造”之后,你还要“比较”,权衡各种方案的利弊。经过一段时间的纠结,才能选出最合适的方案。当然,并不是说前端是完美主义者,一定要选择最好的方式。而是因为前端是GUI编程,直接面对用户,是产品呈现最直接的部分,也就是门面。正因为如此,前端也是最容易被反复修改的部分。反复“修改”是多么可怕,每个程序员都知道。如果可维护性不好,那简直就是噩梦。 所以前端必须要重视可维护性,不重视可维护性就直接等于自虐。

4、浏览器兼容性。浏览器种类繁多,有IE、Firefox、Chrome、Opera,还有搜狗、傲游、360等很多带IE壳的浏览器,再加上这些浏览器的移动端版本,都需要遵循Web标准。前端大部分知识是所有浏览器都通用的,但是还是存在一些历史遗留问题,不同的浏览器问题不一样,尤其是市场占有率最高的IE系列。市面上IE有6、7、8、9四个版本,4个版本各有各的问题,如果不积累一些经验,面对棘手复杂的问题就会手足无措。

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

第一个挑战:兼容性。虽然微软已经决定安乐死 IE 6,但 IE 9/10 看起来相当标准。向后兼容似乎很容易,但向前兼容却越来越令人头痛。Android 上的 Webkit 太乱了,桌面浏览器上总有 CSS Hacks 来应对,而移动端只能考虑降级方案。从兼容浏览器(带壳的浏览器)到兼容设备,兼容性其实已经变得更加复杂。

第二大挑战:交互的复杂度。相对于现在的UI/交互要求,浏览器引擎提供的界面确实太底层了。因此今年前端技术的热点就是各种Javascript、CSS预处理器、各种MVC框架、微框架。

第三个挑战:代码可维护性。复杂度的提升直接影响代码的可维护性。随着 JS/CSS/HTML 代码的生命周期越来越长,从代码质量、架构、工具等方面保证它们的可维护性就变得愈加必要。代码的历史问题始终是一个痛点。

第四个挑战:性能。

第五个挑战:个人成长。

网络评论员莫言:开发者的想法很重要

如果没有整体的设计思路,前端的开发就会变成一个个碎片化的程序,每个效果一堆代码,每个功能一堆脚本,每个需求一片逻辑。我曾经遇到过因为UE调整,整个前端代码除了核心的数据处理功能保留,其他全部修改的情况。前端的开发基本就是三个部分:DOM操作、数据处理、数据交互。如果合理分配这三个部分的功能,前端代码就很容易进行扩展和调整。他认为前端开发真正的挑战在于开发者的思维。兼容性、布局、CSS、JS都不是问题,问题在于如何合理组织语言逻辑,如何正确地抽象需求中的模块。如何用代码去处理,用代码清晰地表达思路,清晰地写注释给后续维护者一个可读的思路。前端的变更量是后端的几倍,前端没有绝对,只有根据需求不断的变更。

2.Web后端开发面临的挑战:

1. 第一个挑战,也是后端开发最重要的挑战,来自规模

规模的扩大,比如流量、文件存储、数据量、服务器数量的增加。一个前端看起来一模一样的网站,如果某一个指标扩大十倍,几乎都会面临很多问题和挑战。另一方面,规模扩大之后,后端系统架构肯定会变得更加复杂。原来只有一台服务器,一并装上LAMP,然后数据库分离,反向代理,负载均衡,分库分表,Memcache,消息队列,事务处理,CDN,NOSQL,各种架构,服务器逐渐演化而来。架构的复杂,自然会带来更多的问题,更多的挑战。

2. 第二大挑战来自安全

安全问题层出不穷,难以防范,需要技术手段和管理制度。

3. 第三个挑战来自效率

能否提供足够的处理速度、能否提供足够的带宽、能否保证响应能力是外部效率;能否使用更少的服务器、能否使用更便宜的服务器、能否使用更节能的服务器是内部效率。

4. 第四个挑战来自需求的变化

当然,无论是前端还是后端,都会面临需求变更,这对于软件开发来说是一个很大的挑战。然而,当一个系统已经稳定高效地运行,需求变更来了,在需求满足之后,原本没问题的部分却突然崩溃了。一旦崩溃,对于后端工程师来说将是一场噩梦。

5. 第五个挑战来自教条

世界上有无数的大型IT公司,他们都非常开放,愿意分享自己的架构和技术。因此,对于“心胸宽广”的后端工程师来说,难的不是如何解决,而是如何从众多的解决方案中做出选择。框架和实践不断涌现,成功案例不断涌现。别人用得好,你敢用吗?勇于尝试新事物,还是保守更重要?这个很难。

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

1. 为失败而设计。后端代码中相当一部分不是为了普遍的正确性,而是为了在特殊或极端情况下保证系统有可接受的响应。这里面有很多权衡:渐进式改进还是超前设计?横向扩展、业务优化、前端还是后端处理?需要根据不断变化的环境和需求权衡大量的权衡,因此很容易犯错误。

2、架构讲究抽象。为什么需要抽象?因为抽象的概念适应性更强,更容易复用,也更灵活地改变。但是抽象很难,不恰当的抽象危害更大。更糟糕的是,这些并没有很好的方法论,大多是基于一套基本的原则和经验。Web 后端开发早就不重视这些了,很多网站都是以粗糙的方式设计和开发的,于是拼凑起来的结构自然成了主流。

3、架构就是产品。架构本身就是产品。一个软件产品包含不同的视角,其中最重要的包括用户视角和软件骨架即架构视角。但产品就是产品,所有这些视角必须是统一一致的。这就要求架构必须了解产品的灵魂,产品必须了解架构的难点。否则,很容易做不成想做的事情,或者以巨大的架构代价实现一个边际功能。