我如何模块化静态HTML文件?

Saj*_*jad 7 html javascript ruby-on-rails erb gulp

我是一名前端开发人员.当我编写html代码时,我通过复制和粘贴(标题部分,页脚部分等)重复我自己.

我怎么写模块化我的html文件?像独立的header.htmlfooter.html,都在通话后index.html...一样erbRuby on rails?(我不喜欢jade郎)

css*_*hus 7

在PHP中我们会这样做:

的index.php

<?php
    include 'inc/head.inc.php'; //DOCTYPE and <head> stuff
    include 'inc/header.inc.php'; //NAV or other top-of-page boilerplate
?>

<div id="uniqueDIV">
    //Your unique page-specific divs can go here
</div>

<?php include 'inc/footer.inc.php'; ?>
Run Code Online (Sandbox Code Playgroud)

因此,在您的head.inc.php文件中,您只有通常的DOCTYPE和<head>页面文件的一部分.

在Ruby中,看起来等效指令是这样的:

load "inc/head_inc.rb"  -- OR --
require_relative "inc/head_inc.rb"
Run Code Online (Sandbox Code Playgroud)

https://practicingruby.com/articles/ways-to-load-code


另一种选择是使用一些js/jQuery来填充文档的各个部分.如果您没有PHP,这是第二个最佳选择.它不如PHP优化,因为js/jQ代码将在页面完全呈现后运行,这可能会在代码出现之前导致一个微小(但明显)的延迟.

例如:

HTML

<div id="navbarDIV"></div>
Run Code Online (Sandbox Code Playgroud)

JS/jQuery的:

<script type="text/javascript">
    $(function(){
        $('#navbarDIV').load( 'inc/navbar.inc.html' );
    });
</script>
Run Code Online (Sandbox Code Playgroud)

请注意,您需要加载jQuery才能使用上面的代码.简单如下<head>:

<script src="//code.jquery.com/jquery-1.11.3.min.js"></script>
Run Code Online (Sandbox Code Playgroud)

jsFiddle demo


最后的注意事项:脚本标记可以<head>作为外部文件包含在您的文件中,也可以将其与html的其余部分一起放在文档的任何位置.无论什么有效.但是<head>作为外部文件,或者正文中的最后一个元素(也作为外部文件)是首选.

最后的最后一点:".inc." 命名约定不是必需的,这只是我自己的做法.包含文件可以被命名为head.htmlhead.php或等.


小智 3

您可以考虑使用Swig之类的东西,它不需要服务器(您可以在本地编译模板)。

\n\n

Swig 的语法很像 Mustache 或 Handlebars,它使用大括号并在普通 HTML 中工作,因此您可以保留所需的 HTML 语法(与 Jade 不同)。

\n\n

要将 HTML 分离为可重用的文件,您可以查看模板继承。您还可以看到文件包含文件导入

\n\n

这是一个小例子:

\n\n
{% include "./header.html" %}\n\n<div id="body">Hello world</div>\n\n{% include "./footer.html" %}\n
Run Code Online (Sandbox Code Playgroud)\n\n
\n\n
\n

我使用 gulp,我想要将文件编译为标准 html 文件的工具。像玉一样。\xe2\x80\x93 萨贾德·阿贝迪

\n
\n\n

为此,您可以使用gulp-swig并在任务中本地构建模板。

\n