现代应用程序通常以“混合”或“混合”方式同时使用客户端路由和服务器端路由,因此很难在这两种技术之间划分界限。
为了更好地理解何时以及如何使用服务器端路由和客户端路由,您可能需要弄清楚当您有一个用于管理大型制造公司的大型应用程序时会发生什么(这在现实世界中并不经常发生。这只是一个有用的例子)。
在这些情况下,您可能会有不同的人(具有不同的角色),他们看到此复杂环境的不同部分(不同的方面或域)。例如,工程师将看到具有许多数字文档的文件服务器,而在公司食堂工作的人将看到要准备的菜单,工作时间表和商店。这些是完全不同的应用程序“领域”,需要完全不同的UI,因此为每种类型的用户提供不同的SPA是有意义的。
在这种情况下,您可以使用服务器端路由向特定用户提供特定的UI(SPA),而可以使用客户端路由来浏览此UI(并加载数据)。将这些SPAs视为专用于特定“任务”的“仪表板”或“控制面板”,由特定类型的“专业人员”使用。
例如,您可以为所有工程师设置/myapp/engineering路由,并为所有食堂工作人员设置/myapp/canteen。这些URL将代表特定的域,并为特定类型的用户提供特定的仪表板。这些URL将在服务器端进行管理。
相反,您将使用客户端路由在每个仪表板内进行导航,根据需要加载数据并重新配置UI。
当然,您的应用程序可能还具有RESTful API,用于获取它们所需的数据。 REST API属于服务器端管理,以执行其工作(即使它们未与实际的HTML页面相关联),仅由您的SPA“幕后”调用。它们通常被保留在一个分离的“域”中,例如/myapp/api。
静态网页(例如“联系人”页面和“关于”页面)也是如此,通常存储在/myapp/static文件夹(或“域”)中,并由服务器端管理(此文件夹或“域”可以 - 并且经常是 - 托管在不同的服务器上)。
因此,您应该使用服务器端路由来将应用程序域与其他域分开,并使用客户端路由在每个域内进行导航。