Подтвердить что ты не робот

Скомпилируйте частичные HTML файлы с помощью gulp.js

Есть ли плагин для Gulp, который делает то же самое, что и Assemble для Grunt?

Я хотел бы запустить задачу для Gulp, которая собирает частичные части HTML, но я не могу найти плагин. Кто-нибудь использовал один и может предоставить ссылку на него?


ОБНОВЛЕНИЕ: 4/21/2016

В последнее время я использую Twig.js с Gulp вместе с gulp -data для рендеринга JSON в моих шаблонах. Моя статья подробно обсуждается. Подсказка: вы также можете использовать Nunjucks, Swig.js, Handlebars и т.д.

Статья: Внешний шаблон с Gulp и Twig.js

4b9b3361

Ответ 1

Да, вы можете сделать это с помощью этого плагина под названием gulp-file-include

Пример:

# index.html

<!DOCTYPE html>
<html>
  <body>
  @@include('./view.html')
  @@include('./var.html', {
    "name": "haoxin",
    "age": 12345
  })
  </body>
</html>

# view.html

<h1>view</h1>

# var.html

<label>@@name</label>
<label>@@age</label>

Ответ 2

Я создал плагин для расширения html файлов https://www.npmjs.org/package/gulp-html-extend

master.html

<body>
    <!-- @@placeholder=content -->
    <!-- @@placeholder=footer -->
</body>

content.html

<!-- @@master=master.html-->

<!-- @@block=content-->
<main>
    my content
</main>
<!-- @@close-->

<!-- @@block=footer-->
<footer>
    my footer
</footer>
<!-- @@close-->

Выход

<body>

<!-- start content -->
<main>
    my content
</main>
<!-- end content -->

<!-- start footer -->
<footer>
    my footer
</footer>
<!-- end footer -->

</body>

Это может помочь вам.

Ответ 3

Я хотел бы добавить еще одно:

Я использую gulp-preprocess. Это отлично подходит для создания не только html, но и JavaScript, и может даже использоваться в PHP. Он имеет простые директивы:

    <!-- @include filename.extension -->

    <!-- @ifdef foo -->
        Included html if foo is defined
    <!-- @endif -->

    Also @ifndef (not defined)

    Variables

    <!-- @echo bar -->

   Or even cooler:

    <a href="<-- @echo linkvar -->">link</a>

  Also (as far as I can tell) unlimited sub inclusion:

   <!--  I am an included file -->
   <!-- @include relative/to/me/data.html -->

У меня есть дерево каталогов:

     ./project root
         - build/
           - less/
             [less,..]
           - html/
               - index/
                 Index-variables.json
                 [Index-partials.html,...]
           Index.html
           [other-build-folders,..]

         - dist
           [htmlfiles,...,CSS folder,...]

Для каждого отображаемого html файла у меня есть соответствующий файл в папке сборки и соответствующая папка для этого имени файла. Файл сборки прослушивает изменения в соответствующей папке и препроцессы, которые затем выводятся в соответствующий файл в папке dist.

Поскольку препроцесс позволяет передавать переменные как объект контекста, я передаю переменные, хранящиеся в файле JSON, в родительской сборке, например .e.g. index-variables.json, переписывая любые глобальные переменные, которые я определил.

Я использую его с Livereload, поэтому результат заключается в том, что каждый раз, когда я делаю изменения в любом части HTML, страница перезагружается почти мгновенно с помощью рендеринга html - мы говорим меньше 1 секунды. В дополнение к быстрому освещению препроцесс кажется действительно стабильным - у меня никогда не было ошибки.

Это потрясающий способ работы.

Ответ 4

Теперь сборка поддерживает Gulp: https://github.com/assemble/assemble, хотя на момент публикации официального сайта Assemble это не упоминается, и там очень мало в документации.

Ответ 5

Вы можете сделать это с помощью плагина gulp под названием gulp-handlebars-file-include

Это очень хороший плагин, потому что его доза не создает или не создает собственный парсер вроде gulp -file-include, а также не определяет новый синтаксис. Вместо этого он использует handlebars, поэтому он не только анализирует дескрипторы, но также вы можете скомпилировать свои частичные файлы с дескрипторами и даже включать свои собственные помощники handlebars.