UI5路由实现:Express.js与SAPUI5路由功能

问题描述 投票:1回答:1

在一个通用的单页应用(SPA),我会实现与Express.js路由逻辑。但是,我应该SAPUI5环境中使用什么方法呢?我应该依靠SAPUI5的sap.ui.core.routing.Routersap.m.routing.Router路由模块或Express.js实现这样的功能?

express routing sapui5 url-routing single-page-application
1个回答
3
投票

我觉得你稍微有一些混乱路由概念。让我们尝试澄清他们一点点。


Express是一个服务器端的Node.js库,用于构建HTTP接口。在这种情况下,路由是指匹配的输入请求到一个处理函数(基于URL模式例如)。然后,处理程序函数必须产生基于所述传入的请求(状态,标题,主体等)的HTTP响应。这是类似于春天@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的情况下不被破坏+重新创建和先前加载的资源仍然可以访问。这是类似于阵营Router,角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


从本质上说,如果你想建立一个Node.js的后端一个UI5应用程序,你很可能会同时使用:

  • 快速路由建立服务器端的REST API。
  • UI5路由处理你的用户界面中导航。

希望这提供了一些清晰。


后来编辑:有一件事我忘了server side rendering。这可能更浑水摸鱼,但在UI5的情况下,它不能做(但)很容易反正。

© www.soinside.com 2019 - 2024. All rights reserved.