[转]Web开发的发展史

之所以转这篇文章是因为它可以对web请求有大致的理解。

以下内容转自:http://www.open-open.com/news/view/19ed96a

英文原文: Full stack web development

----------------------------分割线-------------------------------------------

在接下来的几个月时间里,我打算写一系列关于完整 web 开发的文章。这第一篇文章虽然有所粗略,但也能够充分概括了在之前 15 年或者更久的时间里 web 应用程序如何进行演变。并且最后我会囊括下这段时间内所写的相关技术。

在过去的美好日子里,我们使用的是简单的 web 页面(包括动态 gif 图片!)。作为精美设计的典范,苹果有着这样的一个网站:

在那时,Web 开发还比较简单,开发者经常会去操作 web 服务器(主要还是他自己的机器),并且他会写一些 HTML 页面放到服务器指定的文件夹(/www)下。这些 HTML 页面,就在浏览器请求页面时使用。

问题就出现了,你只能获取到静态内容。倘若你想让访问者看到有多少其他访问者访问了这个网站呢(还记得那些统计流量的旋转图片吗?!),或者倘 若你想让访问者去填写这样一个表单,包含有姓名和邮件地址呢?于此就转向了 CGI 和 Perl 脚本,在 web 服务器端运行一段短小的代码,并能与文件系统或者数据库进行交互。

当时组织 CGI/Perl 这样的脚本代码太混乱了。CGI 伸缩性不是太好(经常是为每个请求分配一个新的进程),也不太安全(直接使用文件系统或者环境变量),同时也没提供一种结构化的方式去构造动态应用程序。 几年来一直很困惑,直到大约 2005 年左右,出现了 Java Server Pages (JSP),微软的 ASP,以及 PHP!我喜欢把当时的参考架构比作成 IIS 和 ASP.NET,你可以用 Visual Studio 快速构建一个可伸缩并且安全的应用程序。

直到当时,web 服务器多半会返回整个页面或者文档,但 AJAX (2005) 的出现,让事情变得很有意思。AJAX 允许客户端的 JavaScript 脚本为局部页面提供请求服务,然后可以在无需回到服务器情况下动态刷新部分页面,也就是更新浏览器中的 document 对象,通常称作 DOM,或者文档对象模型。

虽然从服务器端返回的仍然是 HTML,但浏览器上的代码能把这 HTML 片段内嵌到当前页面中。也就是说 web 应用的响应可以更快,这时我们真正用 web 应用取代了 web 页面。谷歌的 GMail 和谷歌地图都是当时 AJAX 的杀手级产品。随后用 AJAX 局部刷新就如雨后春笋般出现。

在随后的几年时间里,AJAX 成为了焦点,但在服务器端仍然使用着旧有的技术。大概在 2007 年,37signals 公司公开其成员–Ruby on Rails。那个基于 Ruby on Rails 5 分钟构建博客的演示完全征服了全世界的开发者。一夜之间,所以谈论的焦点都是关于 Rails!Rails 的不同之处在于使用规定的方式去设计你的 web 应用程序,运用一种已经广泛在桌面应用开发,但未被搬到 web 应用上的开发模式。这种模式就叫做模式(数据)-视图(模板)-控制器(业务逻辑)。Rails 强调,“这事就该这么做”,并且通过许多插件让构建 web 应用再一次更加健全。

在 2007 到 2010 年期间,涌现了 3 种开发潮流:

第一个是智能手机和移动应用潮流。通常情况下,许多应用程序同时有 web 和移动应用两种版本。尽管如此,服务端仍然返回的是 HTML 页面,而不是其它移动应用可以识别。因此,你需要返回的是结构化数据来取代 HTML。

第二个开发潮流是 jQuery。这是一个非常流行的 JavaScript 库,能够很容易构建动态、美妙的 web 应用,甚至是 AJAX!

第三个潮流是 Node.JS 的发布。这是第一次能让你用 JavaScript 开发高性能的服务端程序,进而可能结束“客户端开发者”要知道 HTML/JavaScript,“服务端开发者”要知道 .NET/C#/Ruby 这样的噩梦。

尽管这是一个不错的架构,但我们可以重用一些在客户端的收获去简化那些曾经发生在像客户端意大利面似的 jQuery 代码。和 Rails 精神类似,我们需要用一种规定的方式从服务端获取到数据,再对客户端的 HTML 页面进行包装。因此,在接下来的 2 年时间里,业界出现了许多用于简化客户端开发的框架,诸如 Backbone,Ember,Derby 和 Meteor,当然也包括我的最爱,AngularJS。

因此,这就是我们看到的今天,而我后面要讲到的参考架构是这样的,mongodb 作为数据库服务器,node/express 作为 web 应用服务器,客户端使用 AngularJS,同时也使用 Bootstrap 样式风格。我发现这种架构允许我能够快速构建 web 服务以及基于 AngularJS 的客户端接口,甚至和其它的服务,如 PhoneGap 或者其它原生移动开发工具一样,进行移动应用的开发。

在接下来的几个星期里,我会发表一些文章来说明这些涉及到的组件,包括:MongoDB,Node/ExpressJS,JSON 和 REST 接口,AngularJS,Karma-mocha 测试和 Bootstrap 样式风格页面。

翻译: 伯乐在线蝈蝈
        译文链接: http://blog.jobbole.com/45169/

[转]Web开发的发展史

时间: 2024-10-15 22:09:38

[转]Web开发的发展史的相关文章

