Изоморфные веб-приложения: скорее нет, чем да

Mar 01, 2015 21:48


С тотальной победой React-а и функционального подхода на клиенте может показаться, что будущее одностраничных веб-приложений светло и безоблачно. Однако, даже если предположить, что у нас есть хорошая клиентская база данных навроде DataScript, и мы грамотно организовали потоки данных в приложении, остается вопрос сервера.

Как бы нам этого ни ( Read more... )

не может быть все так плохо, веб-шмеб, девелопмент, инструментарий, формула успеха

Leave a comment

Comments 75

orleanz March 1 2015, 15:57:21 UTC
Почему сложно генерить фейковый статичный сайт для поисковиков, полностью автоматически?

Reply

tonsky March 1 2015, 16:33:01 UTC
Фейковый - потому что надо будет править в двух местах, и версии быстро расползутся. Плюс гугл вроде как наказывает за нестыковки между юзерским контентом и тем, что видит бот.

Полностью автоматически - это как? Вопрос, собственно, только в технологии.

Reply

lelf March 1 2015, 17:10:08 UTC
В гугловской документации все написано. Отдавать ботам выхлоп htmlunit например.

Reply

tonsky March 1 2015, 17:55:32 UTC
ну это все-таки способ со штанами через голову, эмуляцией js-рантайма, лишними походами в rest api на localhost. Вариант героический, но идиотский

Reply


ext_3034700 March 1 2015, 16:32:16 UTC
Или скорее эта штука начнет нормально работать https://developers.google.com/webmasters/ajax-crawling/

Reply

tonsky March 1 2015, 16:33:53 UTC
Как вариант - подождать пару лет, да. Пока вроде не работает, по крайней мере сайты хуже ранжируются

Reply

lelf March 1 2015, 17:12:33 UTC
> хуже ранжируются

Есть примеры? Насколько я помню они говорили, что мол именно из-за single-page-app ранг никогда ниже не будет

Reply

p1r4nh4 March 1 2015, 17:17:50 UTC
Да куча примеров, гугл за асинхронную подгрузку контента наказывает очень сильно. Если смотреть по запросам, где конкуренция невысокая - там ок, а в более-менее популярных - очень жестко, можно из первых мест вылететь на вторую страницу. Частично это из-за скорости, наверное, а частично хз почему.

Reply


soloviewoff March 1 2015, 17:04:40 UTC
> Если согласиться, что естественно не держать никакой view логики на сервере (включая тупые параметры REST-концов типа sort=name&order=asc, которые относятся только к вьюхам, вьюхам, вьюхам), роль сервера становится сильно непонятной.

Сортировка и фильтрация на сервере нужны, чтобы pagination / инкрементальная подгрузка работали нормально, не?

Reply

tonsky March 1 2015, 18:01:27 UTC
сортировка и фильтрация прекрасно базой отработаются, нахрена тут посредник в виде сервера?

Reply

soloviewoff March 1 2015, 18:17:33 UTC
База это тоже сервер в некотором смысле. Ну т.е. речь не идет о том, что параметры сортировки и фильтрации не должны уходить с клиента, вопрос о том, куда они уходят. ОК, я не понял этого.

Reply

tonsky March 1 2015, 18:19:20 UTC
Ага, сервер это сервер-апп так сказать, бэкенд что ли

Reply


p1r4nh4 March 1 2015, 17:28:40 UTC
> как выковырять весь свой динамизм из веб-приложения, всякие onClick и onChange

Это, кстати, ваще не проблема. Ну висят там себе у реакта хендлеры, и что? Отрендерилось и отдалось, всë ок.

Reply

bormotov March 1 2015, 17:46:01 UTC
видимо имелось в виду, что переходы могут быть через эти штуки сделаны, и робот по ним не перейдет.

Reply

p1r4nh4 March 1 2015, 17:47:58 UTC
А, да, блин. Спасибо, вовремя осознал. :)

Reply

tonsky March 1 2015, 18:15:32 UTC
Ну или у тебя на onMount там следующий ajax-запрос повешан. Его во-первых надо в таком случае на сервере как-то из этого хэндлера достать и исполнить. А во-вторых получается что надо по-честному всю эту балалайку с virtual dom честно отыграть, с событиями и прочим, «как будто правда в браузере»

Reply


ermouth March 1 2015, 18:40:20 UTC
http://cloudwall.me - ещё пример no backend, типа hoodie, сразу со встроенной IDE есчо.

Насчёт изоморфоности - тут у комьюнити en masse наблюдается серьёзное недопонимание, _что именно_ должно быть изоморфным и зачем это нужно вообще. Это то, что ты назвал «туманно очерченным».

Изоморфизм по html-представлению - это полная ерунда, потому что свет клином на HTML не сошёлся. На клиенте может быть обычный winform exe-шник или iOS app, это раз. Индексация гуглом состояний UI приложения нахрен низачем вообще не нужна, это два.

В самом деле, достаточно изоморфизма по данным и валидаторам. Для клиентских веб-фреймворков тогда задача звучит так:

Как, имея документ и описание приложения, узнать, мог ли этот док получится из этого приложения, и что бы сказало приложение, если в него засунуть такой док. Всё это не запуская само приложение. Это с учётом того, что внутрь приложения могут быть встроены другие приложения, оно может данные подгружать, и прочая, и прочая ( ... )

Reply

p1r4nh4 March 1 2015, 18:51:09 UTC
> Индексация гуглом состояний UI приложения нахрен низачем вообще не нужна, это два.

Это если у тебя админка энтерпрайзная, да. А если магазин?

Reply

ermouth March 1 2015, 19:04:03 UTC
Гугл должен проиндексировать вашу базу, и для этого ему надо эту базу скормить в формате HTML.

По-хорошему, это не имеет прямого отношения к состоянию UI приложения.

Reply

zupernintendo March 2 2015, 09:23:34 UTC
Магазин как single app? но зачем?
Каталог товаров в статику в html наебашили, отдает через nginx, сайт летает и гугл его индексирует ок. Подрубили js-скрипты в страницу - там уже делаем чо хош. Кому к примеру нужна индексация корзины, избранное и все такое из личного кабинета? Думаю что нахер не нужна.

Reply


Leave a comment

Up