javascript - 如何从 Angular 路由中排除路由?

标签 javascript angularjs node.js express routes

考虑一个使用 angular.js 路由的应用程序。假设有人想要将路由 /this/that 委托(delegate)给 Angular,并且这些在应用程序中的编码类似于:

function($routeProvider) {
    $routeProvider
      .when('/this', { //..})
      .when('/that', { //::})
      .otherwise({
          redirectTo: '/this'
      });

如果使用 HTML5 模式,则必须配置服务器端路由才能委托(delegate)给 Angular。我现在拥有的是:

app.get('/*', function(req,res){
    res.render('home.ejs');
    });

现在,我想要一些路由,例如 /those,由服务器直接处理。在当前配置中,/those/*拦截。我知道一个可能的解决方案是枚举服务器中的所有 Angular 路线,即:

app.get('/this', function(req,res){
        res.render('home.ejs');
        });
app.get('/that', function(req,res){
        res.render('home.ejs');
        });

这可以工作,但是丑陋且不稳定,因为很容易忘记某些内容并产生错误。

问题: 我想知道是否有办法将 /* 留在服务器端路由器中,并指定这不应包含 /those,为此要实现特定的 app.get('/those',..)

最佳答案

解决方案是配置 Express 服务器路由,类似于:

app.get('/those',..);
...
app.get('*', function(req,res){
    res.render('home.ejs');
    });

其中路由'*'位于路由文件的最末尾。这样 '*' 仅拦截文件前面未明确指定的路由。

关于javascript - 如何从 Angular 路由中排除路由?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26764686/

相关文章:

javascript - 使用 FlightJS 的事件流不正确

javascript - fadeOut 然后改变图像

node.js - Nodejs 总是安装 4.2.6

javascript - 调整浏览器大小时调用函数 Angular 1.5(组件)

javascript - 无法停止 AngularJS 中的路由 Controller 之间的事件传播

node.js - 如何使用多个路由器文件

javascript - socket.io 未发送到客户端

javascript - Passport js,cookie过期后无法登录

javascript - 没有JS的内联和固定之间的自动转移?

javascript - 在解析中创建或更新对象