SlideShare una empresa de Scribd logo
1 de 32
YUI介绍和使用YUI构建Web应
       用
          鲁超伍
    http://adamlu.com
         @adamlu
YUI是什么?




http://yuilibrary.com/
YUI项目
•   JavaScript库(YUI)
•   CSS基础(Grid)
•   文档工具(yuidoc)
•   构建工具(shifter)
•   测试工具(yuitest)
•   性能优化工具(yui compressor)
•   开发者培训(Theater/Blog)
https://github.com/yui/yui3
模块加载
• 种子文件
 – <script
   src="http://yui.yahooapis.com/3.5.0/build/yui/yui-
   min.js"></script>

• 种子小,作用大
 –   模块注册系统
 –   核心YUI工具方法
 –   Lang, Object, Array类
 –   Loader(动态模块加载)
模块注册

YUI.add('hello', function (Y) {
  Y.namespace('Hello');

      Y.Hello.sayHello = function () {
         return 'GREETINGS PROGRAMS';
      };
});
模块使用


YUI().use('node-base', 'hello', function (Y) {

      Y.one('#demo').setHTML(Y.Hello.sayHello()
);

});
有用的工具函数
•   Y.merge
•   Y.mix
•   Y.later
•   Y.log
•   Y.Lang
•   Y.Array
•   Y.Object
•   Y.UA
                http://jsfiddle.net/adamlu/LEEdc/
一个简单的YUI程序
<script src="http://yui.yahooapis.com/3.9.0/build/yui/yui-min.js"></script>

<div id="test"></div>
<button id="button">Turn Red</button>

#test {
  height: 30px;
  background: gray;
}
#test.red {
  background: red;                               http://jsfiddle.net/adamlu/YdBbL/
}

YUI().use('node', function(Y){
    Y.one('#button').on('click', function() {
        Y.one('#test').addClass('red');
    });
});
YUI vs. jQuery




http://www.jsrosettastone.com/
YUI让你把JavaScript写得更好
$.each([1, 2, 3], fn(index, value))
$.each({ key: value }, fn(key, value))

Y.Array.each([1, 2, 3], fn(value, index))
Y.Object.each({ key: value }, fn(value, key))

$.isPlainObject(obj)
Y.Lang.isObject(obj)

$(':radio')
Y.all('input[type=radio]')

还有强大的面向对象编程支持
使用组件
• YUI本身已经自带很多丰富组件如
  AutoComplete, Calendar, DataTable等




                YUI基础结构
基于Base创建组件
• Base是底层的基础类,同时具备Attribute和
  Event特性
• 提供了创建基于属性对象的标准模板
• 提供了一致的init()和destroy()方法



         http://jsfiddle.net/adamlu/7hXCV/
Attribute类
• 对一些状态值和自定义逻辑功能相关配置
  的封装
• 提供监听状态改变的机会
• Gettters
• Settters
• 默认值
• Change事件
YUI().use("attribute", function(Y) {     //实例化时设置属性的初始值
                                         obj = new MyClass({name: value});
      function MyClass() {               obj.addAttr(name, value);

      }                                  obj.set(name, value);
      MyClass.ATTRS = {};                obj.get(name);

      Y.augment(MyClass, Y.Attribute);   obj.on(nameChanged, callback);
});                                      obj.after(nameChanged, callback);
Attribute设置流程
YUI提供的事件
• DOM事件,让你的程序响应用户操作。
• 特别的DOM事件,当页面加载或渲染时可
  以让你订阅有趣的瞬间。
• 合成事件,让你定义全新的DOM事件,扩
  大了用户和你的程序沟通的渠道。
• 自定义事件,通过发出和订阅程序指定的
  消息让组件之间互相通信。
事件支持
•   控制事件传播和冒泡
•   阻止默认行为
•   委托事件
•   EventTarget
    – publish()
    – on()/detach()
    – fire()
    – addTarget()/removeTarget()
                  http://jsfiddle.net/adamlu/5C5CC/
组件
• 组件(widget)是一个通用的可视元件设计在
  不同网站被重用,如表格、日历、菜单或
  图表。
扩展组件
• 生命周期方法:initializer(), destructor(),
  renderUI(), bindUI(), syncUI()
     Y.Electron = Y.Base.create('electron', Y.Widget,
    [], {
           destructor: function () { },
           renderUI: function () {},
           bindUI: function () {},
           syncUI: function () {}
       }, {
           ATTRS: {}
       });
    }, '1.1', {requires: ['base-build', 'widget']});
           http://jsfiddle.net/adamlu/AQ8mg/
YUI on Mobile
•   Touch事件支持
•   Guesture
•   History
•   Transition
•   ScrollView
    – 水平/垂直/拖动刷新/分页/滚动条
     YUI().use('scrollview', function (Y) {
                var scrollView = new Y.ScrollView({ srcNode: '#someContainer' });
                scrollView.render();
     });

     http://yuilibrary.com/yui/docs/scrollview/scrollview-base-example.html
