基于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团队,或者项目目标是想建立一个企业网使用的 ...
随机推荐
- js 判断元素(例如div)里的数据显示不全(数据长度大于元素长度)
//判断div里元素是否超出长度,true 超出,false 没有 dom=document.getElementById('id');function isEllipsis(dom) { va ...
- vim编辑器操作
vim被称为编辑器之神,另外一个是sublime.vim较vi比较高级,vi适用于文本编辑,vim更加适合于coding.凡是vim里面的命令在vi都是适用的. vim的大众版的三种模式(其实不止三种 ...
- Andriod studio 打包aar
因为项目不同,有些公用库而且还是c++的,还有一些带资源的,简单的复制遇到库升级又是一轮配置,编译成aar则解决这些麻烦. 但是默认andriod studio的make moudle只生成debug ...
- python学习笔记3_抽象
这一步的学习四个知识点,如何将语句组织成函数,参数,作用域(scope),和递归 一.函数 1.抽象和结构 抽象可以节省很多的工作量,实际上它的作用更大,它是使得计算机程序让人读懂的关键(这也是最基本 ...
- 如何在element-UI 组件的change事件中传递自定义参数
以select为例,如果select写在循环里,触发change事件时可能不只需要传递被选中项的值,还要传递index过去,来改变同一循环中的其他标签的状态. 下面这样写是无效的: @change=& ...
- 利用Python爬取网页图片
最近几天,研究了一下一直很好奇的爬虫算法.这里写一下最近几天的点点心得.下面进入正文: 你可能需要的工作环境: Python 3.6官网下载 我们这里以sogou作为爬取的对象. 首先我们进入搜狗图片 ...
- ASP.NET Core 搭配 Nginx 的真实IP问题
一.前言 Nginx(Engine X)是一个高性能HTTP和反向代理服务,是由俄罗斯人伊戈尔·赛索耶夫为访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发 ...
- JAVA 调用exe程序执行对应的文件 (个人用于编译Java文件)
需求: 需要利用Java程序,来调用计算机本身的黑窗口,来将特定的Java文件编译成对应的字节码文件. 实现思路: 通过调用Java的Runtime类,每个 Java 应用程序都有一个 Runtime ...
- 【git】git hello world
以前不怎么会用. http://blog.sina.com.cn/s/blog_1485511700102xdig.html git add 文件夹/ 添加整个文件夹及内容 gi ...
- 算法01 C语言设计
8.21 #include <stdio.h> void bubbleSort(int **p, int n); int main(void){ int a[100]; int *b[10 ...