Gulp实现静态网页模块化的方法详解


Posted in Javascript onJanuary 09, 2018

前言

在做纯静态页面开发的过程中,难免会遇到一些的尴尬问题。比如:整套代码有50个页面,其中有40个页面顶部和底部模块相同。那么同样的两段代码我们复制了40遍(最难受的方法)。然后,这个问题就这样解决了。再然后,产品经理看了几遍后突然说顶部的某块需要改改设计。。。突然感觉好尴尬~~(心里是万马奔腾~),然后呢?然后就期待下一次的万马奔腾!!!

虽然类似问题的解决方案很多,但是纯前端,不用各种框架的情况下,一种比iframe更靠谱的解决方案莫过于用像gulp这样的构建工具来完成。虽然在体验上也许会有一点小小的瑕疵(每次改完文件要预览,都需要先gulp一下),但是也并非是不能忍受。毕竟我们想要的仅仅是改一改某公共模块就能达到解决40个页面的目的。

gulp简介

gulp是一个自动化构建工具。在开发过工程中,能够使用gulp对项目进行自动构建,大大提高工作效率。

安装gulp

在安装gulp之前先要确认已经正确安装了node.js,然后在项目根目录下安装gulp:

$ npm install gulp

举例的开发环境配置:

Windows:在iis里搭建项目,方便在浏览器中预览;使用webstorm编辑器(习惯了,感觉比记事本还是要好用很多,还可以忽略某些文件夹)。

MacOs:   在apache里搭建项目,方便在浏览器中预览;使用webstorm编辑器(习惯了,感觉比sublime用得更liu一点,还可以忽略某些文件夹)。

必备插件:

gulp-file-include

技能描述:

将需要模块化的html代码放到一个独立的html文件中。如:head.html

然后在需要使用的地方使用:@@include('./head.html')

文件路径自定义~~

最后配置好gulp并执行

使用Demo:

html:

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0">
 <title></title>
 <link rel="stylesheet" href="css/comm.css?v=1.13" rel="external nofollow" >
 <link rel="stylesheet" href="css/template.css" rel="external nofollow" >
 <link rel="stylesheet" href="css/news.css" rel="external nofollow" >
</head>
<body>
@@include('../Layout/head.html')
<div class="news"> 
</div>
@@include('../Layout/foot.html')
</body>

gulp:

var gulp = require('gulp'),
 fileinclude = require('gulp-file-include');
gulp.task('prew', function () {
 gulp.src(['*.html','pages/*.html', '!node_modules/**/*.html'])
  .pipe(fileinclude({
   prefix: '@@',
   basepath: '@file'
  }))
  .pipe(gulp.dest('prew'));
 gulp.src(['**/**.js', '!node_modules/**/*']).pipe(gulp.dest('prew/'));
 gulp.src(['**/**.css', '!node_modules/**/*']).pipe(gulp.dest('prew/'));
 gulp.src(['**/*.jpg',
  '**/*.jpge',
  '**/*.png',
  '**/*.gif',
  '**/*.bmp', '!prew/**/*', '!node_modules/**/*']).pipe(gulp.dest('prew/'));
});
gulp.task('watch',function () {
 gulp.watch(['pages/*.html','css/*.css','img/**/*','!prew/**/*.html','!prew/**/*.css','!prew/img/**/*'], ['prew']);
})

技能介绍:

执行 gulp prew 会将文件复制到prew目录下,并生成对应的完整html文件。(注:此处将pages文件夹下的文件直接放到了prew根目录下,并非prew/pages。根据需要自改配置)

执行 gulp watch后gulp会建立一个监听进程,在开发的时候每次修改文件后,gulp会自动执行prew,这样就不用每次都手动执行gulp prew然后再去刷浏览器。(这是一招实用技能)

最后:

