Nodejs 求助:ejs转换成jade
Nodejs 求助:ejs转换成jade
学习node.js学习指南,书中用的是ejs,我用的是jade。 书中有段ejs:
<div id="container" class="container">
<% if (success) { %>
<div class="alert alert-success">
<%= success %>
</div>
<% } %>
<% if (error) { %>
<div class="alert alert-error">
<%= error %>
</div>
<% } %>
<%- body %>
<hr />
<footer>
<p><a href="http://www.byvoid.com/" target="_blank">BYVoid</a> 2012</p>
</footer>
</div>
我需要把它转成jade的写法,我是这么写的:
#container.container
- if (success)
.alert.alert-success #{success}
- if (error)
.alert.alert-error #{error}
block body
hr
footer
p
a(href="http://www.byvoid.com", target="_blank") BYVoid
运行的效果不对,试了很多种写法,都没成功,求问该怎么改。
5 回复
-
首先,你需要这个:http://jade-lang.com/demo/
-
其次,别再看那本书了。那书里的代码过时太多了。看朴灵的《深入浅出 Node.js》吧。
jade 是个坑爹的玩意, 我话了3天都在搞jade的样式, 完全不知所云。 换成 ejs, 早可以完成睡觉了。 这东西违反直觉,学词成本过高。早晚淘汰
jade的对DOM结构的控制靠得是缩进,它的缩进需要严格为2,楼主po的代码里前几行的缩进都是4?
要在Jade(现在称为Pug)中转换你的EJS代码,你需要理解两者之间的语法差异。EJS更接近HTML模板语言,而Pug则使用缩进和特定的语法来生成HTML。下面是将你的EJS代码转换为Pug的示例:
EJS 代码
<div id="container" class="container">
<% if (success) { %>
<div class="alert alert-success">
<%= success %>
</div>
<% } %>
<% if (error) { %>
<div class="alert alert-error">
<%= error %>
</div>
<% } %>
<%- body %>
<hr />
<footer>
<p>
<a href="http://www.byvoid.com" target="_blank">BYVoid</a> 2012
</p>
</footer>
</div>
Pug 转换后的代码
#container.container
- if(success)
.alert.alert-success
!= success
- if(error)
.alert.alert-error
!= error
block body
hr
footer
p
a(href='http://www.byvoid.com', target='_blank') BYVoid
| 2012
解释:
- 条件判断:在Pug中,
if
语句不需要大括号{}
,而是直接在-
后面跟上 JavaScript 表达式。 - 插入变量:
<%= ... %>
在 Pug 中转换为!= ...
来输出未转义的内容。 - HTML标签:直接使用缩进定义层级关系,不需要闭合标签。
- 块元素:使用
block body
来表示一个可被替换或继承的块。
希望这些信息能帮助你成功地将EJS模板转换为Pug!