我有阿帕奇速度。我有一些 jQuery 代码。我认为 VM 不喜欢我做类似$img.css("float","left")
. 如何在 HTML/Javascript 块中完全禁用 VM 解析?
谢谢
Velocity 1.7-beta1 现已推出,它提供了#[[don't parse me!]]#
指令,因此您不必在 .vm 文件中转义一堆代码。
像魅力一样为我工作。
查看用户指南,只要您没有以$img
速度命名的变量,您就不应该对速度解析有问题。否则你可以用\$img
.
至于实际上让解析器跳过字符串,就像使用 XML 中的 CDATA 标记一样,我不确定你怎么能做到这一点。
对于像上面这样的简短示例,如果它不是合法的 Velocity 引用,只需执行 $img 并且 Velocity 将忽略它。
逃避参考是很诱人的,但这非常古怪。如果 $img 是一个真实的引用,那么 \$img 将显示 $img。但如果 $img 不是 Velocity 引用,则 \$img 将显示 \$img。
最好的办法,特别是如果您有一个不想解析的长文本块,将它放在一个单独的文件中并使用#include,它不会解析包含文本。
#include("file.vm")
这会将“file.vm”直接包含在输出中,而不对其进行解析。(如果要包含文本并解析该文本,请使用#parse)。
\ 转义是不可靠的。做:
context.put("D", "$");
进而
${D}img
在即将到来的 1.7 中,有一个新的 #[[ 解析器将完全忽略这个 ]]# 语法。希望 1.7-beta1 很快就会出来。
您可以在 Velocity 中通过在每个 $ 符号前加上反斜杠来转义美元符号...
\$img.css("float", "left");
您可以分配一个变量来解析美元符号。例如:
#set( $jQ = "$" )
现在你可以使用这个变量在你需要的地方放置一个美元符号:
<script type="text/javascript">
$jQ img.css();
</script>
请确保$jQ变量和img.css()之间有空格;(因此速度不会试图将其余部分解释为不同的变量)。如果括号直接跟在 $jQ 变量之后,则不必这样做。
这会很好:
$jQ('#smithySword');
$
in jquery 是 的简写,jQuery
因此您可以将任何替换$
为jQuery