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 相关文章推荐
JS中处理与当前时间间隔的函数代码
May 23 Javascript
jQuery控制iFrame(实例代码)
Nov 19 Javascript
按Enter键触发事件的jquery方法实现代码
Feb 17 Javascript
基于insertBefore制作简单的循环插空效果
Sep 21 Javascript
跟我学习javascript的基本类型和引用类型
Nov 16 Javascript
基于javascript实现全国省市二级联动下拉选择菜单
Jan 28 Javascript
BootStrap中关于Select下拉框选择触发事件及扩展
Nov 22 Javascript
Android中Okhttp3实现上传多张图片同时传递参数
Feb 18 Javascript
JS使用遮罩实现点击某区域以外时弹窗的弹出与关闭功能示例
Jul 31 Javascript
浅谈vue方法内的方法使用this的问题
Sep 15 Javascript
angularjs使用div模拟textarea文本框的方法
Oct 02 Javascript
JavaScript实现轮播图特效
Apr 10 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 autoload机制的详解
2013/06/09 PHP
PHP数据库万能引擎类adodb配置使用以及实例集锦
2014/06/12 PHP
js 判断 enter 事件
2009/02/12 Javascript
innerText和innerHTML 一些问题分析
2009/05/18 Javascript
EasySlider 基于jQuery功能强大简单易用的滑动门插件
2010/06/11 Javascript
JS中动态添加事件(绑定事件)的代码
2011/01/09 Javascript
JS实现商品倒计时实现代码
2013/05/03 Javascript
JavaScript移除数组元素减少长度的方法
2013/09/05 Javascript
Javascript浮点数乘积运算出现多位小数的解决方法
2014/02/17 Javascript
javascript实现的一个随机点名功能
2014/08/26 Javascript
原生javascript获取元素样式
2014/12/31 Javascript
JavaScript电子时钟倒计时
2016/01/09 Javascript
喜大普奔!jQuery发布 3.0 最终版
2016/06/12 Javascript
js实现图片360度旋转
2017/01/22 Javascript
详解javascript立即执行函数表达式IIFE
2017/02/13 Javascript
Vant的安装和配合引入Vue.js项目里的方法步骤
2018/12/05 Javascript
Vue CLI3中使用compass normalize的方法
2019/05/30 Javascript
layui实现根据table数据判断按钮显示情况的方法
2019/09/26 Javascript
vue实现移动端省市区选择
2019/09/27 Javascript
react组件基本用法示例小结
2020/04/27 Javascript
基于javascript实现移动端轮播图效果
2020/12/21 Javascript
JavaScript实现消消乐的源代码
2021/01/12 Javascript
[55:45]DOTA2上海特级锦标赛D组败者赛 Liquid VS COL第一局
2016/02/28 DOTA
[01:09:01]完美世界DOTA2联赛循环赛 Magma vs PXG BO2第一场 10.28
2020/10/28 DOTA
跟老齐学Python之??碌某?? target=
2014/09/12 Python
Django内容增加富文本功能的实例
2017/10/17 Python
Python利用multiprocessing实现最简单的分布式作业调度系统实例
2017/11/14 Python
在OpenCV里使用特征匹配和单映射变换的代码详解
2019/10/23 Python
在python中实现求输出1-3+5-7+9-......101的和
2020/04/02 Python
Python定义一个Actor任务
2020/07/29 Python
拾金不昧的表扬信
2014/01/16 职场文书
信息专业毕业生五年职业规划参考
2014/02/06 职场文书
给老师的检讨书
2014/02/11 职场文书
未婚证明范本
2015/06/15 职场文书
幼儿园奖惩制度范本
2015/08/05 职场文书
Python使用OpenCV实现虚拟缩放效果
2022/02/28 Python