这套技能的要点不在于如何使用gulp,而是怎么去划分模块。每个模块除了有html代码以外,其实还可以有js、css代码或者引入js、css文件的代码,这样才能更模块一点。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
window.location.hash 使用说明
Nov 08 Javascript
从零开始学习jQuery (八) 插播:jQuery实施方案
Feb 23 Javascript
javascript动态创建表格及添加数据实例详解
May 13 Javascript
JavaScript实现的背景自动变色代码
Oct 17 Javascript
又一枚精彩的弹幕效果jQuery实现
Jul 25 Javascript
基于iscroll.js实现下拉刷新和上拉加载效果
Nov 28 Javascript
Bootstrap禁用响应式布局的实现方法
Mar 09 Javascript
纯JavaScript实现实时反馈系统时间
Oct 26 Javascript
如何解决.vue文件url引用文件的问题
Jan 18 Javascript
Vue keepAlive 数据缓存工具实现返回上一个页面浏览的位置
May 10 Javascript
解决axios post 后端无法接收数据的问题
Oct 29 Javascript
原生js实现弹幕效果
Nov 29 Javascript
js实现微信/QQ直接跳转到支付宝APP打开口令领红包功能
Jan 09 #Javascript
利用jqprint插件打印页面内容的实现方法
Jan 09 #Javascript
react-router v4如何使用history控制路由跳转详解
Jan 09 #Javascript
基于vue-ssr服务端渲染入门详解
Jan 08 #Javascript
浅谈Vue2.0父子组件间事件派发机制
Jan 08 #Javascript
如何快速解决JS或Jquery ajax异步跨域的问题
Jan 08 #jQuery
jQuery+SpringMVC中的复选框选择与传值实例
Jan 08 #jQuery
You might like
隐藏X-Space个人空间下方版权方法隐藏X-Space个人空间标题隐藏X-Space个人空间管理版权方法
2007/02/22 PHP
php zip文件解压类代码
2009/12/02 PHP
图解找出PHP配置文件php.ini的路径的方法
2014/08/20 PHP
WordPres对前端页面调试时的两个PHP函数使用小技巧
2015/12/22 PHP
jQuery 性能优化指南(2)
2009/05/21 Javascript
jQuery语法高亮插件支持各种程序源代码语法着色加亮
2013/04/27 Javascript
JS 实现BASE64_ENCODE和BASE64_DECODE(实例代码)
2013/11/13 Javascript
JS循环遍历JSON数据的方法
2014/07/08 Javascript
jQuery获取attr()与prop()属性值的方法及区别介绍
2016/07/06 Javascript
基于AngularJS实现iOS8自带的计算器
2016/09/12 Javascript
jQuery动画_动力节点节点Java学院整理
2017/07/04 jQuery
Vue列表页渲染优化详解
2017/07/24 Javascript
随机生成10个不重复的0-100的数字(实例讲解)
2017/08/16 Javascript
详解vue页面首次加载缓慢原因及解决方案
2019/11/06 Javascript
浅谈关于vue中scss公用的解决方案
2019/12/02 Javascript
24个ES6方法解决JS实际开发问题(小结)
2020/05/31 Javascript
Vue Render函数原理及代码实例解析
2020/07/30 Javascript
vue-cli3中配置alias和打包加hash值操作
2020/09/04 Javascript
[01:03:38]2014 DOTA2国际邀请赛中国区预选赛5.21 CNB VS CIS
2014/05/22 DOTA
利用Python对文件夹下图片数据进行批量改名的代码实例
2019/02/21 Python
python爬虫 基于requests模块发起ajax的get请求实现解析
2019/08/20 Python
pytorch 加载(.pth)格式的模型实例
2019/08/20 Python
Python配置文件处理的方法教程
2019/08/29 Python
Python解压 rar、zip、tar文件的方法
2019/11/19 Python
Python实现对adb命令封装
2020/03/06 Python
通过实例简单了解python yield使用方法
2020/08/06 Python
Python通过队列来实现进程间通信的示例
2020/10/14 Python
CSS3之2D与3D变换的实现方法
2019/01/28 HTML / CSS
Bibloo荷兰:女士、男士和儿童的服装、鞋子和配饰
2019/02/25 全球购物
DIY手工制作经营店创业计划书
2014/02/01 职场文书
大学军训感言200字
2014/02/26 职场文书
农村文化建设标语
2014/10/07 职场文书
答谢酒会主持词
2015/07/02 职场文书
探究Mysql模糊查询是否区分大小写
2021/06/11 MySQL
Go 语言中 20 个占位符的整理
2021/10/16 Golang
JavaCV实现照片马赛克效果
2022/01/22 Java/Android