一般一个框架的设计要包含很多个方面,像:支持标准和跨浏览器、事件模型等功能。从框架的设计层面上来分析这个框架。
先列举设计应用框架的
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 组件则是基于这些基础上面发展而来。
以上个人浅见,有错误欢迎指正。
分享到:
相关推荐
jQuery 是一个非常优秀的 JS 库,与 Prototype,YUI,Mootools 等众多的 Js 类 库相比,它剑走偏锋,从web开发的...这就是本源码分析的原因,让所有使用 jQuery 的读者,能快速 上手 jQuery的源码,并在开发中得心应用。
写个这个源码分析的理由其实很简单,在工作中使用jquery经常出问题,不得不分析其源码,我把分析的源码放在blog。其标题是jquery core 源码分析。结果有一网友竟评论说打到标题党,可见还是有很多人像我这样想完全...
Jquery1.2.6源码分析教程,这是一个非常优秀的JS库,与PROTOTYPE,YUI,MOOTOOLS相比,性能高效。 勾月科技www.gouyue.net QQ17878387
jQuery是一个非常优秀的JS库,与Prototype,YUI,Mootools等众多的Js类库相比,它剑走偏锋,从web开发的实用角度出发,抛除了其它Lib中一些中看但不实用的东西,为开发者提供了优美短小而精悍的类库。其使用简单,文档...
Java 源码包 Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来...
它对JavaScript的开发风格侵入性不如YUI那么强,当然也不如Dojo和YUI如此庞大。它极大的简化了JavaScript的日常开发工作,主要是DOM元素的操作(从名字Query就可以看出)。另外一个主要工作就是每个前端开发者都需要...
笔者当初为了学习JAVA,收集了很多经典源码,源码难易程度分为初级、中级、高级等,详情看源码列表,需要的可以直接下载! 这些源码反映了那时那景笔者对未来的盲目,对代码的热情、执着,对IT的憧憬、向往!此时此...
对于javascript事件扩展,所有的lib都差不多。和jquery和prototype,yui和Ext,其要解决的首要问题是兼容性,所有 lib都会对event进行包裹,统一其属性解决其兼容性。
其短小精悍,使用简单方便,性能高效,能极大地提高开发效率,是开发Web应用的最佳... 在调试基于jQuery的程序时,我们大部分时间都要跟踪进入jQuery对象分析其运行的状态,但是jQuery代码不像Ext,YUI那样中规中举,它
有兴趣的同学可以阅读layui.js源码以及form模块 layui.event(modName, events, params) 执行自定义模块事件,搭配onevent使用 参数1我暂时理解为组,定义子级方法和使用event调用都需要注意这个参数必须一致 ...
GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....
但是利用aop可以有效的改善js代码逻辑,比如前端框架dojo和yui3中AOP则被提升至自定义事件的一种内在机制,在源码中随处可见。得益于这种抽象使得dojo的自定义事件异常强大和灵活。dojo中aop的实现在dojo/aspect模块...
GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....
GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....
GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....
GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....
GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....
GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....