-
- >ты зачем-то руками генерируешь HTML lloyd(99 знак., 16.04.2020 13:06, картинка)
- Как работает современный веб мы видим -- страницы по 20МБайт,
браузер занимающий 4ГБайт, и ждать пока загрузится как во времена
модемов на 9600. И когда открываем javascript-консоль миллион
ошибок и всем пофиг. И перманентные глюки. Повторюсь, я смотрю с
точки зрения программиста. - fk0(16.04.2020 13:08)
- Зато можно сделать радость красноглазика - Schema-driven UI! Раньше
таким мог похвастаться только Tcl/Tk, а теперь можно сделать
веб-уинтерфейс чисто на базе схемы БД. - lloyd(16.04.2020 13:10)
- Ну это как спор между ЯВУ с динамической типизацией и статической.
Первые быстро стартуют, но не далеко летают, с ростом сложности всё
разваливается. Также и тут. Вермишель из кода ничем хорошим не
кончается, теряется управляемость за процессом. Но и тут есть
ньансы: fk0(1947 знак., 16.04.2020 13:26)
- Вообще lloyd наталкивает на интересные мысли. Условный макропроцессор можно сделать комбинировав пункты 1 и 2. Т.е. мы пишем шаблон в html как есть, но в нём вставляются специальные элементы или атрибуты. Потом шаблон трансформируется и вставляется в страницу. В процессе трансформации для специальных элементов или атрибутов вызываются функции, которые осуществляют подстановку данных (каких -- указано в атрибутах или тексте элементов). Для элементов -- они подменяются на fk0(635 знак., 16.04.2020 13:47)
- >Тот же гудвиновский код можно переписать так, чтоб он
генерировал сразу нужные элементы с нужными свойствами и добавлял в
конструируемое поддерево lloyd(215 знак., 16.04.2020 13:45)
- Ты сам понимаешь, что парсинг строки тоже тянет за собой объектную
генерацию DOM ? Т.е. медленей оно быть не может. Там проблема
скорей в другом: при генерации DOM руками у тебя браузер на каждый
чих пересчитывает CSS и перерисовывает страницу. А при парсинге он
перерисовку до конца парсинга не делает. Есть разные трюки,
во-первых дерево можно сконструировать от корня изначально не
привязанного к странице, а потом одним махом вставить (если
вставлять в "живую страницу", fk0(409 знак., 16.04.2020 13:53)
- Гудвин всё правильно сделал :). Он же не проект динамической
страницы целью ставил, а токмо малую HTML-вставочку хотел сделать,
а потому и упор на HTML был сделан им совершенно верно. Тогда как
JS у него лишь из-за суровой необходимости парсить XML (чтобы не
делать этого вручную), ну и еще в одном месте неизбежная операция
вставки. Было бы излишеством с его стороны городить для этой цели
целый проект с js- и css-файлами, а тем паче связываться с мерзким
AJAX'ом. :) - Kceния(16.04.2020 15:47)
- Для тех, у кого брезгливое отношение к жабаскрипту - придумали
XSLT. lloyd(305 знак., 16.04.2020 15:58)
- Что значит но-брейнер? Почему-то какой-то конкретный фреймворк который это делает -- ок, а если сам руками сделал, то не ок. А почему не наоборот? - fk0(16.04.2020 18:46)
- К JS у меня очень хорошее отношение, а плохое только к AJAX. Вот
если бы все AJAX-функции откомпилировали в бинарник и встроили в
браузер, то было бы другое дело. - Kceния(16.04.2020 16:14)
- Вы никогда ничего сложнее одной таблички в вебе не рисовали, да?
XMLHttpRequest в своей работе обычно даже не замечают, 99% работы
совсем не в передаче запросов - lloyd(16.04.2020 16:19)
- Я с XML прежде не работала, но в вебе много чего делала. Например,
интерактивную карту, реагирующую на положение мыши и ее клики. В
последнем случае почти всё на JS пришлось ваять (но без AJAX). - Kceния(16.04.2020 16:37)
- Значит так, AJAX не нужен, это пережиток прошлого, нужно событие от
сервера - есть WebSocket. А если это г под названием JS не хочется
трогать - есть TypeScript, а если совсем ничего не хочется - есть
WebAsm - пиши на всем что потом в web assembly скомпилится , и да
если сейчас что-то с Web UI делать, то придётся изучать Vue
JS/Angular/React/Polymer - OlegPowerC(19.04.2020 12:11)
- AJAX не пережиток, а зло, порожденное войной браузеров, - попытка создать браузеро-независимую прослойку, поверх которой можно было бы писать JS код, не вникая с особенности реализации DOM на каждом из них. Kceния(136 знак., 19.04.2020 14:22)
- А что, на голом JS делать кто-то запрещает, обязательно Angular
нужен? - fk0(19.04.2020 12:40)
- Нет пожалуйста я тоько за, но много компонентов есть готовые в том же Вуе и он простоя достаточно - OlegPowerC(19.04.2020 13:10)
- Значит так, AJAX не нужен, это пережиток прошлого, нужно событие от
сервера - есть WebSocket. А если это г под названием JS не хочется
трогать - есть TypeScript, а если совсем ничего не хочется - есть
WebAsm - пиши на всем что потом в web assembly скомпилится , и да
если сейчас что-то с Web UI делать, то придётся изучать Vue
JS/Angular/React/Polymer - OlegPowerC(19.04.2020 12:11)
- Я с XML прежде не работала, но в вебе много чего делала. Например,
интерактивную карту, реагирующую на положение мыши и ее клики. В
последнем случае почти всё на JS пришлось ваять (но без AJAX). - Kceния(16.04.2020 16:37)
- Вы никогда ничего сложнее одной таблички в вебе не рисовали, да?
XMLHttpRequest в своей работе обычно даже не замечают, 99% работы
совсем не в передаче запросов - lloyd(16.04.2020 16:19)
- Ну JS еще для AJAX и событий... Да и парсить как раз не приходится
- встроенные в браузер библиотеки шустро выбирают нужные поля из
XML. В общем строчек 200 в index.html - аккурат для дельфийного
"Memo" в EXE-шнике ;) - Гyдвин(16.04.2020 15:52)
- Так вы из-под AJAX это писали? - Kceния(16.04.2020 16:15)
- Не пойму. что значит "из-под AJAX". C моей точки зрения (исходя из
скудоумия?) это обычный асинхронный запрос из JS к HTTP серверу, в
котором с помощью "GET" можно пульнуть и принять данные. Сегодня
правда и наткнулся на xmlhttp.overrideMimeType('application/xml');
, иначе XML файл принимался некорректно :) Вот весь AJAX: Гyдвин(785 знак., 16.04.2020 17:36)
- Дрючить сервер раз в 10 секунд очень дурная идея, особенно когда
клиентов может быть очень много и таблицы большие. Возможно проще
не рвать соединение и досылать обновления. Для этого есть chunked
transfer encoding, server sent events и websockets как
универсальный способ сделать всё. - fk0(16.04.2020 19:00)
- Отписался ниже по этому поводу. Клиентов с десяток, локальная
сетка, XML 10..30 кб. А вот и кусочек наброска "сервера", етить,
который предназначен только для этой задачи. Html со стилями и
скриптами вообще грузится из Memo, ибо пара сотен строк текста. Все
это летает со свистом... Ардуинщики они такие - Апачи с IIS-ами им
влом ставить - в деревнях их просто некому сопровождать. И оно еще
и работает ;) Гyдвин(723 знак., 16.04.2020 19:21)
- А вобще круто что Делфи не бросаешь, респект. - OlegPowerC(19.04.2020 12:14)
- Мало того, подумывал воткнуть "сервер" в какой-нить роутер - принимать XML от 1С и рассовывать десятку клиентов и его хватит за глаза... Только лень красноглазить, да и дельфийный - уже испытанное временем решение. - Гyдвин(16.04.2020 20:07)
- Отписался ниже по этому поводу. Клиентов с десяток, локальная
сетка, XML 10..30 кб. А вот и кусочек наброска "сервера", етить,
который предназначен только для этой задачи. Html со стилями и
скриптами вообще грузится из Memo, ибо пара сотен строк текста. Все
это летает со свистом... Ардуинщики они такие - Апачи с IIS-ами им
влом ставить - в деревнях их просто некому сопровождать. И оно еще
и работает ;) Гyдвин(723 знак., 16.04.2020 19:21)
- А зачем тебе вообще нужен асинхронный запрос? Потому, что как часто
бывают с ардуинщиками -- они услышали что-то одно, зацепились, а
темой не владеют и другого ничего слышать уже не хотят. И делают
какие-то странные вещи. Асинхронный запрос нужен веб-аппликации, когда оно живет условно независимо от
сети и запросов, и может в процессе загрузки что-то ещё делать.
Если у тебя всё равно и html с сервера загружается каждый раз, то
зачем там асинхронщина -- не понятно. fk0(591 знак., 16.04.2020 18:39, ссылка)
- html с сервера загружается один раз!. А вот табличка обновляется периодически из XML файла с сервера,
чтобы не было дерготни в браузере. Ну и нажатия кнопок (а они тоже
имеются) для отправки событий - асинхронные запросы. Так что ве по
правилам "веб-аппликации"(c)... - Гyдвин(16.04.2020 19:00)
- В HTML есть такая штука: meta refresh. И у тебя страничка начинает
сама перезагружаться! А дерготня по любому будет, если сечас в
табличке 5 строк и одной ширины/высоты, а через секунду 20 строк, а
потом опять 5 строк и так далее. Ну можно конечно для внешнего
контейнера размеры прибить гвоздями к окну, тогда дерготня будет
только внутри него. А ещё фреймы есть, вот. Да, я знаю, мне 1000
лет я выполз из тьмы. Табличку сажаешь во внутренний фрейм, где она
через meta fk0(133 знак., 16.04.2020 19:08)
- "Не стреляйте в пианиста, он играет, как умеет"(с) За идеи спасибо ;) Может быть, когда нибудь, в следующей реинкарнации... Ширину колонок таблицы, кстати, зафиксировал в секции стилей, да и колонок всего 3 - только самое необходимое, чтобы даже в телефонах правильно отображалось. А по вертикали оно нехай меняется - для того и обновляется, и отсортировано еще в базе 1С в соответствии с приоритетами. Ну и при тапе в строке таблицы, средствами JS выводится окно с Гyдвин(110 знак., 16.04.2020 19:52)
- В HTML есть такая штука: meta refresh. И у тебя страничка начинает
сама перезагружаться! А дерготня по любому будет, если сечас в
табличке 5 строк и одной ширины/высоты, а через секунду 20 строк, а
потом опять 5 строк и так далее. Ну можно конечно для внешнего
контейнера размеры прибить гвоздями к окну, тогда дерготня будет
только внутри него. А ещё фреймы есть, вот. Да, я знаю, мне 1000
лет я выполз из тьмы. Табличку сажаешь во внутренний фрейм, где она
через meta fk0(133 знак., 16.04.2020 19:08)
- html с сервера загружается один раз!. А вот табличка обновляется периодически из XML файла с сервера,
чтобы не было дерготни в браузере. Ну и нажатия кнопок (а они тоже
имеются) для отправки событий - асинхронные запросы. Так что ве по
правилам "веб-аппликации"(c)... - Гyдвин(16.04.2020 19:00)
- Как внизу написано - лучше не делать. А что если у вас по
каким-либо причинам обработка действия займет больше 10 секунд?
Тогда эти таски застопорят страницу и переполнят очередь. lloyd(59 знак., 16.04.2020 17:38)
- Спасибо! Так и изображу. Как раз задумывался, как блокировать таймер при выводе в окно полей записи для просмотра. Скудоумие и отвага ;) Тут все-таки передача файла 10..30 килобайт, отрисовка таблицы практически мгновенная и на iPad, и на Android, и на компе - тестю. Хотя по многолетнему опыту эксплуатации в локалке затыков не неблюдалось. Там с интервалом 0.5 сек запрашивается информация о показаниях и статусе 8 автомобильных весов + команды управления с Гyдвин(133 знак., 16.04.2020 18:10)
- Дрючить сервер раз в 10 секунд очень дурная идея, особенно когда
клиентов может быть очень много и таблицы большие. Возможно проще
не рвать соединение и досылать обновления. Для этого есть chunked
transfer encoding, server sent events и websockets как
универсальный способ сделать всё. - fk0(16.04.2020 19:00)
- Не пойму. что значит "из-под AJAX". C моей точки зрения (исходя из
скудоумия?) это обычный асинхронный запрос из JS к HTTP серверу, в
котором с помощью "GET" можно пульнуть и принять данные. Сегодня
правда и наткнулся на xmlhttp.overrideMimeType('application/xml');
, иначе XML файл принимался некорректно :) Вот весь AJAX: Гyдвин(785 знак., 16.04.2020 17:36)
- Так вы из-под AJAX это писали? - Kceния(16.04.2020 16:15)
- Для тех, у кого брезгливое отношение к жабаскрипту - придумали
XSLT. lloyd(305 знак., 16.04.2020 15:58)
- Гудвин всё правильно сделал :). Он же не проект динамической
страницы целью ставил, а токмо малую HTML-вставочку хотел сделать,
а потому и упор на HTML был сделан им совершенно верно. Тогда как
JS у него лишь из-за суровой необходимости парсить XML (чтобы не
делать этого вручную), ну и еще в одном месте неизбежная операция
вставки. Было бы излишеством с его стороны городить для этой цели
целый проект с js- и css-файлами, а тем паче связываться с мерзким
AJAX'ом. :) - Kceния(16.04.2020 15:47)
- Ты сам понимаешь, что парсинг строки тоже тянет за собой объектную
генерацию DOM ? Т.е. медленей оно быть не может. Там проблема
скорей в другом: при генерации DOM руками у тебя браузер на каждый
чих пересчитывает CSS и перерисовывает страницу. А при парсинге он
перерисовку до конца парсинга не делает. Есть разные трюки,
во-первых дерево можно сконструировать от корня изначально не
привязанного к странице, а потом одним махом вставить (если
вставлять в "живую страницу", fk0(409 знак., 16.04.2020 13:53)
- Ну это как спор между ЯВУ с динамической типизацией и статической.
Первые быстро стартуют, но не далеко летают, с ростом сложности всё
разваливается. Также и тут. Вермишель из кода ничем хорошим не
кончается, теряется управляемость за процессом. Но и тут есть
ньансы: fk0(1947 знак., 16.04.2020 13:26)
- Зато можно сделать радость красноглазика - Schema-driven UI! Раньше
таким мог похвастаться только Tcl/Tk, а теперь можно сделать
веб-уинтерфейс чисто на базе схемы БД. - lloyd(16.04.2020 13:10)
- Как работает современный веб мы видим -- страницы по 20МБайт,
браузер занимающий 4ГБайт, и ждать пока загрузится как во времена
модемов на 9600. И когда открываем javascript-консоль миллион
ошибок и всем пофиг. И перманентные глюки. Повторюсь, я смотрю с
точки зрения программиста. - fk0(16.04.2020 13:08)
- >ты зачем-то руками генерируешь HTML lloyd(99 знак., 16.04.2020 13:06, картинка)