0

找了几天的解决办法。需要帮忙。

来源:node.js + express.js + 玉模板引擎

问题:无法理解如何在一页上呈现 1+ 个动态块。

例如:

我们有一个页面:新闻主页页面块:最新消息(列出20条),热点新闻(列出4条),观看次数最多的新闻(4条),带有新闻类别的块(它可以在页面上显示当前类别带有一张选定新奇卡片的页面,因此它也是动态阻止),并使用一些用户身份验证数据进行阻止。“块”是指我们可以在网站上看到的小部件,而不是代码块。

我可以用快递做什么?我可以将特殊 url 路由到路由中的特殊功能。如我所见,如果想在一页上呈现所有这些块,我必须调用所有函数,仅在一个路由函数中呈现每个块。

我的意思是我似乎必须做这样的事情(当然在库中但在这里无关紧要)

    app.get('/news', function(req, res){
      call_last_news(函数(){
        call_hot_news(函数(){
          call_get_user_info(函数(){
            ...
            ...
            ...
            模板.render.here();
            final_here();
          });
        });
      });
    });

这看起来很真实,但代码如此无用和无法支持,以至于......这很糟糕。我可以在来自模板引擎的调用中看到解决方案,以在页面上呈现一些块。但不仅仅是包含,因为所有块都可以使用 db 或 cookie、会话数据等。所有块都是动态的。但我不知道如何使用 express.js + 玉创建这样的引擎

4

1 回答 1

0

好吧,我不确定我是否理解所有问题,但基于伪代码,这里的主要问题似乎是您有一组深度嵌套的潜在独立和可重用函数。有两种方法可以解决这个问题:

使用控制流库

使用异步系列、并行等(哪个功能取决于您的代码的性质——所有call_功能都是独立的吗?)这将清理您的代码并使其更易于维护。

使用 ajax

您可以采取的另一种方法是在没有所有call_功能的情况下快速呈现页面,只需从客户端进行几次 ajax 调用来填充数据。你可以有看起来像'/news/last'和'/news/hot'等的路由。这很好,因为你可以将每个单元的所有逻辑分离成可重用的URL,这样你就可以混合和匹配它们在任何页面上。

于 2012-12-18T18:55:42.720 回答