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.js
和 Angular
都可以处理路由。
角度:
例如,如果我在 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