【问题标题】:Should views be rendered by the app, or should a static site contact the API using AJAX?视图应该由应用程序呈现,还是静态站点应该使用 AJAX 联系 API?
【发布时间】:2018-01-19 13:26:52
【问题描述】:

我开始使用 Node.js 和 Express 编写我的第一个 Web 应用程序。我想到了两种方法。

  • 创建两组路线。一种发送 JSON,一种使用模板引擎呈现页面
  • 创建一个静态网站,使用 AJAX 对后端进行 API 调用,并且只有 API 的路由。

我了解方法 #2 取决于浏览器中的 AJAX 支持,但如果这是您的项目,根据每种方法的优缺点,您会选择哪一种?为什么?

【问题讨论】:

  • 我不明白第一种方法。 “发送 JSON 的人”是什么意思?不也涉及AJAX吗?

标签: ajax api web-applications


【解决方案1】:

如果我没看错的话,选项 #1 和 #2 的第一组路由都是返回 JSON 而不是发送它的 API。

假设在 #2 中您不会使用 JavaScript 进行 AJAX 调用来创建静态页面,而是仍然使用像 app.use('/', express.static(path.join(__dirname, 'dist'))); 这样的快速静态路由,两种方法之间的差异并没有那么大。

除非您已经知道一些受支持的模板语言,例如 mustache,否则缺点是您必须先学习一种,然后再学习 pick one(根据我的经验,这并不总是一件容易的事!)。

如果您不知道其中一种,根据您的应用程序,您可能仍会从学习和使用一种中受益。例如,您可以考虑一个非常通用的 UI,其中单个模板可以重复使用很多次 - 例如类似于众所周知的 phpmyadmin 的通用数据库 UI。

在静态路由的情况下,您可以使用具有组件或模板的 JavaScript 框架来实现类似的结果,例如 angular。如果您不打算使用一个,那可能会导致大量重复使用的小部件的代码。即使使用一个,我也可以想象模板引擎会导致更少的代码(或至少项目中的文件更少)的情况。不确定它是否会更容易导航,而且随着项目的增长,是否会覆盖测试。

如果不了解您的项目的更多信息,很难提供更多建议。

【讨论】:

    【解决方案2】:

    如果您正在开发的产品主要是静态内容和一些动态部分,我建议您通过模板系统从您的后端提供 HTML。一个很好的例子就是博客。您最终会获得更好的 SEO,并且在这种方法中需要了解的移动部分更少。

    但是,如果您想开发单页应用程序,我建议您将后端完全用作 api,并完全在 React/Vue/Angular/whatever 中编写您的客户端逻辑。单页应用程序的前端完全用 javascript 编写,最适合高度动态的“类似应用程序”的在线体验。想想 gmail 或 facebook。

    【讨论】:

      【解决方案3】:

      在我当前的项目中,我们使用了这两种方法。许多视图是静态的,数据是从 API 调用(我们只使用角度)或引导值(我们使用模板加载一些对象,如用户角色等)获得的。

      但是,有些视图是在服务器站点上呈现的,因为它允许我们轻松地动态注入值、令牌或其他支持数据,而无需发出额外的请求。

      所以,我投票支持灵活性

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-01-06
        • 2014-05-24
        • 2016-01-12
        • 1970-01-01
        • 2016-08-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多