QWrap简介之:apps果实篇之:纯净core+dom
就像是一棵树有很多果实一样,QWrap也有很多apps,本文讲解"纯净core+dom"的应用,即apps/core_dom_pure.js。
对应的帮助文档在这里:http://dev.qwrap.com/resource/js/_docs/_jsdoc_temp/(文档生成工具由Remember2015同学提供,特别感谢!)。
本应用面向的用户是:组件开发者。
对于组件开发者来说,有时会面临一种两难的选择:
A:依赖某库。这样开发简单,但是使用有局限,需要用户在所在页面引用依赖库。
B:无依赖开发。这样开发出来的组件是无依赖的,但是开发成本比较大,需要自己处理兼容等问题,并且如果用户已有某库,会造成公用代码的流量浪费。
用过YUI2或Tangram的同学可能会知道,还有第三种选择:
C:开发时依赖某库,发布时可以发布出无依赖的组件。
YUI2与Tangram都提供了一系列的静态方法,在开发时,只使用静态方法;在发布时,将所需的静态方法复制出来即可成为无依赖的形式。
QWrap在retouch之前,也是一个大的静态库,提供一系列的静态方法库。所以也能做到C选择。
另外,QWrap还提供了一个无依赖化的工具:用户可以引用apps/core_dom_pure.js,来开发自己的组件,开发完成后,将自己的代码复制到以下页面的“硬性代码”框中,点击“抽取”,就可以获取到一个瘦身后的QWrap了。
http://dev.qwrap.com/resource/js/_tools/combojsfiles/_examples/Solo.html
自动瘦身对于retouch性质的代码会保留,所以自动瘦身后的代码,还可以人工去掉一些不必要功能,进行二次或多次瘦身。
瘦身后的代码复制到自己组件代码的前面,这个组件就是无依赖的了。
顺带说点,个人喜欢在写组件时,先把组件对库的依赖定义在一起,相当于一个组件与库的适配,这样,也可以很容易的将自己的组件适配成依赖项目所使用的库的依赖版,以js库已经提供了的代码。
例如,combobox组件中,适配的代码如下:
详情请参考《无依赖的combobox组件(autocomplete组件)》,在写那一篇文章时,还没有这个solo工具,所以略有差别,不再详述。
附:QWrap博客地址:http://www.qwrap.com
对应的帮助文档在这里:http://dev.qwrap.com/resource/js/_docs/_jsdoc_temp/(文档生成工具由Remember2015同学提供,特别感谢!)。
本应用面向的用户是:组件开发者。
对于组件开发者来说,有时会面临一种两难的选择:
A:依赖某库。这样开发简单,但是使用有局限,需要用户在所在页面引用依赖库。
B:无依赖开发。这样开发出来的组件是无依赖的,但是开发成本比较大,需要自己处理兼容等问题,并且如果用户已有某库,会造成公用代码的流量浪费。
用过YUI2或Tangram的同学可能会知道,还有第三种选择:
C:开发时依赖某库,发布时可以发布出无依赖的组件。
YUI2与Tangram都提供了一系列的静态方法,在开发时,只使用静态方法;在发布时,将所需的静态方法复制出来即可成为无依赖的形式。
QWrap在retouch之前,也是一个大的静态库,提供一系列的静态方法库。所以也能做到C选择。
另外,QWrap还提供了一个无依赖化的工具:用户可以引用apps/core_dom_pure.js,来开发自己的组件,开发完成后,将自己的代码复制到以下页面的“硬性代码”框中,点击“抽取”,就可以获取到一个瘦身后的QWrap了。
http://dev.qwrap.com/resource/js/_tools/combojsfiles/_examples/Solo.html
自动瘦身对于retouch性质的代码会保留,所以自动瘦身后的代码,还可以人工去掉一些不必要功能,进行二次或多次瘦身。
瘦身后的代码复制到自己组件代码的前面,这个组件就是无依赖的了。
顺带说点,个人喜欢在写组件时,先把组件对库的依赖定义在一起,相当于一个组件与库的适配,这样,也可以很容易的将自己的组件适配成依赖项目所使用的库的依赖版,以js库已经提供了的代码。
例如,combobox组件中,适配的代码如下:
View Code
var mix = QW.ObjectH.mix,
DomU = QW.DomU,
createElement = DomU.createElement,
EventH = QW.EventH,
target = EventH.getTarget,
keyCode = EventH.getKeyCode,
preventDefault = EventH.preventDefault,
CustEvent = QW.CustEvent,
NodeH = QW.NodeH,
addClass = NodeH.addClass,
removeClass = NodeH.removeClass,
setStyle = NodeH.setStyle,
getXY = NodeH.getXY,
ancestorNode = NodeH.ancestorNode,
on = QW.EventTargetH.addEventListener,
...
详情请参考《无依赖的combobox组件(autocomplete组件)》,在写那一篇文章时,还没有这个solo工具,所以略有差别,不再详述。
附:QWrap博客地址:http://www.qwrap.com