2012-05-15 30 views
10

我有这个玉文件:如何包括在玉一个CSS文件(不链接)

!!! 5 
html 
    head 
    title test include 
    style(type='text/css') 
     //- DOES NOT WORK! 
     include test.css 
    body 
    //- works 
    include test.css 
    div 
     //- works 
     include test.css 

输出:

$ jade -P test.jade 
rendered test.html 
$ cat test.html 
<!DOCTYPE html> 
<html> 
    <head> 
    <title>test include</title> 
    <style type="text/css"> 
     //- DOES NOT WORK! 
     include test.css 
    </style> 
    </head> 
    <body>body { color: peachpuff; } 

    <div> body { color: peachpuff; } 

    </div> 
    </body> 
</html> 

当然,我可以简单地链接的CSS文件, 但我不想。

+0

我不认为这是可能的,但为什么不是简单的解决方案? – jsbeckr

+2

我想你想要在服务器文件中将HTML与HTML分开,但在html中提供样式以避免获取CSS的额外请求。 这是错误的:你将不会被要求每一个时间,因为它会被缓存文件添加额外的计算(文件包含)。 –

回答

12

我没有测试它,但(没有我的开发电脑自动取款机),但有机会做这样的事情可以工作:

!!! 
head 
    title test include 
    | <style type='text/css'> 
    include test.css 
    | </style> 

顺便说一句,我发现HTML2Jade在线转换器而不是Jade2HTML。任何想法在哪里可以找到它?

+1

我检查了它,它的工作原理。 – Webthusiast

+0

谢谢,希望user470370将其标记为已回答;) –

+0

谢谢,作品!我不知道任何在线转换器。但是我找到了第一个失败的原因:“只接受脚本和样式等文本的标签不需要前导字符”(https:// github。com/visionmedia/jade) – user470370

-1

一个可能的解决办法是:

style(type="text/css") 
    #{css} 

然后通过在res.render(...)调用CSS-文本。

+0

我觉得非常非常脏:您链接功能和数据的造型... –

+0

这是..它只是为他的问题的解决方案,我真的不明白的。 ;) – jsbeckr

+1

看到我的评论关于他的目标;) –

1

fs的数据,你可以

style !{fs.readFileSync("index.css").toString()} 
+0

不完全交叉实现安全,但是很好的破解 – CoolAJ86

0

在玉的当前版本(0.35.0)这将是足够写只是include style.css

完整的示例(考虑你正在写index.jade,它位于views文件夹中,而你的风格是assets文件夹):

!!! 
html 
    head 
     include ../assets/bootstrap3/css/bootstrap-theme.css 
     include ../assets/bootstrap3/css/bootstrap.css 
body 
    h1 Hi! 

请注意没有style标签的模板,它会自动插入玉(这是一个很好的功能!)。

+0

从1.0.0开始(至少),这似乎不再是这种情况:如果您不指定一些更多细节的CSS仅包含在逐字记录中,不在风格标签 –

+0

中,您必须包含样式标签,它不会自动添加。 – Nicekiwi

2

阿尔诺的回答为我工作,但我既然发现了这是一个少许清洁剂:

doctype 
head 
    title test include 
    style(type="text/css"): include test.css 

(type="text/css")也是可选的,根据您的情况。

8

jade docs

doctype html 
html 
    head 
    style 
     include style.css 
    body 
    h1 My Site 
    p Welcome to my super lame site. 

它可以完美运行。

+0

虽然这确实起作用,但我想补充说,它与原始问题中的代码相同,区别在于版本(已过去3年)。 – pzy