Javascript Jade包含检查实际页面的条件
有没有一种方法可以检查您在Jade中的哪个页面,并在该页面中包含一些内容(部分页面或特定的CSS样式)?例如: 如果我在Javascript Jade包含检查实际页面的条件,javascript,node.js,pug,harp,Javascript,Node.js,Pug,Harp,有没有一种方法可以检查您在Jade中的哪个页面,并在该页面中包含一些内容(部分页面或特定的CSS样式)?例如: 如果我在主页,那么只包括主页标题。jade 其他-包括正常头部。jade 以下是一个上下文中的示例: doctype html html body if HOMEPAGE include ./includes/HOMEPAGE-head.jade else include ./includes/NORMAL-head.jade h1
主页
,那么只包括主页标题。jade
其他-包括正常头部。jade
以下是一个上下文中的示例:
doctype html
html
body
if HOMEPAGE
include ./includes/HOMEPAGE-head.jade
else
include ./includes/NORMAL-head.jade
h1 My Site
p Welcome to my super lame site.
include ./includes/foot.jade
谢谢大家! 我知道有两种方法 选项A:2个布局和扩展 制作两个布局:
layout.jade
和layout homepage.jade
,相应地更改include
行。大多数页面将扩展布局
,但索引.jade
将扩展布局主页
选项B:变量块
在layout.jade
中:
- var HOMEPAGE = false;
block variables
doctype html
html
body
if HOMEPAGE
include ./includes/HOMEPAGE-head.jade
else
include ./includes/NORMAL-head.jade
h1 My Site
p Welcome to my super lame site.
include ./includes/foot.jade
block variables
- HOMEPAGE = true;
h1 This is your home page template...
然后在index.jade
中:
- var HOMEPAGE = false;
block variables
doctype html
html
body
if HOMEPAGE
include ./includes/HOMEPAGE-head.jade
else
include ./includes/NORMAL-head.jade
h1 My Site
p Welcome to my super lame site.
include ./includes/foot.jade
block variables
- HOMEPAGE = true;
h1 This is your home page template...
您的所有其他页面都将默认设置为
HOMEPAGE=false
,因此它们不需要任何更改就可以使此方法起作用。或者,您也可以构建您的Jade,以使用继承来实现您想要的功能
例如:
layout.jade:
doctype html
html
body
block header
block content
h1 My Site
p Welcome to my super lame site.
block footer
include ./includes/foot.jade
www.jade.com主页:
extends ./layout.jade
block header
include ./includes/HOMEPAGE-head.jade
normal.jade:
extends ./layout.jade
block header
include ./includes/NORMAL-head.jade
然后让你所有的普通页面都使用
normal.jade
,让你的主页使用homepage.jade
我建议使用单独的布局。它利用了Harp已有的系统,并帮助维护“不同内容、不同文件”的概念。使用Harp,您可以在_data.json或_Harp.json文件中为任何给定页面指定显式布局
从
可以在_data.json中指定_布局以外的布局。这是
如果您需要对布局进行更精细的控制,或者如果您想这样做,这将非常有用
将布局命名为除_Layout之外的其他名称
在这里,可以通过在该文件夹的_data.json文件中指定布局,使article-one.md使用_an-example-layout.ejs:
现在,每篇文章都将使用指定的布局
如果这只是一个微小的差异,并且您无法证明拥有一个完全独立的模板是合理的,那么如果您使用Harp的partial()
函数而不是Jade的include
关键字,您也可以将数据传递到include。然后,处理不同变量值的逻辑将位于单个head.jade
文件中。您的示例可能如下所示
富玉:
doctype html
html
body
!= partial("./includes/head.jade", { page: bar })
h1 My Site
p Welcome to my super lame site.
include ./includes/foot.jade
head.jade现在应该可以访问页面变量
第三个选项可以利用Harp注入到模板中的
current
对象。如果您正在访问//site.com/foo/bar
,current.source==“bar”
和current.path==“foo”,“bar”
。您可以使用此对象动态设置类名等。您可以在此处了解更多信息:谢谢您的回答。但尽管有检查实际页面的想法。我可以有一些类似的部分,就像在“Laravel刀片模板”?我的意思是,在master-template.jade中定义“header”或“top”部分,并仅在我希望它出现的页面中插入“header”或“top”?你能给我举一些这样做的例子吗?谢谢,我不能使用你在回答中解释的方式,因为我使用的是Harp(静态站点生成器和服务器),它不允许我创建app.js。这里是刀片的例子