Проблема состоит не в том, что это сложно, а в том, что это так просто, что от пользователя это спрятали и заставляют пользоваться “костылями”.
Что такое “сайт”. Это значит, что вы как-то договариваетесь с “хостингом” (хранилищем файлов) отправляете куда-то свой “файл” - текст или картинку. Затем любой пользователь Сети говорит своему “браузеру”, что хочет именно этот “файл”, и “браузер” его получает у “хостинга” и выдает на экран в меру своего понимания “языка файла”. Более того, обнаружив, что вы, как-то реагируете на содержимое “файла”, браузер может что-то перезапросить или перевывести…
По идее, имея контроль над ключевыми точками “хостинга” и “браузера” я могу на лету подменять содержимое файла в любой из этих точек. Точнее, написать “программы”, которые могут это сделать без вашего участия. Упомянутые выше “костыли”, и есть такие “программы”, имеющие наглость утверждать, что справятся лучше вас.
С чем же они справятся?
- Вы можете посылать на “хостинг” “файл-заготовку”, которая на “хостинге” раскроется в полноценный “файл”. Если вы работаете на Linux и вам удалось найти нормальный "хостинг"на Unix, то вы даже не будете замечать, что и где делается - у вас будет единая Операционная Система, которая изначально предназначена именно на автоматизацию превращения “текста-заготовки” в “текст нормальный”.
Программы (на обычных Linux-языках) будут, в основном, состоять из набора “команд”
s/строка1/строка2/
Т.е. “заменить строку1 на строку2”. Чаще всего, с какими-либо “обобщениями”. Например, “все буквы” на “заглавные”, или “номер символа” на “сам символ”. Придумав набор “команд s///” на вашу самодельную “систему разметки”, вы сможете прогонять свои “заготовки” одну за другой.
-
Но вдруг вам захочется добавить в “разметку” что-то особенное? Linux умеет и это. s/// можно включать прямо в “заготовку” и путем простейших преобразований “программы” добавлять их к списку (1).
-
Итак на “хостинге” получается “файл”, готовый к выгрузке “пользователю”. А, если вы хотите его еще подправить в зависимости от запроса “пользователя”? Это тоже просто. Вместо адреса “файла” вы подсовываете пользователю адрес “файла-программы”. Это называется CGI-программированием. Если “хостинг” его разрешает, вы пишете точно те же “программы”, что в (1) и (2). На тех же или очень похожих языках. Разворачивание “заготовок” происходит до передачи “файлов” “браузеру”.
-
Наконец, когда “браузер” честно рисует “файл” на экране и встречает “Java Script”, он запускает его, как “программу”. Опять те же s/// только с двумя заморочками. Язык JS, в отличие от простых Linux-языков, которые можно изучить за 5 минут, вещь жутко убогая и по-идиотски-устроенная (это - “костыль”! и броузер - “костыль”!). Это первое. А второе, следствие первого, состоит в том, что “место вставки строки в документ” это вам не “строка в файле”, и придется попрыгать. Зато, вы можете переписать “документ” практически полностью, что может превратить ваш “текст” в настоящую рисованную игрушку реального времени.
-
Еще одно отличие (4) от (1-3) состоит в том, что вам здесь недоступны все “файлы” вашего “сайта” разом и вы должны их подкачивать. И наш “JS-костыль” опять сделает все, чтобы вам не было скучно. JS - это, вообще, набор рецептов, передающихся из рук в руки.
-
Ну, еще вам может захотеться иметь “макет сайта” у себя на машине. В случае (1-3) это, опять просто. Ставите Apache и все работает, как в Сети. В случае (4) все и так работает у вас на машине, ничего менять не надо. А, вот, в случае (5) придется еще попрыгать.
Итак, чем меньше “костылей”, тем проще. Программки из 10-100 строк будут исправно работать за вас годами (у меня они проработали лет 17, невзирая на то, что я писал их на коленке). Но кто же это допустит? Фиг вам доступ к (1-6)! Только “костыли”! Каждый только на одну стадию процесса и совместим с другим, в лучшем случае, через “костыль-посредник”.
Самое страшное, что продавцы костылей сами давно уже забыли, что речь идет о простейших вещах, что я описал выше. И вас просто не поймут, объясняя одни “костыли” через другие.
Как-то так.
И зачем я это написал? Все равно, “костыли”, “костыли” и “костыли”…