基于jeesite的cms系统(四):使用Beetl模版引擎在后端渲染数据
一、Beetl简介
1. 什么是Beetl
Beetl目前版本是2.9.3,相对于其他java模板引擎,具有功能齐全,语法直观,性能超高,以及编写的模板容易维护等特点。使得开发和维护模板有很好的体验。是新一代的模板引擎。总得来说,它的特性如下:
- 功能完备:作为主流模板引擎,Beetl具有相当多的功能和其他模板引擎不具备的功能。适用于各种应用场景,从对响应速度有很高要求的大网站到功能繁多的CMS管理系统都适合。Beetl本身还具有很多独特功能来完成模板编写和维护,这是其他模板引擎所不具有的。
- 非常简单:类似Javascript语法和习俗,只要半小时就能通过半学半猜完全掌握用法。拒绝其他模板引擎那种非人性化的语法和习俗。同时也能支持html 标签,使得开发CMS系统比较容易
- 超高的性能:Beetl 远超过主流java模板引擎性能(引擎性能5-6倍于FreeMarker,2倍于JSP。参考附录),而且消耗较低的CPU。
- 易于整合:Beetl能很容易的与各种web框架整合,如Spring MVC,JFinal,Struts,Nutz,Jodd,Servlet等。
- 支持模板单独开发和测试,即在MVC架构中,即使没有M和C部分,也能开发和测试模板。
- 扩展和个性化:Beetl支持自定义方法,格式化函数,虚拟属性,标签,和HTML标签. 同时Beetl也支持自定义占位符和控制语句起始符号也支持使用者完全可以打造适合自己的工具包。
- 可以扩展为脚本引擎,规则引擎,能定制引擎从而实现高级功能。
2.文档(http://ibeetl.com/guide/)
二、ArticleController返回带有beetl标签的html视图用来解析“articles”属性
/**
* 首页内容(获取top15文章)
* @param
* @return
*//*
@GetMapping(value = "/index")
public String index(Model model) throws Exception {
List<JsCmsArticlesEntity> articles = this.frontDeskService.getTop15Articles();
model.addAttribute("articles", articles);
return "templates/index";
}
三、index.html
1、<% layout('default.html'){ }%>是页面公共部分,可以实现多个html公用
2、<% for(article in articles){ %> 通过for循环遍历aticles集合,然后用“.”操作${article.createAt}取值
<% layout('default.html'){ %>
<div class="main">
<div class="article__wrap" id="article__">
<%
//ajax片段开始
#ajax nextTable: {
%>
<% for(article in articles){ %>
<article id="article" class="article__item fn-flex">
<!--<div class="article__meta article__meta--0">
<div>
${article.createAt}
</div>
<div>
<a href="electron-bnd2-b3id=H9oxzSym.html">
${article.viewCount}浏览
</a>
</div>
<div>
<a href="electron-bnd2-b3id=H9oxzSym.html#pipeComments">
${article.commentCount}评论
</a>
</div>
</div>-->
<div class="fn-flex-1 article__main">
<h2 class="article__title">
<a rel="bookmark" href="/articles/${article.id!}">
${article.title}
</a>
</h2>
<section
data-link="electron-bnd2-b3id=H9oxzSym.html"
class="pipe-content__reset fn-flex-1"
data-author="Vanessa">
${article.content}
</section>
<div>
<a class="tag" rel="tag" href="tags/bnd2-b3id=H9oxzSym.html">${article.tags}</a>
</div>
</div>
</article>
<% } %>
<%
//ajax片段结尾
}
%>
</div>
<div class="ft-center">
<nav class="pagination">
<a class="pagination__item" id="loadMore"
href="javascript:void(0);">
加载更多
</a>
</nav>
</div>
</div>
<% } %>
基于jeesite的cms系统(四):使用Beetl模版引擎在后端渲染数据的更多相关文章
- 基于jeesite的cms系统(一):开发环境搭建
基于jeesite的cms系统系列,是对基于jeesite进行二次开发的博客模块开发过程的总结.涉及入门安装,二次开发,部署等 一.概况: JeeSite 是一个 Java 企业级快速开发平台,基于经 ...
- 基于jeesite的cms系统(三):使用RESTful API在前端渲染数据
使用RESTful API可以更好的开发前后分离的应用,后面一节会介绍使用模版引擎Beetl开发后端渲染的应用. 一.配置Swagger(Api 接口文档) 1.使用系统自带 拷贝jeesite-mo ...
- 基于jeesite的cms系统(二):整体设计
一.菜单设计 在系统管理-菜单管理中可以设置内容管理菜单(自动生成) 注意:归属模块应属于核心模块core.如果新加的的菜单设置为内容管理模块cms,系统下次重启时会重置本次设置,具体原因不详. 二. ...
- 基于jeesite的cms系统(五):wangEditor富文本编辑器
一.关于wangEditor: wangEditor —— 轻量级 web 富文本编辑器,配置方便,使用简单.支持 IE10+ 浏览器. 官网:www.wangEditor.com 文档:www.ka ...
- 基于jeesite的cms系统(七):GlobalException全局异常和部署
关于全局异常: 在业务代码中专注处理业务,而不是返回各种CodeMsg(比如这里只需要知道登录时成功还是失败,其余情况直接抛出异常),可以直接抛出异常,添加一个全局异常类,根据CodeMsg来生成异常 ...
- 基于jeesite的cms系统(六):Lucene全文搜索引擎
1.lucene初始化 // @Value("${lucene.index.path}") private String indexPath = "/Users/vito ...
- 一个基于NodeJS开发的APP管理CMS系统
花了大概3周独立开发了一个基于NodeJS的CMS系统,用于公司APP的内容管理( **公司APP?广告放在最后 ^_^ ** ,管理员请理解~~~ )晚上看了部电影还不想睡,闲着也是闲着就作下小小总 ...
- 基于Java的开源CMS系统选择(转)
CMS概述 对于网站CMS系统而言,基于PHP的是主流,如Drupal/Joomla在各个主流虚拟机提供商上都是标准配置,也被广泛使用. 但如果你拥有Java团队,或者项目目标是想建立一个企业网使用的 ...
- 基于Java的开源CMS系统选择
CMS概述 对于网站CMS系统而言,基于PHP的是主流,如Drupal/Joomla在各个主流虚拟机提供商上都是标准配置,也被广泛使用. 但如果你拥有Java团队,或者项目目标是想建立一个企业网使用的 ...
随机推荐
- C学习笔记(逗号表达式)
(1)书写: ① int i; i=(i=*,i*); printf("%d\n",i); i=60; ② int i; i=i=*,i*; printf("%d\n&q ...
- mssql sqlserver with cte表达式(递归)找出最顶值的方法分享
摘要: 下文通过递归的方式找出最顶级部门的方法分享,如下所示: 实验环境:sql server 2008 R2 下文通过cte-with表达式实现递归,获取一个公司的顶级部门,如下所示 例:部门表 c ...
- activemq读取剩余消息队列中消息的数量
先上原文链接: http://blog.csdn.net/bodybo/article/details/5647968 ActiveMQ在C#中的应用 ActiveMQ是个好东东,不必多说.Acti ...
- 关掉那些windows上因权限无法关闭的服务
ProcessExplorer 下载地址 :https://docs.microsoft.com/en-us/sysinternals/downloads/process-explorer 以管理员身 ...
- 影响Linux发展的四位天才黑客
影响Linux发展的四位天才黑客 相信大家对 Linux 再熟悉不过了.我们都知道 Linux继承自 Unix,但其实他们上一代还有一个 Multics.从最早的 Multics 发展到最早版本的 L ...
- WEB框架-Django框架学习(一)-基础层级关系
今日主要内容为Django架构,主要有路由层,视图层和模板层 1. Django的路由层 URL配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL与要为该URL调用的视图函数之 ...
- 随心测试_软测基础_006<测试人职业发展>
接上篇:熟悉了_测试人员的工作职责范围与具体的工作内容 ,如何规划:测试人员的职业路线呢? 贴心小提示:以下内容,仅供参考,不挖坑 Q1:如何规划测试工程师的职业发展路线? A1:SX的观点:预定目标 ...
- linux 禁用root登录
1.新建一个用户,用来登录 # useradd aaaaa (已添加用户名aaaaa为例). 2.设置密码(需要切换到root下进行设置) # cd /root # ls #passwd bbbb ...
- 证明与计算(1): Decision Problem, Formal Language L, P and NP
0x01 从判定问题到形式语言 这篇讲知识证明的wiki([1]): https://en.wikipedia.org/wiki/Proof_of_knowledge 里面有一句话: Let x be ...
- 数据的存储方式:SQLiteOpenHelper的用法
Android为了让我们能够更加方便的的管理数据,专门提供了一个SQLiteOpenHelper类,它是一个抽象类,如果我们想要使用它,就需要创建一个自己帮助类去继承它,而且它有两个抽象的方法,分别是 ...