enjoy解析问题

image.png

"tabBarRedDot_index":3#else2,
这个if else 出来怎么是这个样子呀 , 不能同行写么


评论区

macaque

2018-11-08 17:21

JFinal

2018-11-08 19:03

注意 #else 后面加个 空格

macaque

2018-11-09 11:21

@JFinal 好的 那走到eles 里的值 是不是就成 " 2"了 会不会多个空格

JFinal

2018-11-09 15:29

@macaque 不会多出空格来,jfinal enjoy 处理过的,紧跟在 #else 后面的一个空格或者换行都会被处理掉,不会成为空格或换行

enjoy 处理过远超常人想象的细节

JFinal

2018-11-09 15:31

你碰到的这个问题,本质是关键字分隔符的问题,例如你在写 java 代码时:
if (...) ... else2
这个 else 与 2 连在一起了,java 编译器只能将你的 else2 当成变量名,而不是关键字 else

JFinal

2018-11-09 15:35

这里补充一下, jfinal enjoy 为了提升用户体验,如果没有必要,是不需要空格的,例如:
#if(..)aaa#else bbb#end

上面的代码 #else 与前面的 aaa ,还有 #end 与前面的 bbb 之间可以不要空格,是因为字符 '#' 可以起到分隔的作用,enjoy 就自动处理好了

而你的用法是 #else 后方多了一个字符 '2', 这种情况没有字符 '#' 作为分隔,enjoy 是无论如何不能帮你处理掉的,因为 #else2 可能是你想保留的一个普通字符串

enjoy 自动处理的情况还包括小括号,例如:
#if(a==b)xxx#end

上面的 xxx 与左边的小括号之间没有空格,是因为小括号也可以作为分隔符起作用,这个与 java 规则是类似的

JFinal

2018-11-09 15:38

不仅有上面的细节处理,如果你有使用空格作为分隔的习惯,enjoy 还会吃掉一个空格不输出,因为 enjoy 知道你这个空格是分隔,而不是为了输出一个空格,例如:
#if(a==1) aaa #end

上面的代码,模板输出以后, aaa 这串字符前后的一个空格都不会输出,当成是分隔符了,如果你想输出一个格,只要留出两个空格就好,其中一个会被当成分隔符,一个当成是普通的空格输出

热门反馈

扫码入社