Gulp前端自动化构建工具的应用

简介: 实际前端开发不再仅仅是静态页面的开发了,丰富的前端技术让前端的代码逻辑越来越复杂, 模块化开发和各类框架也增加了在生产环境中部署开发环境代码的难度,这种情况下,前端自动化构建在前端开发中尤为重要。 我们会遇到下面的问题: a. 每次修改了HTML、JS、CSS等文件,都需要手动刷新浏览器,能不能修改了让浏览器自动刷新呢 ? b. 在发布项目的时候,需要将前端资源进行合并、压缩,尽量减少http请求,手动去完成合并压缩不仅繁琐,还容易出错,有什么技术可以自动地执行这些操作,解放我们的双手呢?

Gulp前端自动化构建工具的应用



1. 引言:


实际前端开发不再仅仅是静态页面的开发了,丰富的前端技术让前端的代码逻辑越来越复杂,


模块化开发和各类框架也增加了在生产环境中部署开发环境代码的难度,这种情况下,前端自动化构建在前端开发中尤为重要。


我们会遇到下面的问题:


a. 每次修改了HTML、JS、CSS等文件,都需要手动刷新浏览器,能不能修改了让浏览器自动刷新呢 ?


b. 在发布项目的时候,需要将前端资源进行合并、压缩,尽量减少http请求,手动去完成合并压缩不仅繁琐,还容易出错,有什么技术可以自动地执行这些操作,解放我们的双手呢?


2. Gulp - 基于流的自动化构建工具


Gulp的出现完美解决了引言中的问题,再利用Node.js的威力,我们就可以快速构建项目。


Gulp的API很少,上手很快,简单介绍下:


a. gulp.src()


Input输入,文件的读取操作;从操作系统中读取一个或者多个文件,读取完的文件由 gulp 加载到内存中,等待继续的操作


b. gulp.dest()


output 输出,也即文件的写入操作


c. gulp.task(name,[,deps],fn)


第一个参数是要执行任务的名字,第二个参数是执行该任务需要依赖的任务,第三个参数定义了所要执行的操作


d. gulp.watch()


监视文件,文件发生改动时执行定义的操作


其中,还有一个 pipe() 可以理解成管道、下一步要执行的操作的意思。


如下图:执行一个"server"任务,监控src目录下的html文件,如果发生了变化,执行reload任务,reload任务是将 src 目录下的所有html文件复制到build目录下。


20180308194828291.png


3. gulp的插件:


gulp有很多高质量的插件,正是通过这些插件,才能完成各种任务,下面列了一些常见的插件。


gulp-concat:css文件合并


gulp-clean-css:css文件压缩


gulp-babel:JS ES6语法转ES5


gulp-uglify:JS 压缩


gulp-rename:文件改名


gulp-imagemin:图片压缩


browser-sync:浏览器同步测试工具


4. 关于gulpfile.js


在项目根目录下,我们需要新建一个命名为 gulpfile.js 的js文件,我们的任务都写在这里


 编写 gulpfile.js注意事项:


 路径的统一配置:方便日后根据实际项目的目录名进行更改。


20180308194846833.png


5. 代码部分


代码部分的思路就是将开发环境和生成环境完全分开:


开发环境:启动开发环境的服务器,修改了任何一个文件,服务器自动同步效果;


生产环境:部署开发环境的代码,并对资源文件合并、压缩。


5.1. 开发环境代码


20180308194902129.png


5..2 生产环境代码


2018030819491424.png


6. 使用方法


a. 安装node环境


b. 拷贝package.json、gulpfile.js 文件到自己项目的根目录,package.json里就是安装插件的依赖


命令行 npm install 安装所有依赖


c. 开发阶段,命令行执行 gulp dev,开启文件实时监控的任务,文件的更改后自动刷新浏览器页面


d. 生产环境,命令行执行 gulp product 执行CSS、JS、图片的合并压缩任务


7. 其他好用的插件


gulp还有一些其他好用的插件,可以根据实际情况自行配置哦


gulp-css-spriter:雪碧图自动合成


gulp-base64:转成base64的图片


gulp-rev:版本控制


gulp-notify:项目通知


......


8. 总结


前端自动化构建工具能让我们更高效的工作,所谓磨刀不误砍柴功嘛。Gulp还有很多实用高效的插件,需要我们在实践中探索,结合项目需求进行选择。