转Web开发的发展史---Web开发技术的演变

转自:http://blog.csdn.net/zzzkk2009/article/details/9849431 在接下来的几个月时间里,我打算写一系列关于完整web开发的文章.这第一篇文章虽然有所粗略,但也能够充分概括了在之前15年或者更久的时间里web应用程序如何进行演变.并且最后我会囊括下这段时间内所写的相关技术. 在过去的美好日子里,我们使用的是简单的web页面(包括动态gif图片!).作为精美设计的典范,苹果有着这样的一个网站: 在那时,Web开发还比较简单,开发者经常会去操作web

WEB开发基本知识

参考文献:http://www.cnblogs.com/xdp-gacl/p/3729033.html 一.基本概念 1.1.WEB开发的相关知识 WEB,在英语中web即表示网页的意思,它用于表示Internet主机上供外界访问的资源. Internet上供外界访问的Web资源分为: 静态web资源(如html 页面):指web页面中供人们浏览的数据始终是不变. 动态web资源:指web页面中供人们浏览的数据是由程序产生的,不同时间点访问web页面看到的内容各不相同. 静态web资源开发技术:

对web开发从业者的发展方向的思考

最近在读子柳的<淘宝技术这十年>,“牛P列传”这一章中介绍了很多淘宝技术发展史上做出重要贡献的“牛P人物”(阿里的技术岗按能力分级,从P1~P10). 读到采访小马的这一段: 子柳:畅想一下前端未来的发展方向. 小马:我认为,未来的方向是前后端的界限越来越模糊,即未来要求开发工程师能把前后端的工作衔接起来.我个人比较认可一种说法:经过这几年开发模式的渐渐发展,未来前后端的开发会融合起来,这样的岗位叫做“WEB开发工程师”. 另外,这个岗位叫什么名字不重要,重要的是人们对于交互和体验的要求越来越

用Eclipse+Maven+Jetty构建Java Web开发环境(综合几篇教程整合2014年版)

工作需要用到Jetty作为web容器,得知Eclipse+Maven+Jetty的组合很不错,因此到网上查找了很多教程,但是或多或少写的不详细或者有过时的内容在里面导致最后配置失败,为了以后同事配置方便,写下这篇配置教程,顺便来方便一下大家. 用到的参考资料如下: [用Maven构建Java Web开发环境(Jetty容器)](以此教程为主)http://sarin.iteye.com/blog/784275 以及 http://sarin.iteye.com/blog/784697 [在Ecl

高性能WEB开发:重排与重绘

DOM编程可能最耗时的地方,重排和重绘. 1.什么是重排和重绘 浏览器下载完页面中的所有组件--HTML标记.JavaScript.CSS.图片之后会解析生成两个内部数据结构--DOM树和渲染树. DOM树表示页面结构,渲染树表示DOM节点如何显示.DOM树中的每一个需要显示的节点在渲染树种至少存在一个对应的节点(隐藏的DOM元素disply值为none 在渲染树中没有对应的节点).渲染树中的节点被称为"帧"或"盒",符合CSS模型的定义,理解页面元素为一个具有填充

[Java Web]2\Web开发中的一些架构

1.企业开发架构: 企业平台开发大量采用B/S开发模式,不管采用何种动态Web实现手段,其操作形式都是一样的,其核心操作的大部分都是围绕着数据库进行的.但是如果使用编程语言进行数据库开发,要涉及很多诸如事务.安全等操作问题,所以现在开发往往要通过中间件进行过渡,即,程序运行在中间件上,并通过中间件进行操作系统的操作,而具体一些相关的处理,如事务.安全等完全由中间件来负责,这样程序员只要完成具体的功能开发即可. 2.Java EE架构: Java EE 是在 Java SE 的基础上构建的,.NE

七日Python之路--第十二天(Django Web 开发指南)

<Django Web 开发指南>.貌似使用Django1.0版本,基本内容差不多,细读无妨.地址:http://www.jb51.net/books/76079.html (一)第一部分 入门 (1)内置数字工厂函数 int(12.34)会创建一个新的值为12的整数对象,而float(12)则会返回12.0. (2)其他序列操作符 连接(+),复制(*),以及检查是否是成员(in, not in) '**'.join('**')   或  '***%s***%d' % (str, int)

Java Web开发基础(3)-JSTL

在DRP项目中接触到了JSTL标签库,对我这样的比較懒的人来说,第一感觉就是"惊艳". JSTL标签库的使用.能够消除大量复杂.繁复的工作.工作量降低的不是一点半点.是降低了一大半.不论什么工具的引入,都会使我们的工作变的简单.可是问题是我们工作能够变的简单,可是我们不能让自己的大脑变的简单.所以,我们不是简单的会用就能够.我们还须要了解这个工具是怎样工作的.怎样为我们提供便利的.ok.以下进入正题,我们从问题開始-- JSP脚本带来的问题 不知道看到这几个子,各位有什么想法?反正我认

给大家分享web开发新手修改hosts文件实现本地域名访问的正确方法

1.如何正确修改hosts文件: 一般打开hosts文件里面都会有个示例,按照其格式修改即可 比如以下内容: # For example: # # 102.54.94.97 rhino.acme.com # source server # 38.25.63.10 x.acme.com # x client host 即代表打开rhino.acme.com这个网址将解析到102.54.94.97,ip地址与网址间至少有一空格,当然建议通过按Table键来编辑,即美观又不容易编写失误;这也就是通过解