使用JST模板引擎加快页面交互内容开发

news/2024/7/4 10:07:01 标签: 模板引擎, freemarker, javascript, class, function, null
class="baidu_pl">
class="article_content clearfix">
class="htmledit_views">

首先看一个需求:

 

页面上存在一个select box,当选择了下拉框中的一个选项的时候,异步请求获取数据并在页面某个区域显示出来。而且这个显示区域是具有样式和自己固有的js等内容的,并非简单的静态文字。

如果用传统的js方式,我们该如何去实现呢?

 

这样固然可以解决问题,但是当这个需要展示的DIV非常大的时候,在使用上面的方法,将会是一件非常不可思议的事情。所以势必需要我们去尝试它的更为便捷而且高效不容易出错的方式来解决。

 

这里我们采用Javascript Template jsfclass="tags" href="/tags/MoBanYinQing.html" title=模板引擎>模板引擎来完成这个工作。

官方网址:http://trimpath.com/project/wiki/JavaScriptTemplates

 

这是基于js的非常轻量级的跨浏览器框架,可以帮助你完成EL风格的渲染,并返回结果字符串,然后可以通过innerHTML等方式插入到某个隐藏的div中。作为一种ajax风格的交互。

 

看看怎么来使用 step by step :

 

1、 跟jquery相似的,需要首先去下载相关的js库 template.js

下载文件并且在页面底部包含进去:

 

 

2、在你需要使用的页面埋上一段HTML代码,这段代码即是将用来渲染并展示的内容,通常而言,可以使用一个隐藏的textarea来保存是一个很好的实践:

 

注意的是,这里我们使用了class="tags" href="/tags/FREEMARKER.html" title=freemarker>freemarker框架,所以页面需要用noparse包含起来以阻止class="tags" href="/tags/FREEMARKER.html" title=freemarker>freemarker将其解析掉。这段代码只是一个模板,所以采用何种方式来保存将取决于个人习惯,这里我们使用的是一个隐藏的textarea

可以看到,jst的风格跟class="tags" href="/tags/FREEMARKER.html" title=freemarker>freemarker或者velocity很相似,都是EL风格,他提供了一些便捷的逻辑操作关键字,如很常用的for和if等,具体的语法我们稍后再讲,这里只是编写页面展示逻辑,像使用class="tags" href="/tags/FREEMARKER.html" title=freemarker>freemarker一样简单。

 

3、当我们的callback函数执行完异步请求返回结果list之后,我们可以采用如下的方式来渲染模板并展示在页面上

 

 

这样就完成了一个渲染并展示的过程,相对于之前的使用字符串拼装的方式,非常便捷,而且不像拼装过程那样很容易出错让人痛苦。

关于jst的语法,可以简单的总结一下:

 

// 以下代码部分为转帖内容,文字部分个人添加

 

1、表达式

可以使任何字符串,但是由于我们使用大括号来包装,所以势必名称中在使用大括号{}

 

 

 

 

可以使用 % 来包含表达式,这样就可以防止当变量名称出现大括号导致的错误情况

 

IF语句的使用

 

 

使用defined库函数判断变量是否已经被定义过

 

FOR循环

 

变量定义

 

宏定义

 

CDATA 文本区段,内容将不渲染,原样输出

 

 

编写内部的JS代码,使用eval标签

 

 

 

其他的语法请参见相关的文档,总而言之,jst是一个非常有用的渲染引擎,可以帮助我们省掉很多的前端工作,提高工作效率,减少出错几率。通过dwr和jst的配合使用,可以营造很好的用户体验,如果再具有一个不错的页面美工,那将是一件非常惬意的事情!


http://www.niftyadmin.cn/n/1639136.html

相关文章

[前端控件开发]freemarker框架下编写自己的分页器

对于web系统来说,分页器就好像是一个器官,是无论如何都必须要具备的一项功能,而分页器呢,是既通用又无怪乎那么几种样子,所以我们这里就利用添加了freemarker框架的一个系统来做自己的分页器。先看下结果样子&#xff…

优化Elasticsearch查询性能

给文件系统缓存提供内存 Elasticsearch严重依赖于文件系统缓存,以便快速进行搜索。 通常应该确保至少有一半的可用内存进入文件系统缓存,以便Elasticsearch可以将索引的热区域保留在物理内存中。 使用更快的硬件 如果搜索受I / O限制,应该调…

[小插曲]spring+freemarker中文乱码了,囧

spring freemarker 中文乱码了&#xff0c;其实是配置的时候粗心忘了配置viewResolver的编码&#xff0c;只配置了freeMarkerConfigurer的default-coding。 配置一下即可&#xff1a; <bean id"freeMarkerConfigurer"class"org.springframework.web.servlet…

Elasticsearch的Bulk API使用

1、Elasticsearch的Bulk API允许批量提交index和delete请求。如&#xff1a; &#xff08;1&#xff09;用法1 BulkRequestBuilder bulkRequest client.prepareBulk(); bulkRequest.add(client.prepareIndex("index1", "type1", "id1").setSou…

[HeadFirst]观察者模式 - 老王跳灰机的故事

写博客&#xff0c;看博客&#xff0c;要的是直接进入主题&#xff0c;不要太多的前戏&#xff0c;否则读者看着看着就没了兴趣。 所以直接看设计模式-观察者模式的图示介绍&#xff1a; 所谓的主题&#xff0c;即被观者的对象&#xff0c;当这个对象发生变化的时候&#xff0…

Elasticsearch批量索引和删除

批量索引和删除 Java代码 收藏代码 BulkRequestBuilder bulkRequest client.prepareBulk(); for(int i500;i<1000;i){ //业务对象 String json ESUtils.toJson(new LogModel()); IndexRequestBuilder indexReques…

[Memcache] 初探Memcache

Memcache (http://memcached.org/) memcache 是一种分布式缓存服务器&#xff0c;和通常使用的非分布式的ecache不同&#xff0c;memcache需要独立的服务器支撑&#xff0c;客户端通过配置IP地址和端口号&#xff08;默认11211&#xff09;与之连接并使用API进行数据的缓存操作…

[JST]不支持for(var i=0;ilength;i++)问题解决方法

Trimpath的循环语法支持遍历列表或者数组&#xff0c;如果我们在模板中希望能够使用传统的for循环的方式 for(var i0;i<length;i) 来实现根据定义数字大小指定遍历次数&#xff0c;则无法使用{for(i in length)}来完成&#xff0c;因为length不是列表也不是数组&#xff0c;…