Автор оригинала: FreeCodeCamp Community Member.
Стефан Тилков
Хорошо, теперь, когда у меня есть ваше внимание, позвольте мне сказать, что я не ненавижу вашего приложения для одного страницы. Я просто нахожу его очень раздражающим, если только это не очень, очень мало исключительных случаев, которые фактически заслужены развиваться в этом стиле. Поскольку это мало и далеко между, это справедливое предположение, которое ваша не имеет права.
Возможно, ваше приложение для одной страницы отличается, но те, которые я знаю, разбите большую часть функций моего браузера, такие как кнопки назад и вперед, как кнопки, обновление страниц, закладки, отправка ссылки или открытия ссылки в новом окне или вкладке. Они не предлагают никакого способа связать что-то, на что я смотрю. (О, я знаю, что есть исключения для этого правила, но они обычно требуют усилий – намного больше, чем многие разработчики готовы инвестировать). Они раздуты и медленно загружаются, хотя фактическая информация, которую они отображают, и взаимодействие, которое они предлагают, очень просто.
Я просто старый, сварливый парень? Да, но это рядом с точкой. Моя точка зрения состоит в том, что с архитектурной точки зрения, большинство приложений на одиночные страницы являются результатом внесения неправильного выбора и отсутствуют важные возможности.
Моя главная говядина с приложениями с одним страницей или SPA для коротких, заключается в том, что они не «в Интернете». В этой связи они очень похожи на SOAP Web Service. У них есть URI, но только для всего этого, а не для всех этих ценных вещей, которые находятся внутри этого. (Опять же, я знаю, что вы можете построить свой спа-центр по-разному, но большинство людей нет.) Я считаю, что если вы создадите веб-приложение, он должен иметь веб-интерфейс веб-интерфейса, который заслуживает названия, аналогично веб-службе, которая должна иметь что-то делать с Интернетом.
Если это все, кажется вам очень абстрагирующим, подумайте о том, что делает веб в Интернете. Самая важная особенность сети – это то, что вы можете связать с отдельными вещами. Каждая важная концепция в вашем приложении должна быть возможной точки входа. Это позволяет всем, где угодно, использовать его как цель ссылки. Тот факт, что пользователь может двигаться вперед и назад через историю вещей, которые они посетили, не является ошибкой, это важная особенность. Крайне важно, чтобы каждый из этих целей быстро возвращает ответ, потому что любые накладные расходы, которые вы создаете, должны будут оплачены несколько раз. Кнопки задней и передней и передней части не должны перемещаться между приложениями.
Я почти слышу, как вы говорите: «Но мне все равно, что я не забочусь о сети. Я строю приложение, а не веб-сайт. ” Для которого я говорю: погрузитесь вперед, постройте приложение, используя наценные настольные или мобильные операционные системы нативной инструментарии или построить апплет или приложение Flash или Silverlight. Это все хорошо для меня. Я даже не возражаю на создание то же самое, используя браузер в качестве выполнения приложения. Просто осознайте, что когда вы делаете такие вещи, ваше приложение находится в Интернете так же, как если бы вы построили его в качестве апплета Java. Будьте в курсе того, что вы жертвуете.
Это то, где я считаю, что неверный выбор людей. Похоже, что для многих людей создание спа-салона стало синонимом создания современного веб-приложения. Любой, кто критикует этот архитектурный подход, явно не сделал переезд в современный мир. Я не мог не согласиться больше. Люди выбирают спа без осознания того, что они осознают недостатки, включая такие вещи в качестве рамки, которые выходят из технического обслуживания, почти неуправляемую сложность в клиентском кодексе, а также проблемы с производительностью и доступностью.
Но что более важно, они упускают преимущества не выбирая спа. Они не знают о преимуществах альтернативы. Что эта альтернатива тогда? Он состоит в том, чтобы создать классическое веб-приложение, включая рендеринг Server-Side HTML, и использовать JavaScript только с экономностью, для улучшения функциональности браузера, где это возможно. В этом архитектурном подходе абсолютно ясно, что ответственность за реальную бизнес-логику полностью проживает на сервере. Это включает в себя состояние Server-Side Machine, которая регулирует переходы между страницами. И снова это не ошибка, а функция: это то, что позволяет быстрое изменение на стороне сервера, чтобы немедленно вступить в силу, повсюду – включая другие виды клиентов, которые вы можете в конечном итоге вступить в здание в дополнение к вашему веб-интерфейсу. Бизнес-логика не принадлежит к клиенту, если вам не нравится, если вам не понадобится, поддерживайте одну и ту же логику во всех видах клиента, которые вы поддерживаете (в дополнение к поддержанию его на сервере, конечно же – помните, что вы никогда не можете доверять любому клиенту). С точки зрения Server-Side, лучшая архитектура, которую вы можете иметь, это тот, который вы можете (и должен) построили десять лет назад: после принципов отдыха, в том числе о бездействии и идентификацию ресурсов.
Некоторые люди возражают против этого, потому что они верят, что SPA дает вам лучшую архитектуру. Я не согласен: с спа, ваша архитектура, как правило, предложена ваша структура, потому что с веб-перспективы ваш SPA – это единственная вещь, которую связаны с. С несомненным подходом (который я собираюсь позвонить ROCA Отныне), архитектура, регулирующая ваши приложения, является одной из самих веб-сайтов. Опять же, тот факт, что ваш сервер берет на скучную задачу рендеринга HTML, это актив, а не бремя. Я, например, не обладаю много доверия к стабильности и долгосрочной технической вергодности каких-либо существующих в настоящее время javaScript с клиентами JavaScript.
Фантастический пример проблем, созданных SPA-подходом, является параллелизация работы. Если у вас есть команда нескольких человек, или не дай Бог, несколько команд работают на одном спа-салоне, вам нужно придумать хороший способ поддержать это. Вместо этого вы можете просто у каждого из этих команд создавать собственное веб-приложение. Каждая из этих приложений может быть подключена к каждому другому, построенному одновременно по той же организации (а также каждому другому веб-приложению, проживающую в любом месте, если вы хотите) – на самом деле полагаться на прочность на серверу.
С точки зрения доступности, рендеринг семантического HTML на стороне сервера обеспечивает поддержку вне коробки. Существует только ограниченный набор вещей, которые вы можете сделать с HTML, и снова это функция, а не ошибка.
Вы можете решить некоторые из этих проблем в спа-салоне. Но это требует усилий. С ROCA подходом у вас есть известная, чрезвычайно зрелая, проверенная архитектура, чтобы положиться.
Конечно, это совсем не говорит, что вы не используете JavaScript и Ajax. Я полностью осознаю, что вы не можете построить современный пользовательский интерфейс без JavaScript, чтобы включить некоторые модификацию в странице. Но это необязательное улучшение, а не фактор вождения вашей архитектуры. (Даже с точки зрения отдыха, используя JavaScript идеально подходит: на самом деле упоминается как необязательное ограничение в остальной диссертации как «Код по требованию». Но его предполагаемая цель – служить средствами для расширения браузера для поддержки содержимого, которое он не поддерживает вроду.) Почти в каждом случае я знаю, ваш SPA имеет нулевую выгоду для пользователя, и вместо этого есть только положительные стороны для обнимания функций браузера. Вы можете поверить, что есть преимущества для разработчика, но в первую очередь вы должны поставить тех, кто позади интереса пользователя, а во-вторых, они в основном полагают, особенно в долгосрочной перспективе.
Так что постройте свои поставки, я не против, пока мне не нужно их использовать. Просто будьте в курсе того, что вы отказываетесь.
Оригинал: “https://www.freecodecamp.org/news/why-i-hate-your-single-page-app-f08bb4ff9134/”