寻找解决方案几天。需要帮助。
来源: 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创建这样的引擎
答案 0 :(得分:0)
嗯,我不确定我是否理解了所有问题,但基于伪代码,看起来主要关注的是你有一套深层嵌套的潜在独立和可重用的函数。想到这个问题有两种方法:
使用类似async系列,并行等的东西(哪些函数取决于代码的性质 - 所有call_
函数是否独立?)这将清理代码并使其成为可能更易于维护。
您可以采取的另一种方法是在没有所有call_
函数的情况下快速呈现页面,只需从客户端进行多次ajax调用即可填写数据。您可以拥有看起来像'/ news / last'和'/ news / hot'等的路线。这很好,因为您可以将每个单元的所有逻辑分离成可重复使用的URL,这样您就可以混合搭配他们在任何页面上。