Автономный процессор шаблонов HTML для Windows

Я учу своего друга создавать сайты. Я хотел бы, чтобы веб-сайты оставались статичными, чтобы ему [пока] не приходилось изучать PHP, беспокоиться о тестировании на своей машине с Windows, беспокоиться о конфигурации сервера, безопасности и т. д. Плохо то, что без поддержки некоторых инструментов он бы приходится повторять много кода, например блок меню на каждой странице почти одинаковый. Есть ли простой инструмент, который бы ему помог?

Я бы хотел что-то, что работало бы в Windows без особых усилий, т. Е. без Perl, Cygwin, IIS, PHP и т. д. (Было бы неплохо использовать простой инструмент с графическим интерфейсом или текстовый редактор с некоторой специальной поддержкой для этого.) Я бы хотел что-то, что не требует хранения отдельных версий файла «исходный код» и «сборка», т. Е. исходные файлы с некоторой специальной разметкой и файлы сборки с обычным HTML. (Ненавижу переделывать все заново после каждого изменения кода.) Я хочу что-то бесплатное и простое.

Что-то подобное существует?


Обновлять: Я мечтал о чем-то, что работало бы вот так:

$ cat page.html
<h1>A page</h1>
<!-- insert menu -->
<!-- menu ends -->
$ cat menu.tmpl
<ul id = "#menu">…</ul>
$ update-templates page.html && cat page.html
<h1>A page</h1>
<!-- insert menu -->
<ul id = "#menu">…</ul>
<!-- menu ends -->
$ echo "Moo" > menu.tmpl
$ update-templates page.html && cat page.html
<h1>A page</h1>
<!-- insert menu -->
Moo
<!-- menu ends -->

… Только в графическом интерфейсе. BTW: Спасибо за решения JavaScript. Мне это не приходило в голову, но сайт должен работать даже с выключенным JS.


Обновлять: Поскольку я не нашел никакого существующего решения, я написал сценарий как Проект Google Code. Есть некоторые причуды, которые нужно обработать (например, разные окончания строк в разных системах), но подстановка шаблонов работает. Сценарий требует Perl, но в противном случае все, что вам нужно сделать, это дважды щелкнуть значок, чтобы обновить источники HTML.

Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
0
0
501
7
Перейти к ответу Данный вопрос помечен как решенный

Ответы 7

Что-то не так со старым добрым копированием и вставкой для переноса общих элементов с одной страницы на другую? Или, еще лучше, создайте простой текстовый файл, в котором уже есть все общие элементы, а затем, когда он захочет создать новую страницу, просто скопируйте этот файл и переименуйте копию.

Если бы я мог автоматизировать это без особого волшебства, я бы предпочел оставить скучную работу машине.

zoul 15.01.2009 00:30

копировать и переименовывать - это слишком много работы?

EBGreen 15.01.2009 00:34

Представьте, что вы хотите внести простое изменение в меню и вручную изменить 10 файлов. Это очень быстро стареет. Это не имеет большого значения, но если бы был простой способ обойти это, я бы использовал его.

zoul 15.01.2009 00:45

Ааа ... Я вижу, в чем проблема. В этом случае я думаю, что вы, вероятно, SOL без включений.

EBGreen 15.01.2009 00:46
Ответ принят как подходящий

Самым простым, вероятно, будет (хотя для этого потребуется небольшая настройка) веб-сервер с включениями на стороне сервера. Это самая простая форма шаблонов, которую я могу придумать, и если вы не хотите «собирать» html-файлы из какого-либо источника, тогда вам нужно что-то, что активно обслуживает запросы.

Не знаю, стандартизирован ли он, но Apache SSI выглядит так:

<!--#include file = "menu.html" -->

Надеюсь, это поможет.

Обновлено:
Я был убежден, что без отдельных исходных и целевых / сборочных файлов невозможно добиться без активного сервера. Однако, когда вы комментировали маркеры комментариев, у меня возникла мысль, что нетрудно создать простой perl-скрипт, включающий файл, заменяющий все между маркером начала комментария и маркером конца комментария. Вы также сказали, что не хотите связываться с perl, включает ли он подготовленный perl-скрипт, который ему просто нужно выполнить?

РЕДАКТИРОВАТЬ 2
Простого сценария Perl с несколькими строками, использующего модификатор / e-regexp, может быть достаточно, поскольку вы используете Windows, я не знаю, можете ли вы использовать обратные кавычки, такие как cat $file, поэтому я добавил подпрограмму readfile.

