Как мне перейти к Ember Route в моем приложении Rails?
У меня очень сложная интерактивная страница как часть приложения на Rails, над которым я работаю, и это действительно SPA
, Я хочу использовать Ember для этого, чтобы у меня был намного более управляемый код. Все, что мне действительно нужно для Rails - это переправлять данные туда и обратно на этой странице. Еще одна причина для использования Ember заключается в том, что у меня нет всех этих отвратительных однострочных шаблонов представления jQuery, написанных на JS (я предпочитаю использовать CoffeeScript).
Я установил и настроил Ember-CLI, следуя инструкциям в README для ember-cli-rails
драгоценный камень. Я создал отдельный макет для любых разделов моего приложения, которые я хочу использовать Ember. У меня есть маршрут для Products
настроить для включения ресурсов Ember JS и CSS. Теперь я вижу сообщение "Добро пожаловать в Ember" на странице этого маршрута в моем приложении Rails.
Но я больше ничего не могу сделать. Я попытался создать раздел "О программе" для этого небольшого приложения Ember, которое называется products
, Проблемы, которые я вижу до сих пор:
- Инициализатор драгоценного камня ember-cli-rails не создает
views
каталог. Это почему? - Я еще не нашел
Ember-CLI
учебник, который не имеет только тонну встроенных предположений.
у меня есть about.js.coffeee
в моем <ember app>/routes
каталог, один в <ember app>/controllers
каталог, один в <ember app>/views
каталог, который я должен был создать, и emblem
шаблон в <ember app>/templates
каталог.
Теперь для действительно основного вопроса. Как мне вызвать этот маршрут в браузере? Если я наберу в маршрут:
http://localhost:3000/products
Я получаю свою страницу Ember, как я должен. Но если я поставлю:
http://localhost:3000/products/about
Затем Rails пытается обработать этот маршрут, конечно. Что совсем не то, что я хочу. Этот шаг отсутствует в уроках, которые я прочитал. Я всегда рекомендовал бы, чтобы учебник был помещен перед мирянами, чтобы найти дыры перед публикацией. Я был бы рад добровольно предложить эту работу, чтобы предложить что-то сообществу.
Как мне перейти к маршруту Ember в моем приложении Rails?
1 ответ
Вы не
В те времена, когда был ember-rails
который позволяет вам настроить ember через конвейер ресурсов Rails.
Вы могли бы сделать это так, чтобы ваш корневой путь в рельсах отображал ровно столько html, чтобы запустить ember. Это было хорошо, и это просто сработало. Но это была довольно плохая идея.
Ember теперь имеет свой собственный процесс сборки через Ember-CLI, поэтому нам не нужны Sprockets или конвейер ресурсов для обслуживания ember и его зависимостей.
Ember также отлично работает, разворачивается только со статическим html-файлом - вы можете просто передать запрос прямо из Apache или NGINX (например, используя mod_rewrite). Для SPA требуется только достаточное количество HTML, чтобы запустить структуру SPA, а затем они извлекают данные для заполнения представлений.
Если вы внедрили свое приложение Ember в Rails, запрос должен был пройти через Rack all и все промежуточное программное обеспечение только для того, чтобы отобразить то, что в основном представляет собой статическую HTML-страницу - это много ненужных накладных расходов.
Отдельные проблемы.
Современный подход состоит в том, чтобы отделить внешний SPA и внутренний API. Они даже могут быть разработаны разными командами. Наличие всего в одном большом репозитории было приятным и удобным, и вы можете просто развернуть его, но разделение проблем делает приложения лучше.
Мало того, что ваше интерфейсное приложение будет загружаться быстрее, если оно не будет работать через Rails. Ваш Rails API будет работать намного быстрее, если он сможет отбросить все части, связанные с обслуживанием ресурсов, сеансов и представлений. Это становится зеленоватой машиной JSON, а не бегущим чудовищем.
Маршрутизация в ember.js
Так что загружай ember server
и получите плагин Ember Inspector. Ваш маршрут должен быть на locahost:4200/about
Сервер разработки ember обеспечит выполнение каждого запроса localhost:4200
отображает страницу index.html.
Если вы попробуете это с отключенным JavaScript, вы заметите, что любой путь на locahost:4200
лайк locahost:4200/foo/bar/baz
будет отображать тот же HTML.
Но обычно Ember анализирует URL-адрес запроса и передает его вашему обработчику маршрута.
Вот как вы объявляете обработчик маршрута в ember.js:
// app/router.js
Router.map(function() {
this.route('about', { path: '/about' });
});
Итак, когда вы locahost:4200/about
,
Эмбер окажет templates/about.hbs
, По состоянию на Ember 2.0 просмотров нет. Вместо этого у вас есть шаблоны и компоненты (например, в Rails).
Ember также загрузит app/routes/about.js
если он существует.