在日本Mayaa很流行,也许是因为是日本人写的框架,总之现在很多日本的项目都用这个框架。
Mayaa处于 web 体系的表示层,主要是将后台数据交给 html 显示。Mayaa的思路很不错,它的重点在于使得 html 更加单纯,将逻辑和设计进一步分离。即使程序已经写好,页面设计人员也可以很容易地对页面进行重构且不会影响到程序的正确性。开发人员也可以更清晰地对程 序进行修改和变更。为了做到这一点,Mayaa 的做法是为每个 .html 文件配置一个 .mayaa 文件,当访问该 .html 文件时,解析对应的 .mayaa 文件并将结果交给 html ,最终做为 response 输出到客户端。那么如何取出后台数据,又该怎么将数据交给 html 呢?看两段代码:
html 文件:<div m:id=”test” id=”test”/>
mayaa 文件:<m:write m:id=”test” value=”${test}” />
为 html 的项目追加 m:id 属性,在相应的 mayaa 文件中追加相同 m:id 的标签m:write 标签。这样一来,这两个文件的同一 m:id 的项目就绑定了,系统运行时,就会将 m:write 标签的 value交给绑定的 html 项目了。
Mayaa 就是利用这些标签完成赋值、判断、循环等各种操作的。除了自身提供的标签以外,还可以使用 jsp 自定义标签。若你对诸如 Struts 等框架的标签更熟悉的话,也可以完全在 Mayaa 中使用。
很多应用需要在赋值时调用 javascript 函数(如根据返回的 key 取消息信息),显然Mayaa 的开发者早就想到了这个问题,提供了<!–[CDATA[]]–>标签,在该标签中,不但可以写 javascript 方法,甚至可以调用后台 java 程序。
<![CDATA[
function getMessage(key){
return Packages.com.mxjava.util.MessageUtil.getMessage(key);
}
]]>
<m:write m:id=”test” value=”${ getMessage(test)}” />
Mayaa 是不不错的表示层框架,几乎已经做到逻辑与设计完全分离。美中不足的是为了将解析后的数据交给html 显示,Mayaa 不得不强制在 html 项目上追加m:id 属性。虽然 html 项目追加属性是没有什么影响的,不过对设计人员来说,可能会感到迷惑,在一些编辑器下,会提示错误信息。若能直接以html 的 id 属性作为赋值依据的话,将完美消除以上误会,难道技术上还存在什么难题吗?