Информация об изменениях

Сообщение Re[2]: Чем строить DOM на C++ или pure JS (без браузера)? от 20.12.2024 12:50

Изменено 20.12.2024 12:54 Alekzander

Re[2]: Чем строить DOM на C++ или pure JS (без браузера)?
Здравствуйте, bnk, Вы писали:

bnk>IMHO ты занимаешься какой-то самобытной херней.

bnk>По виду твоя "шаблонизация" похожа на банальный server-side rendering (compile-time rendering), теперь это умеют вообще все генераторы статики.

Программисты: возьмите генератор статики.

Простые пользователи: у меня сайт из трёх страничек, и я не хочу тащить PHP или SSI.

Страшно далеки они от народа!

Пользователи не хотят из командной строки ставить пакеты и настраивать среду сначала на своём компьютере, а потом и на сервере. Пользователи хотят расширение в браузер, которое позволило бы сразу отображать результат, и ещё программу, которой можно было бы зафиксировать результат в виде файлов для последующего копирования (на сервер, например).

Просто я, как инженер, сразу подумал, что неплохо было бы дополнительно накидать фичей. Типа, всё равно же половина продвинутых юзеров пользуется каким-нибудь Мусташем, который на самом деле не нужен, и который можно было бы заодно круто оптимизировать. Отсюда и вопрос. Но я пока ещё даже не решил, насколько эти хотелки востребованы у тех юзеров, которые тихо-мирно педалят какую-нибудь HTML-справку (даже не всегда онлайновую).

Я бы и сам нашёл применение. Вот, например, как профессионал профессионалу.

Как лучше всего делать векторную библиотеку? Чтобы 1) хранить в одном месте, 2) брать только используемое, 3) подставлять в вёрстку естественным образом, 4) можно было использовать в интерфейсах. Я пробовал, наверно, всё. Шрифты. Data URI. Фонт-сабсеттинг
Автор: Alekzander
Дата: 10.12 23:39
. Набор <symbols>. И как ни крути, везде или дудочка, или кувшинчик. Чего-нибудь, да не хватает. Вот, например, ты знал, что <use> может ссылаться на элемент внешнего файл? Т.е. <use href="lib.svg#icon1">. Казалось бы, вот оно, счастье: ты раскладываешь вектор по библиотекам, библиотеки по файлам (интересно, кстати: визивижные редакторы такое поддерживают вообще? и что они покажут?), а в результате у тебя одна библиотека на все файлы с разметкой, удобная подстановка по идентификатору элемента, элемент можно дополнительно стилизовать (обводки, подчёркивания и т.п.) через CSS, и ещё получается естественное кеширование (файлы же). Однако, если бы всё было так просто, было бы неинтересно. Оказывается, что viewBox отдельных элементов не определяет intrinsic aspect ratio. Его вообще нельзя определить! Понимаешь, что это значит? Ты после этого не можешь написать класс .inline { height: 1em; }, чтобы вставлять символы в текст (вопросы accessibility для упрощения мы тут не рассматриваем), потому что ширина не будет рассчитываться из пропорций. И это возвращает нас в 1995 год, когда надо было указывать атрибуты width и height для каждого <img>.

Разные вумные дядьки с 100К+ плюсов на стековерфлоу думали-думали, и пришли к единому мнению: придётся копировать viewBox внутрь <use>, только тогда он начнёт определять пропорции. Я спросил: а ничего, что для <svg> не существует аналога shadowrootmode="open" (как у <template>), и, следовательно, способа программно доступиться до этого самого viewBox? Дядьки ещё подумали и сказали: пиши парсер. А ты говоришь: не пиши парсер. Кому верить?

И это, на самом деле, далеко не первый случай, когда парсер и построение DOM'а ДО загрузки в браузер круто выручило бы. Это если посмотреть на реальные задачи. Даже если у тебя есть сервер, и генератор статики, как ты бы ими воспользовался для именно этой задачи?

bnk>Но независимо от этого можешь попробовать посмотреть на tauri это такой электрон, но в 20 раз меньше, но на встроенном WebView2 (и WebView для linux)


bnk>У них есть, в том числе, headless webdriver который можно использовать как CLI в том числе

bnk>https://tauri.app/develop/tests/webdriver/

