文档章节

好专业的beetl代码

闲大赋
 闲大赋
发布于 2013/08/17 01:29
字数 524
阅读 2169
收藏 21

无意中看到 @渔泯小镇  写的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 %>

© 著作权归作者所有

共有 人打赏支持
闲大赋

闲大赋

粉丝 1121
博文 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
651
9
关于beetl认识的几个误区

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

闲大赋
2016/09/14
2.2K
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
0
44
beetl模板引擎的好玩的地方

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

闲大赋
2014/02/14
0
1
Java 论坛程序--beetl-bbs

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

闲大赋
2016/12/29
5.1K
4

没有更多内容

加载失败,请刷新页面

加载更多

下一页

新工作与老项目

新的工作不知不觉的干了一个多月了。怎么说呢,跟想象中的差别不少,本来想的能进来跟大公司的同事能有很多交流,能在团队中跟大牛学习更快。结果公司的这个项目上只有两个程序员,项目是十年...

zypy333
6分钟前
0
0
mysql 在windows的安装

mysql 在windows的安装。 mysql64位的server的下载地址是: https://dev.mysql.com/downloads/mysql/ 使用的是5.7版本。 下载安装包,解压至D:\mysql\mysql-5.7.23-winx64\ 在D:\mysql\mysq...

lxzh504
19分钟前
1
0
云技术、大数据(hadoop)入门常见问题回答

当我们学习一门新技术的时候,我们总是产生各种各样的问题,这些问题整理出来,包括该 1.如何学习hadoop? 2.hadoop常见问题? 3.还有hbase、hive安装使用等? 你知道搭建hadoop平台需要些什...

董黎明
19分钟前
1
0
小程序自定义底部tab

场景 1.tabBar是在内页而非首页,这时就不得不自定义一个tabBar了 2.自定义风格 3.子页数量超过5个,得到更多了tab 4.改变点击tab默认事件,比如出登录界面,或者弹出上拉子菜单等 步骤 1.照...

萤火的萤火
24分钟前
1
0
shell炫技

1.为脚本添加“--help” #!/bin/shif [ ${#@} -ne 0 ] && [ "${@#"--help"}" = "" ]; then printf -- '...help...\n'; exit 0;fi; 2.输出字体添加颜色 https://misc.flogisoft.com......

HJCui
25分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部