Реализация маршрутизации UI5: Express.js против функциональности маршрутизации SAPUI5 - PullRequest
0 голосов
/ 02 февраля 2019

В стандартном одностраничном приложении (SPA) я бы реализовал логику маршрутизации с Express.js .Но какой подход я должен использовать в среде SAPUI5 ?Стоит ли полагаться на sap.ui.core.routing.Router и sap.m.routing.Router модулей маршрутизации SAPUI5 или реализовывать такие функции с Express.js * * 1023

1 Ответ

0 голосов
/ 03 февраля 2019

Я думаю, что вы слегка путаете понятия маршрутизации.Попробуем их немного пояснить.


Express - это серверная библиотека Node.js для построения HTTP-интерфейсов.В этом контексте маршрутизация относится к сопоставлению входящего запроса с функцией обработчика (например, на основе шаблонов URL).Затем функция обработчика должна генерировать HTTP-ответ на основе входящего запроса (статус, заголовки, тело и т. Д.).Это аналогично Spring @RequestMapping, JAX-RS @Path, маршрутизации Rails и т. Д.

// Express route
// all GET requests on the / URL will be handled by this function
// which in turn sends back a plain text "Hello world!" response
app.get('/', (req, res) => res.send('Hello World!'))

Пример запроса на сопоставление для вышеуказанного кода: GET http://localhost:3000/.


UI5 - это платформа для создания одностраничных приложений на стороне клиента.Как вы упомянули, он имеет встроенный маршрутизатор на основе хеша.В этом контексте маршрутизация означает сопоставление текущего местоположения браузера с видом внутри вашего SPA.Обычно (но не всегда) это делается через хеш, как это делает UI5, то есть через часть URL после символа #.Это используется, потому что изменения URL, которые влияют только на хеш, не заставляют браузер загружать новую страницу.Что, в свою очередь, гарантирует, что контекст JavaScript не будет уничтожен + воссоздан, а ранее загруженные ресурсы по-прежнему доступны.Это аналогично React Router, Angular Router, мифриловой маршрутизации и т. Д.

  // UI5 router config
  // it first defines where are your views (in the sap.ui.demo.nav.view "package")
  // and where the views should be rendered (inside the pages of the app control)
  // lastly, it defines one route, which matches the /home URL inside the app to
  // the Home view.
  "routing": {
     "config": {
        "routerClass": "sap.m.routing.Router",
        "viewType": "XML",
        "viewPath": "sap.ui.demo.nav.view",
        "controlId": "app",
        "controlAggregation": "pages"
     },
     "routes": [{
        "pattern": "/home",
        "name": "appHome",
        "target": "home"
     }],
     "targets": {
        "home": {
           "viewId": "home",
           "viewName": "Home"
        }
     }
  }

Пример соответствия местоположения для вышеуказанного конфига: http://localhost:3000/index.html#/home.


InПо сути, если вы хотите создать приложение UI5 с бэкэндом Node.js., вы, скорее всего, будете использовать оба варианта:

  • Экспресс-маршрутизация для построения серверных REST API.
  • UI5-маршрутизация для обработки навигации внутри вашего пользовательского интерфейса.

Надеюсь, это обеспечит некоторую ясность.


Позднее редактирование: я пропустил одну вещь: рендеринг на стороне сервера .Это может еще больше запутать воду, но в контексте UI5 это все равно не может быть сделано (пока) легко.

...