Node.js dustjs:是否应该从模板助手进行异步调用?

Node.js dustjs:是否应该从模板助手进行异步调用?,node.js,express,dust.js,kraken.js,Node.js,Express,Dust.js,Kraken.js,想从dust.js模板帮助程序中获得一些关于异步请求的想法和反馈: Dust.js可以从模板助手发出异步请求,但利用它们真的是个好主意吗?考虑一下这个场景… 特定页面需要呈现多个api请求。在页面的路由控制器中,单个异步api请求获取页面的大部分数据,并将数据传递给要呈现的模板。在模板中,有几个可重用和独立的dust Helper(可以放在任何页面上),它们可以发出自己的异步请求以显示其组件 在这种情况下,所有灰尘助手必须等到控制器发出的请求完成后才能进行调用(当模板渲染开始时) 为了避免同步调

想从dust.js模板帮助程序中获得一些关于异步请求的想法和反馈:

Dust.js可以从模板助手发出异步请求,但利用它们真的是个好主意吗?考虑一下这个场景…

特定页面需要呈现多个api请求。在页面的路由控制器中,单个异步api请求获取页面的大部分数据,并将数据传递给要呈现的模板。在模板中,有几个可重用和独立的dust Helper(可以放在任何页面上),它们可以发出自己的异步请求以显示其组件

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

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

缺点:

  • 通过调用n个服务来构建视图模型,从而提高路由控制器的复杂性
  • 将显示组件添加到新页面需要更改控制器和模板,而不仅仅是添加模板帮助器
优点:

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

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

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

  • 页面中显示的数据在哪里?你一开始需要吗 页面的一部分?或者用户应该滚动查看其他数据集? 如果数据没有立即被使用,我会决定离开它 给客户


  • 如果你只想使用你的模板,服务器端我会把所有东西移到控制器中。我希望有一个控制器“控制”视图层所需的所有数据

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

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

  • 页面中显示的数据在哪里?你一开始需要吗 页面的一部分?或者用户应该滚动查看其他数据集? 如果数据没有立即被使用,我会决定离开它 给客户


  • 谢谢你的评论。客户端呈现是不从控制器发出所有调用并按需加载内容的重要原因。关于我正在研究的实现,我们的网络内API调用非常快(甚至是未缓存的),因此让控制器处理所有异步调用目前不是问题。随着我们增加新的复杂性和功能,我们真的应该考虑从客户端加载更多的内容,尽管索引SEO内容对我们来说是必不可少的,所以我们需要一个强大的解决方案。感谢您的评论。客户端呈现是不从控制器发出所有调用并按需加载内容的重要原因。关于我正在研究的实现,我们的网络内API调用非常快(甚至是未缓存的),因此让控制器处理所有异步调用目前不是问题。随着我们增加新的复杂性和功能,我们真的应该考虑从客户端加载更多的内容,尽管可索引的SEO内容对我们来说是必不可少的,所以我们需要一个健壮的解决方案。