我见过一些使用ruby动态生成javascript代码的rails插件。
1
%Q ( mixed block of javascript and ruby )
2
<<-CODE
some mixed ruby and javascript code
CODE
作为一名java开发人员,我不明白
那些奇怪的语法是什么意思?
比其他方式更好吗?
有人能指出我关于此类事情的正确文件吗?
答案 0 :(得分:6)
第一种语法是Ruby's string literal语法。具体来说,%Q(大写Q而不是小写)意味着将插入字符串。例如:
%Q[Here's a string with #{a_variable} interpolated!]
请注意,您可以使用任意字符作为打开和关闭分隔符。
第二种语法是Ruby的heredoc syntax。打开<<
后的破折号表示Ruby将从heredoc块中包含的输入行的开头删除空格。
Ruby on Rails已经内置Prototype JavaScript framework内置版。它还随附JS generator helper methods,它基于Ruby代码动态生成Prototype代码。
如果您不想,请不要使用这些。事实上,我很少使用它们或Prototype,因为jQuery是我选择的JS框架。因此,一种方式并不比另一种方式“更好”(除了在一般意义上,对于某些情况,heredoc优于字符串文字语法)。
答案 1 :(得分:2)
在Ruby %Q
中提供了双引号分隔的字符串,所以:
%Q(mixed block of javascript and ruby) #=> "mixed block of javascript and ruby"
<<-CODE
是Ruby所谓的 Here Document ,或者只是 heredoc 。这是一种用于创建自由格式字符串同时保留特殊字符(如新行和制表符)的机制。
通过在文本前加<<
后跟您希望用来标记文本结尾的分隔符字符串来创建heredoc。
text = <<-DOC
To be, or not to be: that is the question
William Shakespeare
DOC
打印此字符串时,它与输入完全一致,并显示所有新行和标签:
To be, or not to be: that is the question
William Shakespeare
答案 2 :(得分:0)
%Q
相当于Ruby中的""
字符串。但是如果使用这样的%Q语法,则不需要转义双引号。答案 3 :(得分:-3)
在这里您可以找到详细信息。 Ruby with javascript