Ember.js или Backbone.js для резервного бэкэнд

Я уже знаю, что ember.js - более тяжелый подход, в отличие от backbone.js. Я прочитал много статей обо всех.

Я спрашиваю себя, какая структура работает проще, чем интерфейс для поддержки рельсов. Для backbone.js я видел разные подходы к вызову backend. Для ember мне кажется, что мне нужно добавить еще несколько библиотек, таких как "данные" или "ресурсы". Почему для этого существуют две библиотеки?

Так какой лучший выбор? Существует множество примеров для подключения интерфейса с бэкэндом. Какой хороший рабочий пример для поддержки backend rest:

URI:../restapi/topics ПОЛУЧИТЬ auth credentials: admin/secrect формат: json

Ответ 1

Вопреки распространенному мнению Ember.js не является "более тяжелым подходом" к Backbone.js. Это разные инструменты, нацеленные на совершенно разные конечные продукты. Ember sweet spot - это приложения, в которых пользователь будет держать приложение открытым в течение длительных периодов времени, возможно, весь день, а взаимодействие с представлениями приложения или базовыми данными вызывает глубокие изменения в иерархии представлений. Ember больше, чем Backbone, но благодаря Expires, Cache-Control это имеет значение только при первом загрузке. После двухдневного ежедневного использования дополнительные 30k будут омрачены переносом данных, раньше, если ваш контент содержит изображения.

Магистраль идеально подходит для приложений с небольшим числом состояний, где иерархия представлений остается относительно плоской и где пользователь имеет тенденцию обращаться к приложению редко или на более короткие промежутки времени. Магистральный код становится коротким и сладким, потому что он делает предположение, что данные, поддерживающие DOM, будут выброшены, и оба элемента будут собраны в память: https://github.com/documentcloud/backbone/issues/231#issuecomment-4452400 Магистраль меньше размер также делает его более подходящим для кратких взаимодействий.

Приложения, которые пишут в обеих фреймворках, отражают эти применения: приложения Ember.js включают Квадратную веб-панель, Zendesk (по крайней мере, агент/билетный интерфейс) и планировщик Groupon: все приложения, которые пользователь может потратить весь день на работу.

Консольные приложения больше сосредоточены на кратких или случайных взаимодействиях, которые часто представляют собой лишь небольшие разделы более крупной статической страницы: airbnb, Академия Хана, Карта и списки Foursquare.

Вы можете использовать Backbone для создания приложений, для которых цели Ember (например, Rdio): a) увеличивая объем кода приложения, за который вы отвечаете, чтобы избежать таких проблем, как утечки памяти или события зомби (я лично не рекомендую этот подход) или b) путем добавления сторонних библиотек, таких как магистраль .Marionette или Coccyx - есть много таких библиотек, которые все пытаются обеспечить аналогичную перекрывающуюся функциональность, и вы, вероятно, в конечном итоге соберете свой собственный пользовательский интерфейс рамки, которая больше и требует больше кода клея, чем если бы вы только что использовали Ember.

В конечном итоге вопрос о том, "что использовать", имеет два ответа.

Во-первых, "Что я должен использовать, как правило, в своей карьере": оба, точно так же, как вы в конечном итоге изучите какие-либо инструменты, характерные для работы, которые вы захотите сделать в будущем. Вы никогда не спросите "Магистраль или D3?"; "Магистраль или Эмбер" - тоже глупый вопрос.

Во-вторых, "Что я должен использовать, в частности, в своем следующем проекте": зависит от проекта. Оба будут одинаково легко обмениваться данными с сервером Rails. Если ваш следующий проект включает в себя сочетание страниц, сгенерированных сервером с так называемыми "островами богатства", предоставляемыми JavaScript, используйте Backbone. Если ваш следующий проект выталкивает все взаимодействие в среду браузера, используйте Ember.

Ответ 2

Чтобы дать короткий, упрощенный ответ: для бэкэнд RESTful на данный момент вы должны использовать Backbone.

Чтобы дать более сложный ответ: это действительно зависит от того, что вы делаете. Как говорили другие, Ember предназначен для разных вещей, и обратится к другому набору людей. Мой короткий ответ основан на вашем включении требования RESTful.

В настоящий момент Ember-Data (который, по-видимому, является механизмом сохранения по умолчанию в Ember), далек от производства. Это означает, что в нем имеется немало ошибок и, в решающей степени, не поддерживает вложенные URI (например,/posts/2/comments/4556). Если REST является вашим требованием, тогда вам придется обходить это время, если вы выберете Ember (т.е. Вам придется либо взломать его, подождать, либо реализовать что-то вроде Ember-Data с нуля самостоятельно, либо использовать не - RESTful URI). Ember-Data не является строго частью Ember, поэтому это вполне возможно.

Основные различия между ними, помимо размера, в основном:

Ember пытается сделать как можно больше для вас, так что вам не нужно писать столько кода. Это очень иерархично, и если ваше приложение также очень иерархично, оно, вероятно, будет хорошо подходить. Поскольку это так много для вас, может быть трудно понять, откуда исходят ошибки, и объяснять, почему происходит неожиданное поведение (есть много "магии" ). Если у вас есть приложение, которое естественно вписывается в тип приложения, которое Ember ожидает от вас, но это вряд ли будет проблемой.

Магистральная система пытается сделать все возможное для вас, чтобы вы могли рассуждать о том, что происходит, и построить архитектуру, которая подходит вашему приложению (а не создавать приложение, которое соответствует архитектуре используемой структуры). Гораздо легче начать работу, но, если вы не будете осторожны, вы можете быстро избавиться от беспорядка. Он не делает такие вещи, как вычисленные свойства, автоматически развязывающие события и т.д. И оставляет их вам, поэтому вам нужно будет реализовать много вещей самостоятельно (или, по крайней мере, выбрать библиотеки, которые делают это для вас), хотя это скорее всего.

Обновить. Похоже, что в последнее время Ember теперь поддерживает вложенные URI, поэтому я предполагаю, что вопрос сводится к тому, насколько вам нравится магия, и действительно ли Ember подходит, архитектурно, для вашего приложения.

Ответ 3

Я думаю, что ваш вопрос скоро будет заблокирован:) Есть несколько советов между двумя фреймворками.

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

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

Вы также можете слушать этот подкаст, где Джереми Ашкенас, создатель Backbone, и Yehuda Katz, член Ember, имеют приятное обсуждение