EJS脚本和样式表部分

时间:2014-03-29 18:12:14

标签: node.js ejs

我是来自ASP.NET MVC的node,express和EJS的新手。在Razor中,有一个名为“sections”的功能允许我在布局文件中为脚本和样式表等内容指定占位符,并在以后在我的个别视图中引用它们,当这些视图需要特定的脚本和样式表时。这样,所有样式表都保持在顶部,所有脚本都保持在底部。 EJS中是否有类似的功能?

2 个答案:

答案 0 :(得分:1)

根据您的建议发布答案。

EJS是一个相当“裸机”的实现,虽然它有部分功能,我认为它不会干净地给你你想要的东西,因为它没有真正建模在'布局'概念上。您可能需要考虑将Jade视为模板引擎。它是Express的默认模板引擎,如果您尚未使用它,可能会很快使用它。

就个人而言,我发现我一般都非常喜欢翡翠。我的眼睛更容易,因为它简洁明了。

资源:

使用block语法是我认为您想要的内容,我不认为这些资源中有详细记录,但这是一个例子:

<强> layout.jade

doctype html
html
  head
    title #{title} / #{version}
    link(rel='stylesheet', href='/css/site.css')
    script(src='/js/mygenericscript.js')
    block head

    body(class='foo')
        // the line below could be written as '#maincontent.bodyclass'
        div(id='maincontent', class='bodyclass')
          block content

<强> template.jade

extends layout

block head
  // here I am including a page-specific script & stylesheet in the head section
  script(src='/js/mypagescript.js')
  link(rel='stylesheet', href='/css/crazypage.css')

block content
  div(class='page-specific-class')
    //etc, etc

答案 1 :(得分:0)

我希望有一个可行的ejs解决方案,但根据@ barry-johnson的回答,它看起来似乎没有。关于ejs的好处(从我的角度来看)是你如何仍然可以在代码中编写普通的html,但是我很难看到jade中另一个抽象的好处。

对我来说这是一个很大的问题,如果ejs不能很好地完成这个技巧,那么ejs看起来并不值得。

与@ barry-johnson的评论一起寻找替代方案,可能是一个真正可行的选择 nunjucks 。它似乎是一个活跃的项目,在github上有超过一千颗星,而block选项似乎就是答案,尽管我还没有尝试过任何东西。 (也许已有的人可以证实。)

http://mozilla.github.io/nunjucks/templating.html#block

  

阻止

     

块定义模板上的一个部分,并用名称标识它。   这由模板继承使用。基本模板可以指定   块和子模板可以使用新内容覆盖它们。看到   模板继承。

{% block css %}
<link rel="stylesheet" href="app.css" />
{% endblock }

Nunjucks在部分中使用{{ }}语法,如果您还使用AngularJS,这应该是一个问题。但是,正如我在github上向我指出的那样,你可以通过自定义nunjucks语法解决这个问题,我认为这比改变Angular的绑定语法更可取。

https://mozilla.github.io/nunjucks/api.html#customizing-syntax