在校学习和几年工做工做中不知不觉经历了一半的 WEB 历史演变、对近几年的发展比较了解,结合经验聊聊 WEB 发展历史。javascript
演变不易,但也是必然,由于为人始终要进步。html
这是 1997 年 Apple 官网,那时的网站不如叫网页,像一张浮夸的彩色报纸,那时是纯粹的 HTML 时代,无论你是否是访问这个网页,每一个页面都是在服务器上存在的。前端
随后技术性强一点的网站可能会经过 CGI Perl 运行一小段代码与数据库或文件系统进行交互。好比:vue
静态网站是最受搜索引擎欢迎的网站,由于它相对固定,因此网站 SEO 很是好作,我猜想这也是为何如今的文档网站大部分都是静态网页的缘由之一吧。java
很惋惜我没能亲眼看一看这样的时代node
2005 年左右,前后出现了 微软的 ASP 和 Java Server Pages [JSP] 等技术,取代了 CGI ,加强了 WEB 与服务端的交互的安全性、用起来也更加简单,但随着各个公司WEB业务的复杂性,缺点也逐渐暴露出来:python
一、技术单一,难以维护react
JSP页面由HTML代码和嵌入其中的Java代码所组成,用一个比较常见的 JSP 代码段举例:jquery
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<%@ page import="com.zifangsky.OnlineFriend.model.article.ShowByPage"%>
<jsp:useBean id="showAllTitle" type="com.zifangsky.OnlineFriend.model.article.ShowByPage" scope="session"/>
复制代码
JSP = HTML+Javawebpack
上面的代码 HTML 中大量耦合了JAVA代码,经过JSP编译以后能够在客户端充当部分服务端的角色,这让咱们难以搞清服务端的角色,以及增长调试的复杂度。业务稍微复杂一点,试想一下:HTML中掺杂了太多java代码,不管是开发仍是维护都是一件痛苦的事情。
二、不不够灵活 JSP与Java Servlet同样,是在服务器端执行的,一般返回该客户端的就是一个HTML文本。咱们每次的请求:获取的数据、内容的加载,都是服务器为咱们返回染完成以后的 DOM,这也就使得咱们开发网站的灵活度大打折扣,在这种状况下,同年:Ajax火了。
为何说 2005 年 Ajax 火了?由于 Ajax 技术并非 2005 年出现的,他的雏形是 1999 年。
1999年,微软公司发布IE5,第一次引入新功能:容许javascript脚本向服务器发起HTTP请求[这也就是今天万恶的 ActiveX 原型]。这个功能当时并无引发注意,直到2004年Gmail发布和2005年Google Map发布,才引发普遍重视
Google作了什么事儿? 在 2005 年,Google 经过其 Google Suggest 使 AJAX 变得流行起来,他大概是这样的事情:
如今看来很常见的技术手段,当时迅速燃爆了技术圈,以此来实现:异步交互 这样既能增长用户的体验,又能替代掉页面部分的服务端代码,今后, AJAX 成为脚本发起 HTTP 通讯的代名词,次年 W3C 也在 2006 年发布了 AJAX 的国际标准
总结:
随后各类 JSP ASP 的改良模板引擎、全新的交互方式也如雨后春笋通常涌现。而且以 JAVA 做为服务端也出现了如 Struts 、 Spring、Hibernate 的老一代框架、采用后端 MVC 的方式让构建 WEB 应用再一次更加健全, WEB 服务正在逐渐由石器时代走向文明时代。
时光啊不断地飞逝,前端后端也出现了几个潮流。
移动端
手机已经发展出了一些苗头,网页也区分了web和移动应用两种模式,但移动端限制于当时手机行业的技术,发展较慢。
Jquery的出现
出现了很是流行的JavaScript库:jquery,可以快速构建动态、美妙的web应用,完美的封装了Ajax,让开发者开发网页变得优雅。
SPA的雏形
随着文明时代 Ajax 正式提出,加上 CDN 开始大量用于静态资源存储,因而出现了 SPA (Single Page Application 单页面应用),Backbone EmberJS AngularJS 这样一批前端框架随之出现,但以当时的配套技术来讲,SPA 道路并很差走:例如 SEO 问题、SPA 过多的页面、复杂场景下 VIEW 的绑定等,都没有很好的处理。
Struts 、 Spring、Hibernate 通过几年的发展、SSM这个今天被咱们说烂了的词、当时几乎成了当时 JAVA 服务端的 首要选型,我想这也是为何不少公司、或外包公司依然维护这样一套架构的主要缘由。
总结 这几年的飞速发展,为咱们节约了大量的经历、下降了开发者和开发过程的门槛,极大提高了开发效率和迭代速度,我称之为工业时代
经历
说出来你可能不信:大三快结束时实习求得的第一份工做,一我的断断续续开发七、8个月,就是钻研这些自技术栈,独立开发出一款web应用 微宝创业,惭愧的说:
项目架构从文明时代 -> 走到最后的工业时代!不断的重构,不断的上线 ,拼命的学习,我很感谢当时老板对个人信任和同事对个人帮助。
时光啊他一刻不停,直到今天 -- 技术只能用爆炸来形容。
工业时代提出的 SPA 模型随着 NODE 的兴起、服务端、各类工具、容器的飞速发展、前端 MVC MVVM 模式逐渐清晰、前端涌现了至关一批优秀的开源项目: 包管理: npm yarn 打包:grunt gulp 模块加载:RequireJS SeaJs 框架:VUE Angular React hybrid :ionic weex react-native electron 预处理器:less sass 数据可视化:echarts hcharts 以及提高用户体验的动画,让咱们更有“面子”
甚至前端也可使用 Node 来构建本身简单的服务端、正在逐渐摆脱“客户端开发者”的角色
go
更适合面向服务器编程,之前你若是使用C或者C++作的那些事情,用Go来作很合适,例如、虚拟机处理、文件系统等,强如 docker Kubernetes(k8s)都是 GO 写的
python
像一门生物语言,目前看来更容易处理算法、人工智能、网络爬虫、运维方向
java
一款20多年的语言,不断的变强。涌现了不少高质量的库,几个有表明性的:
netty rebbitmq:轻松实现消息队列 elasticSearch: 轻松实现搜索引擎 spring-boot: 面向配置,更加轻松的构建web服务端 spring-cloud、dubbo: 轻松构建微服务
以及即将迎来的 强悍的JAVA11
还有 持续集成 云服务 devops 等运维相关
总结
go 和 python 的出现让咱们服务端开发者能作更多的事情,好比自动化运维、写中间件。逐渐偏向全栈方向发展。而 JAVA 20多年来的生态圈子发展,能帮助咱们写出更健壮的服务。以及狠狠向咱们砸来的:人工智能、devops、云服务等技术,令咱们眼花缭乱,开源成为了一种潮流,技术分享成了每一个人都想作的事情,我称之为:技术爆炸的时代
经历
我近两年很烦恼:如何才能让先后端更加优雅的通讯?
曾经使用多种后端模板引擎直到彻底摒弃,后到 node 作代理、渲染 + grunt 进行数处理,以后逐渐使用
vue + webpack ------> Rest API
这样若是不得不用 NODE 也只会成为 Rest 中的一员而不用通过 NODE 作繁琐的通讯了。这种先后分离的方式达到了满意的效果,前端没必要再管后端的事情,后端?写好本身的服务就行了。
这章只是简单回顾一下发展史,更详细的内容下一章 《开篇:深刻聊聊先后分离架构》 讲述
目前在写《从零构建先后分离项目》系列,校对或更新以此地址为准
不断更新的 项目实践地址
彩蛋:提早预览下一章传送门 🤓