09.ajax局部渲染---《Beetl视频课程》
本期视频实现分类实时获取;
内容简介:使用了局部渲染技术,实现分类的实时获取
一起学beetl目录:https://my.oschina.net/u/1590490?tab=newest&catalogId=6214598
作者:GK
Beetl满足了更加流行的方式,研发了ajax局部渲染技术。
后台处理后返回一个json,浏览器端将json数据拆开,拼成一条一条的行数据,然后生成dom节点,追加到表格里。 作为另外一种可选技术,beetl支持局部渲染技术,允许后台处理返回的是一个完成的html片段,这样,前端浏览器可以直接将这个html片段追加到表格里。在性能测试里,俩种方式性能差别不大(http://bbs.ibeetl.com/ajax//)
在beetl模板中,使用#ajax 局部命名:{ .... }
包裹起来的代码,就是ajax需要渲染的局部代码。
如果一个模板返回正常的渲染整个模板文件,将会忽略这一标记,比如:return "index.html"
如果返回的是 模板名称#局部命名,Beetl将会只渲染这一小段的代码。比如return "index.html#局部命名"
举个例子,在项目中layout.html
模板中,增加了一段ajax标记
<div class="widewrapper main"> <div class="container"> <div class="row"> <div class="col-md-8 blog-main"> ${layoutContent} </div> <%if(isEmpty(notShow)){%> <aside class="col-md-4 blog-aside" id="tagsDiv"> <%#ajax tags :{%> <div class="aside-widget"> <header> <h3>Tags</h3> </header> <div class="body clearfix"> <ul class="tags"> <%for(tag in categorys!){%> <li><a href="/?category=${tag}">${tag}</a></li> <%}%> </ul> </div> </div> <%} }%> </aside> </div> </div> </div>
大家可以看到有一段使用 #ajax tags{}
包裹起来的代码
<%#ajax tags :{%> ..... <%}%>
当controller中直接 return "layout.html"
时,将会渲染整个页面。
我们在controller中增加一个方法。
@GetMapping("/tags") public String tags(HttpServletRequest request) { request.setAttribute("categorys", blogService.listCategory()); return "common/layout.html#tags"; }
告诉beetl模板引擎,只渲染tags中间的代码。
可以看到我们渲染的代码为:
<div class="aside-widget"> <header> <h3>Tags</h3> </header> <div class="body clearfix"> <ul class="tags"> <li><a href="/?category=beetl">beetl</a></li> <li><a href="/?category=beetlsql">beetlsql</a></li> <li><a href="/?category=java">java</a></li> <li><a href="/?category=一起学Beetl">一起学Beetl</a></li> </ul> </div> </div>
仅仅渲染了我们中间这一段代码,能让我们更加优雅使用。
我们在前端只要使用js加入这段渲染的html代码即可。
<script type="text/javascript"> $(function(){ $.get("${ctxPath}/tags",function (data) { $("#tagsDiv").html(data); console.info(data); }); }); </script>
项目git地址:https://gitee.com/gavink/beetl-blog
视频地址:下载下来会更清晰,视频比较长,可使用倍速看
百度网盘下载: https://pan.baidu.com/s/1LyxAxlKpVXgVjwSXIbzBuA 提取码: 68im
在线播放地址:bilibili (可以调节清晰度): https://www.bilibili.com/video/av36278644/?p=9
博客目录:https://my.oschina.net/u/1590490?tab=newest&catalogId=6214598

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
08.自定义方法以及直接访问java类方法---《Beetl视频课程》
本期视频实现了发布评论时间自定义显示; 内容简介:使用了自定义方法以及直接访问java方法实现了发布时间自定义显示 一起学beetl目录:https://my.oschina.net/u/1590490?tab=newest&catalogId=6214598 作者:GK 自定义方法 我们想要实现类似于${ strutil.subString ("hello",1)} 这样的方法,在Beetl模板中直接使用函数。一、集成Function 接口,实现call方法 call方法存在两个参数,一个是模板传输过来的参数列表Object[] objects,另外一个是beetl模板的上下文Context。 上下文中包含以下信息,需要用到可以自取。 byteWriter 输出流 template 模板本身 gt GroupTemplate globalVar 该模板对应的全局变量 byteOutputMode 模板的输出模式,是字节还是字符 safeOutput 模板当前是否处于安全输出模式 其他属性建议不熟悉的开发人员不要乱动 有几个注意事项,需要注意下: call方法要求返回一个Obj...
- 下一篇
10.新增博客功能-结束语---《Beetl视频课程》
本期视频实现发布新博客功能 一起学beetl目录:https://my.oschina.net/u/1590490?tab=newest&catalogId=6214598 作者:GK 教程进入了尾声,该讲的知识点基本讲到了,本节课不会讲新的知识点。 今天来实现最后一个功能:发布博客。 新建一个发布页面 create.html: <% layout("/common/layout.html",{title:"新建博客",notShow:true}){ %> <div class="widewrapper main"> <div class="container"> <div class="row"> <div class="col-md-6 col-md-offset-3 clean-superblock" id="contact"> <h2>Contact</h2> <form action="${ctxPath}/saveBlog" method="post" accept-chars...
相关文章
文章评论
共有0条评论来说两句吧...