前端开发的前世今生

版权声明:本文为博主ElwinGao原创文章,未经博主允许不得转载。 https://blog.csdn.net/elwingao/article/details/52412403

静态页面

那一年,是静态页面的年代。

最早期的Web界面基本都是在互联网上使用,人们浏览某些内容,填写几个表单,并且提交。当时的界面以浏览为主,基本都是HTML代码,有时候穿插一些JavaScript,作为客户端校验这样的基础功能。代码的组织比较简单,而且CSS的运用也是比较少的。

由美工负责设计好网站界面,再用一些自动化的软件拉伸几下和切图,将设计好的图就可以通过网页排版软件输出表格的布局,排版,细节调整,一个网站就出来了。

我们用的是Dreamweaver,更老的是Frontpage.
少帅Elwin还是坚持:手写HTML代码是基本功

网站页面逐渐复杂,开始表现和内容相分离,CSS逐渐盛行;
网站也需要有动态效果,我们开始编写基础的Javascript脚本,更多时候是Javascript脚本的搬运工。

那一年,前端工程师是一个桥梁:
对于设计师,他是一个工程师,配合使页面尽量达到和设计一致效果
对于程序开发人员,他是一个设计师,将设计页面转化为静态页面,需要用代码对设计页面进行最初的还原,实现好相应的前台的效果

智能手机初起,WAP页面开发
虽然是智能手机,但依然是静态的WAP页面,依然是要用传统的方法进行HTML+CSS的排版,只不过为了适配手机,需要学习更多WML和WMLSCRIPT语言。

那一年你做得最多是什么?

  • 浏览器兼容,跟IE不同版本斗争

  • 分辨率适配
  • HTML DOM值获取和判断
  • Alert


动态页面和动态技术年代

这个时代的典型特征是Ajax的出现,最为典型是Gmail,因为恰当地应用了这些技术,获得了很好的用户体验。由于Ajax的出现,规模更大,效果更好的Web程序逐渐出现,在这些程序中,JavaScript代码的数量迅速增加。

出于代码组织的需要,“JavaScript框架”这个概念逐步形成,当时的主流是prototype和mootools,这两者各有千秋,提供了各自方式的面向对象组织思路,对一些原生的JavaScript类型提供了一些扩展、封装和一些数据结构定义。

这个时代的明星除了Ajax外,还涌现一个超级巨星jQuery.

jQuery是继prototype之后又一个优秀的Javascript库。它是轻量级的js库,兼容各种浏览器,核心理念是写得更少,做得更多。jQuery,顾名思义,也就是JavaScript和查询(Query),即是辅助JavaScript开发的库。

如今,jQuery已经成为最流行的javascript库,在世界前10000个访问最多的网站中,有超过55%在使用jQuery。当时比较多人使用他作为动态特效和DOM的连续操作,现在更多人通过插件来扩展。

09 年之前,JavaScript 还处于对自身语言的完善过程中,而到了 09 年,JavaScript 类库已经颇为成熟,jQuery/Prototype/YUI/Dojo 等都已经发布了好几个稳定版本,各大类库也是相互吸收优点,不断完善并提高自身性能,

同时,样式上,CSS2.0是一套全新的样式表结构,让程序员开发时可以不考虑显示和界面就可以制作表单和界面,显示问题可由美工或是程序员后期再来编写相应的 CSS2.0样式来解决,实现比较理想的内容和表现效果真正分离。

Web2.0年代

2010-2011 年 HTML5 的技术发展和推广都向前迈进了一大步,语义明确的标签体系、简洁明了的富媒体支持、本地数据的储存技术、canvas 等等各类技术被广泛应用,基于H5的移动端开发工具和调试工具也日益成熟。

jQuery 已经成为大小公司日常开发的标配,成千上万的 JQ 插件让网页开发变得尤为轻松,同时Node.js已经悄然崛起,前端技术也开始渗入服务端开发领域的阵地。

2012年,随着智能手机的发展,萌生了众多移动端框架,如 Sencha Touch/Zepto.js/JQ Mobile 等,相对 PC 端框架,它们更加轻便。

CSS3语言逐渐成熟,将以前的规范作为一个模块实在是太庞大而且比较复杂,目前朝着模块化发展的,出现了LESS、SASS和 Stylus 等预处理语言,Web 开发变得更加紧凑。

此时这个时代的一个巨星Bootstrap,也被Twitter也推出了,Bootstrap提供了优雅的HTML和CSS规范,它简洁灵活,使得 Web 开发更加快捷,也是多端响应适配的利器。

随着Web应用的日益复杂和需要适配的终端的多样式,单页面应用程序、响应式开发、动态加载、预处理语言在前端开发逐渐盛行。

编程思想的切换,迎来了 CoffeeScript 和 TypeScript,在前端工程化上,几个派系相互争斗,产出了 AMD、CMD、KMD 等规范,也衍生了 SeaJS、RequireJS 等模块化工具。

这个时代,前端开发技术不仅仅是界面的页面显示实现了,更加作为一种独立的开发技术,跟类似JAVA/PHP/c#等比肩作战了。

前端攻城狮们,这个年代变化太跳跃,跟上了吗?

