您的位置:首页 > 汽车 > 新车 > 江苏网站建设网站排名优化_大学网站策划方案_站长全网指数查询_西安seo优化培训

江苏网站建设网站排名优化_大学网站策划方案_站长全网指数查询_西安seo优化培训

2024/12/26 18:25:22 来源:https://blog.csdn.net/baozhengw/article/details/144280464  浏览:    关键词:江苏网站建设网站排名优化_大学网站策划方案_站长全网指数查询_西安seo优化培训
江苏网站建设网站排名优化_大学网站策划方案_站长全网指数查询_西安seo优化培训

        在前面的文章里介绍过freemarker,thymeleaf模板引擎,本文介绍另一个性能超高的模板引擎---Beetl,据说此模板引擎的性能远超Freemarker。官网的说法是,Beetl 远超过主流java模板引擎性能(引擎性能5-6倍于FreeMarker,2倍于JSP。参考附录),而且消耗较低的CPU。

        官方网站是:

DocumentDescriptionicon-default.png?t=O83Ahttp://ibeetl.com/guide/#/beetl        这个网站上有详细的示例。想深入学习的话可在此网站上下载资料。

        那么为什么有时候我们需要考虑使用模板引擎呢?使用VUE做前后端分离的前端不可以吗?使用模板引擎的主要场景是内容类网站,希望HTML正文能够对爬虫友好的,或者说内容能够直接呈现在html元素中,而不是通过接口动态赋值给页面元素的。

       本文介绍Beetl快速上手的过程。

一、引入依赖

        在openjweb-core模块中引入beetl依赖

<dependency><groupId>com.ibeetl</groupId><artifactId>beetl-framework-starter</artifactId><version>1.2.28.RELEASE</version></dependency>

二、开发测试类

        在openjweb-sys工程中建一个BeetlDemoController.java:

package org.openjweb.sys.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;import java.util.HashMap;
import java.util.Map;/*** http://localhost:8001/demo/beetl/queryBook*/
@Controller
@RequestMapping(value="/demo/beetl/")
public class BeetlDemoController {@RequestMapping(value="/queryBook")public String queryBook( Model model) {Map<String,Object> map = new HashMap();map.put("name", "三国演义");map.put("author", "罗贯中");model.addAttribute("book", map);return "beetlDemo.btl";//返回页面名}
}

         这段代码创建了一个Map,map中含name,author,然后设置给book变量返回给前端的beetlDemo.btl页面。

        然后在openjweb-sys的resources/templates下建一个beetlDemo.btl文件:

        

<!DOCTYPE HTML>
<html>
<head><title>图书</title><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/></head><body>
<table border="1"><tr><td>book</td><td>author</td></tr><tr><td>${book.name}</td><td>${book.author}</td></tr>
</table>
</body>
</html>

        文件中使用了${book.name}和${book.author}两个变量。

        运行http://localhost:8001/demo/beetl/queryBook :

        但是在实际项目中,如果把前端制作好的.html文件再改成扩展名.btl的话,会耗费时间,另外也不利于实时查看页面展示效果。所以还是使用.html后缀比较方便一点。如果使用.html后缀,可在application-dev.yml中增加:

beetl:suffix: html

        注意不是在spring节点下增加的,后缀html也不带. 别写成.html ,这个是实测过的。改成html后缀后,上面的beetlDemoController.java中的return  "beetlDemo.btl" ;改为return  "beetlDemo.html" ;即可。注意如果去掉.html会解析失败,所以需要写完整的文件名。改为解析.html后,.btl的解析就不支持了。

        经过测试,beetl改为解析.html后,并不影响thymeleaf解析前面章节示例中的页面。另外以后项目主要还是使用beetl作为模板引擎。

 二、beetl基础语法

        如果完整学习beetl基础语法可查看官方资料:DocumentDescriptionicon-default.png?t=O83Ahttp://ibeetl.com/guide/#/beetl/all     这里介绍常用的语法,beetl的语法有点类似javascript,也有点类似jsp,可以使用<%%>来书写beetl脚本。我们创建一个测试html,命名为beetlDemo3.html:

<!DOCTYPE HTML>
<html>
<head><title>图书2</title><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/></head><body><%
var a = 2;
var b = 3;
var result = a+b;
%>
hello 2+3=${result}<p><!--rotate--><%for(user in users){%>hello,${user.realName},your email is ${user.userEmail} ;<% } %></body>
</html>

        然后在控制层中再增加一个测试方法,这个测试方法返回用户列表,然后在前端展示:

//http://localhost:8001/demo/beetl/demo/*** 演示beetl语法* @param model* @return*/@RequestMapping(value="/demo")public String demo( Model model) {CommUser user = new CommUser();user.setRealName("张三");user.setUserEmail("abc@163.com");List<CommUser> list = new ArrayList<>();list.add(user );user = new CommUser();user.setRealName("李四");user.setUserEmail("lisi@163.com");list.add(user );model.addAttribute("users", list);return "beetlDemo3.html";//返回页面名}

        上面的代码创建了2个用户,放到users变量中返回给beetleDemo3.html,在beetleDemo3.html中,使用

  <%for(user in users){%>hello,${user.realName},your email is ${user.userEmail} ;<% } %>

        循环显示users中的realName和userEmail,运行效果:

另外

<%
var a = 2;
var b = 3;
var result = a+b;
%>

hello 2+3=${result}<p>

演示了在html中书写动态脚本,有点类似jsp和javascript。 

另外我们还可以使用beetl的逻辑表达式if,在beetlDemo3.html的</body>前加上下面的代码:

   <%var aa = 1;var bb="good";var cc = null;if(aa==1&&bb=="good"&&cc==null){%><script>alert('符合条件')</script><%}else{%><script>alert('不符合条件')</script><%}%>

运行效果:

还有其他常用的语法,下面是for的表达式:

<% var a = [1,2,3]; for(var i=0;i<a.~size;i++){ print(a[i]); } %>

下面是while循环:

<% var i = 0; while(i<5){ print(i); i++; } %>

其他语法就不再一一列举了。大家可以在使用的过程中根据需要来学习更多的语法。

本例代码见github:

GitHub - openjweb/cloud at masterOpenJWeb is a java bases low code platform. Contribute to openjweb/cloud development by creating an account on GitHub.icon-default.png?t=O83Ahttps://github.com/openjweb/cloud/tree/master

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com