Вот это интересно. Только сразу задам вопрос: это всё можно вкомпилировать в один исполняемый файл, который под вынь цепляется к WebView2, а под линь к WebView? Я хреновый линуксоид, даже не знал, что под linux (не Андроид) вообще есть какой-то универсальный WebView.
Re[2]: Чем строить DOM на C++ или pure JS (без браузера)?
Здравствуйте, bnk, Вы писали:

bnk>IMHO ты занимаешься какой-то самобытной херней.

bnk>По виду твоя "шаблонизация" похожа на банальный server-side rendering (compile-time rendering), теперь это умеют вообще все генераторы статики.

Программисты: возьмите генератор статики.

Простые пользователи: у меня сайт из трёх страничек, и я не хочу тащить PHP или SSI.

Страшно далеки они от народа!

Пользователи не хотят из командной строки ставить пакеты и настраивать среду сначала на своём компьютере, а потом и на сервере. Пользователи хотят расширение в браузер, которое позволило бы сразу отображать результат, и ещё программу, которой можно было бы зафиксировать результат в виде файлов для последующего копирования (на сервер, например).

Просто я, как инженер, сразу подумал, что неплохо было бы дополнительно накидать фичей. Типа, всё равно же половина продвинутых юзеров пользуется каким-нибудь Мусташем, который на самом деле не нужен, и который можно было бы заодно круто оптимизировать. Отсюда и вопрос. Но я пока ещё даже не решил, насколько эти хотелки востребованы у тех юзеров, которые тихо-мирно педалят какую-нибудь HTML-справку (даже не всегда онлайновую).

Я бы и сам нашёл применение. Вот, например, как профессионал профессионалу.

Как лучше всего делать векторную библиотеку? Чтобы 1) хранить в одном месте, 2) брать только используемое, 3) подставлять в вёрстку естественным образом, 4) можно было использовать в интерфейсах. Я пробовал, наверно, всё. Шрифты. Data URI. Фонт-сабсеттинг
Автор: Alekzander
Дата: 10.12 23:39
. Набор <symbols>. И как ни крути, везде или дудочка, или кувшинчик. Чего-нибудь, да не хватает. Вот, например, ты знал, что <use> может ссылаться на элемент внешнего файла (оформленный как <symbol>)? Т.е. <use href="lib.svg#icon1">. Казалось бы, вот оно, счастье: ты раскладываешь вектор по библиотекам, библиотеки по файлам (интересно, кстати: визивижные редакторы такое поддерживают вообще? и что они покажут?), а в результате у тебя одна библиотека на все файлы с разметкой, удобная подстановка по идентификатору элемента, элемент можно дополнительно стилизовать (обводки, подчёркивания и т.п.) через CSS, и ещё получается естественное кеширование (файлы же). Однако, если бы всё было так просто, было бы неинтересно. Оказывается, что viewBox отдельных элементов не определяет intrinsic aspect ratio. Его вообще нельзя определить! Понимаешь, что это значит? Ты после этого не можешь написать класс .inline { height: 1em; }, чтобы вставлять символы в текст (вопросы accessibility для упрощения мы тут не рассматриваем), потому что ширина не будет рассчитываться из пропорций. И это возвращает нас в 1995 год, когда надо было указывать атрибуты width и height для каждого <img>.

Разные вумные дядьки с 100К+ плюсов на стековерфлоу думали-думали, и пришли к единому мнению: придётся копировать viewBox внутрь <use>, только тогда он начнёт определять пропорции. Я спросил: а ничего, что для <svg> не существует аналога shadowrootmode="open" (как у <template>), и, следовательно, способа программно доступиться до этого самого viewBox? Дядьки ещё подумали и сказали: пиши парсер. А ты говоришь: не пиши парсер. Кому верить?

И это, на самом деле, далеко не первый случай, когда парсер и построение DOM'а ДО загрузки в браузер круто выручило бы. Это если посмотреть на реальные задачи. Даже если у тебя есть сервер, и генератор статики, как ты бы ими воспользовался для именно этой задачи?

bnk>Но независимо от этого можешь попробовать посмотреть на tauri это такой электрон, но в 20 раз меньше, но на встроенном WebView2 (и WebView для linux)


bnk>У них есть, в том числе, headless webdriver который можно использовать как CLI в том числе

bnk>https://tauri.app/develop/tests/webdriver/

Вот это интересно. Только сразу задам вопрос: это всё можно вкомпилировать в один исполняемый файл, который под вынь цепляется к WebView2, а под линь к WebView? Я хреновый линуксоид, даже не знал, что под linux (не Андроид) вообще есть какой-то универсальный WebView.