Jfinal的模板引擎里的 "#" 号 能不能自定义?

我在开发的时候 需要用 模板输出模板 的时候觉的现在一起很复杂 

如:<input type="hidden" value="#[[#(]]##(model)#[[.ID)]]#">

还有种情况是 ,#和其它前台的模板引擎有冲突的时候 例如 layui的 

<script type="text/html" id="typeTpl">

  #[[{{#]]#  if(d.TYPE == 1){ }}

    菜单

  #[[{{#]]#  } else if(d.TYPE == 2){ }}

    权限url

  #[[{{#]]#  } else if(d.TYPE == 3){ }}

    导航菜单

  {{#  } }}

</script>


评论区

杜福忠

2018-02-28 15:05

你把 #[[ ]]#
1 写最两头啊。。。 把模版都包裹起来,
2 还有可以把 js 模版内容 打包成 .js 文件 ,通过script 引入,
3 还可以这样输出 #("#") 这样看着也不眼花。
#[[
<script id="demo" type="text/html"><h3>{{ d.title }}</h3><ul>{{# layui.each(d.list, function(index, item){ }}<li><span>{{ item.modname }}</span><span>{{ item.alias }}:</span><span>{{ item.site || '' }}</span></li>{{# }); }}{{# if(d.list.length === 0){ }}无数据{{# } }}</ul></script>
]]#

JFinal

2018-02-28 16:07

正如 @杜福忠 所说,将原样输出 #[[ ]]# 的范围扩大,大块包住需要原样输出的内容即可

jfinal 将 # 做成自定义很容易,多个配置就可以,但这个字符是通过精心挑选的最合适的方案,如果选别的字符仍然会出现冲突,所以通过这种方式并不能从根本上解决问题

因此,jfinal enjoy 还提供了 #[[ ]]# 原样输出的功能

bufanui

2018-03-06 13:56

jfianl的原样输出可以完美解决,因为一个是后台编译阶段执行,一个是前端解析时候执行,所以不会跟第三方模板标签冲突

热门反馈

扫码入社