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 相关文章推荐
通过ifame指向的页面高度调整iframe的高度
Oct 05 Javascript
js为鼠标添加右击事件防止默认的右击菜单弹出
Jul 29 Javascript
jquery实现div拖拽宽度示例代码
Jul 31 Javascript
Javascript核心读书有感之类型、值和变量
Feb 11 Javascript
Jquery ajax请求导出Excel表格的实现代码
Jun 08 Javascript
Bootstrap表单布局
Jul 19 Javascript
浅谈Javascript中的函数、this以及原型
Oct 09 Javascript
基于jQuery和Bootstrap框架实现仿知乎前端动态列表效果
Nov 09 Javascript
详解node-ccap模块生成captcha验证码
Jul 01 Javascript
原生JS检测CSS3动画是否结束的方法详解
Jan 27 Javascript
微信小程序npm引入vant-weapp的踩坑记录
Aug 01 Javascript
微信小程序实现聊天室
Aug 21 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支持多种格式图片上传(支持jpg、png、gif)
2011/11/03 PHP
YII实现分页的方法
2014/07/09 PHP
yii2项目实战之restful api授权验证详解
2017/05/20 PHP
ThinkPHP+EasyUI之ComboTree中的会计科目树形菜单实现方法
2017/06/09 PHP
PHP数组内存利用率低和弱类型详细解读
2017/08/10 PHP
xml 与javascript结合的问题解决方法
2007/03/24 Javascript
doctype后如何获得body.clientHeight的方法
2007/07/11 Javascript
图片格式的JavaScript和CSS速查手册
2007/08/20 Javascript
基于JavaScript实现动态创建表格和增加表格行数
2015/12/20 Javascript
AngularJS递归指令实现Tree View效果示例
2016/11/07 Javascript
微信小程序 五星评分(包括半颗星评分)实例代码
2016/12/14 Javascript
vue.js 使用axios实现下载功能的示例
2018/03/05 Javascript
使用Angular CLI从蓝本生成代码详解
2018/03/24 Javascript
详解vue axios用post提交的数据格式
2018/08/07 Javascript
使用Node.js写一个代码生成器的方法步骤
2019/05/10 Javascript
vue实现给div绑定keyup的enter事件
2020/07/31 Javascript
详解在Python的Django框架中创建模板库的方法
2015/07/20 Python
python3音乐播放器简单实现代码
2020/04/20 Python
Python基础中所出现的异常报错总结
2016/11/19 Python
python游戏开发之视频转彩色字符动画
2019/04/26 Python
Django框架实现分页显示内容的方法详解
2019/05/10 Python
python小项目之五子棋游戏
2019/12/26 Python
Python实现猜年龄游戏代码实例
2020/03/25 Python
python中怎么表示空值
2020/06/19 Python
印尼最大的网上书店:Gramedia.com
2018/09/13 全球购物
给排水工程师岗位职责
2013/11/21 职场文书
信息管理应届生求职信
2014/03/07 职场文书
就业意向书范文
2014/04/01 职场文书
小学一年级学生评语大全
2014/12/25 职场文书
罚款通知怎么写
2015/04/22 职场文书
2015年宣传思想工作总结
2015/05/22 职场文书
2016党员党课心得体会
2016/01/07 职场文书
送给客户微信问候语!
2019/07/04 职场文书
2021年pycharm的最新安装教程及基本使用图文详解
2021/04/03 Python
Python字典和列表性能之间的比较
2021/06/07 Python
Nginx的gzip相关介绍
2022/05/11 Servers