游戏框架模板 quote/quotation 规则
playframework template quote/quotation rules
来自首页的playframework教程,
https://www.playframework.com/
培训师将引导您完成一个简单的示例,最终导入一个 javascript (coffeescript) 文件以动态生成列表。
他在 index.scala.html 模板文件中写了这个,所以:
<script type='text/javascript' src='@routes.Assets.at("js/index.js")'></script>
注意,src 属性是单引号,封装的at 方法使用双引号作为它的单个字符串参数。
这与我预期的不太一样,因为我知道 @routes.Assets.at 方法将被结果值替换,我记得它在许多编程语言中很典型(例如,Perl ) 单引号指定 fixed/static 字符串值。但是好吧,我想看到我们正在查看 HTML 脚本标记的属性的开头,这没问题。
Perl:
my $name = "Fred";
print "Hello $name\n"; // prints Hello Fred (with an endline afterwards)
print 'Hello $name\n'; // prints Hello $name\n
https://en.wikibooks.org/wiki/Perl_Programming/Strings
尽管如此,我个人并不喜欢它。而我更喜欢使用相反的方式:
<script type="text/javascript" src="@routes.Assets.at('javascripts/index.js')"></script>
但是,游戏一点也不喜欢这样,结果错误信息是:
"Multiple annotations found at this line:
- unclosed character literal
- ')' expected but something
found."
这是最出乎意料的,因为它在 HTML 中是允许的,
http://www.w3.org/TR/html4/intro/sgmltut.html#h-3.2.2
并且还允许,比如说,在 Java 中。例如:
String test = "this is 'not' a test";
所以,问题是:这背后的逻辑是什么?
我可以在某处找到此文档的 'rules' 吗?
它是特定播放的,还是因为它是某种 Scala 相关文件 (index.scala.html),这是由于 Scala 语法的怪癖?
(我刚刚开始研究 Scala)
你必须在这里区分两个不同的级别:HTML 和 Scala。
Scala 首先通过,替换以 @
符号(以及其他一些已知标识符)开头的内容。因此,让我们删除 Scala 读取和使用的内容:
@routes.Assets.at('javascripts/index.js')
如您所见,该方法被赋予了一个字符文字作为参数,但具有一个字符串内容——这在 Java 中是不可能的(在 Scala 中也不可能)。
这也是它试图在错误消息中告诉您的内容,它找到了一个字符文字和一个字符的开头,但随后字符文字没有终止。
所以逻辑是基本的Java逻辑。这是这些编译模板的棘手问题之一:您必须在脑海中区分通过哪个解析器的内容。
根据所涉及的两种语言的规则,允许以下组合:
<script type='text/javascript' src='@routes.Assets.at("js/index.js")'></script>
<script type='text/javascript' src="@routes.Assets.at("js/index.js")"></script>
请注意,在很多编辑器中,第二个选项的语法高亮会中断,包括上面的代码块
来自首页的playframework教程, https://www.playframework.com/ 培训师将引导您完成一个简单的示例,最终导入一个 javascript (coffeescript) 文件以动态生成列表。
他在 index.scala.html 模板文件中写了这个,所以:
<script type='text/javascript' src='@routes.Assets.at("js/index.js")'></script>
注意,src 属性是单引号,封装的at 方法使用双引号作为它的单个字符串参数。
这与我预期的不太一样,因为我知道 @routes.Assets.at 方法将被结果值替换,我记得它在许多编程语言中很典型(例如,Perl ) 单引号指定 fixed/static 字符串值。但是好吧,我想看到我们正在查看 HTML 脚本标记的属性的开头,这没问题。
Perl:
my $name = "Fred";
print "Hello $name\n"; // prints Hello Fred (with an endline afterwards)
print 'Hello $name\n'; // prints Hello $name\n
https://en.wikibooks.org/wiki/Perl_Programming/Strings
尽管如此,我个人并不喜欢它。而我更喜欢使用相反的方式:
<script type="text/javascript" src="@routes.Assets.at('javascripts/index.js')"></script>
但是,游戏一点也不喜欢这样,结果错误信息是:
"Multiple annotations found at this line:
- unclosed character literal
- ')' expected but something
found."
这是最出乎意料的,因为它在 HTML 中是允许的, http://www.w3.org/TR/html4/intro/sgmltut.html#h-3.2.2
并且还允许,比如说,在 Java 中。例如:
String test = "this is 'not' a test";
所以,问题是:这背后的逻辑是什么? 我可以在某处找到此文档的 'rules' 吗? 它是特定播放的,还是因为它是某种 Scala 相关文件 (index.scala.html),这是由于 Scala 语法的怪癖? (我刚刚开始研究 Scala)
你必须在这里区分两个不同的级别:HTML 和 Scala。
Scala 首先通过,替换以 @
符号(以及其他一些已知标识符)开头的内容。因此,让我们删除 Scala 读取和使用的内容:
@routes.Assets.at('javascripts/index.js')
如您所见,该方法被赋予了一个字符文字作为参数,但具有一个字符串内容——这在 Java 中是不可能的(在 Scala 中也不可能)。 这也是它试图在错误消息中告诉您的内容,它找到了一个字符文字和一个字符的开头,但随后字符文字没有终止。
所以逻辑是基本的Java逻辑。这是这些编译模板的棘手问题之一:您必须在脑海中区分通过哪个解析器的内容。
根据所涉及的两种语言的规则,允许以下组合:
<script type='text/javascript' src='@routes.Assets.at("js/index.js")'></script>
<script type='text/javascript' src="@routes.Assets.at("js/index.js")"></script>
请注意,在很多编辑器中,第二个选项的语法高亮会中断,包括上面的代码块