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 相关文章推荐
单击复制文字兼容各浏览器的完美解决方案
Jul 04 Javascript
在Firefox下js select标签点击无法弹出
Mar 06 Javascript
JavaScript跨域方法汇总
Oct 16 Javascript
js格式化时间的方法
Dec 18 Javascript
通用无限极下拉菜单的实现代码
May 31 Javascript
JavaScript对象数组排序实例方法浅析
Jun 15 Javascript
关于微信中a链接无法跳转问题
Aug 02 Javascript
Angular.js中用ng-repeat-start实现自定义显示
Oct 18 Javascript
移动端点击态处理的三种实现方式
Jan 12 Javascript
微信小程序开发之toast等弹框提示使用教程
Jun 08 Javascript
javascript  删除select中的所有option的实例
Sep 17 Javascript
详解vue中localStorage的使用方法
Nov 22 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
php preg_filter执行一个正则表达式搜索和替换
2012/02/27 PHP
ThinkPHP 连接Oracle数据库的详细教程[全]
2012/07/16 PHP
深入Apache与Nginx的优缺点比较详解
2013/06/17 PHP
PHP随机字符串生成代码(包括大小写字母)
2013/06/24 PHP
php中3种方法删除字符串中间的空格
2014/03/10 PHP
PHP符合PSR编程规范的实例分享
2016/12/21 PHP
Jquery乱码的一次解决过程 图解教程
2010/02/20 Javascript
iframe 上下滚动条如何默认在下方实现原理
2012/12/10 Javascript
js里怎么取select标签里的值并修改
2012/12/10 Javascript
JavaScript代码复用模式详解
2014/11/07 Javascript
JavaScript中使用typeof运算符需要注意的几个坑
2014/11/08 Javascript
JavaScript数组迭代器实例分析
2015/06/09 Javascript
jQuery焦点图切换特效代码分享
2015/09/15 Javascript
jQuery formValidator表单验证
2016/01/07 Javascript
利用JQuery写一个简单的异步分页插件
2016/03/07 Javascript
JavaScript String 对象常用方法总结
2016/04/28 Javascript
动态设置form表单的action属性的值的简单方法
2016/05/25 Javascript
浅谈js中几种实用的跨域方法原理详解
2016/12/02 Javascript
Canvas 制作动态进度加载水球详解及实例代码
2016/12/09 Javascript
原生JS实现导航下拉菜单效果
2020/11/25 Javascript
Thinkjs3新手入门之如何使用静态资源目录
2017/12/06 Javascript
微信小程序 checkbox使用实例解析
2019/09/09 Javascript
Vue使用Ref跨层级获取组件的步骤
2021/01/25 Vue.js
Python中的startswith和endswith函数使用实例
2014/08/25 Python
python树的同构学习笔记
2019/09/14 Python
Django调用支付宝接口代码实例详解
2020/04/04 Python
利用python实现汉诺塔游戏
2021/03/01 Python
We Fashion荷兰:一家国际时装公司
2018/04/18 全球购物
丹麦优惠购物网站:PLUSSHOP
2019/03/24 全球购物
VisionPros美国站:加拿大在线隐形眼镜和眼镜零售商
2020/02/11 全球购物
哈曼俄罗斯官方网上商店:Harman.club
2020/07/24 全球购物
竞选文艺委员演讲稿
2014/04/28 职场文书
产品陈列协议书(标准版)
2014/09/17 职场文书
走群众路线学习笔记
2014/11/06 职场文书
2014年高中班主任工作总结
2014/11/08 职场文书
Java 深入探究讲解简单工厂模式
2022/04/07 Java/Android