说到模板开发,当然就离不开要调试,要运行。一般情况下模板语言都是由Java程序驱动跑的,因此,每次都需要搞一个Java类来驱动它,才能运行出结果。有没有更简洁的方式呢?当然是有的,Tiny框架提供了强大的Eclipse插件:模板运行器,用户通过它可以达到快速开发和调试模板语言。
接下来笔者介绍一下模板运行器的使用步骤:
复制代码
问题一分析:
关联注册文件demo.runtype示例:
前提条件
在Eclipse环境想要使用Tiny模板运行器,需要满足以下条件: - 正确安装Tiny框架提供的Eclipse插件,这是基础要求。
- 在想要使用模板运行器的工程,pom.xml文件引入依赖org.tinygroup.templateengine。模板运行器会根据这个依赖获得支持的模板后缀信息和具体的模板执行类,从而实现自动运行调试。目前模板运行器支持vm/page/layout/component这四类模板名后缀。
- 安装前提:eclipse必须安装WTP(Web Tools Platform框架)
什么是WTP框架?
请看下图:
然后:
- 如果没有,请见下面详解
WTP安装:
方案一(推荐):
直接下载eclipse for JEE版本,自带WTP,直接安装使用,他好我也好。
方案二:
方案三:
eclipse官方网页:http://www.eclipse.org/webtools/news.php
寻找适合自己eclipse的WTP,进行安装,可以选择site更新,也可以选择离线方式安装。
接下来笔者介绍一下模板运行器的使用步骤:
操作流程
- 编写模板文件,并保存。
- 在Eclipse资源管理器选中模板文件,调出右键菜单,选择“Run as”或“Debug as”。
- 点击“运行”,执行模板。这时候可以在命令控制台看到输出的结果。
笔者做一个简单的例子,希望帮助大家进一步理解模板运行器的使用:
首先,我们在资源管理器新建一个hello.vm,然后输入如下模板内容:
- #for(i:[1..3])
- #for(j:[1..2])
- ${i}*${j}=${i*j}#eol
- #end
- #end
然后,选中模板文件,调出右键菜单,点击“运行”,如下图:
模板执行结果请见下面:
如果想进行调试,也是可以进行调试的,右键菜单选择“Debug”就可以了,接下来大家就可以享受快速开发调试的愉悦了。
常见问题
当然任何软件在使用过程中,不可避免的会遇到各种问题,笔者就列举一下模板运行器常见的问题和解决方法: - 右键菜单里面选择“Run”或者“Debug”,都看不到“运行”选项。
- 右键菜单可以看到“运行”选项,但是点击之后,提示“未找到执行器”。
问题一分析:
找不到"运行"选项
问题一的原因是Eclipse插件没有安装或者安装不正确导致模板运行器没有被加载,用户可以通过“Help”-“About Eclipse SDK”-“Installation Details”查看插件安装情况,详情见下图。如果没有模板运行器,就请重新安装相关插件。
问题二分析:
提示“未找到执行器”
有如下几种情况都可以造成问题二,用户需要逐一排查: - 测试工程的pom.xml没有正确依赖org.tinygroup.templateengine。模板执行器无法得到模板后缀信息或者执行器信息,自然会提示上述异常。
- 模板文件后缀不在依赖工程支持的配置范围。模板执行器是根据*.runtype文件配置加载相关信息,默认支持vm/page/layout/component这四类模板名后缀。用户要扩展也很容易,在测试工程新建*.runtype文件配置,按下方示例文件,增加要绑定的模板后缀到extension属性。
- 模板实际执行类TinyTemplateExecutor没有找到。这种情况比较少见,通常是maven的install不正确,需要重新install依赖。
- 模板执行器自身不正确,存在历史冲突。Eclipse插件更新可能会造成这种情况,在启动Eclipse环境加上-clean参数,清除插件缓存。
关联注册文件demo.runtype示例:
- <runtypes>
- <!-- 调用模板引擎执行器TinyTemplateExecutor渲染如下后缀的模板页面-->
- <runtype extension="vm" class="org.tinygroup.template.executor.TinyTemplateExecutor" />
- <runtype extension="page" class="org.tinygroup.template.executor.TinyTemplateExecutor" />
- <runtype extension="layout" class="org.tinygroup.template.executor.TinyTemplateExecutor" />
- <runtype extension="component" class="org.tinygroup.template.executor.TinyTemplateExecutor" />
- </runtypes>