在绪论中我们已经介绍了,在前端发展历程中如今迎来的至关重要的一步,那就是前端的工程化。而如何在项目中通过运用自动化工具来减少重复性工作和提高工作效率又是工程化里不可缺少的一环。因此前端自动化在现阶段的前端技术发展中是十分重要的。那么下面就先了解自动化工具和他们的技术实现。
2.1 自动化构建工具的出现
在传统的前端开发中原本是不存在自动化这一说法的,在最早的web1.0时期,前端除了HTML页面外,其实主要的开发工作都是以来后端人员的开发来完成,页面的逻辑往往是由嵌入在页面内的JSP或者PHP来代替,这时虽然JavaScript虽然已经初步崭露头角,但是在整个开发环境的大趋势下依然表现平平。
Ajax技术的出现彻底帮助打破了JavaScript打破了这个桎梏。原本JavaScript只是一个简单的脚本开发语言,在它的设计之初只是单线程的开发语言,同时由于JavaScript的使用还没有被开发者们开发出来,所以一开始JavaScript完全无法在前端开发领域里面与JSP、PHP、ASP等对抗。但是Ajax却让JavaScript打了一场漂亮的翻身仗,Asynchronous Javascript And XML 是Ajax的全称,它的中文含义是异步的JavaScript和XML(可扩展的文本标记语言),Ajax可以通过异步的通讯来完成网页的局部动态加载,它通过XMLhttprequest可以在不进行表单提交的情况下完成与后端数据请求。对这项技术的推广和支持起到至关重要的作用的是google公司,这种技术令google的许多页面可以呈现局部的动态更新,马上就引起了世界各地开发者的注意。直到现在Ajax都是任何一个网站项目必不可使使用的技术之一。
正是得益于Ajax技术的火热,JavaScript也开始越来越多的被前端项目作为主要的开发语言。Ajax可以通过JavaScript让浏览器与服务器随时随地处于可以通信的状态,而不用必须通过页面刷新和表单提交。伴随着Ajax的兴起,SPA单页面应用也走进了人们的视野。但是随着JavaScript被开发者们作为前端开发的主要语言,一些JavaScript存在部分局限性也暴露了出来。首先是在传统JavaScript运行环境下是无法支持服务器开发的,而且在浏览器和服务器的通信上只能使用单方面通信的策略,即服务器必须在接收到浏览器端发送的请求后才能进行数据的处理,而不能直接有服务器端向浏览器发起数据。这就令例如消息推送类型的服务开发起来非常麻烦。问题的出现就意味将有新的技术诞生。
Node.js的出现给JavaScript带来的全新的生命力和研发模式。Node.js使JavaScript可以运行在服务器端,并给到了JavaScript高并发,非阻塞的I/O,流的特性。高并发的非阻塞I/O可以帮助JavaScript已最大的可用性来访问API接口和数据库,而流的特性可以帮助JavaScript更好的管理线程,特别是文件的传输。
当然Node.js为JavaScript带来的远不止这些,其中有一个对于前端工程化和自动化起到关键性作用的工具随着Node.js一起登场,那便是npm。npm的出现是当时越来越复杂和庞大的前端项目的一剂良药,他带来了完善的包管理,让前端可以朝着前端工程化方向迈出自动化的第一步。npm本身就是node.js的包管理工具,就像我们知道node.js可以让JavaScript作为服务器的开发语言,而同样是服务器的开发语言java有着诸如maven的包管理工具,因此npm就作为node.js的maven工具登场了。同样可以举一反三的是,npm虽然一开始只是node.js为了在服务器端管理包而存在,但是对于同样是JavaScript代码的前端项目来说,依然是可以使用的。至此,前端依托于node.js和npm在前端工程化的道路上走出了一大步,让前端工程开始有了自动化的包管理,随后基于node.js平台出现了自动化构建工具grunt,grunt的出现也是一石惊起千层浪,它可以帮助开发者们完成从预编译到项目打包过程中几乎所有机械式的开发工作,然后就是同时基于node.js平台的gulp。如今前端自动化构建也进入了百家争鸣式的时代。从Ajax带来的JavaScript的兴起到进入自动化构建时代所经历的时间不过十余年,这无疑显示出了前端技术发展之迅猛,下面我们在主要来看一下一些与自动化构建分不开的关键技术。来,自|优;尔`论^文/网www.youerw.com