Информация
- В рейтинге
- Не участвует
- Откуда
- Санкт-Петербург, Санкт-Петербург и область, Россия
- Зарегистрирован
- Активность
Специализация
Бэкенд разработчик, Фулстек разработчик
Старший
JavaScript
Vue.js
PHP
Python
Keras
Apache Spark
MySQL
PostgreSQL
RabbitMQ
GitLab
Серфить — да, удобно, но при практически всегда включенном компе — я это делаю только тогда, когда из-за компа меня выгоняет жена :)
Игры — лично у меня времени особо нет, да и желания, поэтому на нем играет исключительно дочка, для нее да, регулярно покупаю игрушки + она смотрит мультики на нем через AirVideo c моего NIS-а.
Если бы была многозадачность на первом iPad-е, то можно было бы хоть как то заниматься программированием, там плагинчик под jQuery пописать, или еще что нить мелкое, не слезая с дивана, накрайняк прямо на сервере какой нить косяк поправить. А так — открыл SSH, переключился в броузер — кирдык соединению. А то что у них на клавиатуре, что к iPad-у продается, вместо Escape кнопка выхода — это вообще фейл. Пока в vim-е что нибудь напишешь — все маты сложишь.
В общем правильно было сказано выше — при наличии достаточного количества компьютеров вокруг (дом, работа) и нормального смартфона первому iPad-у ниши просто нет. Только длительные путешествия, но они не так часты, а во-вторых, тут они начинают конкурировать с нетбуками.
В общем, не скажу, что iPad плох, но ЛИЧНО мне он — не нужен.
Насчет полусекунды — да, погорячился, но на статичных (то есть без JS в большом количестве) сайтах, коих большинство — инциализировать вообще нечего.
>Должен разочаровать, но крупные компании уделяют этому столько внимания, что тема неполной загрузки страницы весьма актуальна.
Я не разочаровываюсь… отнюдь. Я сам плотно занимаюсь данным вопросом, и то, что я к вам прицепился — означает лишь то, что мне эта тема небезралична, и посему от вашей серии статей ждал нечто большего :) Поэтому и пытаю в комментах, в надежде на уточнения и дополнения. ;)
>Договорились — в следующий раз обязательно проконсультируюсь у вас, как и про что мне писать! =))))
Согласен :)
По поводу универсальности: а универсального решения не надо. Потому как чем универсальнее решение, тем больше сил на его конфигурацию и настройку тратишь. Те же ThinWire, GWT и прочие с ними — это вообще нечто. Писать на Java Javascript — это только отличная возможность получить неподдерживаемый код, а не решение. А хотелось бы чего то достаточно простого и маленького, но в котором наиболее общие случаи работы со страницой шли бы из коробки, а экзотику надо было бы писать уже самостоятельно.
А у вас, к сожалению, вся изюминка обоих статей уложилась в использование анализа HTTP заголовков для определения, какой шаблон надо выдать. В итоге, если вы хотели донести эту идею до читателей, достаточно было бы просто взять и написать пример ее использования именно в Grails, JS часть попросту убрав в файлик и оставив в статье только ссылку на скачивание, либо вообще построив пример на какой нибудь уже известной библиотеке.
А если мыслить категориями одной страницы (одного блока) — то AJAX не нужен. CSS и JS отлично кешируется броузером, за-gzip-ленный контент на современных каналах прокачивается практически моментально. То есть все эти ухищрения с урлами, таймерами, аяксом и дополнительными обработчиками на стороне сервера только для WOW-эффекта не окупают себя никак. А если мы уходим от одноблочной структуры — то все, финиш, вся проработка сохранения статусов страницы опять ложится на плечи разработчика, и вместо разработки бизнес-логики он будет писать костыли для расширения вашего или другого такого же модуля.
То есть, такие модули должны работать как минимум с 2-мы блоками, чтобы их потом можно было по индукции расширять до любого n. В этом случае, да, профит будет очень высоким.
События событиями… но речь немного не о том. У вас описан один блок на странице. Как будут сохраняться события и история переходов если блоков несколько?
После строки: return document.location.toString().substr(0, document.location.toString().indexOf('#')) + anchor.substr(1); читать вообще расхотелось. Выше по тексту было 2 раза использовано свойство document.location.hash, но при этом был изобретен свой велосипед вместо остальных свойств.
Понятно, что человек осваивает JS+jQuery, но делать из этого цикл статей, вместо того, чтобы использовать уже существующие решения — это сурово. Лично я, рассчитывал увидеть более менее продакшен решение, потому как реально то насущность поставленных вопросов велика, и грамотную реализацию, учитывающую все нюансы — сложно.
Вот еще вопрос по статье: хорошо, а как я могу учесть изменение поведения остальных блоков на изменение одного? Изменение статуса ссылок — это хорошо, но если мне надо радикально поменять меню, в зависимости от того, какой блок был загружен? В блок писать простыни JS, которые бы модифицировали код остальной страницы?
А вообще, мне кажется, что надо решать задачу от сложного к простому, то есть взять и описать самый навороченный случай динамического взаимодействия полей формы от значений друг друга и попытаться максимально просто и удобно его описать. Лично я с трудом представляю, как можно описать задачу генерации формы, когда значения одного поля могут зависеть не от одного, а нескольких других полей, да еще и в обе стороны. К примеру, у нас есть форма выбора автомобиля и список салонов, в которых он есть в наличии. И при выборе Toyota Corolla 60 комплектации Green в списке должны остаться только те, в которых она есть. В этом случае список дилеров должен меняться и при выборе марки, и при выборе модели, и цвета и комплектации + список салонов в свою очередь связан со списком городов, и возможна обратная ситуация — выбирая город у нас должен меняться список салонов и в след за ним, список марок (при этом надо держать в голове, что если мы выбрали салон — то модели должны показываться только те, что есть в этом салоне, а не все).
Если вам удастся сделать такую вещь, и при этом не надо будет писать многокиллобайтной логики — то лично я с большим удовольствием бросил все свои велосипеды :)
Допустим, есть родительский селект (parent) и подчиненный ему второй(child), и предположим, что данные для child-а сервер выдает по запросу www.site.com/get_child_values.php?parent_value=Toyota|VAZ|etc
Тогда связь можно описать в виде
{
'parent'=>'developer',
'child'=>'model',
'method'=>'ajax',
'url'=>' www.site.com/get_child_values.php?parent_value=#value#', // представляем URL в виде шаблона, где вместо #value# будет подставляться value parent-а
}
разобрать связь такого вида и описать в виде обработчиков на JS — плевое дело. Единственно, что при смене содержимого child-а надо на него генерировать событие onChange чтобы если на нем висят другие зависимые поля — они тоже вызвались, этакая каскадная загрузка зависимых данных получается.
Правда может быть вариант, когда зависимых полей большей одного, тогда по хорошему надо создавать массив связей.
В принципе, в каком то моем велосипедном генераторе форм это было сделано, но там генератор был скрещен с ORM-ом, поэтому избыточного кода с описанием было очень мало, роль связей играли FOREIGN KEY-s, а URL для получения данных был один, просто в паттерн URL-а подставлялись не только значение родителя, но и названия полей, и скрипт на сервере уже сам разбирался какие данные надо было выплюнуть.
Это хорошо, когда разработчик и JS, и HTML, и PHP знает, а порой то пэхапе кодер норовит при виде HTML+JS в обморок упасть, то верстальщик и программист — 2 разных человека. То есть хочется: программер описал форму, дал верстальщику один файлик JS, который тот в прописал, и все. Верстальщик форму как хочет сам верстает, придерживаясь только выданных названий полей (ну или просит программера, тот вставляет один вызов генерации формы и та плюет готовый HTML).
Это каких же? Вижу только 2 новых виджета + 3 корных фичи вынесли в плагины. То есть ощутим мы только автокомплит и кнопки.
>Уже все разжевано и пережевано в интернете 5 раз.