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 相关文章推荐
jquery 仿QQ校友的DIV模拟窗口效果源码
Mar 24 Javascript
通过Javascript创建一个选择文件的对话框代码
Jun 16 Javascript
jQuery之ajax技术的详细介绍
Jun 19 Javascript
jQuery老黄历完整实现方法
Jan 16 Javascript
javascript实现鼠标拖动改变层大小的方法
Apr 30 Javascript
微信小程序 下拉列表的实现实例代码
Mar 08 Javascript
jquery 通过ajax请求获取后台数据显示在表格上的方法
Aug 08 jQuery
基于jquery实现九宫格拼图小游戏
Nov 30 jQuery
vuex中遇到的坑,vuex数据改变,组件中页面不渲染操作
Nov 16 Javascript
小程序自定义弹框效果
Nov 16 Javascript
简单聊聊Vue中的计算属性和属性侦听
Oct 05 Vue.js
JS实现九宫格拼图游戏
Jun 28 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
海河写的 Discuz论坛帖子调用js的php代码
2007/08/23 PHP
PHP获取当前完整URL地址的函数
2014/12/21 PHP
ECSHOP在PHP5.5及高版本上报错的解决方法
2015/08/31 PHP
php 类中的常量、静态属性、非静态属性的区别
2017/04/09 PHP
PHP空值检测函数与方法汇总
2017/11/19 PHP
精通Javascript系列之数值计算
2011/06/07 Javascript
清除div下面的所有标签的方法
2014/02/17 Javascript
jQuery调用ajax请求的常见方法汇总
2015/03/24 Javascript
Jquery 效果使用详解
2015/11/23 Javascript
基于javascript实现listbox左右移动
2016/01/29 Javascript
JS基于递归算法实现1,2,3,4,5,6,7,8,9倒序放入数组中的方法
2017/01/03 Javascript
Ajax跨域实现代码(后台jsp)
2017/01/21 Javascript
jQuery插件FusionCharts实现的2D柱状图效果示例【附demo源码下载】
2017/03/06 Javascript
underscore之function_动力节点Java学院整理
2017/07/11 Javascript
JavaScript判断对象和数组的两种方法
2019/05/31 Javascript
Vue中全局变量的定义和使用
2019/06/05 Javascript
详解为element-ui的Select和Cascader添加弹层底部操作按钮
2020/02/07 Javascript
vue cli4下环境变量和模式示例详解
2020/04/09 Javascript
JS获取当前时间戳方法解析
2020/08/29 Javascript
python用模块zlib压缩与解压字符串和文件的方法
2016/12/16 Python
Django中间件工作流程及写法实例代码
2018/02/06 Python
pandas 数据索引与选取的实现方法
2019/06/21 Python
python对文件目录的操作方法实例总结
2019/06/24 Python
tensorflow使用指定gpu的方法
2020/02/04 Python
Python使用内置函数setattr设置对象的属性值
2020/10/16 Python
Django使用django-simple-captcha做验证码的实现示例
2021/01/07 Python
内科护士实习自我鉴定
2013/10/17 职场文书
好的自荐信的要求
2013/10/30 职场文书
美工的岗位职责
2013/11/14 职场文书
大学生职业生涯规划书模板
2014/01/03 职场文书
2015年中学元旦晚会活动方案
2014/12/09 职场文书
公务员政审材料范文
2014/12/23 职场文书
幼儿园教师心得体会范文
2016/01/21 职场文书
2016北大自主招生自荐信模板
2016/01/28 职场文书
低端且暴利的线上线下创业项目分享
2019/09/03 职场文书
如何利用Python实现一个论文降重工具
2021/07/09 Python