- 浏览: 144870 次
- 性别:
- 来自: 大连
文章分类
最新评论
-
houfeng0923:
zensh 写道这种Promise用起来还是复杂了点,需要大量 ...
使用jQuery Deferred 和 Promise 创建响应式应用程序 -
zensh:
这种Promise用起来还是复杂了点,需要大量处理异步任务的同 ...
使用jQuery Deferred 和 Promise 创建响应式应用程序 -
Troland:
houfeng0923 写道Troland 写道
functi ...
JavaScript设计模式摘要(一) -
houfeng0923:
Troland 写道
function extend(subc ...
JavaScript设计模式摘要(一) -
Troland:
function extend(subclass,super ...
JavaScript设计模式摘要(一)
前一篇 YUI3入门
YUI3 Global Object http://developer.yahoo.com/yui/3/yui/
首先需要了解在YUI3 api文档模块列表的yui模块:
YUI模块是YUI3.x实现的单个核心依赖。在使用YUI的页面中都必须包括YUI,这是唯一的依赖文件。YUI模块包含模块加载功能和模块依赖计算功能,YUI模块作为具体实现的一个种子,你只需要提供需要的模块列表及基于这些模块实现的代码;通过配置YUI的加载方式,YUI3可以在加载时通过一个优化的HTTP请求获取所有所需的模块文件;此外,YUI模块在自定义组件加载script和css时作为组件的核心种子。
通过YUI模块可创建一个全局的实例化YUI对象。 而且通过该对象创建YUI其他模块实例对象。一个页面可以共享同一个YUI实例,或者也可以为页面中每块功能使用不同的封闭的实例(安全沙箱)。
查看API yui模块,该模块包含以下对象:
- Array 提供一些静态的数组操作方法,通过YUI实例调用。如 Y.Array.each()
- config 实例化YUI时可传入的参数,根据参数生成可配置的YUI实例
- Get 提供动态加载script和css的功能。Y.Get(..)
- Intl 提供本地化资源管理支持 。Y.Intl
- Lang 提供对JavaScript的一些工具方法和扩展方法。如对象类型检测等 .如 Y.Lang.isString()
- Object 提供针对object的静态操作方法 .如 Y.Object.hasKey()
- Queue 提供一个简单的队列实现 new Y.Queue()
- UA 提供针对浏览器、引擎、操作系统的属性信息 .如 Y.UA.ie
- YUI YUI 全局命名空间对象。创建Global Object: Y = YUI(config)
1,使用Global Object
需要加载脚本<script src="build/yui/yui-min.js"></script> ,然后通过调用方法YUI() 即可创建一个YUI对象。
在只调用YUI()的情况下,所有以下功能在YUI核心都可用:array,core,lang,later,log,object,ua,yui,get,loader
2,YUI.use()
YUI对象最基本的就是use方法的使用。通过use方法,允许你加载所需的模块到yui实例中,如下
YUI().use('node','dd',function(Y){ //Y.Node and Y.DD is available });
如果需要加载所有模块 只需要使用 YUI().use('*',function(Y){});即可
3,config 配置参数
通过配置config,可以控制YUI实例的加载策略;详细的参数可以参考YUI3 api 。这里只记录下比较常用的几个 配置及作用
YUI({
combine:false/true ,// use the Yahoo! CDN combo service for YUI resources。
filter:raw/debug,//默认加载模块的*-min.js压缩文件,通过配置raw或debug,可以加载模块对应的*.js或*-debug.js。
modules:{ //设定加载的YUI开发包之外的模块。 配置模块名及对应的文件地址和依赖模块
'moduleName':{
fullpath:'',
requires:[]
}
},
groups:{ //设定加载一组YUI开发包之外的模块集合,
'groupName':{
base:'',
modules:{
'module1':{path:'',requires:[],skinnable:true}//注:设定skinnable=true可以依据YUI定义的模块组织目录结构自动加载该模块依赖的css文件
}
}
}
});
4,YUI核心实例对象 常用方法与静态对象介绍(非全部)
Y.guid(pre)
创建unique序列字符串
Y.instanceOf(obj,type)
判断引用对象的类型;返回true/false;
Y.Lang
数据类型判断相关:
Y.Lang.isArray(arr)
Y.Lang.isBoolean(o)
Y.Lang.isNull(o)
Y.Lang.isFunction(o)
Y.Lang.isNumber(o)
Y.Lang.isObject(o)
Y.Lang.isString(o)
Y.Lang.isUndefined(o)
Y.Lang.isDate(o)
Y.Lang.isValue(o) null/undefined/NaN->false ;others ->true
Y.Lang.type(o) //typeof
时间相关
Y.Lang.now() // Returns the current time in milliseconds.
//字符串操作
Y.Lang.sub(str,o) //简单的字符替换。更高级的字符替换在‘substitute’模块
Y.Lang.trim(o)/trimLeft(o)/trimRight(o)
Y.UA
检测当前浏览器引擎、浏览器及操作系统信息
if(Y.UA.ie>0){}
if(Y.UA.chrome>0){}
if(Y.UA.os=='windows'){}
Y.Array
注:在加载其他模块后,可以直接使用Y调用Y.Array的方法。
Y.Array.test(arr)// 非数组->0;数组->1;类数组(array like object,例如arguments、HTMLElement collections)->2
Y.Array.each(arr,function(item,index){},context)
Y.Array.hash(arrA,arrB) //返回 将数组arrA中的值作为key,arrB中的值作为value 的hash对象。如果arrB没有对应值,则value=true
Y.Array.some(arr,function(value,index,arr){},context); //函数返回true,则Y.Array.some返回true;否则 返回false
Y.Object
Object相关静态方法 注:在加载其他模块后,可以直接使用Y调用Y.Object的方法。
var child = Y.Object(parent);//以parent对象做原型,创建基于原型继承的对象child。
实现原理:
Y.Object = function(o) { var F = function() {}, F.prototype = o; return new F(); }
方法:
Y.Object.each(o,function(v,k){},context,proto) 迭代object的键值
Y.Object.hasKey(o,key)/Y.Object.owns(o,key) // ===hasOwnProperty()
Y.Object.hasValue(o,value) //
Y.Object.isEmpty(o)
Y.Object.keys(o) //string[]
Y.Object.values(o) //array
Y.Object.size(o) //int
Y.Object.some(o,function(v,i,o){},context); ////函数返回true,则Y.Object.some返回true;否则 返回false
Y.Queue
简单队列
var queue = new Y.Queue('a','b','c');//新建简单队列
方法:
queue.add('d','e','f'); //添加到队列尾
queue.next() ;//FIFO, array.shift();移除队头
queue.last(); //LIFO, array.pop(); 移除队尾
queue.size(); //队列大小
此外,引入queue-promote模块,队列将扩展增加以下方法
queue.indexOf(ele);//
queue.promote(ele);//
queue.remove(ele);//
Y.mix(receiver,source,over,list,mode,merge)
非常重要的方法;提供对象合并功能。
用第二参数的属性覆盖(追加到)第一个参数对象 ;是augment方法和mix方法的基础。
参数可以是prototype或者object(默认是object,如果是prototype,可以根据mix方法第四个参数mode设置)。
api说明如下:
object mix ( r , s , ov , wl , mode , merge )
r <Function>
the object to receive the augmentation.
s <Function>
the object that supplies the properties to augment.
ov <boolean>
if true, properties already on the receiver will be overwritten if found on the supplier.
wl <string[]>
a whitelist. If supplied, only properties in this list will be applied to the receiver.
mode <int>
what should be copies, and to where default(0): object to object 1: prototype to prototype (old augment) 2: prototype to prototype and object props (new augment) 3: prototype to object 4: object to prototype.
merge <boolean/int>
merge objects instead of overwriting/ignoring. A value of 2 will skip array merge Used by Y.aggregate.
object
Y.merge(obj1,obj2,obj3,....)
基于mix,只提供简单的对象合并功能,也就是mix的object合并。遇到相同的属性会覆盖原来的值。
源码如下:
Y.merge = function() { var a = arguments, o = {}, i, l = a.length; for (i = 0; i < l; i = i + 1) { Y.mix(o, a[i], true); } return o; };
示例:
var set1 = { foo : "foo" }; var set2 = { foo : "BAR", bar : "bar" }; var set3 = { foo : "FOO", baz : "BAZ" }; var merged = Y.merge(set1, set2, set3); //{foo => FOO, bar => bar, baz => BAZ}
这里需要注意的是,如果复制的属性是引用类型,那么merge操作相当于java里的浅拷贝功能。
接下来的两个方法来源于oop模块,不知道YUI官方Global Object例子中为什么包含这两个方法?
可能是因为augment同merge一样依赖于mix方法;
而面向对象的继承实现也是框架的基础方法吧。
Y.extend(..)
(该方法定义在oop模块,所以使用需要引入oop模块 )
基于原型继承模拟面向对象继承的方法。是YUI3继承机制的核心方法。
API说明如下:
object extend ( r , s , px , sx )
r <function>
the object to modify.
s <function>
the object to inherit.
px <object>
prototype properties to add/override.
sx <object>
static properties to add/override.
object
示例:
function Bird(name) { this.name = name; } Bird.prototype.flighted = true; // Default for all Birds Bird.prototype.isFlighted = function () { return this.flighted }; Bird.prototype.getName = function () { return this.name }; function Chicken(name) { // Chain the constructors Chicken.superclass.constructor.call(this, name); } // Chickens are birds Y.extend(Chicken, Bird); // Define the Chicken prototype methods/members Chicken.prototype.flighted = false; // Override default for all Chickens
测试:
var chicken = new Chicken('小鸡'), chicken instanceof Object // true chicken instanceof Bird //true chicken instanceof Chicken //true chicken.isFlighted() //false chicken.getName() //小鸡
Y.augment(..)
(该方法定义在oop模块,所以使用需要引入oop模块 )
同样也依赖于mix方法。与merge相似,提供对象合并功能,不同的是不止合并object实例,主要用处还是合并构造器对象。
API说明如下:
object augment ( r , s , ov , wl , args )
r <function>
the object to receive the augmentation.
s <function>
the object that supplies the properties to augment.
ov <boolean>
if true, properties already on the receiver will be overwritten if found on the supplier.
wl <string[]>
a whitelist. If supplied, only properties in this list will be applied to the receiver.
args <Array | Any>
arg or arguments to apply to the supplier constructor when initializing.
object
在这里需要注意 augment与extend方法的区别:如下图。
通过extend方法不仅继承了父类的方法,而且也构造了完整的原型继承链。
而通过augment合并方法,仅仅继承了源对象的属性,而没有构造继承链。
代码示例:
function Foo() {} Foo.prototype.doSomething = function () { }; function Bar() {} Y.augment(Bar, Foo); var b = new Bar(); if (b instanceof Bar) {} // true if (b instanceof Foo) {} // FALSE
发表评论
-
Twitter Flight 学习小结
2013-08-29 10:57 1908链接:twitter flight 关键字: 基于事件交 ... -
使用jQuery Deferred 和 Promise 创建响应式应用程序
2012-11-12 20:41 6168翻译自:Creating Responsive Applica ... -
编写 Sublime Text2 的 nodejs debug 插件
2012-08-27 22:07 4651使用sublime text2 编写 node 代码 ... -
Image beacon
2012-05-06 11:42 1638转帖:http://www.denisdeng.com/?p= ... -
YUI3学习(十)---基于组件框架的Widget实例(GoogleMapWidget)
2012-03-03 20:37 2861本文遵循YUI3 Widget组件设计理念,继承YUI Wi ... -
Google Maps API V3 学习摘要
2012-03-03 20:40 3801Google Maps API V3 学习摘要 ... -
大话HTML DOM与XML DOM的区别与联系【转】
2011-10-04 11:21 2301原文链接: http://deve ... -
dojo类机制模拟实现
2011-09-29 11:00 1571偶然在infoq上看到朋友的文章《dojo类机制简 ... -
web前端研发工程师编程能力成长之路 [转]
2011-09-29 10:26 1983【背景】 如果你是刚进入WEB前端研发领域,想试试这 ... -
Web开发乱码分析总结
2011-09-28 17:08 1594今天对前端开发常见的乱码情况进行了汇总测试和分析,并做了 ... -
document.documentElement 与 document.body 的 scrollWidth、offsetWidth、clientWidth
2011-09-28 16:54 1567注:(scrollHeight、o ... -
DOCTYPE, HTML和XHTML, Strict DTD和Transitional DTD, Quirks Mode和Standard Mode
2011-09-26 16:53 1648转自:http://blog.csdn.net/w ... -
YUI3学习(九)---组件框架之 Widget
2011-08-10 21:53 2878Widget部件类是YUI3所 ... -
YUI3学习(八)---组件框架之 Plugin
2011-08-08 17:42 2306插件可以让你无侵入地为衍生自Base类的宿主对象 ... -
YUI3学习(七)---组件框架之 Base
2011-08-05 22:45 2095Base组件 Base被设计为那些衍生自Attribute和 ... -
dfssdfsfsfs
2011-08-05 14:37 0sdf s -
JavaScript链式调用小结
2011-08-03 22:47 4801zYUI3 Node对象实现链式调用的方式如下: Y. ... -
JavaScript设计模式摘要(一)
2011-08-03 22:52 2016---------------------------- ... -
YUI3学习(六)---组件框架之 Attribute
2011-08-01 22:57 25621,YUI3组件框架 组 ... -
YUI3 AOP
2011-07-28 23:10 0YUI3在’event-custom’模块的Y.Do类提 ...
相关推荐
### 二、YUI Compressor简介 YUI Compressor是由Nicholas C. Zakas开发的JavaScript和CSS压缩工具。它通过删除空格、注释和不必要的字符来减小文件大小。对于JavaScript,YUI Compressor还进行了混淆处理,使代码更...
### 3. eclipse yuicompressor-maven-plugin `yuicompressor-maven-plugin`是Maven的一个插件,它将YUI Compressor集成到Maven的构建流程中。在Eclipse环境中,开发者可以方便地使用此插件在构建项目时自动对.js和....
yuicompressor-maven-plugin, 用于压缩 (Minify/Ofuscate/Aggregate) Javascript文件和使用 YUI 压缩器的CSS文件的Maven 插件 [[Flattr this git repo] ( http://api.flattr.com/button/flattr-badge-large.png)]...
【标题】"yui-yuidoc-yuidoc-50-529-gc631758" 指向的是一个关于 Yahoo User Interface Library (YUI) 和 YUIDoc 的特定版本或修订版。YUI 是一个开源的 JavaScript 库,提供了一系列模块化的工具,用于构建富有交互...
通过“yui3-master.zip”这个压缩包,开发者不仅可以了解到YUI3的基本架构,还可以通过阅读源码来学习和掌握JavaScript的最佳实践,提升自身的前端开发能力。无论是初学者还是经验丰富的开发者,都能从中受益匪浅。...
yuicompressor-2.4.2.jar yuicompressor-2.4.7.jar jsZip.exe yuicompressor yui compressor js压缩工具 javascript压缩工具 css压缩工具 ------------------------------------ //压缩JS java -jar yui...
3. 运行构建:保存配置后,执行构建操作,Idea会自动调用yuicompressor对指定文件进行压缩。 除了基本的压缩功能,yuicompressor还有其他优势。例如,它支持多种语言的输入,包括JavaScript、CSS以及HTML,并且兼容...
3. **数据绑定(Data Binding)**:YUI-EXT支持数据绑定,允许UI组件与后台数据模型直接关联。当数据模型发生变化时,UI会自动更新,反之亦然。这极大地简化了数据驱动的界面开发。 4. **表单(Forms)**:YUI-EXT...
yui compressor 2.4.6 发布日期:2011-04-15 用例: java -jar yuicompressor-2.4.6.jar myfile.js -o myfile-min.js
YUI(Yahoo! User Interface Library)是雅虎公司推出的一款开源JavaScript库,旨在帮助开发者构建高性能、可扩展的Web应用程序。...通过深入学习和掌握YUI,开发者可以更好地应对现代Web开发的挑战。
npm install yui-compressor ``` 安装完成后,可以使用以下命令对JavaScript或CSS文件进行压缩: ```bash java -jar path/to/yuicompressor.jar --type js input.js -o output.min.js java -jar path/to/yui...
标题中的"webstorm_phpstorm_yuicompressor-2.4.8.jar"正是YUI Compressor的一个版本,适用于WebStorm和PhpStorm。这个文件是Java可执行的JAR包,包含YUI Compressor的核心压缩算法,可以处理并压缩JavaScript和CSS...
3. **grunt-yui-compressor的配置** 在Gruntfile.js中,开发者需要配置grunt-yui-compressor插件,指定待压缩的文件、输出目录以及压缩选项。例如: ```javascript grunt.initConfig({ yui_css: { options: { ...
压缩JS所使用jar包!...压缩JS:java -jar yuicompressor-2.4.jar --type js xxx.js -o xxx.js --charset utf-8 压缩CSS:java -jar yuicompressor-2.4.jar --type css xxx.css -o xxx.css --charset utf-8
4. **global.js** - 这个文件可能包含了全局变量和配置,例如初始化YUI实例,设置消息系统的默认行为等。 5. **back-end** - 这可能是一个目录,包含了后端服务器的相关代码。在实时消息系统中,后端通常负责处理...
YUI 库,全称Yahoo! UI Library。是一组工具和控件,用JavaScript写成, 为的是用DOM 脚本,DHTML和AJAX等技术创建丰富的网页交互式应用程序。 YUI 基于BSD协议,对所有的使用方式都是免费的。YUI 项目包括YUI 库和两...