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还有很多实用高效的插件,需要我们在实践中探索,结合项目需求进行选择。

目录
相关文章
|
2月前
|
前端开发 JavaScript 应用服务中间件
在Docker部署的前端应用中使用动态环境变量
以上步骤展示了如何在 Docker 配置过程中处理并注入环墨遁形成可执行操作流程,并确保最终用户能够无缝地与之交互而无须关心背后复杂性。
179 13
|
2月前
|
人工智能 数据可视化 测试技术
AI 时代 API 自动化测试实战:Postman 断言的核心技巧与实战应用
AI 时代 API 自动化测试实战:Postman 断言的核心技巧与实战应用
468 11
|
4月前
|
运维 监控 持续交付
还在为部署开源工具烦恼?自动化部署工具 Websoft9一键部署 300+ 开源应用
在数字化时代,开源工具因免费、灵活、可定制等特性广受欢迎,但其部署过程却常因环境配置复杂、依赖繁琐、耗时长等问题令人头疼。本文介绍了传统部署的三大难点,并提出两种解决方案:传统手动部署与集成化控制台部署。
还在为部署开源工具烦恼?自动化部署工具 Websoft9一键部署 300+ 开源应用
|
4月前
|
运维 监控 应用服务中间件
运维打铁: Ruby 脚本在运维自动化中的应用探索
Ruby 是一种简洁、动态类型的编程语言,适合运维自动化任务。本文介绍了其在服务器配置管理、定时任务执行和日志分析处理中的应用,并提供了代码示例,展示了 Ruby 在运维自动化中的实际价值。
166 2
|
3月前
|
人工智能 IDE 测试技术
Browser-Use在UI自动化测试中的应用
Browser-Use是一款浏览器自动化工具,具备视觉与HTML解析、多标签管理、操作记录与复现、自定义操作、自我纠正及并行执行等功能,助力AI智能体高效完成网页任务。
316 0
|
9月前
|
前端开发 安全 开发工具
【11】flutter进行了聊天页面的开发-增加了即时通讯聊天的整体页面和组件-切换-朋友-陌生人-vip开通详细页面-即时通讯sdk准备-直播sdk准备-即时通讯有无UI集成的区别介绍-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
【11】flutter进行了聊天页面的开发-增加了即时通讯聊天的整体页面和组件-切换-朋友-陌生人-vip开通详细页面-即时通讯sdk准备-直播sdk准备-即时通讯有无UI集成的区别介绍-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
604 90
【11】flutter进行了聊天页面的开发-增加了即时通讯聊天的整体页面和组件-切换-朋友-陌生人-vip开通详细页面-即时通讯sdk准备-直播sdk准备-即时通讯有无UI集成的区别介绍-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
|
11月前
|
Java 测试技术 数据安全/隐私保护
软件测试中的自动化策略与工具应用
在软件开发的快速迭代中,自动化测试以其高效、稳定的特点成为了质量保证的重要手段。本文将深入探讨自动化测试的核心概念、常见工具的应用,以及如何设计有效的自动化测试策略,旨在为读者提供一套完整的自动化测试解决方案,帮助团队提升测试效率和软件质量。
|
8月前
|
人工智能 前端开发 JavaScript
AI程序员:通义灵码 2.0应用VScode前端开发深度体验
AI程序员:通义灵码 2.0应用VScode前端开发深度体验,在软件开发领域,人工智能技术的融入正深刻改变着程序员的工作方式。通义灵码 2.0 作为一款先进的 AI 编程助手,与广受欢迎的代码编辑器 Visual Studio Code(VScode)相结合,为前端开发带来了全新的可能性。本文将详细分享通义灵码 2.0 在 VScode 前端开发环境中的深度使用体验。
1421 2
AI程序员:通义灵码 2.0应用VScode前端开发深度体验
|
9月前
|
前端开发 Java Shell
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
631 20
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
|
9月前
|
人工智能 前端开发 JavaScript
详解智能编码在前端研发的创新应用
接下来,人与智能体的交互将变得更为紧密,比如 N 年以后是否可以逐渐过渡。这个逐渐过渡的过程实际上是温和的,从依赖人类到依赖超大规模算力的转变,可能会取代我们的一些职责。这不仅仅是简单的叠加关系。对于AI和超大规模算力,这是否意味着我们可以大幅度提升软件质量,是否可以缩短研发周期并提高效率,还有创造出更优质的软件并持续发展,这无疑是肯定的。
578 25