sub readfile($) {
  open(FILE, 'r', shift);
  my $buffer;
  read (FILE, $buffer, 2 ** 20); # one megabyte maximum.
  close(FILE);
  return $buffer;
}
sub writefile($$) {
  open(FILE, 'w', shift);
  print FILE shift;
  close(FILE);
}

for my $file(@ARGV) {
  my $content = readfile($file);
  $content =~ s/\<!--\s+include\s+(\S+\)\s+--\>.*?\<!--\s+end\s+\1\s+--\>/"<!-- include $1 -->".readfile($1)."<!-- end $1 -->"/ge;
  writefile($file, $content);
}

Однако будьте осторожны, что сбой или немного жадная замена (возможно, из-за опечатки) убьет весь файл, и это без сохранения исходного файла. Я также не уверен, правильно ли LHS будет соответствовать обратной ссылке, мне нужно это изучить.

Плакат говорит, что на машине нет сервера.

Diodeus - James MacFarlane 15.01.2009 00:31

Я надеялся, что смогу найти инструмент, который использует один файл как в качестве источника, так и в качестве цели сборки, возможно, с некоторыми простыми маркерами комментариев. SSI не позволит ему проверять веб-сайт на своем компьютере (без установки веб-сервера).

zoul 15.01.2009 00:33

Да, наверное, так я и решу, если другого решения нет.

zoul 15.01.2009 10:57

Это своего рода обходной путь.

Вы можете использовать включает JavaScript и включать локальный файл. Однако вам придется вставить HTML через JavaScript в нужные места в документе. Изучение того, как это сделать, само по себе может быть плохой идеей. Однако экранирование кавычек во включаемом файле может быть проблемой.

Файл:

<p id='moo'></p>
<script type = "text/javascript" src = "moo.js"></script>

moo.js:

$('moo').innerHTML = "hello world"

(Я использую ярлыки Опытный образец)

Автостоп по поводу предложения apache: я думаю, что в Windows есть «личный» сервер IIS, который вы можете установить. Вставьте достаточно JavaScript, чтобы получить повторяющийся блок на каждой странице и обновить внутренний HTML-код на вставленном теге-заполнителе.

Наверное, захочется дать ему хороший CSS-файл и включить строку для вставки.

установить tomcat :-)

Если это приемлемо, не используйте Java-код, просто дайте своему другу волшебный рецепт, чтобы поместить вызов include в "волшебные" html-файлы с забавными суффиксами jsp ???

Хорошо, это примерно то же самое, что настроить PHP, не так ли.

Если вы хотите, чтобы что-то было сгенерировано, вам, вероятно, понадобится какое-то программное обеспечение для этого. Не знаю, какой у вас «болевой порог».

Я уже настраивал подобное в прошлом. Я пишу только свой контент в виде серии файлов HTML, не беспокоясь о <html>, <head>, <body>, меню и т. д. - только о контенте. Сценарий PHP считывает все файлы в этом каталоге и выполняет несколько действительно простых шаблонов (подстановка строк) для создания выходных файлов. Я знаю, что вы сказали, что хотите избежать версий исходного кода и сборки, но этот метод на самом деле очень прост, поскольку сценарий автоматически находит все ваши исходные файлы. Кроме того, вы можете просто запустить сценарий из командной строки (или как пакетный файл), поэтому вам не нужно возиться с настройкой сервера или чего-то еще: просто загрузите php и распакуйте его в каталог. Вот действительно приблизительное представление о том, что я имею в виду:

Файл шаблона: page.tpl

<html>
<head> ... whatever ...</head>
<body>
    <div id = "menu">
        Item 1
        Item 2
        (this could even be generated automatically from the files)
    </div>
    <div id = "content">
        <!-- CONTENT -->
    </div>
</body>
</html>

Страница содержимого src/page1.txt:

<p>This is my page content.</p>

Псевдокод PHP-скрипта:

$template = get_contents(page.tpl)
for each of the .txt files in the src directory {
    $c = get_contents($file)
    write(string_replace("<!-- CONTENT -->", $c, $template)) into page1.html
}

Запускаем скрипт:

$ php script.php

Конечно, это будет работать с любым языком по вашему выбору.

Если вы готовы потратить немного денег, то Adobe Dreamweaver имеет довольно приятную функциональность шаблон, которая работает примерно так, как вы описываете.

Другие вопросы по теме