Подтвердить что ты не робот

Как Sails.js обслуживает приложение, созданное Yeoman

Я новичок в Sails.js, и я очень взволнован этим. Это отличный инструмент для создания API. Я также работаю некоторое время, когда Yeoman создал одностраничные приложения (jquery или angular), и они отлично подходят для логики на стороне клиента.

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

Я ищу способ сочетания двух. Я хочу, чтобы Sails.js служил статическим активам веб-приложения и загружал его файл index.html(вместо homepage.ejs). Я также хочу, чтобы среда разработки (grunt, live-reload работать так, как должна).

Я попытался создать проект yoman внутри папки с ресурсами и перенаправил макет в index.html, но у него есть несколько проблем:  - Я не могу разделить между приложением/папкой (во время разработки) и dist/folder (в процессе производства)  - ссылка bower_components нарушена (это относится к /bower _components вместо/assets/app/bower_components)

Я предполагаю, что может быть больше проблем, которые я еще не обнаружил.

Кто-нибудь пытался (и преуспел) комбинировать эти технологии?

4b9b3361

Ответ 1

Вы можете использовать статический index.html вместо homepage.ejs, выполнив следующие шаги:

  • поместите файл index.html в папку с ресурсами.
  • откройте routes.js в папке config и измените код из
    '/': {
       view: 'homepage'
    }

к

    '/': {
       view: false
    }

Папка "Ресурсы" служит в качестве корневой папки на веб-сайте. Если ваш файл "angular.min.js" находится в папке "assets\bower_components\ angular", он будет преобразован в "/bower_components/angular/angular.min.js" в браузере.

Ответ 2

Возможно, это не то, что вы ищете, но есть проект, который я просмотрел некоторое время назад, который, похоже, делает что-то подобное; комбинируя интерфейс (jquery/ angular) + back-end (паруса).

http://sanestack.com/

Основное отличие состоит в том, что в санузле используется эмбер в качестве переднего конца (что может и не быть для вас). Но приятная вещь в том, что генераторы создают соответствующие ресурсы на интерфейсных + back-end проектах одновременно.

По крайней мере, надеюсь, это даст вам некоторые идеи о том, как совместить паруса с интерфейсом проекта.

Ответ 3

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

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

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

В конце концов, когда вам нужно масштабировать приложение и хотите развернуть приложение в кластере экземпляров (скажем, на AWS), вы можете подтолкнуть свои статические активы в ведро S3 и развернуть свой API на экземплярах EC2. Вам не придется передислоцировать ваш API каждый раз, когда вам придется визуально изменить внешний интерфейс. Вы можете обслуживать весь интерфейс от CDN (например, облака AWS), который захватывает активы из одного ведра S3. Экземпляры, обслуживающие ваш API, будут полностью освобождены от накладных расходов на обслуживание статических активов.