寻找有关从dust.js模板助手发出异步请求的一些想法和反馈:
Dust.js 可以从模板助手发出异步请求,但使用它们实际上是一个好主意吗?考虑这种情况...
特定页面需要呈现多个 api 请求。在页面的路由 Controller 中,单个异步 api 请求获取页面的大量数据,并将数据传递到要呈现的模板。在模板中,有几个可重用且独立的除尘助手(可以放在任何页面上),它们发出自己的异步请求以显示其组件。
在这种情况下,所有灰尘助手都必须等到 Controller 发出的请求完成后才能进行调用(当模板渲染开始时)。
理想情况下(不包括页面上所有数据的一个端点),所有请求都应该发生在路由 Controller 中,以避免同步调用,否则请求链将是 1) Controller 请求 2) 灰尘助手请求 3) 嵌套/依赖灰尘助手请求。
缺点:
- 通过调用 n 个服务来构建 View 模型来控制 Controller 的复杂性
- 向新页面添加显示组件需要更改 Controller 和模板,而不仅仅是添加模板助手
优点:
- 减少/消除同步请求并提高性能
- 更容易理解 View 模型
你有什么想法?谢谢!
最佳答案
如果您考虑仅在服务器端使用模板,我会将所有内容移至 Controller 中。我喜欢有一个 Controller 来“控制” View 层所需的所有数据。
如果您考虑在浏览器中使用dust模板(因此从客户端调用ajax),那么从架构角度来看,我认为这两种方式都是合理的。 但在做出决定之前,我会问自己一些有关用户体验的问题:
完成来自 的所有调用需要多少时间 Controller ?有时最好将部分数据发送给用户 给他一些东西以便稍后查看和加载其他组件 更好的用户体验。但如果开销不超过几毫秒,我 将决定在 Controller 中构建我的页面上下文。
数据显示在页面的什么位置?你首先需要它吗 页面的一部分?或者用户应该滚动查看其他数据集? 如果数据没有立即消耗,我会决定留下它 给客户。
关于node.js - 灰尘 : should async calls ever be made from a template helper?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32347386/