LINUX.ORG.RU

Есть ли аналог include для статики?

 


0

2

Мне собрали кое что на пых пыхе. Собственно о него там только эти самые инклуды. И все. Вообще все. Больше ни одной функции. Полная статика.

Можно ли как-то выкинуть пых пых? Чтоб работало на самом мизерном веб-сервере, и вообще тупо браузером без оного.

Есть тупой способ «когда все будет утверждено - накопипастить руками», но хреново так делать.


Звучит как самый невинный юзейз для шаблонов.

Не ожидал от Web-development в 2018 такого глотка свежего воздуха, как статический сайт.

t184256 ★★★★★ ()
Ответ на: комментарий от t184256

Это не сайт.
Мне в виртуальном туре нужно выводил кучу типовых модальных окон с типовой инфой. Каждый файл состоит из двух частей: подключаемой инклудом разметки\менюшки и и самого контента (уникального текста).

рнр и прочие подобные тут нахрен не нужны. а работа «офлайн тупо в браузере» востребована.

dk- ()
Ответ на: комментарий от i-rinat

А что-нибудь на жабе? Или еще как. Чтоб вообще без веб-сервера. Совсем без веб-сервера.

dk- ()
Ответ на: комментарий от dk-

А что-нибудь на жабе? Или еще как. Чтоб вообще без веб-сервера. Совсем без веб-сервера.

Тебе всё равно придётся на Java реализовать веб-сервер, чтобы браузер от него мог получить данные.

Если ты имел в виду Javascript (наверняка это и имел в виду ☺), то попробуй на jquery. Как-то так: https://stackoverflow.com/questions/18908531/true-client-side-html-includes/2...

i-rinat ★★★★★ ()

Попробуйте использовать spl_autoload + оформление модуля в виде единичного класса, смапированного пространством имен на файловую систему или просто напишите свой include на пыхе, потом попробовать на pecl - ведь это по сути fread/readfile.

Наконец положите все в phar - открывайте одним include - будет шустро.

anonymous ()
Ответ на: комментарий от dk-

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

А теперь следи за руками: берешь вгет и тащишь им весь сайт ака реально статика. Её на прод и клади. Профит.

deep-purple ★★★★★ ()
Ответ на: комментарий от deep-purple

Ну это да. Походу надо реально выкачать в хтмлки.

dk- ()

Мне собрали кое что на пых пыхе. Собственно о него там только эти самые инклуды. И все. Вообще все. Больше ни одной функции. Полная статика.

Так может просто собрать эти инклуды в статический HTML и уже его закинуть на прод?

theNamelessOne ★★★★★ ()
Ответ на: комментарий от Deleted

Хотелось бы исключить этот костыль. Ведь так после каждой правки (если будет) нужно поновой все собирать через выкачивание пыха в хтмл.

dk- ()
Ответ на: комментарий от dk-

Ты хочешь убрать PHP? Убери. Меняй сам html, если так надо.

Deleted ()
Ответ на: комментарий от theNamelessOne

Там еще у заказчика есть хотелка, чтоб он мог сам офлайн\локальную версию править легко. т.е. хтмлки добавлять\дополнять. Так что некий «хтмл инклуд» был бы идеальным вариантом.

dk- ()
Ответ на: комментарий от dk-

Так что некий «хтмл инклуд» был бы идеальным вариантом.

Так никто тебя не отговаривает от «некого хтмл инклуда», смысл в том, чтобы собирать статический хтмл перед выкладыванием на прод.

theNamelessOne ★★★★★ ()

Можно ли как-то выкинуть пых пых? Чтоб работало на самом мизерном веб-сервере, и вообще тупо браузером без оного.

Так можно просто на стороне браузера ajax'ом дёргать с сервера нужные файлы и показыать где надо. Сами запрашиваемые файлы могут быть в любом удобном формате, хоть в json, хоть просто куски html кода.

Т.е. допустим у тебя есть такой кусок hello.html:

