YUI3学习(一)—入门

YUI3学习(一)—入门   学习YUI3有一段时间,并且应用在了一些项目的前端开发中,感觉还是蛮不错的,所以决定开始记录下YUI3的学习历程和个人经验。   YUI3在前身YUI2基础上进行了大量的重新设计,并不只是简单的版本升级。YUI3强调代码重用,将功能做了级别划分和颗粒化的设计。在概念上抽象出核心、工具、和组件类,分别放在不同的目录结构中,需要的时候自行去引用。为动态加载的框架设计做铺垫。YUI3…

大家好,又见面了,我是你们的朋友全栈君。

     学习YUI3有一段时间,并且应用在了一些项目的前端开发中,感觉还是蛮不错的,所以决定开始记录下YUI3的学习历程和个人经验。
     YUI3在前身YUI2基础上进行了大量的重新设计,并不只是简单的版本升级。YUI3强调代码重用,将功能做了级别划分和颗粒化的设计。在概念上抽象出 核心、工具、和组件类,分别放在不同的目录结构中,需要的时候自行去引用。为动态加载的框架设计做铺垫。

YUI 3重点是代码的组织和结构。以下是结构图。

YUI3学习(一)---入门

 

YUI3在结构上分为四大类:

种子:该模块是YUI3的单一核心,页面都必须包含该模块,该模块提供加载功能,所以可以堪称是YUI的一个种子。在YUI3中扮演引导层的作用,通过在页面引入种子相关文件,调用YUI().use()方法可以安全快速的加载YUI3核心类和组件类。

包含YUI BaseGetLoader模块。

核心:核心模块为YUI3下游组件提供通用依赖。该模块包括OOP模块(提供对象继承机制,DOM等绝大多数模块直接或间接依赖OOP)、Dom模块(提供基础的DOM操作与选择类)、Node模块(基于Dom模块,提供文档节点的创建、选择和操作等方法,相比YUI2有了很大的精简)、Event模块(提供屏蔽浏览器差异的事件注册和响应机制,同时提供高级自定义事件的功能)

组件框架:组件框架基于YUI核心框架。从下到上依次基于AttributeBaseWidget模块组成;同时提供Plugin模块实现灵活扩展。组件框架是建立和扩展组件的基础。

组件:YUI3提供的高度模块化可复用的组件,根据程序按需引入相关模块即可。YUI3目前提供了AnimationDrag and DropIOCookiesJSON 等基础组件模块。

 

 

接下来总结一下YUI3的部分特点:

1,动态按需加载

YUI3种子中的Get、Loader模块是动态按需加载的基础,YUI3框架通过良好的结构组织,可以根据程序引入的所需模块名称自动计算依赖模块,实现按需加载;YUI3动态加载的优势:

1)js文件写入script标签,每一个标签都会占用一个http请求(即使是304.),而动态加载的文件缓存后则不必发起真实的http请求。提高了框架的性能。

    2) 动态加载可以避免开发人员额外关注js文件之间的依赖和排序及重复问题。  引入的时候只需要引入需要模块的名称即可,依赖关系不需要花费精力处理。

      3) 动态加载利于页面代码语义化,只需要关心 ‘需要什么’。

 

2,细粒度化设计

YUI3对每个模块都进行了更细粒度的划分。比如,dom模块,划分为了 base,screen,style,selector-css2,selector-css3,selector-native等几个小模块,对于我们控制页面的载入的数据量有很大帮助。

下图是YUI3各个细粒度模块的列表和大小。

YUI3学习(一)---入门

3,安全沙箱

 页面的每一个YUI实例能够被自包含、保护和限制(YUI().use())。这种和其他YUI实例的分离,能够配合你的特殊函数需求,并且能让不同的YUI 版本更好的运行在一起。在很大程度上方便了不同开发者对同一页面的并行开发。

这里YUI().use(”,function(Y){…})就是一个安全沙箱,可以确保这里面的Y是纯天然无污染的,Y实例里有什么功能完全取决于use里传进的模块名称,function(Y){}里面的程序跟外界是隔离的,在里面创建的变量(除了全局变量)以及对YUI的添加修改都不会影响到同个页面上其他人写的程序。

 

 

 

 

YUI3学习路线

目前关于YUI3的中文资料并不多,也未发现一本介绍YUI3的书籍。所以目前最全的文档就只有yahoo 的官方YUI3介绍、API和examples(http://developer.yahoo.com/yui/3/)。根据网友的学习经验,学习路线最好是依据官方说明的顺序学习(YUI3核心(YUI Global Object\Node\Event)->组件框架->组件);循序渐进,逐步了解YUI组织结构及使用方法。

 

 

hello YUI3 demo

 

首先下载YUI3开发包(在http://developer.yahoo.com/yui/3/ 选择Download  full developer kit,包含YUI3代码、api和例子)。解压后拷贝build文件夹里的yui3文件夹到自己的工程中。然后在页面引入yui3-min.js。

 

 
<script type="text/javascript" src="build/yui3/yui/yui-min.js"></script>

 之后嵌入脚本,验证YUI3是否调用成功

 

YUI({filter:debug}).use('*',function(Y){
	alert('hello YUI3');	 
});

 

 

 

下一篇  YUI3 Global Object

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/158167.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • layoutSubviews触发问题

    layoutSubviews触发问题layoutSubviews在以下情况下会被调用: 1、init初始化不会触发layoutSubviews 2、addSubview会触发layoutSubviews 3、设置view的Frame会触发layoutSubviews,当然前提是frame的值设置前后发生了变化 4、滚动一个UIScrollView会触发layoutSubviews 5、旋转Screen会触发父UIView上的layo…

    2022年7月25日
    14
  • trim函数去掉字符串首尾空格

    trim函数去掉字符串首尾空格trim():去掉字符串首尾的空格。public class trimDemo{ public static void main(String arg[]){ String a=" hello "; // 前后均有空格 String b="hello"; // 前后均无空格 System.out.println(b.equals(a)); /…

    2022年6月13日
    23
  • 四、单例模式—不要冒充我,我只有一个! #和设计模式一起旅行#

    单例模式—不要冒充我! 我就是我 是颜色不一样的烟火 天空开阔 要做最坚强的泡沫。——《我就是我》-张国荣有人冒充我给大家说一个秘密了,其实我和设计模式本来并不认识,是相识于网络上,我们聊的很多,聊人生聊梦想,有一天我突然说,设计模式我们一起去旅行吧,她说可以啊!所以才有着一次的旅行。但是总有一些人想要冒充我,因为他们看到了我和设计模式的这场旅行,那么怎么保证“设计…

    2022年2月27日
    49
  • pycharm2.5 永久激活码破解方法

    pycharm2.5 永久激活码破解方法,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月15日
    126
  • TTL门电路工作原理_TTL门电路和CMOS有什么特点

    TTL门电路工作原理_TTL门电路和CMOS有什么特点CMOS门电路、TTL门电路基础CMOS门电路简介MOS管简介合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML图表FLowchart流程图导出与导入导出导入CMOS门电路简介CMOS门电路(ComplementaryMetal-Oxide-Semiconductor)是指利用P沟道

    2025年7月20日
    4
  • Repeater嵌套DataList

    Repeater嵌套DataList&lt;%@PageLanguage="C#"AutoEventWireup="true"CodeBehind="RepeaterDemo.aspx.cs"Inherits="OldbSiteMapProviderDemo.RepeaterDemo"%&gt;&lt;!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitiona

    2022年7月14日
    24

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号