本文探究一下qwrap的一个特色地方:Jss
mix(Jss,{ //存储的变量空间 rules:{}, /** *@name addRule *@param sSelector {String} selector字符串 *@param ruleData {Object} * / addRule:function(sSelector,ruleData){ //判断一下Jss.rules对象里面是否有key为sSelector,如果没有创建空对象{} var data = Jss.rules[sSelector] || (Jss.rules[sSelector] = {}); //合并一下数据,第三个参数true表示覆盖已有的 mix(data,ruleData,true); }, /** *@name addRules *@param rules {Object} key为selector 值为json对象 *@see addRule / addRules:function(rules){ //批量调用Jss.addRule for(var i in rules){ Jss.addRule(i,rules[i]); } }, /** *@name removeRule *@param sSelector {String} selector字符串 *@return {Boolean} 是否执行删除操作 * / removeRule:function(sSelector){ //先看Jss.rules里面有没有对应key为sSelector的数据 var data = Jss.rules[sSelector]; if(data){ //采用delete delete Jss.rules[sSelector]; //给标志位表示删除操作成功 return true; } //给标志位表示没有执行删除 return false; }, /** *@name getRuleData *@param sSelector {String} selector字符串 *@return {Object} 数据对象 * / getRuleData:function(sSelector){ //直接返回Jss.rules对象对应的key为sSelector的value return Jss.rules[sSelector]; }, /** *@name setRuleAttribute *@param sSelector {String} selector字符串 *@param sSelector {String} attributeName *@param sSelector {String} value / setRuleAttribute:function(sSelector,attributeName,value){ //创建一个空对象 var data = {}; //装key为attributeName,value为value data[attributeName] = value; //调用Jss.addRule Jss.addRule(sSelector,data); }, /** *@name removeRuleAttribute *@param sSelector {String} selector字符串 *@param sSelector {String} attributeName *@return {Boolean} 是否执行删除 / removeRuleAttribute:function(sSelector,attributeName){ var data = Jss.rules[sSelector]; if(data && (attributeName in data)){ //采用delete delete data[attributeName]; //给标志位表示删除操作成功 return true; } //给标志位表示没有执行删除 return false; }, /** *@name getRuleAttribute *@param {String} selector字符串 *@param {String} attributeName *@return 对应attributeName的数据部分 / getRuleAttribute:function(sSelector,attributeName){ //获取Jss.rules指定的sSelector,没有就创建空对象{} var data = Jss.rules[sSelector] || {}; //获取指定的attributeName return data[attributeName]; } });
结论:
- 上面数据存取其实都是操作的Jss.rules这个对象
- sSelector是有规范要求的:
- #id
- @name
- .className
- tagName
相关推荐
QWrap 是一个基于JavaScript的轻量级框架,旨在简化前端开发过程,提高代码的可维护性和性能。QWrap 的核心理念是提供一个简洁、高效且易于学习的API,让开发者可以快速构建交互丰富的Web应用。 在QWrap中,"wrap...
QWrap,源自百度有啊前端团队的创新之作,是一个专为JavaScript开发打造的高效、轻量级框架。这个框架的设计目标是简化Web应用的构建过程,提高开发效率,并且优化前端性能。QWrap的核心理念是模块化、组件化,使得...
3. **grid9_qwrap.js**:这是一个JavaScript文件,可能包含了处理网格布局和可能的查询功能的代码。"qwrap"可能代表查询包装器,用于处理用户的搜索请求或交互。 4. **bg_search_bar.png、bg-benefits.png**:这些...
`qwrap`可能是一个用于封装或简化操作的工具,而`api.js`可能包含了与服务端交互的API(应用程序编程接口),用于动态加载数据或者处理用户交互。 4. **bg-benefits.png**、**network-broken.png**、**welcome.png*...
今天在读Qwrap的源码stringH时里边有个 代码如下: format: function(s, arg0) { var args = arguments; return s.replace(/\{(\d+)\}/ig, function(a, b) { return args[(b | 0) + 1] || ”; }); } 它的使用方式是:...
4. QWrap代码错误点:在这个问题中,还涉及到了QWrap,这是一个在旧版浏览器中使用的兼容性封装,用于模拟一些现代浏览器提供的DOM操作方法。在这个例子中,QWrap的nativeQuery函数处理了查询选择器,但在某些情况下...
在Qwrap设计中,就运用了函数式编程的思想。另一方面,面向对象编程注重通过类和对象来模拟现实世界中的实体,实现代码的复用,如猫类的创建,不同的猫对象可以有不同的特性。 在程序模型与表达中,我们需要不断地...
压缩包子文件的文件名称列表看起来并不直接与HP网卡驱动相关,因为它们通常是网页设计或前端开发的资源文件,如CSS样式表(grid9_style.css)、HTML页面(new_page.html)、JavaScript脚本(grid9_qwrap.js、grid9_...
`grid9_qwrap.js` 是一个JavaScript文件,JavaScript通常用于增加网页的交互性和动态功能。在这个项目中,它可能是Grid9布局的JavaScript实现,用于处理用户交互、动画效果或者页面元素的动态行为。 `bg_search_bar...
而我们过去有基于 Qwrap 的 suggest 组件,经过长时间业务使用,已经比较成熟,所以有了将它改造为 jQuery 版本的想法。 经过两天的修改、调试和修复 bug,基本完成了大部分工作。 基本使用方法 引入必要的 css 和 ...
为了更好地满足不同业务需求,各大互联网公司纷纷研发了自己的前端框架,如阿里的Kissy和Arale、腾讯的JX、百度的Tangram以及360的QWrap等。本文旨在探讨前端架构技术选型的原则与方法,并通过对比分析当前主流前端...
QWrap库中的`QW.EventH.getEvent`静态方法提供了一个跨浏览器获取事件对象的解决方案。它首先检查是否已经提供了`event`对象,如果没有,则尝试从`element`对象或`window`对象中寻找。如果所有尝试都失败,它会遍历...
此外,还有国内浏览器的判定方法,如Tangrame或qwrap,它们主要关注IE、WebKit、Blink内核的浏览器。而对于事件的支持侦测,通常使用prototype的核心成员kangax的方法。这涉及到检测浏览器是否支持某种特定事件,如...
这些框架如Dojo、YUI、kissy、qwrap和mass,通过模块化来管理多个JavaScript文件,确保了代码的组织和加载效率。模块化是JavaScript工业化的重要标志,它提倡通过清晰的接口组合简单模块,以应对复杂软件的挑战。 ...