YUI App Framework
• 由App, Model, Model List, Router和View组成
  的包
• 写单页面JavaScript应用程序的MVC风格的
  框架
• 基于URL的路由
• 类似BackboneJs框架
使用App Framework的例子




    http://adamlu.com/fe/ContactApp/

   https://github.com/adamlu/YUIAppDemo
HTML页面
main.js
Y.App
ContactModel
ContactListModel
ContactView
ContactListView
YUI Cookbook
@adamlu

THANKS!

Más contenido relacionado

La actualidad más candente

前端开发之Js
前端开发之Js前端开发之Js
前端开发之Jsfangdeng
 
Simple kissy1.3
Simple kissy1.3Simple kissy1.3
Simple kissy1.3yiming he
 
Yui rocks
Yui rocksYui rocks
Yui rocksAdam Lu
 
KISSY Mechanism
KISSY MechanismKISSY Mechanism
KISSY Mechanismlifesinger
 
YUIconf2010介绍
YUIconf2010介绍YUIconf2010介绍
YUIconf2010介绍ling yu
 
用Jquery实现拖拽层
用Jquery实现拖拽层用Jquery实现拖拽层
用Jquery实现拖拽层yiditushe
 

La actualidad más candente (8)

前端开发之Js
前端开发之Js前端开发之Js
前端开发之Js
 
I os 09
I os 09I os 09
I os 09
 
Simple kissy1.3
Simple kissy1.3Simple kissy1.3
Simple kissy1.3
 
Yui rocks
Yui rocksYui rocks
Yui rocks
 
KISSY Mechanism
KISSY MechanismKISSY Mechanism
KISSY Mechanism
 
I os 14
I os 14I os 14
I os 14
 
YUIconf2010介绍
YUIconf2010介绍YUIconf2010介绍
YUIconf2010介绍
 
用Jquery实现拖拽层
用Jquery实现拖拽层用Jquery实现拖拽层
用Jquery实现拖拽层
 

Similar a YUI介绍和使用YUI构建web应用

前端杂乱分享
前端杂乱分享前端杂乱分享
前端杂乱分享shyboyzk
 
Yui3简介
Yui3简介Yui3简介
Yui3简介jay li
 
Yui3 初探
Yui3 初探Yui3 初探
Yui3 初探isnull
 
YUI 教學 - 前端工程開發實務訓練
YUI 教學 - 前端工程開發實務訓練YUI 教學 - 前端工程開發實務訓練
YUI 教學 - 前端工程開發實務訓練Joseph Chiang
 
JavaScript Code Quality
JavaScript Code QualityJavaScript Code Quality
JavaScript Code QualityJoseph Chiang
 
Kissy模块化实践
Kissy模块化实践Kissy模块化实践
Kissy模块化实践yiming he
 
Yui3入门
Yui3入门Yui3入门
Yui3入门cly84920
 
KISSY for starter
KISSY for starterKISSY for starter
KISSY for starteryiming he
 
Script with engine
Script with engineScript with engine
Script with engineWebrebuild
 
Node js实践
Node js实践Node js实践
Node js实践myzykj
 
HTML5概览
HTML5概览HTML5概览
HTML5概览Adam Lu
 
前端MVC之backbone
前端MVC之backbone前端MVC之backbone
前端MVC之backboneJerry Xie
 
Node getting-started
Node getting-startedNode getting-started
Node getting-startedlylijincheng
 
Javascript autoload
Javascript autoloadJavascript autoload
Javascript autoloadjay li
 
Android 智慧型手機程式設計
Android 智慧型手機程式設計Android 智慧型手機程式設計
Android 智慧型手機程式設計Kyle Lin
 
Uliweb cheat sheet_0.1
Uliweb cheat sheet_0.1Uliweb cheat sheet_0.1
Uliweb cheat sheet_0.1modou li
 
J engine -构建高性能、可监控的前端应用框架
J engine -构建高性能、可监控的前端应用框架J engine -构建高性能、可监控的前端应用框架
J engine -构建高性能、可监控的前端应用框架fangdeng
 

Similar a YUI介绍和使用YUI构建web应用 (20)

YUI 3 菜鳥救星
YUI 3 菜鳥救星YUI 3 菜鳥救星
YUI 3 菜鳥救星
 
前端杂乱分享
前端杂乱分享前端杂乱分享
前端杂乱分享
 
Yui3简介
Yui3简介Yui3简介
Yui3简介
 
Yui3 初探
Yui3 初探Yui3 初探
Yui3 初探
 
YUI 教學 - 前端工程開發實務訓練
YUI 教學 - 前端工程開發實務訓練YUI 教學 - 前端工程開發實務訓練
YUI 教學 - 前端工程開發實務訓練
 