工业化年代

这个时代,随着Web端功能的日益复杂和项目越来越庞大,人们开始考虑这样一些问题:

  • 如何更好地多人协同开发?
  • 如何更好地做好系统持续更新和迭代开发?
  • 如何更好地模块化开发和分工
  • 如果更好管理越来越庞大的代码和页面资源?


大型项目碰到的前端难题

一个大型的JavaScript项目通常需要解决哪些问题?

  • 成千上万行的代码的更新,迭代,重构;
  • 多人参与/长时间维护,开发职责区分困难;
  • 大型页面和单应用页面加载速度问题;
  • 静态资源(html/js/css/图片资源等 )过多导致上线时的重复性工作量增大;
  • 众多外引用包的管理;


解决方法:

-成千上万行的代码的更新,迭代,重构:

采用封装,继承 等现代化编程语言的面向对象编程方式,使用prototype/__proto__这些技术栈。

-多人参与/长时间维护,开发职责区分困难:

参考JAVA等开发模式和框架,采用合适的前端MVC、MVP、MVVM框架,我们把这些框架统称为MV*框架。掌握前端框架可以更好的区分职责,而框架统一的 API实现了长时间多人开发/维护的可能性。

相关框架:
操作虚拟 DOM( Virtual DOM )的 React;
单纯的践行 MVC 理论的 Backbone.js;
MVM 风格的 AngularJS等

-页面加载速度问题:

由于SPA是单页面应用,因此页面在加载的时候几乎包含了全部功能,但用户往往却只使用其中的一部分,所以网速的限制,带宽的浪费,用户的等待则是另一个难题。

『模块化开发』 是解决这类难 题的银弹,而 AMD / CMD的理论自然成为前端开发者们掌握的必要知识,而 requre.js / seajs则是 这些理论的具体实现方式。由于 Http 的特性所致 ( 分散的,小的静态资源在加载的时候更慢 ),因此合并/压缩则是另外一个解决方案。

-静态资源过多导致上线时的重复性工作量增大:

当这类静态资源很少的时候,手动合并/压缩 并没有问题,反之这些资源呈指数上升的时候,手动方案显示不是一个好办法。自动化方案 的引入势在必行,而其中践行者:grunt/gulp/webpack就需要掌握了。

-众多外引用包的管理:

JavaScript 先天不具有其它语言的包管理功能,components、bower、spm这类技术栈为我们解决了包管理问题,目前npm 开始主导整个市场。

其他前端技术

ECMAScript 6

ES6(ECMAScript2015)的出现,无疑给前端开发人员带来了新的惊喜,它包含了一些很棒的新特性,可以更加方便的实现很多复杂的操作,提高开发人员的效率。

ES6是一种新的javascript规范,他最重要的特性(之一)就是包含了:Class(原生OOP)和Module(原生模块化)方案。

注:这个是编写Javascript的另外一个高效语言,但是否要采用,还有待时间认证。


Mobile H5应用框架

结合了 Web 应用和 Native 应用的优势,可以使用 JavaScript 来开发 iOS 和 Android 原生应用。

React Native由FB推出,设计理念引入了很多新的概念,在 JavaScript中用React抽象操作系统原生的UI组件代替DOM元素来渲染,采用组件化,JSX,Flux等,学习曲线比较陡峭.

MUI,国产的,配合官方的IDE Hbuilder使用,算是目前在低端安卓设备上表现最好的Hybrid框架,UI控件模仿了ratchet

阿里推出的Weex,有些人称为Vue-Native,采用Webcomponents形式声明组建和搭建界面,通过transformer层把组件中的数据绑定,style等的解析提前到了在渲染真实dom之前,编译成json,或js function。最后在Web View中直接生成dom,在native中生成native控件。

未来前端开发

用户体验变得越来越重要,响应式技术的发展也是后续网页应用的一大特点,端和端之间的差异只是在表现上,越来越多移动端应用的发布已经脱离了后端,前端完全通过异步方式获取数据。

JavaScript 从客户端的脚本语言纵身跃进进入了后端行列,而今也开始深入到移动端 Native 领域,确实是无孔不入。Web APIs 将会成为 Web App 和 Mobile App 的一个中心点,前端基于后端的 RESTful 服务构建应用,也给前端开发者创造了无数的可能。

前端攻城狮未来的发展,可能会是Web技术栈的不断融合,包含了从前端设计、交互、前端实现、网络数据传输、后端实现、后端运维和数据库等几个方面。

回到现在,学习建议

少帅Elwin給前端入门者的建议:

基础要扎实,手写HTML,CSS,Javascript是基本技能一定要掌握好。

不为使用框架而使用框架,根据项目实际需要使用框架。

推荐入门掌握框架:jQuey,Bootstrap,进阶框架(偏应用类场景使用):AngularJS,RequireJS.

遵守几个规则:

  • DRY(Don‘trepeatyourself), 不要重复自己
  • 简单原则(Keep It Simple and Stupid)
  • 低耦合原则(Minimize Coupling)
  • 采用适合团队使用的技术,而不是最好的技术或框架

猜你喜欢

转载自blog.csdn.net/elwingao/article/details/52412403