LoopBack leverages Express middleware to make it easy to serve up static content such as web pages.

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

Если вы перешли к этому шагу без выполнения предыдущих, то вам следует выполнить следующие шаги…

Получите приложение (в состояни предшествуещем этому шагу) с GitHub и установите все связи:

$ git clone https://github.com/strongloop/loopback-getting-started.git
$ cd loopback-getting-started
$ git checkout step3
$ npm install

Введение в связующее ПО

LoopBack построен на Express, на одном из самых популярных Node фреймворков.  Объекты верхнего уровня LoopBack приложения, наследует все методы и свойства Express объектов приложени. См Работа с LoopBack объектами.

Перед тем как продолжить, вы должны понять основную концепцию наследованием LoopBack(ом) Express: связующее ПО (middleware).

Связующее ПО (Middleware) это простая JavaScript функция с доступом к объекту запроса (req)  представляющий HTTP запрос, и объекту ответа  прдставляющий HTTP ответ, далее связующее ПО (middleware) - встраиваемый запрос-ответ цикл приложения Express , обычно обозначается перменной с далее идущим именем:

  • Выполнение кода
  • Внесение изминения в запрос и в объект ответа.
  • Завершение цикла запрос-ответ
  • Вызов следующего связующего ПО в стеке

LoopBack связующее ПО такое же как Express связующее ПО, кроме того, что LoopBack добовляет понятие фаз, что позволяет настроить в каком порядке связующее ПО вызывается. Это позволяет избежать одного из сложных аспектов Express: убедится, что связующее ПО запускаеться, тогда, когда должно.

Когда вы создаете приложение с помощью slc loopback, создаеться server/middleware.json  файл, который определяет фазу выполненя связующего ПО. Регистрация нового связующего ПО так же проста, как редактирование этого JSON файла. Разверните этот код, чтоб увидеть как он выглядит.

server/middleware.json

{
  "initial:before": {
    "loopback#favicon": {}
  },
  "initial": {
    "compression": {}
  },
  "session": {
  },
  "auth": {
  },
  "parse": {
  },
  "routes": {
    "loopback#status": {
      "paths": "/"
    }
  },
  "files": {
  },
  "final": {
    "loopback#urlNotFound": {}
  },
  "final:after": {
    "errorhandler": {}
  }
}

Каждый из ключей верхнего уровня middlewre.json определяет промежуточный этап: initialsessionauth, и так далее заканчивается final. Есть также модификаторы, чтоб зарегестрировтаь связующее ПО до и после данной фазы. Это нанмого больше этого, но это охватывает основы.  См Определение связующего ПО для получения более подробной информации.

Изминени или модификация кореного маршрута заданногоп о умолчанию

Приложение как правило необхоимо  для обслуживания статического контента как HTML и CSS файлы, клиентские JavaScript файлы, изображения и другие. Это очень легко сделать  с помощью базового построения LoopBack  приложения. Вы собираетесь настроить приложение, чтобы обеспечить работу с файлами в /client  папке как статическими ресурсами.

Во-первых, вам придется отключить обработчик маршрута по умолчанию, для корневого URL. Вспомним Создание простого API (вы ведь выполняли все о порядку, не так ли?), когда вы загружали корень URL приложения http://localhost:3000/, вы видели как приложение реагирует с простым статус сообщением, наподобии этого:

{"started":"2014-11-20T21:59:47.155Z","uptime":42.054}

Это происходит, потому как базавое приложение имеет  следующую запись  в server/middleware.json:

/server/middleware.json

...
"routes": {
    "loopback#status": {
      "paths": "/"
    }
  },
...

Эта запись говорит, что для любого HTTP  запроса приложения будет возвращать результат [oopback.status()](http://apidocs.strongloop.com/loopback/#loopbackstatus), одного из небольшого набора  встроеного встроенного LoopBack связующего ПО.  Как с Express, кога вы указываете орневой URL, любой запрос, который  нчинается с  этого паттерна  будет вызывать связующее ПО,  тоесть любой  URL запрос будет вызывать его. 

Чтобы отключить это, просто удалите запись ”loopback#status”, или измините его на  чтоб статус связующего ПО вызывался только по пути /status (как это сделано в loopback-getting-started):

...
"routes": {
    "loopback#status": {
      "paths": "/status"
    }
  },
...<

Определение статического связующего ПО

Дале вы должны определить статическое связующее ПО для обеспечения файлов в /client папке.   

Измените server/middleware.json.  Найдите запись “files”:

server/middleware.json

...
  "files": {
  },
...

Добавьте:

...
  "files": {
    "loopback#static": {
      "params": "$!../client"
  },
...

Эти строки определяют статическое связующее ПО которое позволяет приложению обеспечивтаь  работу с файлами в /client папке как статический контент. 

These lines define static middleware that makes the application serve files in the /client directory as static content.   $! символы указывают, что путь относитеьно middleware.json.

Добавление HTML файла

Теперь приложение будет использовать файлы, которые вы поместите в папку /client как статический контент. Тоеть, чтоб увидеть это в действии, добавьте HTML файл в /client. для примера, добавьте файл с именем index.html с данным контентом:

/client/index.html

<head><title>LoopBack</title></head>
<body>
    <h1>LoopBack Rocks!</h1>
    <p>Hello World... </p>
</body>

Конечно вы можите добавить любой статический HTML  для примера.

Запустите его….!

Теперь запустите приложение снова:

$ slc run

Когда вы загрузите http://0.0.0.0:3000/ теперь вместо JSON состояния вы увидите вот это:

Next: В Настройка маршрутизации Express, вы добавите простой обработчик маршрута также, как вы сделали бы это в Express приложении.</div>