HTML 代码复用实践

前言

一般咱们所作的一些页面,咱们能够从设计图里面看出有一些地方是相同的。例如:头部,底部,侧边栏等等。若是是制做静态页面的同窗,对于这些重复的部分只可以经过复制粘贴到新的页面来,若是页面的数量上去了而中途公共的部分出现要修的地方。不过有上10个页面都用到了这个公共的html代码。那修改起来不是很麻烦吗?html

sf来讲,他们的头部和底部在每一页都是同样的(有些页面不一样):

↑头部↑
↓底部↓
前端

对于后端的同窗而言,他们能够经过模版来进行拆分。这样作能够提升html代码的复用性和可维护性。但对于只是对设计图而制做成静态页面的同窗而言他们,html没有提供像模版的include这种方法。但又不想使用到后端的模版,那么接下来的我介绍的几个工具也许能够帮助到你。node

gulp-file-include

第一个我要介绍的是一个gulp的插件,他提供了一个include的方法让咱们能够想后端模版同样把公共的部分分离出去。并且提供的include方法有许多配置项,详细能够去看看 gulp-file-includenpm

下面咱们写一个小demo来快速的了解一下,咱们须要先安装gulp以及gulp-file-includegulp

npm install -g gulp
mkdir gulp-file-include && cd gulp-file-include
npm install  gulp --save-dev
npm install gulp-file-include

安装好以后,来简单的组织一下文件的目录:后端

|-node_modules
|-src // 生产环境的 html 存放文件夹
    |-include // 公共部分的 html 存放文件夹
    |-*.html 
|-dist // 编辑后的 html 文件
gulpfile.js

在新建的gulpfile.js,配置好gulp-file-include工具

var gulp = require('gulp');
var fileinclude  = require('gulp-file-include');

gulp.task('fileinclude', function() {
    gulp.src('src/**.html')
        .pipe(fileinclude({
          prefix: '@@',
          basepath: '@file'
        }))
    .pipe(gulp.dest('dist'));
});

接着新建两个html文件,分别是头部和底部:ui

header.htmlspa

<h1>这是 header 的内容</h1>

footer.html插件

<h1>这是 footer 的内容</h1>

最后在新建一个html,把要用到的headerfooterinclude进来。

layout.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    @@include('include/header.html')

    <p> 这是 layout 的内容 </p>

    @@include('include/footer.html')
</body>
</html>

最后回到命令行工具里,执行gulp fileinclude

看到编译完成以后,到dist目录一下有一个layout.html的文件,这就是最后编译出来的。

好了,上面的一个小实例也明白以后。也许可以在之后的工做中大大提供生产力,使得本身写的html代码更加具备维护性和可复用性。

前端模版

上面说道gulp-file-include简单并且易上手,对于不想使用模版的同窗是一个很好的小工具。可是熟悉前端模版的同窗来讲,咱们同样可使用模版来作到html代码的维护性和可复用性。那么我就用一个我本身比较经常使用的ejs这个模版来讲说一下如何分离那些公共部分的html文件。

把上一个例子的整个文件夹复制到一个新的地方,而后把名字修改成ejs。接着把node_modules文件夹给删除,dist文件夹下的html文件都删除。

用到ejs模版的话,须要把src里面的html文件的后缀名都修改为.ejs。把ejs文件编译成html的工具依旧是使用gulp。只须要安装gulp-ejs就能够了。

npm install gulp --save-dev
npm install gulp-ejs --save-dev

接着就是修改gulpflie.js文件了:

var gulp = require('gulp');
var ejs  = require('gulp-ejs');

gulp.task('ejs', function() {
    gulp.src('src/**.ejs')
        .pipe(ejs())
    .pipe(gulp.dest('dist'));
});

而后是修改layout.ejs文件:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <%-include include/header  %>

    <p> 这是 layout 的内容 </p>

    <%-include include/footer  %>
</body>
</html>

最后就是在命令行工具里面运行gulp ejs,在到dist目录下看到编译好的layout.html文件。就大功告成了。

其实模版具备许多强大的方法,而上面的例子主要仍是演示include这个方法,可能会以为有点大才小用。有兴趣的同窗能够再去了解一下模版的一些方法。

总结

有了前面所说的工具和模版以后,做为一些切图制做静态页面的小苦逼也可以大大的提高本身的开发效率,不再用由于要修改公共部分而感到奔溃。这样咱们就可以把剩下的时间都拿去泡妞(逃。

若是你又什么好的工具或者建议,但愿可以和我交流。与sf各位共勉。

相关文章
相关标签/搜索