Комментарии 66
Да, веб-платформа очень изменилась в плане возможностей в последнее время. В сугубо лучшую сторону. Однако, индустрия веб-разработки, в своей основной массе, пока топчется в рамках ранее выработанных подходов, и многие разработчики, что печально, не держат "руку на пульсе" оставаясь полностью в пределах своих, ранее освоенных, экосистем. Многие не знают, что ES-модули теперь поддерживаются всеми современными браузерами, что есть такие крутейшие штуки как Custom Elements, ShadowDOM, CSS-переменные… А ведь эти вещи очень многое меняют.
И вообще, если нужно поддерживать ie10 или и того меньше, то о какой «руке на пульсе» может идти речь?
IE10 не поддерживается и признан устаревшим даже собственным вендором, причем очень давно. Доля IE10 в трафике — 0.1% (https://caniuse.com/usage-table)
Если говорить о нативной поддержке:
Поддержка Сustom Elements — 79.39%
Поддержка ShadowDOM — 79.81%
Как-то это не похоже на "почти не поддерживается", не находите?
Для остальных: https://github.com/WebComponents/webcomponentsjs
Работа в рамках популярных экосистем: https://custom-elements-everywhere.com/
Надоела уже мантра про "не поддерживается", так и сидели бы в каменном веке...
Я уже несколько лет работаю с вышеописанным стеком технологий, и поддерживаю собственные разработки на их основе. Все клиенты — корпоративные, полет нормальный. Конечно, видимо, не всем так везет. Но, если браузер не получает обновлений безопасности от вендора, говорить о каких-то политиках безопасности в корпорации — это лол. Если мне клиент заявит такое в требованиях — я откажусь от такой работы, выбор есть.
Очень странный вопрос. Во первых, непонятно причем тут сразу буржуи и фриланс. Разве это единственная альтернатива? Во вторых, никто вас не заставляет. Каждый имеет право выбирать платформу и инструментарий (а также, саму работу), просто следствием вашего выбора будут определённые возможности и ограничения. Задача инженера — взвесить все "за" и "против" самостоятельно. Ну и ужасно удручает технологическое ретроградство в научной среде: на мой взгляд оно там совершенно неуместно. Но это уже огромная системная проблема, с которой я лично бороться бы не стал, ибо смысла не вижу.
Вам легче от того, что маразм как-то объясняется?
А зарплату получают только те, кто вынужден терпеть маразм и всякое "ФСБ-головного мозга"? Ерунда какая.
Мне, например, тоже интересно, зачем колоться, но продолжать кушать кактус. Работа же есть, можно найти проект с современными требованиями.
Пусть предприятия, отстающие в обновлении софта на 10 лет будут сами себе злобные буратино.
А вы когда писали свой первый коммент чего добивались? И так понятно, что в ряде случаев существуют специфические требования, и что абсолютно универсальных решений — нет. Да, кому-то, в редких случаях, нужно поддерживать ископаемое барахло, но это совсем не значит, что ВСЕМ нужно сидеть с своем болотце и не обращать внимания на прогресс. Тут речь шла о технологиях, которые поддерживаются у БОЛЬШИНСТВА пользователей, все цифры приведены. Я больше отвечать не буду, не беспокойтесь.
Ссылка на Shadow DOM битая. И где вы там 79.81% увидели? 71.96% же
Не поймите меня не правильно, я только ЗА внедрение новых технологий и всегда хочется пощупать самому, но чаще всего это приходится делать на домашний проектах. (
Не в то место смотрите: https://caniuse.com/#feat=shadowdomv1
Нативная поддержка из коробки есть в Chrome (+ mobile), Safari (+ mobile), Opera и еще по мелочи. У вас таблица перед носом, но вы меня будете все равно в своем убеждать… На полифилл я также дал ссылку, у пользователей FF и Edge будет работать, но немного медленнее. У FF нативная поддержка скоро появится, уже зарелижено в найтли. У Edge — в разработке. Я использую это все в боевых проектах, как и многие крупные компании Google, Github и др. Список длинный. Но мне все равно регулярно рассказывают, как ничего нигде не поддерживается. Сюр какой-то.
Supported in Firefox behind the dom.webcomponents.shadowdom.enabled flag.
Так что вполне поддерживается.
Справедливости ради, то, что в FF за флагом — это не поддержка а недоразумение какое-то. С полифиллом (Shady DOM) работает на порядок лучше. Нужно ждать нормальной реализации.
Угу… 79% поддержки. То есть 21% за бортом. Вот представляю, как иду к бизнесу и говорю "хочу клевую фичу в коде, но надо 21% пользователей выкинуть. Ок?"
А если мы на рынке каком особенном? SEA, Китай? Там цифры другие и забавнее.
Если по приведенным ссылкам походить, можно на таблицу совместимости наткнуться. Повторю для вас специально: https://github.com/WebComponents/webcomponentsjs
Если у вас "особенный рынок", то ваша ситуация называется "специфические требования". Такое бывает, да. Но такую ситуацию НЕЛЬЗЯ экстраполировать на всю отрасль.
Все решают цифры. Если необходимость поддержки 0.1% пользователей, влечет удорожание проекта на 50%, то этот, каждый тысячный условный китаец, должен приносить дофига денег, чтобы окупить затраты. При этом, он сидит за старым компом под старой видной, которую и на помойке уже сложно найти (или он, что более вероятно, бот). Не знаю уж насколько это "огульно", но нахрен этого китайца. Остальные проценты вы взяли с потолка, тут говорить не о чем.
Web как раз и прекрасен тем, что можно делать прогрессивные улучшения. И для большой части технологий есть полифилы. Поэтому пользователь на IE10 может получить работающую версию сайта с хорошим дизайном и контентом, а люди с новым Chrome'ом или Firefox'ом с Edge получат новые фичи. Если какая-то возможность не поддерживается везде — это не значит что её нельзя использовать. Хороший пример JavaScript. Сейчас подавляющее большинство приложений используют свежие версии стандарта.
take.ms/H1Fuf — 3 строка это для меня 5% аудитории, а с другими версиям браузеров все 15 набежит, мне их нафиг высылать? :)
Рассматривайте это не как зоопарк, а как framework. Просто при использовании каждой новой возможности нужно проверять поддерживается ли она браузером. Ну и нужно использовать полифилы. Поэтому с обеспечением совместимости конечно есть проблемы, с этим не поспоришь, но всё так плохо.
Более того, если говорить в контексте мобильных платформ и PWA — все, скорее, очень даже хорошо. Актуальные версии мобильных Chrome и Safari — вообще красавчики, в плане поддержки стандартов.
мобильный сафари — это набор фееричных багов, и собственных "интерпретаций" спецификаций. одно оригинальное понимание того что такое единица vh чего стоит, сводящее на нет вообще ее существование.
А вы точно ничего не путаете и статья была именно про PWA? Очень бы хотелось посмотреть на такую статью. Потому что обсуждение с позиции выгодности-невыгодности были про AMP. По PWA же есть консенсус, и все вендоры от Apple до Microsoft поддерживают соответствующие старндарты.
Для меня стало открытием, что PWA имеет немало доступа к аппаратным возможностям Андроида. Я не знаю, насколько стабильно это всё работает, но список впечатляет: https://whatwebcando.today
(вроде в статье нет)
Меня всегда настораживают статьи, где только плюсы и восторги. Клевые технологии, верное направление.
Но подходит ли оно для небольших предприятий? Не google, uber, twitter?
Пример: у нас мобильное приложение, децентрализованный чат с фичами; сделан на react native. Все отлично, быстро был сделан прототип, успешно собраны инвестиции, сберегло в разы времени на разработку. Но эта штука прожорлива. Очень. Батарею не ест, а жрет, как не в себя. Бизнес сначала решил расширить команду более опытными разработчиками на RN. Логично, надо сначала проверить, может варим неправильно. Расширили вдвое 3 -> 6 + внештатные. В итоге более опытные ребята помучались и начали делать все больше и больше вставок в нативном коде внутри RN. Поддержка усложнилась, код быстрее стал, но на проценты, а не в разы. Итог: тупик, где надо принимать волевое решение о написании нативных приложений.
Когда мы говорим про новое, то всегда надо говорить про область и условия применения и про плюсы и минусы в сравнении со "старым".
Вы уверены, что это RN жрет батарейку? Может приложение никогда не засыпает просто? Как сделан обмен сообщениями, по вебсокетам?
А RN это PWA?
Совсем нет. Но, видимо, обжегшись на кипятке, теперь дуют и на воду.
ReactNative: код компилируется и собирается в пакет. Установка и обновление через AppStore/PlayMarket, никаких отличий от нативных приложений. В коде можно использовать вставки нативного кода, вызывать любые доступные системные методы
PWA: код пишется на Javascript (или транслируется в него). Устанавливается PWA через кнопку "добавить на рабочий стол" в браузере. Нативный код писать нельзя в принципе, все взаимодействие только через браузерные API (в статье есть ссылки на список возможностей).
Проще говоря, PWA это в первую очередь сайт, который научили сохраняться и работать оффлайн, а ReactNative – это все такие же обычные приложения, в которых есть возможность писать код на React.
Пример, хоть и немного странный, но тоже пример :) Аппаратно-программный комплекс для выставок и всяких массовых мероприятий.
Приходят люди и они должны: пройти регистрацию, получить идентификационную карточку и далее этой карточкой взаимодействовать со стендами экспонентов. Стенды регистрации и интерактивные стенды это планшеты с подключенными RFID считывателями. Еще устройства в системе должны уметь распознавать QR коды. Это все должно быть в kioskmode.
Это хозяйство было написано под андроид, но администрирование более 2-3 устройств превратилось просто в ад. В итоге почти все, кроме киоск браузера и считывания RFID, было переделано на JS + HTML + CSS (уж не знаю насколько это PWA я не супер эксперт). Это дало потрясающий эффект! Все работает очень быстро (включая считывание QR кодов), нет проблем с установкой, скорость разработки выросла в РАЗЫ (хотя я Java программист и JS освоил «по ходу»). В итоге нативными остались только: киоск браузер и маленькие безинтерфейсные сервисы-приложения по рассылке СМС и считыванию RFID карт через OTG. Работает на самых дешевых устройствах и очень экономично использует батарейку. Планшет на считывание QR кодов 6000mAh на максимальной яркости работает 12 часов и все это в браузере на JS и HTML.
Пользователи при регистрации получают ссылку и по ней находится сайт-приложение использует ту же технологию. Там правда все немного проще, но в целом работает быстро и хорошо, на всех +- современных телефонах.
Так что не только в кросс-платформенности дело.
Мой ответ на вопрос-заголовок. Не могут. И пока это разные хоть и кое в чем пересекающиеся вещи.
Почитав в комментариях споры на тему новое или поддержка пользователей, вспомнил видео с какой-то конференции, когда выступающий от ВКонтакте сказал, что 2-3% звучит как немного, но у них это миллионы человек.
По теме статьи, понятно, что концепция PWA — это чисто маркетинг. Вот когда все научаться индексировать страницы SPA, тогда это будет какой-то сдвиг, а так от Angular была видна только разметка, с Vue было лучше, но все равно.
SSR — это странная фигня.
Но сама тенденция движения к размытию границы между веб и натив правильная.
За одним исключением: когда не нужно запускать камеру. Как говорится, Ha-ha, Classic!:
— делаем WA
— нам нужно фото, запускаем камеру
— веб-браузер выгружается из памяти (Android, iOS — одинаково)
— мы теряем связь поля input с приложением камеры.
Fail неминуем.
Пока единственный хак для android — сделать на странице видео с трансляции с камеры, и с него снять кадр. На iOS такое заблокировано.
Большая часть проблем и сложностей которые описаны выше действительно существуют в «классическом» варианте PWA, но слегка отклонившись от классики, можно спокойно решить большую часть всех этих кейсов. Как к примеру сделано у нас в Mobsted.
Типичные примеры решенных кейсов:
— Server side rendering
— Долговременное поддержание авторизации на иконке
И многое другое.
Можно сказать что это даже не «PWA», а «PWA 2.0»
Кстати занимаемся мы этим уже 4 года, начали ещё до того как сам термин PWA был придуман.
И конкуренцию мы составляем очень даже неплохую (~ 5 млн. уникальных посетителей в месяц в различных бизнес сферах)
В скором времени выкатим версию 3.0, и поток вырастет, настолько, что я надеюсь больше ни у кого больше не возникнет вопроса о конкурентоспособности PWA.
Могут ли PWA (Progressive Web Apps) образца 2018 года составить достойную конкуренцию нативным приложениям?