一般一个框架的设计要包含很多个方面,像:支持标准和跨浏览器、事件模型等功能。从框架的设计层面上来分析这个框架。
先列举设计应用框架的
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 组件则是基于这些基础上面发展而来。
以上个人浅见,有错误欢迎指正。
分享到:
相关推荐
1. **源码结构与功能**:YUI Compressor的源码通常包含多个部分,如解析器、语法分析器、压缩引擎等。源码允许开发者深入理解其工作原理,对其进行定制或扩展以满足特定需求。例如,你可以修改压缩算法,优化特定...
源码分析对于开发者来说,不仅能帮助理解YUI的工作原理,还可以学习到优秀的编程实践,比如模块化设计、事件驱动编程、性能优化等方面的知识。通过研究YUI 3.1.2的非压缩源码,我们可以深入理解这个强大库的内部构造...
jQuery 是一个非常优秀的 JS 库,与 Prototype,YUI,Mootools 等众多的 Js 类 库相比,它剑走偏锋,从web开发的...这就是本源码分析的原因,让所有使用 jQuery 的读者,能快速 上手 jQuery的源码,并在开发中得心应用。
写个这个源码分析的理由其实很简单,在工作中使用jquery经常出问题,不得不分析其源码,我把分析的源码放在blog。其标题是jquery core 源码分析。结果有一网友竟评论说打到标题党,可见还是有很多人像我这样想完全...
“源码”标签暗示这个压缩包可能包含了YUI表单验证器的源代码,这使得开发者可以查看、学习和定制验证器的内部工作原理。而“工具”标签则表明这个组件是一种实用的开发辅助工具,可以帮助开发者轻松实现表单验证...
3. **源码分析** YUI 2.5.2的源码可以深入了解其内部实现机制,对于学习JavaScript编程和优化性能非常有帮助。通过阅读源码,开发者可以学习到如何组织代码结构,以及如何设计高效的API接口。 4. **说明文档** ...
YUI Compressor在JavaScript压缩方面,采用了一种称为"词法分析"的技术,它能理解代码结构并智能地进行压缩。例如,它会把多行代码合并成一行,移除空格和换行符,替换长变量名以减少字符数,同时保持代码的可执行性...
2. **压缩后的代码可读性差**:由于yuicompressor采用了混淆策略,压缩后的代码难以阅读和调试,这在需要进行源码分析时可能会造成不便。 3. **错误处理**:yuicompressor在处理有语法错误的源文件时,可能无法正确...
7. **源码分析** 阅读源码可以帮助开发者深入理解组件的工作原理,学习如何扩展和定制组件。通过查看`treeview`和`treeview-dragdrop`模块的源代码,我们可以学习到如何实现节点的拖放功能,以及如何优化树的渲染...
### jQuery源码分析 #### 一、概述 jQuery作为一个卓越的JavaScript库,以其简洁高效的特性在前端开发领域占据了一席之地。与Prototype、YUI、Mootools等其他JavaScript库相比,jQuery更加注重实用性,去除了一些...
**jQuery 1.2.6 源码分析教程** jQuery 是一个广泛使用的 JavaScript 库,因其简洁的语法和强大的功能而备受开发者喜爱。在 jQuery 1.2.6 版本中,虽然它已经相对老旧,但其背后的实现原理和优化策略仍然值得深入...
YUI Compressor的使用非常简单,对于Java开发者来说,可以将其作为一个命令行工具来运行。例如,我们可以使用yuicompressor-2.4.7.jar这个文件,通过Java的jar命令行参数进行调用,进行JS或CSS的压缩操作。同时,YUI...
源代码分析有助于深入理解其工作原理,开发者可以通过阅读源码学习最佳实践,或者对YUI进行定制和扩展。 在标签“yahoo UI 源代码 示例”中,我们可以推测这份资源可能包含了一些示例代码,展示了YUI在实际项目中的...
### jQuery源码分析 #### 一、概述 jQuery作为一个卓越的JavaScript库,相较于其他同类库如Prototype、YUI和Mootools等,在实用性方面做出了显著的优化。它摒弃了一些花哨但实际应用价值较低的功能,专注于提供...
jQuery是一个非常优秀的JS库,与Prototype,YUI,Mootools等众多的Js类库相比,它剑走偏锋,从web开发的实用角度出发,抛除了其它Lib中一些中看但不实用的东西,为开发者提供了优美短小而精悍的类库。其使用简单,文档...
通过对源码的分析,我们可以深入了解RGB到YUV转换的实现细节,以及如何在VC++环境中处理图像数据。此外,还可以根据需求扩展功能,比如添加其他颜色空间的转换,或者优化转换效率。 总之,RGB到YUV的转换在多媒体和...
### Jquery源码分析 #### 1. 概述 jQuery作为一款卓越的JavaScript库,在众多JavaScript类库中脱颖而出,以其简洁高效的特性受到广大开发者的青睐。与其他类库(如Prototype、YUI、Mootools)相比,jQuery更加注重...
它通过分析CSS和JavaScript代码,识别并移除不必要的空白字符和注释,同时进行一些代码优化,例如合并相邻的字符串常量,减少DOM操作等。这不仅可以减少文件传输的字节数,还可以在一定程度上提升页面性能,因为...
在描述中提到的“自动压缩JS脚本”,意味着该源码实现了自动化处理功能,能够自动分析并优化JS代码,去除不必要的空格、换行符和注释,以达到减小文件体积的目的。这通常涉及到代码的词法分析和语法分析,以确保压缩...