文档章节

好专业的beetl代码

闲大赋
 闲大赋
发布于 2013/08/17 01:29
字数 524
阅读 2157
收藏 21
点赞 3
评论 5

无意中看到 @渔泯小镇  写的beetl翻页代码,这是一个典型的显示逻辑较为复杂的场景,很考验模板语言

写的非常专业,

http://www.oschina.net/code/snippet_204433_21360

<%

002     var pageNumber = page.pageNumber;   // 当前页
003     var totalPage = page.totalPage;     // 总页数
004     var num_display_entries = 11;       // 每次显示多少页
005     var num_edge_entries = 2;           // 前后各多少页
006     var ellipse_text = "...";
007     // uri地址 如果不是/结束的 那么就表示带有参数,使用res风格
008     if (!strutil.endWith(uri,"/")) {
009         uri = uri + "-";
010     }
011      
012     if (page.totalRow > page.pageSize) {
013 %>
014 <div class="pagin clearfix">
015     <div class="pagin-head">
016 <%
017         // 上一页
018         if(pageNumber != 1) {
019             printf("<a href='%s%s'>&lt;</a>",uri,pageNumber-1);
020         } else {
021             printf("<span class='current prve'>&lt;</span>");
022         }
023         // 当前页
024         //printf(" <span class='current'>%s</span>",pageNumber);
025          
026         // 下一页
027         if(pageNumber != totalPage) {
028             printf(" <a href='%s%s'>&gt;</a>",uri,pageNumber+1);
029         } else {
030             printf(" <span class='current next'>&gt;</span>");
031         }
032 %>
033     </div>
034     <div class="pagin-body">
035     <%
036         // 总页数大于 (显示的页数+前后显示) 表示需要显示很多页
037         var pageCount = totalPage - (num_display_entries + num_edge_entries * 2);
038         if (pageCount > 0) {
039             var i = 1;
040             var len = 0;
041             var _start = trunc(num_display_entries / 2);
042             var _end = _start;
043             if (num_display_entries%2 == 0) {
044                 _start = _start - 1;
045             }
046              
047             // 页码-前
048             if (pageNumber - _start - num_edge_entries >= num_edge_entries) {
049                 while(i < num_edge_entries + 1) {
050                     printf("<a href='%s%s'>%s</a> ",uri,i,i);
051                     i = i + 1;
052                 }
053                 printf("<span>%s</span> ",ellipse_text);
054                  
055                 i = pageNumber-_start;
056                 len = pageNumber + _end+1;
057             } else {
058                 len = num_display_entries+1;
059             }
060              
061             var show_num_edge_entries_next = totalPage - pageNumber - _end - num_edge_entries > 0;
062             if (!show_num_edge_entries_next) {
063                 i = pageNumber - _start;
064                 if (totalPage - pageNumber - _end < 0) {
065                     i = totalPage - num_display_entries+1;
066                 }
067                 len = totalPage + 1;
068             }
069              
070             // 显示中间的那串页码
071             while(i < len) {
072                 if (pageNumber == i) {
073                     printf("<span class='current'>%s</span> ",i);
074                 } else {
075                     printf("<a href='%s%s'>%s</a> ",uri,i,i);
076                 }
077                 i = i + 1;
078             }
079              
080             // 页码-后
081             if (show_num_edge_entries_next) {
082                 printf("<span>%s</span> ",ellipse_text);
083                 i = totalPage + 1 - num_edge_entries;
084                 while(i < totalPage + 1) {
085                     printf("<a href='%s%s'>%s</a> ",uri,i,i);
086                     i = i + 1;
087                 }
088             }
089         } else {
090             // 显示全部页码
091             var i = 1;
092             while(i < totalPage + 1) {
093                 if (pageNumber == i) {
094                     printf("<span class='current'>%s</span> ",i);
095                 } else {
096                     printf("<a href='%s%s'>%s</a> ",uri,i,i);
097                 }
098                 i = i + 1;
099             }
100         }
101     %>
102     </div>
103 </div>
104 <%
105     }
106 %>

