在文本中拼代码还是在代码中拼文本

what?

代码、文本根据模版生成的方法选择的考虑

who?

需要使用模版技术处理文本信息的兄弟

where?

写网页模版、邮件模版、测试代码模版等

why?

为什么写这篇文章?

前些日子在工作中遇到了一个效率问题,需要根据不同的业务动态生成一段测试套的业务部署代码。当时的第一反应是肯定需要不同的业务写一个配置模版文件。进而想到使用xml这种万能数据方法来实现。

生成代码和生成以文本为主的可能还不一样。因为每一行要生成的代码都是一个根据动态数据可变的单元。模版的部分只是用来排版。如:

def cmd1
  xxx
end
def cmd2
  
end
def cmd3
  
end

tstsuite = %Q{
  #{cmd1}
  #{cmd2}
  #{cmd3}
}

但,总感觉这不是一个最好的解决方法,参考了erb的模版使用方法后,觉得应该写点东西整理一下这个问题——在文本中拼代码还是在代码中拼文本


when?

什么时候使用模版(在文本中拼代码)?什么时候使用字符串就可以了(在代码中拼文本)。

当要打印货生成的信息较少时,如静态字符和动态的变量都较少时,使用字符串就可以搞定了。

一个打印名字的小例子:

def say_hello_to name
    puts "hello! my friend,#{name}"
end
但是如果要打印或生成一大段文本。文本中有不止一处的动态信息,而且可能要插入写简单判断、循环的代码时,适合使用模版。如jsp、rhtml等都是模版技术。

一个email的小例子(来自erb的注释)


require "erb"

# Create template.
template = %q{
    From:  James Edward Gray II <james@grayproductions.net>
    To:  <%= to %>
    Subject:  Addressing Needs

    <%= to[/\w+/] %>:

    Just wanted to send a quick note assuring that your needs are being
    addressed.

    I want you to know that my team will keep working on the issues,
    especially:

    <%# ignore numerous minor requests -- focus on priorities %>
    <% priorities.each do |priority| %>
      * <%= priority %>
    <% end %>

    Thanks for your patience.

    James Edward Gray II
  }.gsub(/^  /, '')#去掉开头的空格

message = ERB.new(template, 0, "%<>")

# Set up template data.
to = "Community Spokesman <spokesman@ruby_community.org>"
priorities = [ "Run Ruby Quiz",
  "Document Modules",
  "Answer Questions on Ruby Talk" ]

# Produce result.
email = message.result
puts email

how to?

erb是个不错的选择

how much?(收获)

不用重新发明轮子就享受车子带来的快乐

how many?(需要了解哪些)

简单的erb语法和可以解决日常中的大部分问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值