在页面上渲染一些动态块 - express.js + jade

时间:2012-12-18 18:28:03

标签: node.js express pug

寻找解决方案几天。需要帮助。

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

问题: 无法理解我如何在一个页面上渲染1+动态块。

例如:

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

快递可以做什么?我可以将特殊URL路由到路由中的特殊功能。 所以我看,如果想在一个页面上渲染所有这些块,我必须调用所有函数,只在一个路径函数中渲染每个块。

我的意思是我似乎必须做这样的事情(确实在libs中但在这里无所谓)


    app.get('/news', function(req, res){
      call_last_news(funcion(){
        call_hot_news(function(){
          call_get_user_info(function(){
            ...
            ...
            ...
            template.render.here();
            final_here();
          });
        });
      });
    });

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

1 个答案:

答案 0 :(得分:0)

嗯,我不确定我是否理解了所有问题,但基于伪代码,看起来主要关注的是你有一套深层嵌套的潜在独立和可重用的函数。想到这个问题有两种方法:

使用控制流程库

使用类似async系列,并行等的东西(哪些函数取决于代码的性质 - 所有call_函数是否独立?)这将清理代码并使其成为可能更易于维护。

使用ajax

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