前端构建工具-gulp !

简介: 今天是元宵节,公司也很有人情味的让大家提前下班了,很happy。这个月的学习安排已经计划好了,每天过的很充实,博客的话今天记录下自己学习 gulp的心得,月底再写一篇 require.js 或者 sea.js 的博客。废话不多说,go!

今天是元宵节,公司也很有人情味的让大家提前下班了,很happy。这个月的学习安排已经计划好了,每天过的很充实,博客的话今天记录下自己学习 gulp的心得,月底再写一篇 require.js 或者 sea.js 的博客。废话不多说,go!

一,为啥要用构建工具

项目中的js和css属于静态文件,客户端第一次访问的时候会缓存这些文件,那就意味着当我们需要改js跟css的时候,即使我们将文件中的代码改了重新发布,那么客户端也是看不到,客户端发现缓存中有同样路径的文件,直接读取。

之前做的项目中,项目上线后客户打开一看:“那谁,这里那里需要改动一下”。我就操起键盘改css样式,改js业务逻辑,然后一发布,屁颠屁颠的跟客户讲:“大佬,已经改好了,您老再看!”

可当客户再次打开页面的时候,问题还是那个问题。奇了怪了,我本地是好的啊。思前想后才想起浏览器缓存这么一说,让客户清除浏览器缓存就好了,但不是很多客户都喜欢去清除浏览器缓存,他们只会觉得这样好麻烦。

那么怎么办?我想很多程序员都知道加一个版本号就可以了,这样浏览器就会认为这是一款全新的游戏。。。。额,错了,是一个全新的文件,比如原来是 http://www.xxxx.com/index.js 你现在只需要把地址改为 http://www.xxxx.com/index.js?v=1.0 即可

但是如果这个动作是手动的,那么很大可能我们将会忘掉去手动敲这个版本号 。那么这就是为什么我们需要前端构建工具。前端构建工具有很多,grunt、gulp、webpack等。今天我们只聊gulp。

二、gulp的引入

打开命令行工具,进入项目所在的根目录下,输入 npm init -y 命令,创建package.json文件。

生成的package.json文件,项目名称,版本号,描述信息均为空,我们用ide打开后将其填上。

package.json文件管理我们项目中的包依赖关系,想了解更多package.json信息,请自行百度。

通过 npm 安装 gulp 包:

安装完gulp以及其他要用到的插件后,packjson.json文件变更如下:

开始使用gulp:

gulp构建工具的配置信息默认是写在gulpfile.js 文件中,在项目的根目录下创建 gulpfile.js,通过require引入gulp以及其他插件

 

二、gulp的4个核心API

gulp 自身能做的事情不多,主要是通过各种插件来满足我们的需求,gulp本身提供了4个非常简洁的API(很重要,划重点), 掌握这4个API你就基本掌握了gulp的全部。

1.gulp.task

定义:gulp.task(name [, deps, fn])

我们给gulp注册一个任务task,参数name是该任务的名称,deps是可选项,就是这个任务可能会依赖其他的任务tasks, fn是任务要执行的函数,也就是该任务要干啥。                                                                                                                                                 

例子中先执行完 task2,task3 ,最后再执行task1任务。task2与task3是并行执行的,不是顺序执行。   

2.gulp.src

定义:gulp.src(globs[, options])

与globs 匹配的文件,可以是string或者一个数组。其参数就是一个我们要处理的文件是啥!

我们这里要处理的文件是 ./src/scripts/ 这个路径下的js文件。

3.gulp.dest

定义:gulp.dest( path [, options])

参数path表示文件处理完后要存放的路径,option参数一般不用,无需了解。

4.gulp.watch

定义:gulp.watch(glob [, opts], tasks) or gulp.watch(glob [, opts, cb])

gulp.watch就是监视某路径下文件的变化,然后运行指定的任务Tasks或者函数。

这里gulp监视 ./src/scripts/ 路径下的所有js文件是否发生变化,若有则运行 scripts 这一task任务。

三、gulp具体使用

上面讲过,我们想用gulp做些什么都是通过声明一个task任务来实现。现在我们就通过gulp来做件事情吧:将src/scripts/路径下的a.js与b.js 合并压缩后 生成 ab.js 并存放在 build/scripts/ 路径下。

