Почему форумы Discourse требуют JS?

Это требует некоторых пояснений.

Для начала:

:thinking: :eyes: GitHub - discourse/discourse: A platform for community discussion. Free, open, simple. · GitHub

На самом деле Discourse в основном написан на Ruby on Rails, и (согласно данным GitHub) только четверть его кода — это JavaScript, хотя это критически важная четверть, которая доминирует на стороне клиента.

Причины, по которым Discourse и другие современные веб-сайты (веб-приложения) используют JavaScript, следующие:

  • Нагрузка на сервер: JavaScript снимает с сервера значительную часть работы, что помогает сайту лучше масштабироваться (эй, почему бы не заставить компьютер пользователя разделить часть нагрузки?)
  • Пропускная способность: хотя первоначальная загрузка может занять немного больше времени из-за необходимости загрузить JavaScript, последующая подгрузка данных происходит ГОРАЗДО быстрее и требует НАМНОГО меньше пропускной способности (если бы завтра во всём мире исчез JavaScript, интернет, возможно, остановился бы?), поскольку передаются только данные, а не вся разметка и макет всех элементов интерфейса. Таким образом, всё выполняется в сети гораздо быстрее, что позволяет работать даже при низкоскоростных соединениях, например, при плохом мобильном интернете.
  • Интерфейс: улучшает динамичность пользовательского интерфейса, делая опыт использования лучше (например, при нажатии кнопки обновляется только часть экрана — без полной перерисовки всего браузера).
  • Это стандарт: JavaScript является стандартом во всех современных браузерах, включая мобильные, поэтому достаточно написать код один раз, и он приобретёт качества нативного приложения на большинстве устройств.
  • Разделение ответственности: позволяет отделить процессы сервера от необходимости рендеринга интерфейса (обычно), что упрощает миграцию или поддержку других фронтендов, которые могут не быть основаны на JavaScript (или даже HTML). Приложение для iOS, кто-нибудь?

Я уверен, что есть множество других преимуществ, но это основные из них.

12 лайков