node.js - 灰尘 : should async calls ever be made from a template helper?

标签 node.js express dust.js kraken.js

寻找有关从dust.js模板助手发出异步请求的一些想法和反馈:

Dust.js 可以从模板助手发出异步请求,但使用它们实际上是一个好主意吗?考虑这种情况...

特定页面需要呈现多个 api 请求。在页面的路由 Controller 中,单个异步 api 请求获取页面的大量数据,并将数据传递到要呈现的模板。在模板中,有几个可重用且独立的除尘助手(可以放在任何页面上),它们发出自己的异步请求以显示其组件。

在这种情况下,所有灰尘助手都必须等到 Controller 发出的请求完成后才能进行调用(当模板渲染开始时)。

理想情况下(不包括页面上所有数据的一个端点),所有请求都应该发生在路由 Controller 中,以避免同步调用,否则请求链将是 1) Controller 请求 2) 灰尘助手请求 3) 嵌套/依赖灰尘助手请求。

缺点:

  • 通过调用 n 个服务来构建 View 模型来控制 Controller 的复杂性
  • 向新页面添加显示组件需要更改 Controller 和模板,而不仅仅是添加模板助手

优点:

  • 减少/消除同步请求并提高性能
  • 更容易理解 View 模型

你有什么想法?谢谢!

最佳答案

如果您考虑仅在服务器端使用模板,我会将所有内容移至 Controller 中。我喜欢有一个 Controller 来“控制” View 层所需的所有数据。

如果您考虑在浏览器中使用dust模板(因此从客户端调用ajax),那么从架构角度来看,我认为这两种方式都是合理的。 但在做出决定之前,我会问自己一些有关用户体验的问题:

  1. 完成来自 的所有调用需要多少时间 Controller ?有时最好将部分数据发送给用户 给他一些东西以便稍后查看和加载其他组件 更好的用户体验。但如果开销不超过几毫秒,我 将决定在 Controller 中构建我的页面上下文。

  2. 数据显示在页面的什么位置?你首先需要它吗 页面的一部分?或者用户应该滚动查看其他数据集? 如果数据没有立即消耗,我会决定留下它 给客户。

关于node.js - 灰尘 : should async calls ever be made from a template helper?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32347386/

相关文章:

javascript - 为什么我的 node.js express 代码不调用 console.log()?

javascript - 如何从虚拟内存中为node.js提供html+js服务?

node.js - 在 Mocha 测试中的 for 循环中进行顺序 Mongoose 查询

javascript - 为什么我会收到这个已弃用的警告?! MongoDB

javascript - 即使在关闭命令提示符后,永远可以观看

javascript - Isotope.js 和 Webpack - 可能吗?

javascript - 使用 multer 接收 FormData 对象作为 node.js 服务器

javascript - 如何使用dust.js在服务器和客户端上编写模板

java - 在服务器端编译Dust模板

javascript - Dust.js 渲染的一页的多个 JSON