Angular和Express路由如何在mean.js应用程序中协同工作?

Jon*_*ano 9 url-routing node.js express angularjs mean-stack

我正在努力研究Angular和Express Routing(顺便说一句,我不知道是Express的新手),我一直用Angular处理路由 - 用ui-router - 但现在我开始构建一个MEAN.js应用程序我注意到我可以处理服务器端路由和客户端路由......这就是让我感到困惑的原因,这里有一些我的问题:

  • 他们有什么不同?
  • 如果我切换到快速路由,我还会有SPA吗?
  • 我可以同时使用这两种吗?怎么样?这是好习惯吗?它有什么好处吗?
  • 我什么时候才应该只使用其中一个?
  • 我将如何处理路线参数?
  • 等等...

如果有人可以详细解释这些问题,以及人们需要知道的其他额外事情我会非常感激.

另外,我想知道的是:我只需要在Express中设置服务器内容,还是需要在Node中编码?

mad*_*und 7

Express中的路由与角度中的路由略有不同

在快递

路由是指应用程序的端点(URI)的定义以及它如何响应客户端请求.

因此,如果您使用angularjs进行路由,那么您不需要使用express为html模板设置路由.

您只需使用express来创建RESTAPI,然后使用angularjs $http或者使用这些API$resource

摘要:

  • Angular中的路由支持SPA背后的想法.最终,您希望通过Angular处理基于UI的路由更改(即不需要服务器调用/逻辑).任何到达后端的路由更改,最终需要服务器逻辑,都应该使用Express路由.

这是创建rest API的快速路由.

app = express();

app.get('/dowork',function(res,req){
    console.log(req.params.msg);
  /... code to do your work .../
});
Run Code Online (Sandbox Code Playgroud)

现在在angularjs呼叫做工作

$http.get('http://localhost:8080/dowork',{"msg":"hi"}).success(function(data){
 console.log(data);
});
Run Code Online (Sandbox Code Playgroud)


bin*_*dMe 5

这里只要两分钱。其他专家应该纠正我并进一步解释:

前端路由通常是指#后面的url中的路由管理。这是因为浏览器会忽略 # 之后的任何内容。因此,Angular 利用它来进行动态 ajax 调用并根据 # 之后的路由路径获取资源。

express处理的是#前面的url。这用于从浏览器向服务器发出实际请求。

它们有何不同:回答

如果我切换到 Express 路由,我仍然会有 SPA :

如果您在前端手动管理 url,同时进行 ajax 调用来填充单个页面,那么您始终可以拥有 SPA。在前端管理 url 应该以可读性为目的。

我可以同时使用两者吗?如何?:

每个人都使用两者。SPA 也同时使用两者。通常,基于身份验证的事物由快速路由处理,而授权和其他基于路由的交互(例如请求资源等)则使用前端路由。即使你使用前端路由,对于后台的ajax请求,你仍然依赖express的路由。

这是好的做法吗?它有什么好处吗?:

使用 Express 的路由进行身份验证并提供资源,并使用前端的 Angular 路由来保持 SPA 正常运行始终是一个很好的实践。

我什么时候应该只使用其中之一?: 已回答

我将如何处理路由参数?:

有一些参数可以使用路由参数(如果使用 ng-route)在前端处理,也可以在后端使用 slug、bodyparser 等处理。你需要抽出一些时间来学习这些。