资讯专栏INFORMATION COLUMN

HTML 代码复用实践

Profeel / 986人阅读

摘要:安装好之后,来简单的组织一下文件的目录生产环境的存放文件夹公共部分的存放文件夹编辑后的文件在新建的,配置好接着新建两个文件,分别是头部和底部这是的内容这是的内容最后在新建一个,把要用到的和给进来。

前言

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

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

↑头部↑
↓底部↓

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

gulp-file-include

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

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

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文件,分别是头部和底部:

header.html

这是 header 的内容

footer.html

这是 footer 的内容

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

layout.html




    
    Document


    @@include("include/header.html")

    

这是 layout 的内容

@@include("include/footer.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文件:




    
    Document


    <%-include include/header  %>

    

这是 layout 的内容

<%-include include/footer %>

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

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

总结

有了前面所说的工具和模版之后,作为一些切图制作静态页面的小苦逼也能够大大的提升自己的开发效率,再也不用因为要修改公共部分而感到奔溃。这样我们就能够把剩下的时间都拿去泡妞(逃。

  

如果你又什么好的工具或者建议,希望能够和我交流。与sf各位共勉。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/49598.html

相关文章

  • Web语义化标准解读

    摘要:为什么说最佳实践是呢简单来说,就是这类预处理器在提供一定的抽象能力的同时,也不会破坏自身的特性。就语义化这件事情而言,如果你的是基于标准来编写的,意味着你的页面具备更多的可能性。 原文:https://github.com/kuitos/kuitos.github.io/issues/33 15年年末写了篇关于BEM方法论(实践上内容并不是原BEM)的文章,文末给自己挖了个坑说要聊聊w...

    vspiders 评论0 收藏0
  • 自定义元素探秘及构建可复用组件最佳实践

    摘要:若自定义元素标签名称不可用则摒弃。总之,自定义元素让开发者的代码更易理解和维护,并分割为小型,可复用及可封装的模块。被称为自定义元素接口,虽然现在仍然可用,但是已经被弃用并被认为是糟糕的实现。 原文请查阅这里,略有删减,本文采用知识共享署名 4.0 国际许可协议共享,BY Troland。 这是 JavaScript 工作原理第十九章。 概述 在 前述文章中,我们介绍了 Shadow ...

    CoorChice 评论0 收藏0
  • Vue.js 实践(3):实现一个漂亮、灵活、可复用的提示组件

    摘要:接下来,由简入繁依次实现提示组件的各个功能。那么第一个提示的定时器依然会错误的关闭新提示。增强灵活性最后则是让提示组件更灵活。 这次的教程里,我们要把组件化进行到底!最近半年的几个项目中,都遇到了需要使用Toast或者Notification组件的情况。在目前已有的一些基于Vue.js开发的组件库,都没有找到太合适的,所以自己重头实现了一个。历经几个项目的磨练,这个提示组件的功能已经越...

    Olivia 评论0 收藏0
  • 重构后端模板文件的一种实践

    摘要:后端的动态模板后端通常会使用模板文件来动态返回前端页面。后端代码调用文件可以看作是函数调用。这里虽然处理的是后端模板文件和前端的一个结合,但其思想可以利用在别的地方。 后端的动态模板 Java后端通常会使用ftl(freemarker template language)模板文件来动态返回前端页面。这个工作,通常还可以用jsp、php文件来实现。但这些动态模板的实现,通常是在已有的ht...

    JeOam 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<