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 相关文章推荐
javascript实现在指定元素中垂直水平居中
Sep 13 Javascript
js实现类bootstrap模态框动画
Feb 07 Javascript
原生JS实现跑马灯效果
Feb 20 Javascript
js 获取今天以及过去日期
Apr 11 Javascript
实例讲解Vue.js中router传参
Apr 22 Javascript
微信小程序日期选择器实例代码
Jul 18 Javascript
详解React中传入组件的props改变时更新组件的几种实现方法
Sep 13 Javascript
用node撸一个监测复联4开售短信提醒的实现代码
Apr 10 Javascript
Angular CLI 使用教程指南参考小结
Apr 10 Javascript
微信小程序image图片加载完成监听
Aug 31 Javascript
解决ant Design中Select设置initialValue时的大坑
Oct 29 Javascript
Javascript 解构赋值详情
Nov 17 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
基于mysql的bbs设计(一)
2006/10/09 PHP
10个实用的PHP代码片段
2011/09/02 PHP
ajax php传递和接收变量实现思路及代码
2012/12/19 PHP
PHP错误Cannot use object of type stdClass as array in错误的解决办法
2014/06/12 PHP
PHP扩展程序实现守护进程
2015/04/16 PHP
功能强大的PHP POST提交数据类
2016/07/15 PHP
Laravel重定向,a链接跳转,控制器跳转示例
2019/10/22 PHP
Laravel监听数据库访问,打印SQL的例子
2019/10/24 PHP
js输出列表实现代码
2010/09/12 Javascript
js实现的切换面板实例代码
2013/06/17 Javascript
项目中常用的JS方法整理
2015/01/30 Javascript
Fullpage.js固定导航栏-实现定位导航栏
2016/03/17 Javascript
Node.js利用debug模块打印出调试日志的方法
2017/04/25 Javascript
js 数组详细操作方法及解析合集
2018/06/01 Javascript
详解easyui基于 layui.laydate日期扩展组件
2018/07/18 Javascript
vue2.0移动端滑动事件vue-touch的实例代码
2018/11/27 Javascript
Python基于正则表达式实现文件内容替换的方法
2017/08/30 Python
Django实现登录随机验证码的示例代码
2018/06/20 Python
python中栈的原理及实现方法示例
2019/11/27 Python
Python创建临时文件和文件夹
2020/08/05 Python
python闭包与引用以及需要注意的陷阱
2020/09/18 Python
用python对excel进行操作(读,写,修改)
2020/12/25 Python
8款使用 CSS3 实现超炫的 Loading(加载)的动画效果
2015/03/17 HTML / CSS
html5新增的属性和废除的属性简要概述
2013/02/20 HTML / CSS
HTML5之消息通知的使用(Web Notification)
2018/10/30 HTML / CSS
惠普墨西哥官方商店:HP墨西哥
2016/12/01 全球购物
Pat McGrath Labs官网:世界上最有影响力的化妆师推出的彩妆品牌
2018/01/07 全球购物
SmartBuyGlasses意大利:购买太阳镜、眼镜和隐形眼镜
2018/11/20 全球购物
购房协议书
2014/04/11 职场文书
2014乡镇党政班子四风问题思想汇报
2014/09/14 职场文书
中小学生学籍证明
2014/10/25 职场文书
订货会邀请函
2015/01/31 职场文书
教师节随笔
2015/08/15 职场文书
Python内置数据结构列表与元组示例详解
2021/08/04 Python
MySQL创建定时任务
2022/01/22 MySQL
python处理json数据文件
2022/04/11 Python