Javascript 将AngularJS与express一起使用

Javascript 将AngularJS与express一起使用,javascript,angularjs,node.js,express,Javascript,Angularjs,Node.js,Express,Node.js和AngularJS似乎都能够处理很多相同的事情,我不确定应该如何在这两个框架之间委派任务 例如,要在浏览器中呈现“localhost:3000/foo”,可以在express中编写: router.get("/foo", function (req, res, next) { res.render("bar", callback); }); 或者,您可以编写一个部分,并在配置中包含此块: when("/foo", { templateUrl: "views/partia

Node.js和AngularJS似乎都能够处理很多相同的事情,我不确定应该如何在这两个框架之间委派任务

例如,要在浏览器中呈现“localhost:3000/foo”,可以在express中编写:

router.get("/foo", function (req, res, next) {
  res.render("bar", callback);
});
或者,您可以编写一个部分,并在配置中包含此块:

when("/foo", {
  templateUrl: "views/partials/bar.html",
  controller: "FooCtrl"
}).
更一般地说:我应该把什么任务委托给AngularJS,我应该留下什么来表达


提前谢谢

虽然Angular和Express都可以为您处理路由,但它们的方式都非常不同

如果您在后端处理路由(使用Express),则每次单击,浏览器都会转到您的后端,您必须在服务器上呈现完整的HTML页面并将其发送回浏览器

但是,如果您在客户端上使用HTML5路由(使用
ng route
)处理路由,则可以避免对后端的调用(例如,如果在路由定义中包含
模板而不是
模板URL
)。然后您将拥有一个单页应用程序(SPJ),它只需要对后端进行RESTAPI调用。然后在客户端上完全处理(通常)中的渲染


基于服务器的路由的优点(使用Express)
  • 所有代码都驻留在后端。碎片更少
  • 在计算能力较低的客户机上,服务器可以完成繁重的工作
  • 旧浏览器可能在处理高级Javascript时遇到问题(或者速度太慢),但它们通常可以处理HTML+一些轻脚本。如果您希望针对不支持HTML5路由API的浏览器,则尤其如此。在这种情况下,您将不得不求助于使用基于标签的URL
基于客户端路由的优点(使用AngularJS)
  • 服务器必须处理渲染,这会对服务器的计算和带宽造成负担。如果不太繁重,将此任务卸载给客户机是有意义的
  • 如果客户机代码可以从后端代码中分离出来,那么它将使前端独立于后端(API处的耦合除外)。如果不同的团队在迭代中工作,这可以在迭代中提供更大的灵活性
  • 如果正确完成,客户端渲染会显得更平滑。例如,每个用户操作只能更新页面的一部分,而不能刷新整个页面

如果您有一个小应用程序,并且希望将所有内容都放在一个地方,请使用Angular进行路由。如果需要做出服务器端业务逻辑决策(例如,根据用户是否登录,返回不同的内容),请使用Node进行路由。如果要在angular中执行所有操作,请使用
[http server](https://www.npmjs.com/package/http-server)
而不是express。