`
阿尔萨斯
  • 浏览: 4176614 次
社区版块
存档分类
最新评论

YUI 3 学习笔记:YUI Base

 
阅读更多

基于 github 上 yui 3.0 2009-06-19 version

YUI Base 包含 7 个 submodules:

yui-base.png

展开的详细图请看:yui-base-full.png

一些好的想法

  1. 基础框架非常清晰,核心代码包括 YUI 对象的构造函数 和 use 方法,配合 add 等辅助成员,实现了 Sandboxing 和 Modularity 机制。
  2. YUI(config).use(...), config 参数非常丰富,win, useBrowserConsole, filter 等参数设计得很有才。
  3. YUI().use('*', function(Y) {...}), Y 是 YUI 对象的一个实例,可以按需挂载不同的 modules 到 Y 上。module 可以有版本号,这使得 YUI 3 组件的不同版本可以在同一页面共存。
  4. Y.log可以使用 Firebug 的 console. 跨浏览器调试代码更方便了。
  5. 很喜欢Y.Array, Y.Object的 api, 不多不少,正是我想要的。
  6. YUI 3 终于从底层支持 Chaining 特性,可以重拾当年使用 jQuery 的快乐了。
  7. Y.UA依旧坚持采用 userAgent 探测法,和我的想法一致。

一些疑惑

  1. Sandboxing 机制让 YUI 的各个实例独立,但这会造成每个 use 方法内都有一份 Y,对内存的消耗如何权衡?感觉至少可以改进为,让 yui-base 模块内的方法共享。Ext 里面有 fly 享元方式,不知道 YUI 3 Team 是如何权衡 Sandboxing 特性和性能消耗。非常想质问一句:Sandboxing 真的这么重要吗?真的会有一个页面使用同一模块不同版本的情况?如果有的话,这个页面可能已经够糟糕。需要的也许不是兼容,而是彻底更新。
  2. 通过YUI.prototype.applyTo(id, method, args),可以在 Y2 的作用域内调用 Y1 的方法。这种可能性也许有,但直觉上觉得这个 applyTo 可能会和 with 等 JavaScript 中的 Bad Parts 一样,看起来很好,实际上却会带来害处?
  3. trim(s)方法为何不放在Y.String下?还有 later 方法也没必要再在 Lang 上登记。既然是重构,就没必要和 YUI 2 的 API 保持一致。也许这能减少 YUI 2 到 YUI 3 的升级成本,但感觉可以将兼容代码单独拎出去成为一个 upgrade module.
  4. Sandboxing 对模块的兼容,必须以 YUI 3 Seed 的自身兼容为前提。假设 YUI 3.5 Seed 做了大调整,不兼容 YUI 3.4 Seed 了,那 Sandboxing 带来的模块兼容也就没了。感觉 YUI 3 想求得一颗解决兼容性的银弹,然而, Sandboxing 究竟是否银弹,还需要时间来淘汰或证明。

总之,YUI 3 让我很激动。

分享到:
评论

相关推荐

    Yui_ext 学习笔记

    Yui_ext 学习笔记 MSN:zhoujianguo_leo@hotmail.com

    yui3-master.zip

    yui3-master.zip

    yui_2.9.0前端UI

    YUI 库,全称Yahoo! UI Library。是一组工具和控件,用JavaScript写成, 为的是用DOM 脚本,DHTML和AJAX等技术创建丰富的网页交互式应用程序。 YUI 基于BSD协议,对所有的使用方式都是免费的。YUI 项目包括YUI 库和两...

    YUI3 dialog组件

    基于YUI3的dialog组件该组件是基于YUI3开发的,功能强大,详细见http://www.qiqicartoon.com

    YUI 入门教程YUI 入门教程YUI 入门教程

    YUI教程YUI 入门教程YUI 入门教程YUI 入门教程

    generator-yui3:YUI3项目脚手架

    (尚未稳定)YUI3项目的Yeoman发电机安装sudo npm install -g generator-yui3建立专案yo yui3 awesomeProject.generator-yui3.json 允许您覆盖默认配置{ "project" : "awesomeProject", "lang" : ["fr", "en", "es",...

    从YUI2到YUI3看前端的演变 pdf

    YUI3 引入了粒度更细的模块管理方式,通过异步 HTTP 请求加载模块、然后执行回调来加载和使用模块。现场有很多人提出疑问,大家无非关心的是“效率”二字。个人以为在现阶段,这种方式有一点激进,否能为广大用户所...

    从YUI2到YUI3看前端的演变

    从YUI2到YUI3看前端的演变

    yuicompressor-yui compressor

    yuicompressor-2.4.2.jar yuicompressor-2.4.7.jar jsZip.exe yuicompressor yui compressor js压缩工具 javascript压缩工具 css压缩工具 ------------------------------------ //压缩JS java -jar yui...

    js 压缩YUI

    雅虎的东西,简单的操作很好用 使用例子:java -jar D:\yuicompressor\yuicompressor\yuicompressor.jar E:\js\all.js -o E:\wap\wap2\js\all-min.js --charset utf-8 当然要装jdk了 不然就玩完了

    高效WEB前端开发之路:YUI3.15

    JavaScript是一种最初由Netscape的LiveScript发展而来的面向对象的Web脚本语言,被ECMA国际定义为国际化标准——ECMAScript。JavaScript具有使用局限性。... 本书适用于YUI工程师,也可以作为教材供高校师生学习使用。

    YUI3 完整包

    Yahoo! UI Library (YUI) 是一个开放源代码的 JavaScript 函数库,为了能建立一个高互动的网页,它采用了AJAX, DHTML 和 DOM 等程式码技术。它也包含了许多 CSS 资源。

    雅虎 用户接口库YUI

    YUI资料 雅虎 用户接口库 中文说明及如何使用学习 Yui组件分成2类:工具包和控件库 Yui 工具包 Yui 工具包利用DOM脚本来简化浏览器内的开发(in-browser devolvement),使用DHTML和AJAX的特性开发所有的Web程序。...

    YUICompressor.NET:Yahoo!的Java YUICompressor移植到.NET

    包裹名称: YUICompressor.NET CLI: install-package YUICompressor.NET 主要特点 压缩和/或捆绑Javascript和/或级联StyleSheets。 1个源文件-> 1个目标文件(仅压缩) 多个源文件-> 1个目标文件(压缩和捆绑) ...

    yui 资源包

    yui 源码下载,3.9.0 r2 包,最新版本

    yui-compressor 2.4.6 2011-04-15发布YUI

    yui compressor 2.4.6 发布日期:2011-04-15 用例: java -jar yuicompressor-2.4.6.jar myfile.js -o myfile-min.js

    《YUI使用文档》汉语版的yui学习材料

    YUI的使用文档,汉语版的,个人日记,是别人写的,不是我写的

    yui 3.1.2 源码 6MB大小 0资源分

    YUI3 源码 非compress版 YUI3 源码 非compress版 YUI3 源码 非compress版

    yui3-3.17.2最新版

    yui对于开发者来说是绝对的好用,开发者福利,特献上最新版

Global site tag (gtag.js) - Google Analytics