Я близок к завершению этапа создания прототипа / подтверждения концепции для побочного проекта, над которым я работаю, и пытаюсь принять решение о более масштабных решениях по разработке приложений. Приложение представляет собой систему управления проектами, ориентированную в большей степени на процесс быстрой разработки. Одно из решений, которые мне нужно принять, заключается в том, стоит ли использовать традиционное многостраничное приложение или одностраничное приложение.
В настоящее время мой прототип представляет собой традиционную многостраничную настройку, однако я искал backbone.js, чтобы очистить и применить некоторую структуру к моему коду Javascript (jQuery). Кажется, что хотя backbone.js можно использовать в многостраничных приложениях, он больше подходит для одностраничных приложений. Я пытаюсь составить список преимуществ и недостатков использования одностраничного подхода к разработке приложений. Пока что у меня есть:
преимущества
Все данные должны быть доступны через какой-то API - это большое преимущество для моего варианта использования, так как я все равно хочу иметь API для своего приложения. В настоящее время около 60-70% моих вызовов для получения / обновления данных осуществляется через REST API. Создание одностраничного приложения позволит мне лучше протестировать мой REST API, поскольку само приложение будет его использовать. Это также означает, что по мере роста приложения сам API будет расти, поскольку именно это приложение использует; нет необходимости поддерживать API в качестве дополнения к приложению.
Более отзывчивое приложение - поскольку все данные, загружаемые после начальной страницы, сводятся к минимуму и передаются в компактном формате (например, JSON), запросы данных должны, как правило, выполняться быстрее, и сервер будет выполнять немного меньше обработки.
Недостатки
- Дублирование кода - например, код модели. Я собираюсь создавать модели как на стороне сервера (в данном случае на PHP), так и на стороне клиента в Javascript.
- Бизнес-логика в Javascript - я не могу привести конкретные примеры того, почему это было бы плохо, но мне просто не по вкусу иметь бизнес-логику в Javascript, которую может прочитать каждый.
- Утечки памяти Javascript - поскольку страница никогда не перезагружается, возможны утечки памяти Javascript, и я даже не знаю, с чего начать их отладку.
Есть и другие вещи, которые являются обоюдоострыми мечами. Например, в одностраничных приложениях данные, обрабатываемые для каждого запроса, могут быть намного меньше, так как приложение будет запрашивать минимальные данные, которые ему необходимы для конкретного запроса, однако это также означает, что может быть намного меньший запрос к сервер. Я не уверен, хорошо это или плохо.
Каковы некоторые из преимуществ и недостатков одностраничных веб-приложений, которые я должен учитывать при принятии решения о том, как мне поступить для моего проекта?