© 著作权归作者所有

共有 人打赏支持
闲大赋

闲大赋

粉丝 1098
博文 86
码字总数 81146
作品 10
西城
架构师
加载中

评论(5)

j
joydon
看的都想吐。烂<%漫天飞 恶不恶心。
闲大赋
闲大赋
说的是好专业的“beetl”代码,用的beetl模板语言。没有说好专业代码,你用js,php写,这些逻辑都得有,不信能写出花样来?
圊國圊國
圊國圊國
不敢恭维, 这中代码 我都不想维护,最好用js 生成
红薯的小黄瓜
红薯的小黄瓜
好难维护的代码1
Artlongs
Artlongs
27最原始的类ASP,JSP的写法!
剖析 “‘最好的模板引擎’Beetl剖析及与Tiny模板引擎对比”

http://blog.csdn.net/cndes/art ... 88771 这有一篇文章,说是剖析beetl模板引擎,并与同为国内的tiny模板引擎做对比(以下简称“剖析beetl”),其剖析过程公正,但结论却不正确(文中暗示的...

闲大赋 ⋅ 2016/07/14 ⋅ 9

如何帮助beetl发展

Beetl在国内Java Web项目里已经经常被使用,或者是重要的选项,为了帮助Beetl更好的发展,建议如下: 熟练Beetl的开发者: 1 已经使用过Beetl的可以发布一些个人博客介绍Beetl,或者Beetl使用...

闲大赋 ⋅ 2015/04/01 ⋅ 0

Beetl的极简之道

跟一个同为国内流行开源软件的开发者聊天,他说beetl功能太全,代码太多。他希望的模板与语言应该简单,然后发给我一个只提供几个指令的模板引擎的链接。后来,我详细介绍beetl让他明白了Bee...

闲大赋 ⋅ 2014/12/29 ⋅ 9

模板引擎Beet的6大创新点

2011年发布Beetl 0.5的时候,新闻是在Iteye上发布的,老资格程序员可能预料Iteye上会发生什么了,我收到的最多的不是鼓励和喝彩,而是吐槽,”又是一个轮子“是里面最大的声音。尽管4年前的版...

闲大赋 ⋅ 2015/08/02 ⋅ 18

为什么JSP会比Beetl慢

许多人都不相信这个事实,作为前端常用渲染技术,JSP比Beetl慢。如果稍微了解这俩种技术的人,会分析:JSP是编译成class的,而Beetl总是解释执行的。JSP肯定会比Beetl快。然而,事实并不是这...

闲大赋 ⋅ 2015/07/07 ⋅ 81

beetl模板引擎的好玩的地方

Beetl2.x即将发布,性能,功能上已经非常卓越了,这里介绍一下beetl的好玩的地方,使用者可以定制beetl很多特性 1 自定义控制语句定界符: 开发者可以根据自己喜爱定义<% %>作为控制语句定界...

闲大赋 ⋅ 2014/02/14 ⋅ 1

关于beetl认识的几个误区

