EonerCMS——做一个仿桌面系统的CMS(五)

简介:

 这次主要讲一下js模板和鼠标右键功能,东西比较简单,我就没有做demo,简单说下原理吧。

js模板

  为什么要使用js模板?因为在这个系统里,我经常要打开一个或多个窗口,但实际上这些窗口的HTML代码都是一样的,只是其中的参数稍微有点变化。既然如此,何不写成模板,把参数定义成指定格式的标签,然后用正则批量替换,生成真正的HTML代码,再插入页面中。这样不仅阅读方便,而且修改也方面。

  说改就改,改之前我考虑了另一个问题,就是要不要使用网上现有的js模板引擎,这方面因为之前完全没了解过,所以搜了几个,有的似乎很有名,比如JST,但也非常大,所以我没有考虑;有的很小,也就是一些JSer自己写的插件,我担心会有BUG,所以也没考虑。最终我打算自己写,因为我不需要ajax--json--dom这么一个流程,所以,我就找了一个替换模板参数的方法,虽然不是我写的,但是很好用,来看一下吧:

var  FormatModel = function (str,model){
     for ( var  k in  model){
         var  re = new  RegExp( "{" +k+ "}" , "g" );
         str = str.replace(re,model[k]);
     }
     return  str;
}

  要怎么用呢,其实很简单,看下for循环里面的操作就清楚了,str是传入的模板,model是个key--value数组,看下具体用法吧:

//图标模板
var  shortcutTemp = '<li style="left:{left}px;top:{top}px" title="{title}" shortcut="{shortcut}"><img src="{imgsrc}"><span>{title}</span><em></em></li>' ;
_cache.shortcutTemp = { "top" :_top, "left" :_left, "title" :shortcut[sc][1], "shortcut" :shortcut[sc][0], "imgsrc" :shortcut[sc][2]};
$(ul).append(FormatModel(shortcutTemp,_cache.shortcutTemp));

  shortcutTemp是图标模板,其中需要替换参数的书写格式是{...},_cache.shortcutTem就是那个参数数组了,这个方法我建议大家可以收藏一下,挺好用的。最终替换后输出就是这个样子了:

< li  shortcut="0" title="小睿的博客" style="left:20px;top:20px;">
     < img  src="img/shortcut/news.png">
     < span >小睿的博客</ span >
     < em ></ em >
</ li >

  下面说下鼠标右键,这个功能其实是必不可少的。可能大部分人知道网页上点击鼠标右键都是弹出浏览器设定的工具条,所以一般没人会点。但是我记得之前看到过一句话,就是“一个好的产品,就是能让用户在使用的过程中,突然说出:‘我靠,居然还有这功能’。那么,这个产品就成功了”,所以,关于右键,这个功能必不可少,哪怕就一两个地方能用上。

鼠标右键

  这快没有太大难点,简单给段代码自己去尝试下吧:

//绑定任务栏点击事件
$( '.task-window li' ).live( 'contextmenu' , function (e){
     //展示自定义右键菜单
     Core.taskwindowrightmenu($( this ));
     //屏蔽浏览器自带右键菜单
     return  false ;
});

  右键点击我

  下面我补充一张图,就是前几天发的一篇文章《一款腾讯UED设计的提示插件(使用教程)》,感觉调用方便,效果也不错,就直接拿来用了,直接看图吧

  因为是在iframe里调用,所以要在调用方法前加上“window.parent”,也就是这样:

window.parent.ZENG.msgbox.show( "设置成功!" , 4, 2000);

  OK,内容说完了,今天是国庆,所以祝大家国庆快乐,玩的开心。像我这种没什么活动,工作能力又不是很强的,只能趁大家都休息的时候偷偷学学,努力赶超,想必应该也有一群和我一样处境的人吧,相信总有一天我们的能力会得到大部分人认可的。

  不说了,忙了一晚上,也该休息下了,打dota去了<( ̄︶ ̄)>





   本文转自胡尐睿丶博客园博客,原文链接:http://www.cnblogs.com/hooray/archive/2011/10/01/2197797.html,如需转载请自行联系原作者



