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 学习入门篇附实例代码
Mar 16 Javascript
如何解决hover在ie6中的兼容性问题
Dec 15 Javascript
用原生JS实现简单的多选框功能
Jun 12 Javascript
ionic2屏幕适配实现适配手机、平板等设备的示例代码
Aug 11 Javascript
JS设计模式之命令模式概念与用法分析
Feb 06 Javascript
vue+axios+promise实际开发用法详解
Oct 15 Javascript
详解vue中使用vue-quill-editor富文本小结(图片上传)
Apr 24 Javascript
关于vue路由缓存清除在main.js中的设置
Nov 06 Javascript
小程序采集录音并上传到后台
Nov 22 Javascript
Vue中qs插件的使用详解
Feb 07 Javascript
jquery实现加载更多&quot;转圈圈&quot;效果(示例代码)
Nov 09 jQuery
javascript数组includes、reduce的基本使用
Jul 02 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
PHILIPS D1835/D1875的电路分析与打理
2021/03/02 无线电
php实现的RSS生成类实例
2015/04/23 PHP
php+ajax实现无刷新数据分页的办法
2015/11/02 PHP
javascript学习笔记(十八) 获得页面中的元素代码
2012/06/20 Javascript
javascript小组件 原生table排序表格脚本(兼容ie firefox opera chrome)
2012/07/25 Javascript
js判断undefined类型,undefined,null, 的区别详细解析
2013/12/16 Javascript
引用外部脚本时script标签关闭的写法
2014/01/20 Javascript
点击弹出层效果&amp;弹出窗口后网页背景变暗效果的实现代码
2014/02/10 Javascript
javascript中的return和闭包函数浅析
2014/06/06 Javascript
javascript实现多栏闭合展开式广告位菜单效果实例
2015/08/05 Javascript
利用node.js搭建简单web服务器的方法教程
2017/02/20 Javascript
js学习总结_基于数据类型检测的四种方式(必看)
2017/07/04 Javascript
基于axios封装fetch方法及调用实例
2018/02/05 Javascript
vue路由 遍历生成复数router-link的例子
2019/10/30 Javascript
js实现旋转的星空效果
2019/11/01 Javascript
超简单的微信小程序轮播图
2019/11/22 Javascript
JavaScript实现省份城市的三级联动
2020/02/11 Javascript
详解实现vue的数据响应式原理
2021/01/20 Vue.js
python通过BF算法实现关键词匹配的方法
2015/03/13 Python
Python字符串中查找子串小技巧
2015/04/10 Python
通过Python来使用七牛云存储的方法详解
2015/08/07 Python
pygame游戏之旅 创建游戏窗口界面
2018/11/20 Python
Python编程中类与类的关系详解
2019/08/08 Python
np.newaxis 实现为 numpy.ndarray(多维数组)增加一个轴
2019/11/30 Python
基于numpy中的expand_dims函数用法
2019/12/18 Python
Python3 shelve对象持久存储原理详解
2020/03/23 Python
python3.6中anaconda安装sklearn踩坑实录
2020/07/28 Python
一个大学生十年的职业规划
2014/01/17 职场文书
2014中学教师节广播稿
2014/09/10 职场文书
渠道运营商合作协议书范本
2014/10/06 职场文书
材料员岗位职责
2015/02/10 职场文书
建筑技术负责人岗位职责
2015/04/13 职场文书
2015年酒店服务员工作总结
2015/05/18 职场文书
《扇形统计图》教学反思
2016/02/17 职场文书
浅谈哪个Python库才最适合做数据可视化
2021/06/28 Python
Go调用Rust方法及外部函数接口前置
2022/06/14 Golang