`

【YUI源码分析】YUI源码初步简单分析

    博客分类:
  • YUI
阅读更多

一般一个框架的设计要包含很多个方面,像:支持标准和跨浏览器、事件模型等功能。从框架的设计层面上来分析这个框架。

先列举设计应用框架的 n 点(摘自《 javascript 王者归来》): 1, 框架的自描述 2 ,基础接口和语义型代码 3 ,核心对象的原型扩展 4 ,简单方法?可以理解为通用方法 5 ,名字空间 6 ,支持标准和跨浏览器 7 ,事件模型 8 ,应用模式 9 ,提供 Ajax 组件 10 ,内存管理和其他(比如调试工具) YUI 有提供 YUILogger 来得到调试时信息,以及 YUIProfileView 监控性能问题。 YUI 不仅提供了 js 框架,也提供了 css 框架。

 

框架的自描述 ,描述框架本身,在 YUI 的模块管理上有使用到,在 YUI 2.8 的每个模块源码结尾有代码: YAHOO.register("element", YAHOO.util.Element, {version: "2.8.0r4", build: "2449"}); 呃,个人浅见。 YUI 的核心模块 YAHOO Global Core 有一个 static class YAHOO_config 通过这个类可以对 YUI 框架进行定制,比如说 YAHOO_Config injecting 属性,若设置为 true ,则类库会在 window.onload 以后动态的加载。

 

基础接口和语义型代码 ,在 YUI 的核心模块 YAHOO Global Core ,提供了名字空间定义函数、注册模块函数、类型检测函数等等。

 

核心对象的原型扩展 :先仔细定义下 JavaScript 实现,一个完整的 JavaScript 实现是由以下 3 个不同部分组成:核心 ECMAScript— 描述 Java Script 语言的语法和基本对象,文档对象模型 DOM ——描述了处理网页内容的方法和接口,浏览器对象模型 BOM ——描述了与浏览器进行交互的方法和接口。

详细内容: http://www.w3school.com.cn/js/pro_js_implement.asp

关于 ECMA Script 各个浏览器都遵循着规范;各个浏览器对于 Dom 也有不同的 level 支持程度,不过也总算是有一个标准,从这个开始有差异;可是对于 BOM( 浏览器对象模型 ) 而言,没有相关的 BOM 标准,每种浏览器都有自己的 BOM 实现。

同样关于核心对象也分类:

1,JavaScript 的核心有丰富的内置对象,除了 Object 基本对象之外,最常见的有 Math 对象、 Date 对象、 Error 对象、 Array 对象、 String 对象和 RegEx 对象

2,Dom 对象;

3,Bom 浏览器对象模型: Window Document( 一般引用到 document) Navigator( 浏览器总体信息 ) Screen 对象 ( 显示器分辨率有关 ) History Dialog Form Frame Status Location( 以上对象针对 ie 浏览器 )

 

接下来看看 YUI 对这些核心对象的扩展:

Dom 对象:提供 YAHOO.util.Dom document 对象进行封装,并提供其他的对象对 dom 对象提供样式修改方法,比如增加 color ;事件模型 EventProvider ;对 javascript date 对象进行封装,有 YAHOO.widget.DateMath 对象 ;YAHOO.util.History history 对象的封装等等

在这些封装中 YUI 框架同样也在致力支持标准和跨浏览器。

 

通用方法: YAHOO.lang 提供了很多通用的简单方法,比如 extend(),hasOwnProperty() 等等。 YAHOO 对象也很多。比如 namespace. 比如 register

 

名字空间 : 支持标准和跨浏览器: 略。

 

事件模型: YAHOO 的核心库中有 Event.js 等几个 js 文件对 event 事件进行封装。提供了以下几个 class

    * CustomEvent    * Event    * EventProvider    * KeyListener    * Subscriber

 

AJAX 组件: YUI 有一个模块是 connection 在此处对 AJAX 进行封装。

 

 

根据 YUI 文档中的说明,以上框架的设计基本已在核心模块,外加一些是在 Utility 模块中实现且达到效果。

而YUI的其他特性和web ui 组件则是基于这些基础上面发展而来。

 

以上个人浅见,有错误欢迎指正。

分享到:
评论
3 楼 every_best 2010-11-29  
tyc1920 写道
YUI有哪些优点啊,跟JQuery相比有哪些区别。

  没使用过jquery 不敢做这样的对比比较。
  在淘宝ued里面有一篇文章翻译国外的人 对比jquery和yui3 很是不错,建议去看看。
  个人浅见:觉得YUI更加的优雅,如果是学习js深入的话,研究YUI更加好一点。而jquery 更加的通用,插件多,方便使用。
2 楼 tyc1920 2010-11-26  
YUI有哪些优点啊,跟JQuery相比有哪些区别。
1 楼 onlylau 2010-08-08  
发觉最近JavaEye上做广告的越来越多呀,这可不行呀,得好好管管

相关推荐

    [pdf]Jquery1.2.6源码分析

    jQuery 是一个非常优秀的 JS 库,与 Prototype,YUI,Mootools 等众多的 Js 类 库相比,它剑走偏锋,从web开发的...这就是本源码分析的原因,让所有使用 jQuery 的读者,能快速 上手 jQuery的源码,并在开发中得心应用。

    Jquery1.2.6 源码分析

    写个这个源码分析的理由其实很简单,在工作中使用jquery经常出问题,不得不分析其源码,我把分析的源码放在blog。其标题是jquery core 源码分析。结果有一网友竟评论说打到标题党,可见还是有很多人像我这样想完全...

    Jquery1.2.6源码分析教程

    Jquery1.2.6源码分析教程,这是一个非常优秀的JS库,与PROTOTYPE,YUI,MOOTOOLS相比,性能高效。 勾月科技www.gouyue.net QQ17878387

    Jquery1.2.6源码分析

    jQuery是一个非常优秀的JS库,与Prototype,YUI,Mootools等众多的Js类库相比,它剑走偏锋,从web开发的实用角度出发,抛除了其它Lib中一些中看但不实用的东西,为开发者提供了优美短小而精悍的类库。其使用简单,文档...

    JAVA上百实例源码以及开源项目源代码

    Java 源码包 Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来...

    jQuery 源码分析笔记

    它对JavaScript的开发风格侵入性不如YUI那么强,当然也不如Dojo和YUI如此庞大。它极大的简化了JavaScript的日常开发工作,主要是DOM元素的操作(从名字Query就可以看出)。另外一个主要工作就是每个前端开发者都需要...

    JAVA上百实例源码以及开源项目

    笔者当初为了学习JAVA,收集了很多经典源码,源码难易程度分为初级、中级、高级等,详情看源码列表,需要的可以直接下载! 这些源码反映了那时那景笔者对未来的盲目,对代码的热情、执着,对IT的憧憬、向往!此时此...

    jQuery源码分析之Event事件分析

    对于javascript事件扩展,所有的lib都差不多。和jquery和prototype,yui和Ext,其要解决的首要问题是兼容性,所有 lib都会对event进行包裹,统一其属性解决其兼容性。

    jQuery的运行机制和设计理念分析

    其短小精悍,使用简单方便,性能高效,能极大地提高开发效率,是开发Web应用的最佳... 在调试基于jQuery的程序时,我们大部分时间都要跟踪进入jQuery对象分析其运行的状态,但是jQuery代码不像Ext,YUI那样中规中举,它

    对layui中的onevent 和event的使用详解

    有兴趣的同学可以阅读layui.js源码以及form模块 layui.event(modName, events, params) 执行自定义模块事件,搭配onevent使用 参数1我暂时理解为组,定义子级方法和使用event调用都需要注意这个参数必须一致 ...

    java开源包8

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

    Javascript aop(面向切面编程)之around(环绕)分析

    但是利用aop可以有效的改善js代码逻辑,比如前端框架dojo和yui3中AOP则被提升至自定义事件的一种内在机制,在源码中随处可见。得益于这种抽象使得dojo的自定义事件异常强大和灵活。dojo中aop的实现在dojo/aspect模块...

    java开源包1

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

    java开源包11

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

    java开源包2

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

    java开源包3

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

    java开源包6

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

    java开源包5

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

Global site tag (gtag.js) - Google Analytics