加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby – “#{}”符号与erb表示法

发布时间:2020-12-17 03:52:29 所属栏目:百科 来源:网络整理
导读:符号之间有什么区别: " some text #{some_ruby_code} some text #{some_more_ruby_code} some_other_text" 和 ERB.new(" some text %=some_ruby_code% some text %=some_more_ruby_code% some_other_text").result 我只是有一个广泛的印象,即erb符号可能更
符号之间有什么区别:

"
  some text
  #{some_ruby_code}
  some text
  #{some_more_ruby_code}
  some_other_text
"

ERB.new("
  some text
  <%=some_ruby_code%>
  some text
  <%=some_more_ruby_code%>
  some_other_text
").result

我只是有一个广泛的印象,即erb符号可能更强大,但不是那么清楚.你能从不同方面比较它们,并告诉哪些应该在什么样的场合使用?什么样的事情可以用一种符号而不是另一种符号来完成?

增加1

到目前为止,大多数答案似乎都声称erb效率低下,并且在使用“#{}”时不应使用.现在,让我们问另一种方式.为什么“#{}”符号不能代替erb?它不会更快更好吗?

增加2

下面的大多数答案似乎都假设单个出现的“#{}”不会跨越多行,因此像一个采用多行的循环的代码块不能嵌入其中.但为什么不呢?如果您这样做,我认为与使用<%>执行此操作没有任何区别,除了在后者中您放置<%>在每一行.

解决方法

尝试将ERB用于一般字符串插值的一个缺点是ERB实际上旨在生成HTML.结果将是许多编码问题,当你忘记原始 – 所有的一切,并混淆为什么你的&符号,大于,小于等符号被破坏.

我认为ERB的计算开销也会增加,但这可能无关紧要.

此外,如果你在Ruby中放入内联的ERB,最终会在Ruby内部的ERB内部使用Ruby(当你在ERB中调用方法时可能会更多级别),这将是一个令人困惑的混乱.想想那些必须维护你的代码的可怜的灵魂,说可怜的灵魂甚至可能是你.

更新:您可以将#{}用于简单的HTML模板(对于类似的东西,请参见Mustache)但是生成重复的部分会很困难而且很难看.重复的部分在HTML模板中很常见,因此对于HTML模板系统来说应该是简单而自然的.使用ERB,您可以:

<% a.each do |e| %>
    <!-- ... -->
<% end %>

但是#{}插值会很麻烦.你最终也会做#{html(blahblah)},大多数人都会忘记.

此外,“#”在URL中具有特殊含义,在CSS中具有不同的特殊含义(其中大括号也具有特殊含义);片段URL和CSS块在HTML模板中相当常见,所以你总是担心混淆.当使用#{}在URL中生成CSS选择器或片段但这足以使其变得麻烦时,这种特殊的肮脏可能只是一个问题.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读