a.js:

b.js:

 第一步,在我们的gulpfile.js文件中引入 合并、压缩js所需要的插件(插件这块请自行百度)

第二步,创建一个任务task来帮助我们完成合并压缩js这件事

创建完任务后在命令行输入 gulp scripts 指令运行该任务。

运行结果如下:

所以gulp的工作流程就是: 找到文件( gulp.src ) -> 对文件进行操作( 使用各类插件 ) -> 输出文件 ( gulp.dest );

按着这个套路,合并压缩css就简单啦,代码如下:

最后在命令行输入指令gulp styles即可。

我们在实际开发中不需要通过命令行去手动运行一个个的task任务,gulp为我们提供了默认的default任务task,我们可以在该任务中执行我们项目构建中的每一个task,且只需要在命令行中输入gulp 指令即可.

我们还可以利用前文讲到的watch api对我们的css,js文件进行监听,若发生修改则自动运行相关的task任务去进行合并压缩等相应操作,如下:

 

前端构建工具gulp入门到此结束,拜~

原文发布时间为:2018年03月02日
原文作者:小草先森 

本文来源:开源中国 如需转载请联系原作者


目录
相关文章
|
1月前
|
机器学习/深度学习 人工智能 自然语言处理
DeepSeek Artifacts:在线实时预览的前端 AI 编程工具,基于DeepSeek V3快速生成React App
DeepSeek Artifacts是Hugging Face推出的免费AI编程工具,基于DeepSeek V3,支持快速生成React和Tailwind CSS代码,适合快速原型开发和前端组件构建。
929 39
DeepSeek Artifacts:在线实时预览的前端 AI 编程工具,基于DeepSeek V3快速生成React App
|
2月前
|
人工智能 前端开发 小程序
2024年12月30日蜻蜓蜻蜓AI工具系统v1.0.0发布-优雅草科技本产品前端源代码已对外开源可免费商用-优雅草老八
2024年12月30日蜻蜓蜻蜓AI工具系统v1.0.0发布-优雅草科技本产品前端源代码已对外开源可免费商用-优雅草老八
108 31
2024年12月30日蜻蜓蜻蜓AI工具系统v1.0.0发布-优雅草科技本产品前端源代码已对外开源可免费商用-优雅草老八
|
2月前
|
前端开发 JavaScript 开发者
前端项目代码规范工具 (ESLint. Prettier. Stylelint. TypeScript)
前端项目代码规范工具 (ESLint. Prettier. Stylelint. TypeScript)
162 4
|
3月前
|
前端开发 数据处理 Android开发
Flutter前端开发中的调试技巧与工具使用方法,涵盖调试的重要性、基本技巧如打印日志与断点调试、常用调试工具如Android Studio/VS Code调试器和Flutter Inspector的介绍
本文深入探讨了Flutter前端开发中的调试技巧与工具使用方法,涵盖调试的重要性、基本技巧如打印日志与断点调试、常用调试工具如Android Studio/VS Code调试器和Flutter Inspector的介绍,以及具体操作步骤、常见问题解决、高级调试技巧、团队协作中的调试应用和未来发展趋势,旨在帮助开发者提高调试效率,提升应用质量。
89 8
|
3月前
|
监控 前端开发 JavaScript
前端稳定性工具-Sentry
【11月更文挑战第9天】Sentry 是一个开源的错误和性能监控平台,支持多种编程语言和框架。它能够捕获前端应用中的各种错误和性能问题,提供详细的错误信息和用户行为关联,帮助开发团队快速定位和解决问题,优化应用性能。但需注意隐私保护、数据准确性和成本控制。
228 3
|
3月前
|
前端开发 JavaScript API
前端开发的秘密武器:这些工具让你轻松应对各种复杂动画效果!
【10月更文挑战第30天】前端开发中,动画效果为页面增添了无限生机。CSS3的@keyframes规则和JavaScript动画库如GSAP、Anime.js等,使开发者能轻松实现从简单到复杂的动画效果。掌握动画原理和设计原则,结合工具和库,可以创造出既美观又实用的动画,提升用户体验。
81 4
|
3月前
|
Web App开发 前端开发 JavaScript
前端开发的秘密武器:这些工具让你轻松应对各种复杂布局!
【10月更文挑战第31天】前端开发充满挑战,尤其是在处理复杂布局时。本文介绍了几种关键工具和技术,如HTML和CSS基础、Firefox开发者工具、Visual Studio Code以及Vue、React和Angular等前端框架,帮助开发者高效应对复杂布局,提升代码质量和用户体验。
59 2
|
3月前
|
缓存 监控 前端开发
前端工程化:Webpack与Gulp的构建工具选择与配置优化
【10月更文挑战第26天】前端工程化是现代Web开发的重要趋势,通过将前端代码视为工程来管理,提高了开发效率和质量。本文详细对比了Webpack和Gulp两大主流构建工具的选择与配置优化,并提供了具体示例代码。Webpack擅长模块化打包和资源管理,而Gulp则在任务编写和自动化构建方面更具灵活性。两者各有优势,需根据项目需求进行选择和优化。
111 7
|
3月前
|
缓存 前端开发 JavaScript
前端工程化:Webpack与Gulp的构建工具选择与配置优化
【10月更文挑战第27天】在现代前端开发中,构建工具的选择对项目的效率和可维护性至关重要。本文比较了Webpack和Gulp两个流行的构建工具,介绍了它们的特点和适用场景,并提供了配置优化的最佳实践。Webpack适合大型模块化项目,Gulp则适用于快速自动化构建流程。通过合理的配置优化,可以显著提升构建效率和性能。
94 2
|
4月前
|
自然语言处理 前端开发 JavaScript
推荐 10 个前端开发会用到的工具网站
本文介绍了多个前端开发工具,包括 Web Design Museum、Landing Page、Google Fonts、Lorem Ipsum、Animista、Blobmaker、Spline、CodeToGo、UnusedCSS 和 Responsively,帮助开发者提高效率和项目质量。这些工具涵盖了设计、动画、代码片段管理、响应式测试等多个方面。
255 0
推荐 10 个前端开发会用到的工具网站

