QWrap简介之:Apps 应用--- 收获果实
“Helper + Wrap + Retouch + Apps主线”之Apps。
QWrap的根本使命,是:被应用、为项目开发或组件开发的同学提供易用好用的库。
Jquery与Prototype库,最后给用户使用的,都是一个js,没有多种应用的概念。如果用户想要定制一个满足自身需要的特别版本,需要自己思考个性化的途径。就算是自己想办法,这两个库也是很刚性的库,改、拆、插入功能都很有困难,最多只能在外面包一层。
前文已讲过Helper规范、Wrap模式、Retouch机制,它们都是QWrap的实现方式,是技术层面的内容。这些实现方式造就了QWrap能屈能伸、刚柔并济,这让QWrap有多种应用变得自然而然。
多种应用,就是我们所说的Apps。
对于应用,按组合特性把它分成以下几类:
A. 每个js就是独立的应用。
B. 多个js不同的组合,也会产生新的应用,尤其是一些有特性的组合。开发时可以是多个文件,但上线时会先合并后上线。
C. 把js里的某些方法抽取出来,也可以产出定制的应用。
D. YUI3的use方式的应用。
逐个分析一下以上各个应用。
A类应用,QWrap多个js文件,有各自的分工,参考不同的标准,分得很细。独立使用的意义不大。
B类应用,可以按不同的典型需求,定制几种典型的应用。----这是最接近其它库的使用方式,即:页面引入一个js,就能完成一类典型的需求。与其它框架不同的是:QWrap提供对好几类典型需求的应用,用户可以决定在项目、甚至页面使用哪种应用。例如:对于一个展现效率要求很高的页面,可以用先只加载种子应用,其它js通过异步use进来;对于已使用jquery的页面,可以使用core_retouched应用以与jquery互补;而对于某个一进入页面就会有很多js的文件,可以使用全面版应用;对于一个同时引用多个js库的页面,可以使用干净版的retouched应用;对于需要自动无依整的组件,可以使用纯洁版应用。等等。以后面的文章里会逐一介绍几种典型应用。
C类应用,可拆可组的风格,产出个性化的抽取或定制功能,让个性化的精度到达方法级别。以后也讲solo工具时也会讲到。
D类应用,YUI3的use,可以有两种方式:如果服务器不支持combo功能,则逐一加载所需的模块。如果支持,也可以在服务器合并以减少请求。----注意,这个合并与上线时的build合并的时机不一样。这个也会在讲种子应用时会有详细说明。
另外,QWrap对B类应用的方式是:
在开发环境下,apps/youa_seed.js的内容是这样的:
页面这样引用:
上线时,页面代码不用作变动,而只需把core_base.js、module.h.js与youa_modules_config.js三个文件的内容拼接起来,当作youa_seed.js的内容
具体有哪些B类应用,在这里可以看个目录http://dev.qwrap.com/resource/js/apps/,具体内容,且等下文……
附: QWrap网址:http://www.qwrap.com
QWrap的根本使命,是:被应用、为项目开发或组件开发的同学提供易用好用的库。
Jquery与Prototype库,最后给用户使用的,都是一个js,没有多种应用的概念。如果用户想要定制一个满足自身需要的特别版本,需要自己思考个性化的途径。就算是自己想办法,这两个库也是很刚性的库,改、拆、插入功能都很有困难,最多只能在外面包一层。
前文已讲过Helper规范、Wrap模式、Retouch机制,它们都是QWrap的实现方式,是技术层面的内容。这些实现方式造就了QWrap能屈能伸、刚柔并济,这让QWrap有多种应用变得自然而然。
多种应用,就是我们所说的Apps。
对于应用,按组合特性把它分成以下几类:
A. 每个js就是独立的应用。
B. 多个js不同的组合,也会产生新的应用,尤其是一些有特性的组合。开发时可以是多个文件,但上线时会先合并后上线。
C. 把js里的某些方法抽取出来,也可以产出定制的应用。
D. YUI3的use方式的应用。
逐个分析一下以上各个应用。
A类应用,QWrap多个js文件,有各自的分工,参考不同的标准,分得很细。独立使用的意义不大。
B类应用,可以按不同的典型需求,定制几种典型的应用。----这是最接近其它库的使用方式,即:页面引入一个js,就能完成一类典型的需求。与其它框架不同的是:QWrap提供对好几类典型需求的应用,用户可以决定在项目、甚至页面使用哪种应用。例如:对于一个展现效率要求很高的页面,可以用先只加载种子应用,其它js通过异步use进来;对于已使用jquery的页面,可以使用core_retouched应用以与jquery互补;而对于某个一进入页面就会有很多js的文件,可以使用全面版应用;对于一个同时引用多个js库的页面,可以使用干净版的retouched应用;对于需要自动无依整的组件,可以使用纯洁版应用。等等。以后面的文章里会逐一介绍几种典型应用。
C类应用,可拆可组的风格,产出个性化的抽取或定制功能,让个性化的精度到达方法级别。以后也讲solo工具时也会讲到。
D类应用,YUI3的use,可以有两种方式:如果服务器不支持combo功能,则逐一加载所需的模块。如果支持,也可以在服务器合并以减少请求。----注意,这个合并与上线时的build合并的时机不一样。这个也会在讲种子应用时会有详细说明。
另外,QWrap对B类应用的方式是:
在开发环境下,apps/youa_seed.js的内容是这样的:
(function(){
var els=document.getElementsByTagName('script'), srcPath = '';
for (var i = 0; i < els.length; i++) {
var src = els[i].src.split(/apps[\\\/]/g);
if (src[1]) {
srcPath = src[0];
break;
}
}
//通过以下update-tag,来解决core与dom不是同时提测的问题
//update-tag: core/* -
//update-tag: dom/* tag001
document.write('<script type="text/javascript" src="'+srcPath+'core/core_base.js"><\/script>');
document.write('<script type="text/javascript" src="'+srcPath+'core/module.h.js"><\/script>');
document.write('<script type="text/javascript" src="'+srcPath+'apps/youa_modules_config.js"><\/script>');
})();
页面这样引用:
<script type="text/javascript" src="...../apps/youa_seed.js"></script>
上线时,页面代码不用作变动,而只需把core_base.js、module.h.js与youa_modules_config.js三个文件的内容拼接起来,当作youa_seed.js的内容
具体有哪些B类应用,在这里可以看个目录http://dev.qwrap.com/resource/js/apps/,具体内容,且等下文……
附: QWrap网址:http://www.qwrap.com