【问题标题】:Using AngularJS with express使用 AngularJS 和 express
【发布时间】:2015-08-03 19:58:49
【问题描述】:

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 进行路由。如果您需要做出服务器端业务逻辑决策(例如,根据用户是否登录,返回不同的 /快递。

标签: javascript angularjs node.js express


【解决方案1】:

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

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

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


基于服务器的路由的优点(使用 Express)

  • 所有代码都驻留在后端。减少碎片化。
  • 在计算能力较低的客户端上,服务器可以完成繁重的工作
  • 旧版浏览器在处理高级 Javascript 时可能会出现问题(或者可能太慢),但它们通常可以处理 HTML + 一些轻量级脚本。如果您想要定位不支持 HTML5 路由 API 的浏览器,则尤其如此。在这种情况下,您将不得不使用基于标签的 URL。

基于客户端的路由的优点(使用 AngularJS)

  • 服务器必须处理渲染,这会在计算和带宽方面对服务器造成负担。如果不太繁重的话,将这项任务交给客户是有意义的。
  • 如果客户端代码可以与后端代码分离,则使前端独立于后端(API 处的耦合除外)。如果有不同的团队在处理迭代,这可以为迭代提供更大的灵活性。
  • 如果处理得当,客户端渲染会显得更平滑。例如,每个用户操作只能更新页面的一部分,而不是刷新整个页面。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    • 2015-01-11
    • 2017-06-04
    • 2015-11-25
    相关资源
    最近更新 更多