<div>hello!</div>
И такая основная страница index.html, открываемая пользователем:
<!DOCTYPE html>
<html>
<head>
<title>Example</title>
</head>
<body>

<div id="placeholder"></div>

<button>click me</button>

<script>
$('button').on('click', function(){
    $.ajax('hello.html', {
        success: function(data){
            $('#placeholder').html(data);
        }
    }
});
</script>
</body>
</html>

Здесь при клике на кнопку скачается с сервера упомянутый выше файл hello.html и содержимое будет вставлено в блок placeholder. Аналогично оно может быть отображено в модальном окне.
В примере для простоты использован jQuery.

Deleted ()

веб-сервере, и вообще тупо браузером без оного.

Ну без сервера тоже можно, сделать единый типа landing page и всё запихнуть туда.

Deleted ()
Ответ на: комментарий от dk-

сделай include на уровне js можно отдёльными запросами, можно ввиде html import. т.е. js запрашивает (либо через <link rel=«import» href=«file.html»> ) шапку, контент и футер в виде отдельный html и их объединяет. подойдёт любой http сервер хоть Lighttpd.

vtVitus ★★★★★ ()
Последнее исправление: vtVitus (всего исправлений: 2)
Ответ на: комментарий от vtVitus

<link rel=«import» href=«file.html»>

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

dk- ()
Ответ на: комментарий от dk-

И в разных бразуерах по разному глючит :(
В хроме - хтмл\кодировка - ок, но не подцепляется js
В ФФ - кодировка слетает даже.

dk- ()
Ответ на: комментарий от dk-

<link rel=«import» href=«file.html» charset=«utf-8»>

так слетает кодировка ? вроде такой проблемы не припомню.

vtVitus ★★★★★ ()
Ответ на: комментарий от Deleted

В целом здравая мысль, но нужен js + зависимости

anonymous ()

еще варианты для серверной части:

* рендер через связку xml xslt + вроде там тоже есть аналоги include

* проксирование через nginx

anonymous ()
Ответ на: комментарий от vtVitus

да кодировка еще херня.
js не работает при такой сборке :)

dk- ()
Ответ на: комментарий от anonymous

Никакой серверной части. Никакого сервера. Вообще. Совсем.

dk- ()

Код xml http request из Вики оформить в js функцию и забирая им вставлять через element.innerhtml чтоб не тащить jquery было самым простым и лёгким решением лет 5 назад

anonymous ()

Если я правильно понял, то тебе нужно просто написать скрипт для сборки статической страницы через какой-нибудь шаблонизатор с подстановкой из файлов. Такое на ЛОРе кто угодно сделает, даже я.

aquadon ★★★★★ ()

Ну, есть хороший инструмент для этого, называется

Gulp

Пример как из папки собираются все мелкие файлы в один: https://github.com/gulpjs/gulp/blob/v3.9.1/docs/recipes/only-pass-through-cha...

Если нужно в конкретных местах инклудить контент: https://www.npmjs.com/package/gulp-file-include

Вообще, гуле умеет кучу всего, очень крутой, посмотри обязательно, особенно, поищи уже готовые рецепты - типовые задачи уже решены 100 раз.

menangen ★★★★★ ()

изобретаете генератор статических сайтов?

Deleted ()
Ответ на: комментарий от anonymous

но нужен js + зависимости

JS в браузере всё равно есть, а зависимости пофиг, несколько лишних килобайт сегодня не проблема. Врочем, можно и без зависимостей на ванильном JS писать, просто код будет длиннее.

Deleted ()
Ответ на: комментарий от Deleted

но нужен js + зависимости

JS в браузере всё равно есть, а зависимости пофиг, несколько лишних килобайт сегодня не проблема. Врочем, можно и без зависимостей на ванильном JS писать, просто код будет длиннее.

Речь о dev-зависимостях (в основном через npm) - как-то ставил webpack: вытянул пол-гига.

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.