Почему вы должны заботиться о клиентских приложениях?

Вашему приложению нужно много интерактивности с пользователем? Вы хотите сделать для них лучший пользовательский опыт и не терять много времени на дерьмовую интеграцию Javascript с серверной частью? Устали переделывать серверную часть только потому, что поток функции изменился? Если да, то это для вас.

Уже недостаточно создавать веб-приложения для полной загрузки страниц, а затем постепенно улучшать их, чтобы они вели себя более динамично. — Престол JS.

Имея это в виду, вы должны переосмыслить способ создания веб-приложений, чтобы добиться большей интерактивности и удобства для пользователей.

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

Я укажу на некоторые хорошие и плохие стороны этого подхода к созданию приложения на стороне клиента. Таким образом, вы сможете сделать выводы и принять собственное решение.

Фреймворки Javascript

Существуют действительно отличные фреймворки Javascript, которые вы можете использовать для разработки своего клиентского приложения. Некоторые из них имеют отличное сообщество, другие не так просты в обслуживании, а некоторые нарушают совместимость API без пути обновления. Но есть надежда, поэтому, пожалуйста, оглянитесь вокруг, чтобы найти лучший вариант для вас и вашего проекта.

Отказ от ответственности: я использую Ember JS для разработки своих клиентских приложений, поэтому, очевидно, я буду говорить об этом. Совсем немного, обещаю.

Хорошо

MVC во внешнем интерфейсе

Это отличная и важная вещь при создании клиентских приложений. С его помощью вы сможете разделить, что имеет дело с данными, что делает для их представления и что обрабатывает то, что запрашивает пользователь.

Ember, вероятно, наиболее близок к оригинальному MVC, использовавшемуся в Smalltalk в 70-х. — Том Дейл

API

Поскольку ваше приложение находится в клиенте, вам нужен способ получить информацию с вашего сервера и отправить ее вашему клиенту. Вы делаете это через API.

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

Наличие API, работающего и используемого во внешнем интерфейсе, открывает возможность подготовить весь внутренний интерфейс для создания собственного мобильного приложения, например, приложений для Android и iOS.

Позволяет легко полностью изменить поток функции, не завися от серверной части.

Допустим, у вас есть большая форма, созданная в приложении Rails, и вам нужно разбить ее на несколько шагов, чтобы пользователю было проще ее заполнять. Вам нужно будет изменить много вещей на вашем сервере только потому, что поток этой функции изменился.

Ваш сервер должен заботиться только о бизнес-логике, сохранении данных, их обслуживании и защите. Не то, как пользователь вводит данные в форму. Таким образом, его разделение позволяет легко полностью изменить поток функции, не завися от изменений на бэкэнде. Вы сможете двигаться быстрее, потому что вы не зависите от серверной части для предоставления функции.

Многоразовые и совместно используемые компоненты

Сделать вещи проще для совместного использования в качестве компонентов в вашем приложении очень важно. Это поможет вам поддерживать согласованность вашего приложения, что очень важно для получения доверия пользователей.

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

Ремонтопригодность

Поддержка приложений, которые смешаны с серверной и внешней частью, иногда может быть большой головной болью **.

Наличие шаблонов для вашего внешнего интерфейса, таких как MVC, может сильно помочь вам добиться хорошего рабочего дня. Наличие повторно используемых компонентов также пригодится, когда вы уточняете или переделываете программные части вашего приложения.

Тестирование

Может быть очень сложно протестировать и убедиться, что ваше взаимодействие с пользователями работает правильно, не делая это вручную. Вы, наверное, знаете это по знанию.

Использование шаблонов и компонентов во внешнем интерфейсе очень поможет вам в модульном тестировании вещей, которые раньше было очень сложно протестировать, и, безусловно, повысит качество вашего программного обеспечения. Сопровождение и обновление пакетов станут проще, поскольку у вас есть тесты, гарантирующие, что ваше приложение не сломается.

Плохой

Жертвовать скоростью при запуске

В начале ваша команда, вероятно, не будет предоставлять ту же функцию в то же время, к которому они привыкли. Это потому, что им нужно будет учиться и искать разные вещи, но это становится лучше, когда они знают, что делают.

Жертвовать SEO по умолчанию

Поскольку все ваше приложение построено на Javascript, и не все поисковые роботы могут выполнять JS для чтения того, что написано на странице, вы потеряете некоторое время, выясняя, как заставить это работать правильно.

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

Прогрессивное улучшение

Мне особо нечего здесь сказать, но у меня есть отличная ссылка, по которой вы можете прочитать и сделать собственные выводы.

Подведение итогов

Как вы могли видеть, у нас есть много хороших вещей и несколько плохих вещей, которые вы можете обойти. Если вы выберете тот же фреймворк, что и я, вы можете бесплатно получить один из двух плохих мыслей. :D

Создание клиентских приложений иногда может быть очень трудным и напряженным (возможно, вам придется несколько раз иметь дело с Internet Explorer), но я думаю, что компромисс полностью оправдан.

Вы можете очень легко создать отличный пользовательский опыт с высокой ремонтопригодностью, и это важно.

Первоначально опубликовано на http://blog.josemarluedke.com/posts/why-you-should-care-about-client-side-apps