热门文章

最新文章

  • 1
    【11】flutter进行了聊天页面的开发-增加了即时通讯聊天的整体页面和组件-切换-朋友-陌生人-vip开通详细页面-即时通讯sdk准备-直播sdk准备-即时通讯有无UI集成的区别介绍-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
  • 2
    【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
  • 3
    【05】flutter完成注册页面完善样式bug-增加自定义可复用组件widgets-严格规划文件和目录结构-规范入口文件-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
  • 4
    详解智能编码在前端研发的创新应用
  • 5
    巧用通义灵码,提升前端研发效率
  • 6
    智能编码在前端研发的创新应用
  • 7
    【04】flutter补打包流程的签名过程-APP安卓调试配置-结构化项目目录-完善注册相关页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程
  • 8
    【07】flutter完成主页-完成底部菜单栏并且做自定义组件-完整短视频仿抖音上下滑动页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
  • 9
    抛弃node和vscode,如何用记事本开发出一个完整的vue前端项目
  • 10
    大前端之前端开发接口测试工具postman的使用方法-简单get接口请求测试的使用方法-简单教学一看就会-以实际例子来说明-优雅草卓伊凡
  • 1
    以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
    29
  • 2
    大前端之前端开发接口测试工具postman的使用方法-简单get接口请求测试的使用方法-简单教学一看就会-以实际例子来说明-优雅草卓伊凡
    51
  • 3
    【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
    26
  • 4
    巧用通义灵码,提升前端研发效率
    93
  • 5
    【11】flutter进行了聊天页面的开发-增加了即时通讯聊天的整体页面和组件-切换-朋友-陌生人-vip开通详细页面-即时通讯sdk准备-直播sdk准备-即时通讯有无UI集成的区别介绍-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
    141
  • 6
    详解智能编码在前端研发的创新应用
    96
  • 7
    智能编码在前端研发的创新应用
    83
  • 8
    【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
    37
  • 9
    【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
    121
  • 10
    【07】flutter完成主页-完成底部菜单栏并且做自定义组件-完整短视频仿抖音上下滑动页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
    75