Web开发技术经过多年的发展日趋成熟,从各个方向出现了很多技术和项目,我们开看看这些技术发展的历史,就会明白每种技术产生的环境,如何更好的选择。

HTML出现

为了共享文字、文件、图片及音视频等信息,产生了HTML语言,可通过HTML标记将内容组织在一起,这些内容以文件的形式存在,然后使用FTP将文件传输到HTTP服务器目录,用户通过浏览器和网址就可以看到发布的内容(江湖人称主页)。

1993年HTML标准产生,1994当时的浏览器老大Netscape面世,1994 Yahoo成立收集了一些连接写在页面上,方便大家访问

用记事本、vi、Dramwaver等工具编写HTML就可以了。

CGI、FastCGI来了

人们不满足于简单的阅读浏览,想跟服务器可以交互,1993年通用网关接口(Common Gateway Interface/CGI)出现,NCSA为他们的HTTP服务器开发了CGI。

CGI允许HTTP服务器调用外部程序,CGI是HTTP服务器与外部应用程序之间的标准接口,HTTP服务器使用UNIX的SHELL变量传递参数给CGI程序,CGI程序是一个独立的程序,通过它可以访问数据库等操作实现动态交互。

几乎主流的服务器都提供了CGI支持模块。CGI程序可以使用几乎所有程序语言来编写,如:Shell、C/C++、Perl、Python、PHP等,早期应用最广泛的是Perl。

基本过程:HTTP服务器收到请求后将特定的请求交给CGI程序,CGI程序完成处理操作后输出HTTP协议响应和HTML内容,HTTP服务器将内容返回到浏览器。

CGI工作示意图.png

#!/usr/bin/python

print "Content-Type: text/html\n\n"
print "<html><body>Hello, Python</body></html>"

FastCGI:CGI在每次请求都会开启一个新的进程,完成后关闭进程,这种方式对于频繁的请求相对低效,为了解决这个问题,FastCGI产生了,在服务器启动时外部进程就产生并且等待请求产生,执行操作完成后并不退出,而是等待下一个请求。

FastCGI编程就稍复杂一些,但是也有很多已经做好的库可简化编程,如:fastcgi++、fcgi等,只要符合FastCGI协议规定就行。

CGI、FastCGI解决了交互问题,可以交互了

动态Web服务器和规范

直接用CGI写程序太麻烦了,而且CGI的效率相对低,大家纷纷开始开发了自己的动态Web服务器和规范简化了程序开发的难度和工作量。也产生了一些Web友好的语言。一些新的语言也添加了对于Web的支持。

1)出现独立的应用服务器和规范,如:Tomcat/WebSphere/Jetty(JSP/Servlet)、IIS(ASP/ASP.NET)、Gunicorn(WSGI服务器)等,按照这些规范开发的应用可加载到应用服务器;

2)传统的Web服务器内置或者添加扩展插件实现动态服务器支持,包括:微软的IIS(或+其它插件)、Apache+插件、Nginx+插件;

3)发展出了多种多样的Web应用框架,有些Web应用框架提供了内置的Web应用服务器可独立运行,如:Go原生HTTP、Beego(Go)、Node.js原生HTTP、Django(Python)、Flask(Python)等。

动态页面技术

利用ASP、JSP、PHP等技术,开发者可以在HTML嵌入其它语言,并提供了一些内置的或第三方功能库供调用完成数据处理等功能。

模板技术

在这个过程成也出现了一些模板技术,模板中不支持完成的语言特性,模板具备一些简单的逻辑处理和替换功能,程序中产生的数据被应用到模板中生成一个HTML输出,如:基于Servlet的Velocity、Freemarker,基于Python的Django,基于Go的Beego,基于Ruby的Rails,基于Node.js的Express等。

应用开发模式

CGI和动态页面开始应用的阶段,界面生成和处理逻辑被放在一个页面或者同一个程序文件中,业务需求和交互逻辑相对简单,大家还没把注意力放在程序组织方面,开发方式相对原始。

随着Web上应用的越来越多、业务需求和交互越来越复杂,应用规模越来越大,原始的程序组织方式暴露出了弱点,这时编程人员同时熟悉HTML、CSS、Javascript以及对应的支撑语言,不管是界面的修改还是逻辑处理的修改都得在一个文件中进行。

MVC、MVT

基于开发效率和分工的需求,出现了一些应用模式,应用最广泛的就是MVC(Model-View-Controller),它的出现使程序的各部分功能有了明确的定义,也产生了"前端开发人员"和"后端开发人员"的分工,大家有了一直的编程方式,推动了软件规模化过程中的开发效率。

你可以把这种应用模式应用到各种应用框架中,如:JSP/Servlet、Struct、SpringMVC、ASP.NET、Express(Node.js)、PHP、Beego(Go)等。

MVT其实是属于MVC的一种,Model-View-Template;基于Python的Django就是此种模式。

Ajax的出现改善了界面交互

从1998年开始出现Ajax技术就的得到了快速的应用,如:当年的Gmail充分的利用了这个技术给人耳目一新的体验;

不像以前页面提交方式,每次请求服务器都会返回整个页面内容,不能很好的利用网络,也会引起不必要的数据查询;Ajax发出请求后服务器端只需要返回有用的数据就可以了,Ajax端负责使用Javascript来更新界面显示的部分内容,大大的提高了响应速度,减少了传输内容,避免了不必要的查询。

浏览历史问题:Ajax刚刚出现时有个问题就是浏览器不能记录历史数据,不能正确响应后退前进操作,这个问题在初期大家使用了一个隐藏的iframe帧来处理请求;到了后面有了一个新的解决方案就是使用#锚点标记请求这样就解决了浏览器历史和按钮问题。

前端技术全面爆发

随着浏览器性能的越来越强悍,浏览器对Javascript支持趋于完善,客户端可以承担更多的运算能力,基于Javascript和CSS的框架和基础库迅速发展,界面的生成控制都可以放客户端完成。

jQuery(MIT):基础Javascript库,简化Javascript操作

PureCSS(BSD):纯CSS界面库

Bootstrap(MIT):基于jQuery的UI库,包括Javascirpt和CSS部分;

当前前端的三驾马车 React、Vue、Angular

React(MIT):来自Facebook的Javascript UI基础库,一切都是Javascript,不直接使用HTML,以一种奇怪的语法和组件机制帮助您构建UI系统,被广泛的使用;如果你能接受奇怪的语法那么他很棒,因为都是Javascirpt操作所以,可模块化的比较彻底,无需依赖HTML。

Vue(MIT):Google员工创建,Javascipt UI基础库,基于HTML格式模板进行数据的绑定、渲染;可支持JSX构建模板;可以将模板、CSS、JS放在一个以vue结尾的单独文件为模块化提供一些支持;

想看看React和Vue在构建程序时的区别可以看看:https://blog.csdn.net/csdnnews/article/details/81880378

Angular(MIT):由Google提供支持,

常用UI组件库

ElementUI

antd

[ 编辑 | 历史 ]
最近由“jilili”在“2019-07-14 14:50:06”修改