Way*_*ina 5 asp.net-mvc viewengine spark-view-engine
我正在玩ASP.NET MVC,我发现有一些替代视图引擎可供它使用,例如NHaml和Spark.我的问题是你为什么要使用备用视图引擎?有这样的事情,我认为没有好处:
<ul if="products.Any()">
<li each="var p in products">${p.Name}</li>
</ul>
<else>
<p>No products available</p>
</else>
Run Code Online (Sandbox Code Playgroud)
使用Spark视图引擎(从那以后,我没有使用Spark来验证这一点并且可能完全错误,因为你将代码作为字符串传递,所以你不会得到Intellisense)和:
<% if products.Any() { %>
<ul>
<% foreach (var p in products) { %>
<li><%= p.Name %></li>
<% } %>
</ul>
<% } else { %>
<p>No products available</p>
<% } %>
Run Code Online (Sandbox Code Playgroud)
使用内置的ASP.NET MVC模板格式(虽然我承认悬挂的大括号非常难看).有没有合理的理由除了不喜欢"gator"标签(或悬挂花括号)以考虑使用备用视图引擎?或者它是否很酷,因为它是新的东西?
试着让它更复杂一点:
<div if="orders.Any()" each="var order in orders">
Here's your order #${orderIndex+1}:
<ul>
<li each="var p in order.Products">
${pIndex}: ${p.Name}
<span if="pIsLast"> (the end)</span>
</li>
</ul>
</div>
Run Code Online (Sandbox Code Playgroud)
我可以看到这里的流程.我实际上可以在这里看到HTML.现在来看看:
<% if (orders.Any()) { %>
<% var orderIndex = 0; foreach (var order in orders") { %>
<div>
Here's your order #<%= (orderIndex+1) %>
<ul>
<% int pIndex = 0; foreach (var p in order.Products)
{ bool pIsLast = pIndex == products.Count; %>
<li>
<%= pIndex %>: <%= p.Name %>
<% if (pIsLast) { %>
<span> (the end)</span>
<% } %>
</li>
<% ++ pIndex; } %>
</ul>
</div>
<% orderIndex++; } %>
<% } %>
Run Code Online (Sandbox Code Playgroud)
我迷失在这里.那里有HTML吗?
对我来说,这是主要原因.当然,Spark提供了很多功能 - 宏(你在火花标记中编写你的Html.Helpers代码),PDF导出等 - 由其他人列出 - 但作为程序员,我更喜欢干净的代码.
另一个例子,你经常使用(int i = 0; i <products.Count; i ++){Product product = products [i]; .... } 这些日子?你更喜欢foreach(产品中的var产品){}吗?我会.不仅因为打字更少.因为:
那是关于foreach这样简单的事情.每个原因都很简单,但它们总结为更大的东西.这些原因完全适用于Spark.嘿,看起来我爱上了;-)
更新:现在,你知道吗?看看我的帖子的编辑历史.我不得不多次编辑该死的ASP代码,因为我在这里和那里错过了一些比特.我只是不明白它是对还是错.如果我在那里有跨度,或者在某个地方有条件,那就完全隐藏了.
更新:嗯,还有另一个编辑......移动ASP的if/span里面的li ...
| 归档时间: |
|
| 查看次数: |
597 次 |
| 最近记录: |