QWrap简介之:Retouch ---润饰、渲染
下面两行代码,比较一下,有什么区别:
QW.NodeW('div').show();
W('div').show();
前者,看起来很清晰准确,可是,会有点不爽:“‘QW.NodeW’,能不能给个简短的命名?”。
后者,写起来很简单,可是,会有点不放心:“这个W从何而来?它会不会与已有的全局变量产生冲突?”
各有优劣,如何选择?
站在QWrap开发者的角度看:我们“应该提供”一个只有一个全局变量的库,这样才不会与别人产生冲突。
站在QWrap使用者的角度看:我们“要用”一个简单易用的东西,我们对“严谨性”没有“洁癖”。
这似乎是一个矛盾,开发者觉得自己的义务是提供严谨标准的产品,而使用者觉得自己的目的是用一个简单方便的产品。
他们的价值取向不同,生硬的对接难免有摩擦。
Retouch就是为解决这类问题而来的:开发者不用改变自己的理论追求,使用者也不用调整自己的实用要求,让Retouch来把开发者提供的生硬的产品,改装渲染出一个易学易用的产品。
Retouch,可译作修描、润饰、渲染。
前面,QWrap的开发者们已经按他们严谨标准的追求提供了一个QWrap的基础库,
这个库是以QW为根命名空间,提供一系列静态Helper与Util(相当于一个YUI2)、一个还没加上装备的NodeW。
观察一下,哪些地方需要整理修饰。
1。习惯于使用prototype的同学,会提出:“String/Array等,我要用原型方法。”
2。习惯于使用YUI2的同学,会提出:“跟节点有关的方法,为什么不全在Dom上,而是分在好几个Helper上。”
3。习惯于使用jquery的同学,会提出:“那些NodeH的方法,应该直接放到NodeW上。”
4。习惯于使用jquery的同学,还会提出:“jquery使用的是$,你们为什么要用QW.NodeW。”
5。觉得Array泛型很好用的同学,会问:“js1.6里已支持这样用,Array.forEach(document.getElementsByTagName('div'),function(el){el.style.display='none';}),为啥不支持。”
6。已经用惯了tangram的同学,会提出:“我们以前是这样用的:baidu.string.format,为什么现在要改成QW.StringH.format”
7。有啊的用户也会提出:“为什么总要用“QW.”把它省下来不可以吗?”
总之,用户的需求,很多是个性化的。我们在写QWrap时,是不可能全部把这些需求写到代码里去的。但是,我们可以做到:“再多花一点成本,就能满足你的需求。”这一点成本,就是retouch的成本。
例如,对于上面的7个问题,
1。既然习惯于prototype,那应该也习惯了prototype被污染吧,那我们把某些helper的方法,methodize到原型上去。
2。习惯用YUI.Dom.show('myId'),那我们创建一个QW.Dom的命名空间,把DomU、NodeH、EventTargetH、JssTargetH等方法都集成进来。
3。希望NodeW像jquery一样有很多dom功能的同学,代表了大多数的用户。是的,就没你不说,我们也会把NodeH、EventTargetH、JssTargetH的功能集成进来。
4。希望用$的同学----我们推荐用W的缩写,也一样简单。
5。觉得Array泛型很好用的同学-----想法很好,那我们把ArrayH上的方法,也复制到Array上吧。
6。希望用“baidu.string.format”的同学也不用急,可以加一些别名来解决这个问题。
7。希望省下“QW.”的同学也不用急,我们把QW命名空间上的变量都导到window上吧。
总之,这些方法都可以由retouch来做到。
可能会有同学有不满:“可以做到,那你为什么不做?”
这是一个很好的问题。很多东西可以做,但是会有隐患,或与别人的需求冲突。所以,我们在做之前,会权衡利弊,有所为有所不为。
即:我们会为一些典型的需求,定制一些retouch。----用户在用之前,最好也明白它的利弊。
定制的三个retouch:
1。 core_retouch:为原生对象作渲染,参考于prototype,代码参见:http://dev.qwrap.com/resource/js/core/core_retouch.js
2。 dom_retouch:主要是渲染NodeW,代码参见:http://dev.qwrap.com/resource/js/dom/dom_retouch.js
3。 youa_retouch:以youa为典型用户,加更多人性化功能,代码参见:http://dev.qwrap.com/resource/js/apps/youa_retouch.js
关于他们的详情,且听下回分解。
附:QWrap网址:http://www.qwrap.com