Я думаю, что вы слегка путаете понятия маршрутизации.Попробуем их немного пояснить.
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 это все равно не может быть сделано (пока) легко.