Express.js 或 Angular 用于在 MEAN 应用程序中处理路由?

Posted

技术标签:

【中文标题】Express.js 或 Angular 用于在 MEAN 应用程序中处理路由?【英文标题】:Express.js or angular for handling routes in a MEAN application? 【发布时间】:2014-09-11 05:00:17 【问题描述】:

我对 Nodejs/express/angular 的一切都是全新的,我刚刚遇到了一个困扰我的问题。

当你有一个 MEAN 堆栈时,似乎Express.jsAngular 都可以处理路由。

角度

例如,如果我在 Angular 中定义一个路由,我可以这样做:

var app = angular.module("app", []).config(function($routeProvider) 
    $routeProvider.when('/login', 
        templateUrl: '/templates/login.html',
        controller: 'LoginController'
    );

    $routeProvider.when('/front', 
        templateUrl: '/templates/front.html',
        controller: 'FrontController'
    );


    $routeProvider.otherwise(redirectTo: '/front')
);

但我可以使用 express.js

app.get('/',function(req,res)
    res.sendfile('templates/angular.html');
);

所以我的问题是

什么时候使用角度路由,什么时候使用快速路由?

(我可能会错过一些非常明显的东西,但我希望你能指出)

【问题讨论】:

【参考方案1】:

这两个在单个页面应用程序中具有不同的用途。

该应用程序将执行所有 CRUD(您创建/读取/更新/删除内容的端点,例如:项目、用户、账单等)。它还会做所有的身份验证工作(如/login/register)。

所有这些都需要路由,因为您希望像 /api/users 这样的东西来吸引所有用户。所有这些路由,AKA CRUD 路由和身份验证路由都进入express.js 路由器。为什么在那儿?因为那些是后端的路由。

另一方面,您有 Angular 应用程序,其中包含应用程序的可视部分,并且您需要一些路由。您希望/ 指向您的家,您可能希望/users 有一个页面来列出您的用户,甚至希望/users/add 有一个页面,其中包含用于添加新用户的表单。

你可以这样看:

后端路由(快速路由):这些是最终用户不必知道甚至使用它们的路由(您的 Angular 应用程序将使用它们与后端通信以处理其数据,但最终用户不会将它们直接放在浏览器上))。

前端路由(角度路由):是映射到应用程序不同页面的路由,因此,最终用户可以使用它们直接访问应用程序的某些部分。

【讨论】:

Express.js 可以处理除了 crud 之外的渲染模板,这意味着 Angular 没有用。例如。在 php 中,我可以使用 Slim 框架来编写 api 路由,或者我可以使用它创建一个完整的 Web 应用程序。 这是一个旧答案,但无论如何。向用户隐藏后端快速路由以便他们在浏览器中访问这些路由时返回 404 的最佳方法是什么? 你的评论得到答复了吗@mikebrsv

以上是关于Express.js 或 Angular 用于在 MEAN 应用程序中处理路由?的主要内容,如果未能解决你的问题,请参考以下文章

如何为 api 部署 node js express js,为前端部署 react js,为管理员部署 angular

使用 Express 时未加载 Javascript (Angular)

angular $resource delete 不会将正文发送到 express.js 服务器

在开发环境中使用 Angular CLI 连接 express.js

socket.io+angular.js+express.js做个聊天应用

Express.js 对 Angular CORS 错误的响应