expressjs:如何扩展部分布局

发布于 2024-11-09 16:54:47 字数 331 浏览 1 评论 0原文

我有layout.jade,其中包含#header #main #footer,并且#main包含#content#sidebar code>,如果我执行 res.rend('template'),我的模板正文就会转到 #content

但现在有些页面很特殊,只想继承 #header #main #footer 和模板主体应该转到 #main,我怎样才能在expressjs中做到这一点,我的模板引擎是jade。

I have layout.jade, which contains #header #main #footer, and #main contains #content and #sidebar, my template body goes to #content if I do res.rend('template'),

but now some page is special, which only want to inherit #header #main #footer and template body should goes to #main, how can I do this in expressjs, my template engine is jade.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

空袭的梦i 2024-11-16 16:54:47

Jade 允许您替换(默认)、前置或附加块。例如,假设您希望在每个页面上使用的“head”块中都有默认脚本,您可以这样做:

html
 head
  block head
    script(src='/vendor/jquery.js')
    script(src='/vendor/caustic.js')
 body
  block content

现在假设您的应用程序中有一个用于 JavaScript 游戏的页面,您需要一些与游戏相关的脚本以及这些默认值,您可以简单地附加块:

 extends layout

 append head
  script(src='/vendor/three.js')
  script(src='/game.js')

Jade allows you to replace (default), prepend, or append blocks. Suppose for example you have default scripts in a "head" block that you wish to utilize on every page, you might do this:

html
 head
  block head
    script(src='/vendor/jquery.js')
    script(src='/vendor/caustic.js')
 body
  block content

Now suppose you have a page of your application for a JavaScript game, you want some game related scripts as well as these defaults, you can simply append the block:

 extends layout

 append head
  script(src='/vendor/three.js')
  script(src='/game.js')
悲歌长辞 2024-11-16 16:54:47

如果您希望为任何视图使用特殊的布局模板,您只需使用布局值以及新模板布局的名称和位置调用 de template render 即可。

res.render('page', { layout: 'mylayout' });

这将使用 mylayout 渲染 #header、#footer 和其他内容的页面布局内容。

If you wish to have a special layout template for any view you just need to call de template render with the value of layout and the name and location of your new template layout.

res.render('page', { layout: 'mylayout' });

This will render the content of page layout with mylayout for the #header, #footer and other stuff.

☆獨立☆ 2024-11-16 16:54:47

我想我会研究视图部分并组织您的模板,以便可以更换将要更改的内部部分。

http://expressjs.com/guide.html#view-partials

I think I'd look into view partials and organize your template so that the inner parts that will change can be swapped out.

http://expressjs.com/guide.html#view-partials

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文