相关文章
|
SQL 关系型数据库 MySQL
十九、禁止ROOT用户远程登录
十九、禁止ROOT用户远程登录
795 0
|
数据采集 人工智能
论文介绍:训练计算最优的大型语言模型
【2月更文挑战第30天】研究人员发现,在有限计算资源下,优化大型语言模型的训练需使模型大小和训练数据量成比例增长,以达到计算最优。通过训练700亿参数的Chinchilla模型并对比GPT-3等,验证了该策略的有效性。论文强调数据集质量和伦理隐私问题,并提出预测模型扩展的方法。这一发现对AI领域的模型训练策略提供了新思路,但也面临数据质量和伦理挑战。
228 2
论文介绍:训练计算最优的大型语言模型
MFC编程 -- 实现拖拽文件获取路径
MFC编程 -- 实现拖拽文件获取路径
376 0
|
9月前
|
JSON 监控 API
1688商品列表API接口指南
1688 商品列表 API 可帮助开发者和商家获取商品基本信息(如 ID、名称、价格等)、支持筛选排序(类目、价格、销量等条件)、分页查询及指定店铺商品获取,便于商品管理与竞品分析。调用流程包括:注册账号创建应用以获取 App Key 和 App Secret、生成签名确保请求合法性、构造请求参数(含 app_key、sign 等)、发送 HTTP 请求并处理 JSON 响应数据。
365 19
|
11月前
|
存储 人工智能 分布式计算
湖仓实时化升级 :Uniflow 构建流批一体实时湖仓
本文整理自阿里云产品经理李昊哲在Flink Forward Asia 2024流批一体专场的分享,涵盖实时湖仓发展趋势、基于Flink搭建流批一体实时湖仓及Materialized Table优化三方面。首先探讨了实时湖仓的发展趋势和背景,特别是阿里云在该领域的领导地位。接着介绍了Uniflow解决方案,通过Flink CDC、Paimon存储等技术实现低成本、高性能的流批一体处理。最后,重点讲解了Materialized Table如何简化用户操作,提升数据查询和补数体验,助力企业高效应对不同业务需求。
966 18
湖仓实时化升级 :Uniflow 构建流批一体实时湖仓
|
9月前
|
人工智能
中国AI崛起与生成式人工智能(GAI)认证:驱动全球科技变革的人才战略
本文探讨了中国在人工智能(AI)领域的崛起及其对全球科技和经济的影响。文章回顾了中国AI研究的发展历程,从引进吸收到自主创新,政府政策支持与企业投入推动了AI技术的突破与广泛应用。同时,生成式人工智能(GAI)认证的重要性被强调,其为AI人才培养提供了专业标准,助力行业规范化发展。未来,中国将继续深化AI研究,加强国际交流,通过技能认证项目如GAI认证,为AI领域培养更多高素质人才,推动全球AI技术的繁荣发展。
|
12月前
|
数据采集 数据安全/隐私保护 Python
【Python】已解决:urllib.error.HTTPError: HTTP Error 403: Forbidden
通过上述方法,可以有效解决 `urllib.error.HTTPError: HTTP Error 403: Forbidden` 错误。具体选择哪种方法取决于服务器对请求的限制。通常情况下,添加用户代理和模拟浏览器请求是最常见且有效的解决方案。
671 10
|
安全 API 数据处理
鸿蒙next版开发:ArkTS组件通用属性(隐私遮罩)
在HarmonyOS 5.0中,ArkTS引入了隐私遮罩功能,用于保护用户隐私和数据安全。本文详细介绍了隐私遮罩的通用属性和使用方法,并提供了示例代码。隐私遮罩支持Image和Text组件,在数据加载或处理过程中防止敏感信息泄露,提升用户体验和数据安全性。
440 11
|
关系型数据库 MySQL 分布式数据库
云原生数据库PolarDB MySQL版的全面深度评测
云原生数据库PolarDB MySQL版的全面深度评测
299 0