2012-10-10 66 views
0

我一直在跨越多个不同的框架使用部分应用程序跨越我的应用程序一段时间;我对Jade的实现感到困惑,或者我的错误用法,并希望得到其他利用者的经验和对我的理解的任何更正。Jade部分继承块/扩展实现

文件夹结构:

$ cd <app_root>/views 
$ ls 
    myHoverToolTip.jade 
    layout.jade 

来电:

httpJadeViewerRsp = (req, res) -> res.render('myHoverToolTip.jade', { variable: 'here' }) 

myHoverToolTip.jade

extends layout 

block myHoverToolTip 
    .some-div 
    h1 Awesome-O Rocks 

layout.jade

<...bunch of jade markup...> 
.div 
    block myHoverToolTip 
    h5 Content to remove 

这适用于少量的用例,您只需提供一个页面并正在寻找提供布局的标准方式。然而,偏离这一点,并以更模块化的方式使用partials来干什么,你会发现这个extends/block的实现让我挠头。我希望将我的工具提示分解为一个部分,以便在数据网格中重用(当然,将部分变量传递给部分,因此不要包含这些变量),但此实现禁止我拥有此功能。任何人都可以提供进一步的见解,纠正我的用法,或指引我使用更好的NodeJs-ready模板库,它们将与Express 3配合使用

回答

0

截至2012年8月和Express 3,“partials”支持被删除,但功能仍然可以通过表达式“include [yourtemplatename]”而不用引号或括号。

Jade的替代方案我也发现有用的是EJS模板,它更像ASP.NET/JSTL。

编辑:在这两种情况下,可以通过includes访问父上下文和变量。

+0

不知道您是否阅读我的文章......我遵循使用模板引擎的继承进行部分实现的Express 3指令。 Jade是我所知道的唯一一个JS模板引擎,它具有指定的任何继承。我相信这在EJS中不被支持,我错了吗?还要注意发送变量到partial的要求,如果我误解了“include”是如何呈现的(静态地),那么“include”不支持这个要求,那么请纠正我。 –

+1

假设基于其他语言的经验,但是在这种情况下,“包含”在这些系统中不需要采取额外的步骤就可以继承父上下文,这并不是错的。我最近看到很多关于partials和vs的疑惑,因为Express和相关模板系统最近发生了变化。 – Joshua

1

听起来像mixins可能会帮助你。

+0

当然,不知道我是如何错过的!然而,在尝试“包括”出于绝望之后,看看究竟是什么结果,我发现它确实将变量带入包含中。我显然跳过了文档的另一部分。 –