JavaScript Code Quality
JavaScript Code QualityJavaScript Code Quality
JavaScript Code Quality
 
Kissy模块化实践
Kissy模块化实践Kissy模块化实践
Kissy模块化实践
 
Yui3入门
Yui3入门Yui3入门
Yui3入门
 
KISSY for starter
KISSY for starterKISSY for starter
KISSY for starter
 
Script with engine
Script with engineScript with engine
Script with engine
 
Mvc
MvcMvc
Mvc
 
Node js实践
Node js实践Node js实践
Node js实践
 
I os 07
I os 07I os 07
I os 07
 
HTML5概览
HTML5概览HTML5概览
HTML5概览
 
前端MVC之backbone
前端MVC之backbone前端MVC之backbone
前端MVC之backbone
 
Node getting-started
Node getting-startedNode getting-started
Node getting-started
 
Javascript autoload
Javascript autoloadJavascript autoload
Javascript autoload
 
Android 智慧型手機程式設計
Android 智慧型手機程式設計Android 智慧型手機程式設計
Android 智慧型手機程式設計
 
Uliweb cheat sheet_0.1
Uliweb cheat sheet_0.1Uliweb cheat sheet_0.1
Uliweb cheat sheet_0.1
 
J engine -构建高性能、可监控的前端应用框架
J engine -构建高性能、可监控的前端应用框架J engine -构建高性能、可监控的前端应用框架
J engine -构建高性能、可监控的前端应用框架
 

Más de Adam Lu

一步一步开发Html5 mobile apps
一步一步开发Html5 mobile apps一步一步开发Html5 mobile apps
一步一步开发Html5 mobile appsAdam Lu
 
Get started with YUI
Get started with YUIGet started with YUI
Get started with YUIAdam Lu
 
HTML5 on Mobile
HTML5 on MobileHTML5 on Mobile
HTML5 on MobileAdam Lu
 
Html5 on Mobile(For Developer)
Html5 on Mobile(For Developer)Html5 on Mobile(For Developer)
Html5 on Mobile(For Developer)Adam Lu
 
HTML5 on Mobile(For Designer)
HTML5 on Mobile(For Designer)HTML5 on Mobile(For Designer)
HTML5 on Mobile(For Designer)Adam Lu
 
重新认识Html5
重新认识Html5重新认识Html5
重新认识Html5Adam Lu
 
常用Js框架比较
常用Js框架比较常用Js框架比较
常用Js框架比较Adam Lu
 
浏览器兼容性问题小结
浏览器兼容性问题小结浏览器兼容性问题小结
浏览器兼容性问题小结Adam Lu
 
小谈Javascript设计模式
小谈Javascript设计模式小谈Javascript设计模式
小谈Javascript设计模式Adam Lu
 
从Adobe和qcof会议看前端开发
从Adobe和qcof会议看前端开发从Adobe和qcof会议看前端开发
从Adobe和qcof会议看前端开发Adam Lu
 
揭秘Html5和Css3
揭秘Html5和Css3揭秘Html5和Css3
揭秘Html5和Css3Adam Lu
 
Enhance Web Performance
Enhance Web PerformanceEnhance Web Performance
Enhance Web PerformanceAdam Lu
 

Más de Adam Lu (12)

一步一步开发Html5 mobile apps
一步一步开发Html5 mobile apps一步一步开发Html5 mobile apps
一步一步开发Html5 mobile apps
 
Get started with YUI
Get started with YUIGet started with YUI
Get started with YUI
 
HTML5 on Mobile
HTML5 on MobileHTML5 on Mobile
HTML5 on Mobile
 
Html5 on Mobile(For Developer)
Html5 on Mobile(For Developer)Html5 on Mobile(For Developer)
Html5 on Mobile(For Developer)
 
HTML5 on Mobile(For Designer)
HTML5 on Mobile(For Designer)HTML5 on Mobile(For Designer)
HTML5 on Mobile(For Designer)
 
重新认识Html5
重新认识Html5重新认识Html5
重新认识Html5
 
常用Js框架比较
常用Js框架比较常用Js框架比较
常用Js框架比较
 
浏览器兼容性问题小结
浏览器兼容性问题小结浏览器兼容性问题小结
浏览器兼容性问题小结
 
小谈Javascript设计模式
小谈Javascript设计模式小谈Javascript设计模式
小谈Javascript设计模式
 
从Adobe和qcof会议看前端开发
从Adobe和qcof会议看前端开发从Adobe和qcof会议看前端开发
从Adobe和qcof会议看前端开发
 
揭秘Html5和Css3
揭秘Html5和Css3揭秘Html5和Css3
揭秘Html5和Css3
 
Enhance Web Performance
Enhance Web PerformanceEnhance Web Performance
Enhance Web Performance
 

YUI介绍和使用YUI构建web应用