目录
相关文章
|
29天前
|
存储 Shell Linux
快速上手基于 BaGet 的脚本自动化构建 .net 应用打包
本文介绍了如何使用脚本自动化构建 `.net` 应用的 `nuget` 包并推送到指定服务仓库。首先概述了 `BaGet`——一个开源、轻量级且高性能的 `NuGet` 服务器,支持多种存储后端及配置选项。接着详细描述了 `BaGet` 的安装、配置及使用方法,并提供了 `PowerShell` 和 `Bash` 脚本实例,用于自动化推送 `.nupkg` 文件。最后总结了 `BaGet` 的优势及其在实际部署中的便捷性。
60 10
|
10天前
|
运维 安全 应用服务中间件
自动化运维的利剑:Ansible实战应用
【9月更文挑战第24天】在现代IT基础设施的快速迭代与扩展中,自动化运维成为提升效率、保障稳定性的关键。本文将深入探讨Ansible这一流行的自动化工具,通过实际案例分析其如何简化日常运维任务,优化工作流程,并提高系统的可靠性和安全性。我们将从Ansible的基础概念入手,逐步深入到高级应用技巧,旨在为读者提供一套完整的Ansible应用解决方案。
|
8天前
|
JavaScript 前端开发 API
详解队列在前端的应用,深剖JS中的事件循环Eventloop,再了解微任务和宏任务
该文章详细讲解了队列数据结构在前端开发中的应用,并深入探讨了JavaScript的事件循环机制,区分了宏任务和微任务的执行顺序及其对前端性能的影响。
|
1天前
|
运维 应用服务中间件 持续交付
自动化运维的利器:Ansible实战应用
【9月更文挑战第33天】本文将带你深入理解Ansible,一个强大的自动化运维工具。我们将从基础概念开始,逐步探索其配置管理、任务调度等功能,并通过实际案例演示其在自动化部署和批量操作中的应用。文章旨在通过浅显易懂的语言和实例,为读者揭开Ansible的神秘面纱,展示其在简化运维工作中的强大能力。
94 64
|
8天前
|
前端开发 算法 JavaScript
最小堆最大堆了解吗?一文了解堆在前端中的应用
该文章详细解释了堆数据结构(特别是最小堆)的概念与性质,并提供了使用JavaScript实现最小堆的具体代码示例,包括堆的插入、删除等操作方法。
最小堆最大堆了解吗?一文了解堆在前端中的应用
|
18天前
|
敏捷开发 IDE 测试技术
自动化测试框架的选择与应用
【9月更文挑战第16天】在软件开发周期中,测试环节扮演着至关重要的角色。随着敏捷开发和持续集成的流行,自动化测试成为提升软件质量和效率的关键手段。本文将探讨如何根据项目需求选择合适的自动化测试框架,并通过实际案例分析展示其在软件开发过程中的应用。我们将从单元测试、集成测试到端到端测试等多个层面,讨论自动化测试的最佳实践和常见问题解决策略。
|
8天前
|
敏捷开发 Java 测试技术
自动化测试框架的选择与应用
【9月更文挑战第26天】在软件开发的海洋里,自动化测试是那一盏指路明灯。它不仅加快了开发周期,还提升了软件质量。本文将带你探索自动化测试框架的世界,了解它们的核心特性、适用场景及如何根据项目需求做出明智选择。让我们一起启航,找到那把打开高效、稳定软件生产大门的钥匙。
|
8天前
|
存储 前端开发 算法
太平洋大西洋水流问题如何解决?一文了解图在前端中的应用
该文章深入探讨了图数据结构的基本概念及其在前端领域的多种应用,包括图的不同表示方法(邻接矩阵与邻接表)和经典的图算法(如深度优先搜索与广度优先搜索),并通过具体实例讲解了如何使用JavaScript来解决图相关的编程问题,如太平洋大西洋水流问题。
太平洋大西洋水流问题如何解决?一文了解图在前端中的应用
|
8天前
|
JSON 前端开发 JavaScript
一文了解树在前端中的应用,掌握数据结构中树的生命线
该文章详细介绍了树这一数据结构在前端开发中的应用,包括树的基本概念、遍历方法(如深度优先遍历、广度优先遍历)以及二叉树的先序、中序、后序遍历,并通过实例代码展示了如何在JavaScript中实现这些遍历算法。此外,文章还探讨了树结构在处理JSON数据时的应用场景。
一文了解树在前端中的应用,掌握数据结构中树的生命线
|
8天前
|
存储 前端开发 API
ES6的Set和Map你都知道吗?一文了解集合和字典在前端中的应用
该文章详细介绍了ES6中Set和Map数据结构的特性和使用方法,并探讨了它们在前端开发中的具体应用,包括如何利用这些数据结构来解决常见的编程问题。
ES6的Set和Map你都知道吗?一文了解集合和字典在前端中的应用
下一篇
无影云桌面