EJS脚本和样式表部分

我是来自ASP.NET MVC的node,express和EJS的新手。 在Razor中,有一个叫做“sections”的特性,允许我在布局文件中为脚本和样式表之类的东西指定一个占位符,当这些视图需要特定的脚本和样式表时,稍后在个别视图中引用它们。 这样,所有的样式表都保留在顶部,所有的脚本都保持在底部。 EJS有类似的function吗?

作为您的build议回答。

EJS是一个相当“裸机”的实现,虽然它有部分内容,我不认为它会干净地给你你想要的,因为它不是真正的“布局”概念的模型。 您可能要考虑将Jade作为模板引擎。 这是Express的默认模板引擎,如果您尚未使用,那么您将很快使用它。

就我个人而言,我发现我真的很喜欢翡翠。 简单来说,我的眼睛容易得多,因为它简洁明了。

资源:

  • 玉在Github上
  • Jade-lang.com
  • CSS甲板翡翠教程 – 语法
  • CSS甲板玉器教程 – 逻辑

block语法的使用是我认为你所要描述的内容,我不认为它在这些资源中有很好的logging,但是这里有一个例子:

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 

我希望有一个可行的ejs解决scheme,但基于@巴里约翰逊的答案,它看起来像没有。 从我的angular度来看,关于ejs的好处是你仍然可以在你的代码中编写普通的html,但是我很难从另一个与jade的抽象中看到好处。

这是我非常关心的一个问题,如果ejs不能很好的把握这个技巧,那么ejs并不值得。

与@巴里约翰逊的评论去寻找替代品,也许一个真正可行的select是nunjucks 。 这似乎是一个活跃的项目,在github上有一千多颗星星,并且块选项似乎是答案,尽pipe我还没有尝试过任何东西。 (也许有人已经可以确认了。)

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

块定义模板上的一个部分,并用名称标识它。 这被模板inheritance使用。 基本模板可以指定块,子模板可以用新内容覆盖它们。 请参阅模板的inheritance。

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

Nunjucks在部分中使用{{ }}语法,如果您也使用AngularJS,这应该是一个问题。 但是,正如在github上指出的那样,您可以通过自定义nunjucks语法来解决这个问题,我相信这更适合于改变Angular的绑定语法。

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