是结束讨论nodejs该使用什么模板引擎的时候了
发布于 1年前 作者 linustd 3081 次浏览

首先,我是搞.net的, 其次,我想逃离微软, 然后,但是我发现asp.net mvc的razor模板相当好使,支持模板继承,更重要的是,公共的部分section可以简单的重复继承。

比如你在<head></head>里有一个叫head的section,只要你在子模板里这样写

[[[[[[[[[[[[[[[[[[[[[[[[[[[@secion](/user/secion)](/user/secion)](/user/secion)](/user/secion)](/user/secion)](/user/secion)](/user/secion)](/user/secion)](/user/secion)](/user/secion)](/user/secion)](/user/secion)](/user/secion)](/user/secion)](/user/secion)](/user/secion)](/user/secion)](/user/secion)](/user/secion)](/user/secion)](/user/secion)](/user/secion)](/user/secion)](/user/secion)](/user/secion)](/user/secion)](/user/secion) head { @RenderSection("head", false) //你的代码在这里 }

也就是,在实现父模板里定义的secion的时候,再声明一个相同名字的内容块。

如此在子模板的子模板里,又可以使用head的块,每一层子模板都可以往<head></head>里添加js,css等。

这和nodejs 又有什么关系呢?

今日使用webstorm建立一个express项目时,发现选项里有个选择模板的下拉框,点了一下,有个不熟悉的jshtml, 我google了,一下,大喜:我操,原来这就是asp.net mvc Razor视图引擎的javascript实现啊。

以前选择nodejs很是犹豫,就是因为没有一个可以接受的js模板,这下,我可以对大家说: jshtml就是你应该选择的。

了解过各种各样的模板,可以说,几乎没有一个模版能够同时实现模版多层继承,而且可以有公共块的功能,Razor视图引擎,也仅仅是可以在内容块里再声明一个同名的模板块来达到公共块的需求。这里的一个关键是, 这个公共块的名字相同,不会引起错误。

26 回复

俺比较喜欢doT

我靠,刚试了一下,jshtml对razor的实现还不完善啊。

楼主没看 jade ?

extend header
block section
// or block append section
// or block prepend section

用 jade 很顺手,可以满足所有需要

jade有没有嵌入到html的版本的,直接用jade自己的标签,没法用 bootstrap等CSS库啊

jade 和 ejs 都很赞…

请问express如何配置doT?

@linustd当然可以用bootstrap,我项目就是 jade + bootstrap 做的 www.yuceben.com ,如果你熟悉了jade的用法,任何html可以用的,jade都可以用 ,jade里甚至可以直接嵌入 html 代码

@winky

没用过express, 我都用我websvr

我是肥猪流吗?我用swig。。以前用过Django觉得这亲切点。嘿嘿

我也是用swig,楼主提到的继承,共用这些功能都有啊

doT 里面怎么incldue header.html 和footer.html ?? 文档表示很少

jade

话说我都拿jade 写 html 页面了, grunt 自动解析,在配合jade 的 include extends 真是甩 zen coding 什么的几条街啊

jade绝对够牛逼了~

jade 很顺手,可以满足所有需要

ejs 也非常不错。

你可以使用dot里的def,不过我一般都为设置一个全局默认的model,

dust.js飘过,linkedin出品,信赖大厂产品

  • swig +1
  • jshtml貌似好久没更新了

jade类python的格式很喜欢

@cicada “jade里甚至可以直接嵌入 html 代码”请问这个怎么做到的?我直接嵌html代码,编译报错了,

cnodejs用的什么模板?

回到顶部