首先,我是搞.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视图引擎,也仅仅是可以在内容块里再声明一个同名的模板块来达到公共块的需求。这里的一个关键是, 这个公共块的名字相同,不会引起错误。
@linustd当然可以用bootstrap,我项目就是 jade + bootstrap 做的 www.yuceben.com ,如果你熟悉了jade的用法,任何html可以用的,jade都可以用 ,jade里甚至可以直接嵌入 html 代码