beetl 现在国内越来越流行,社区网站每日访问量都有上千,下载量每日保持在20个左右(无法统计maven的)。qq群在满员之前已经踢走了一拨又一拨的不活跃会员还有少量价值观不符合的人(写这个...

闲大赋 ⋅ 2016/09/14 ⋅ 17

悠然乱弹:“最好的模板引擎”Beetl 剖析及与Tiny模板引擎对比

Beetl的环境搭建 输入命令 git clone https://git.oschina.net/xiandafu/beetl2.0.git不一会儿,输出了下面的内容 Cloning into 'beetl2.0'...remote: Counting objects: 5807, done.remote:......

悠悠然然 ⋅ 2015/08/01 ⋅ 44

beelt使用说明

<!-- [if gte mso 9]><xml><w:WordDocument><w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel><w:DisplayHorizontalDrawingGridEvery>0</w:DisplayHorizontalDrawingGridEvery><......

樱花泪 ⋅ 2014/02/19 ⋅ 0

Java 论坛程序--beetl-bbs

beetl-bbs 是在beetl官网php免费论坛被黑后,基于java开发的论坛,具备发帖,回复,消息通知,缓存等常用用功能,采用技术有spring boot,beetl 和 beetlsql。整体代码较少,可以是学习sprin...

闲大赋 ⋅ 2016/12/29 ⋅ 4

没有更多内容

加载失败,请刷新页面

加载更多

下一页

一篇文章学懂Shell脚本

Shell脚本,就是利用Shell的命令解释的功能,对一个纯文本的文件进行解析,然后执行这些功能,也可以说Shell脚本就是一系列命令的集合。 Shell可以直接使用在win/Unix/Linux上面,并且可以调用...

Jake_xun ⋅ 28分钟前 ⋅ 0

大数据工程师需要精通算法吗,要达到一个什么程度呢?

机器学习是人工智能的一个重要分支,而机器学习下最重要的就是算法,本文讲述归纳了入门级的几个机器学习算法,加大数据学习群:716581014一起加入AI技术大本营。 1、监督学习算法 这个算法由...

董黎明 ⋅ 今天 ⋅ 0

Kylin 对维度表的的要求

1.要具有数据一致性,主键值必须是唯一的;Kylin 会进行检查,如果有两行的主键值相同则会报错。 2.维度表越小越好,因为 Kylin 会将维度表加载到内存中供查询;过大的表不适合作为维度表,默...

无精疯 ⋅ 今天 ⋅ 0

58到家数据库30条军规解读

军规适用场景:并发量大、数据量大的互联网业务 军规:介绍内容 解读:讲解原因,解读比军规更重要 一、基础规范 (1)必须使用InnoDB存储引擎 解读:支持事务、行级锁、并发性能更好、CPU及...

kim_o ⋅ 今天 ⋅ 0

代码注释中顺序更改 文件读写换行

`package ssh; import com.xxx.common.log.LogFactory; import com.xxx.common.log.LoggerUtil; import org.apache.commons.lang3.StringUtils; import java.io.*; public class DirErgodic ......

林伟琨 ⋅ 今天 ⋅ 0

linux实用操作命令

参考 http://blog.csdn.net/qwe6112071/article/details/50806734 ls [选项] [目录名 | 列出相关目录下的所有目录和文件 -a 列出包括.a开头的隐藏文件的所有文件-A 同-a,但不列出"."和"...

简心 ⋅ 今天 ⋅ 0

preg_match处理中文符号 url编码方法

之前想过直接用符号来替换,但失败了,或者用其他方式,但有有些复杂,这个是一个新的思路,亲测可用 <?php$str='637朗逸·超速新风王(300)(白光)'; $str=iconv("UTF-8","GBK",$s...

大灰狼wow ⋅ 今天 ⋅ 0

DevOps 资讯 | PostgreSQL 的时代到来了吗 ?

PostgreSQL是对象-关系型数据库,BSD 许可证。拼读为"post-gress-Q-L"。 作者: Tony Baer 原文: Has the time finally come for PostgreSQL?(有删节) 近30年来 PostgreSQL 无疑是您从未听...

RiboseYim ⋅ 今天 ⋅ 0

github太慢

1:用浏览器访问 IPAddress.com or http://tool.chinaz.com 使用 IP Lookup 工具获得github.com和github.global.ssl.fastly.net域名的ip地址 2:/etc/hosts文件中添加如下格式(IP最好自己查一...

whoisliang ⋅ 今天 ⋅ 0

非阻塞同步之 CAS

为解决线程安全问题,互斥同步相当于以时间换空间。多线程情况下,只有一个线程可以访问同步代码。这种同步也叫阻塞同步(Blocking Synchronization). 这种同步属于一种悲观并发策略。认为只...

长安一梦 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部