SlideShare a Scribd company logo
1 of 46
Download to read offline
From YUI3 to K2
Koubei F2E 三七
2011.04.06
What is YUI?




http://baike.baidu.com/view/1702955.html
http://zh.wikipedia.org/wiki/YUI
Yahoo! User Interface




http://developer.yahoo.com/yui/
http://yuilibrary.com/
http://yuiblog.com/
History
    •   2005.??.??   YUI Start

    •   2006.02.13 YUI 0.10.0 Library & Blog Open Source

    •   2007.02.20 YUI 2.2.0(0.12.2)

    •   2007.08.20 YUI Compressor 1.1

    •   2008.08.13 YUI 3.0.0pr1

    •   2008.12.05 YUI Doc 1.0.0b

    •   2009.09.14 YUI 2.8.0

    •   2009.03.10 YUI Build Tools

    •   2009.09.09 YUI PHP Loader

    •   2009.09.29 YUI 3.0.0 GA

    •   3010.03.31 YUI 3.1.0

    •   2010.04.05 YUI3 Nodejs

    •   2010.08.25 Yeti 0.1.0

    •   2010.09.07 YUI 3.2.0

    •   2010.01.12 YUI 3.3.0

    •   2010.04.??   YUI 2.9.0

    •   2010.0?.??   YUI 3.4.0
YUI Family
   YUI 2                     YUI 3
                                                               UI
   YUI CSS                   YUI Gallery

   CDN hosting               PHPLoader

   Combo Loader              YUI3 + Node.js                    Server
   YLS (YUI Loader Server)


   YUI Doc                   Builder

   YUI Test                  Compressor
                                                               Development
   YUI Console               Profiler

   Yeti                      GBS    (Graded Browser Support)




   YUI Blog                  yuilibrary / forum

   YUI Theater               #yui   (freenode)                 Developer
   @yuilibrary               YUI   (github.com)
Goals

  YUI().use('lighter',	
  function(Y)	
  {
  	
     Y.all('.faster	
  li').each(function(v)	
  {
  	
     	
     v.set('innerHTML',	
  'easier');
  	
     });
  });
Lighter
                   •        Emphasis on Code Reuse
                            Don’t write code more than once, use it again.


                                      Y.aggregate()
                                      Y.agument()
                                      Y.bind()
                                      Y.clone()
                                      Y.extend()
                                      Y.rbind()




http://developer.yahoo.com/yui/3/api/module_oop.html
Lighter
                   •        Emphasis on Code Reuse
                            Don’t write code more than once, use it again.



                                                                                Attribute
                                                               Base            EventTarget
                                                                               Plugin.Host

                                                          Widget

                                                    MyWidget

                                                              Widget Hierarchy
http://josephjiang.com/entry.php?id=257
http://developer.yahoo.com/yui/theater/video.php?v=desai-yuiconf2009-widgets
Lighter
   •   Emphasis on Code Reuse
       Don’t write code more than once, use it again.

                    Component
       Core                        Utilities               Widgets        Plugins                  CSS
                    Infrastructure
       YUI (seed)   Attribute       Animation              Autocomplete   Console Filters Plugin   Reset
       Event        Base            AsyncQueue             Charts         FocusManager Node        Base
       Loader       Plugin          Cache                  Console        Plugin                   Fonts
       DOM          Widget          Cookie                 DataTable      MenuNav Node Plugin      Grids
       OOP                          DataSchema             Dial
       Node                         DataSource             Overlay
                                    DataType               RTE
                                    DD                     ScrollView
                                    History                Slider
                                    ImageLoader            TabView
                                    Internationalization
                                    IO
                                    JSON
                                    JSONP
                                    Profiler
                                    Recoredset
                                    Resize
                                    Sortable
                                    StyleSheet
                                    SWF
                                    Test
                                    Transition
                                    Uploader
                                    YQL Query
Lighter
                    •        Emphasis on Code Reuse
                             Don’t write code more than once, use it again.


                    •        Finer Grainded, Modules & Sub-Modules
                             Don’t load what you don’t need

                            	
  	
  	
  	
  "io":	
  {
                            	
  	
  	
  	
  	
  	
  	
  	
  "submodules":	
  {
                            	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  "io-­‐base":	
  {
                            	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  "optional":	
  ["querystring-­‐stringify-­‐simple"],	
  
                            	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  "requires":	
  ["event-­‐custom-­‐base"]
                            	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  },	
  
                            	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  "io-­‐form":	
  {
                            	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  "requires":	
  ["io-­‐base",	
  "node-­‐base",	
  "node-­‐style"]
                            	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  },	
  
                            	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  "io-­‐queue":	
  {
                            	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  "requires":	
  ["io-­‐base",	
  "queue-­‐promote"]
                            	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  },	
  
                            	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  "io-­‐upload-­‐iframe":	
  {
                            	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  "requires":	
  ["io-­‐base",	
  "node-­‐base"]
                            	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  },	
  
                            	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  "io-­‐xdr":	
  {
                            	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  "requires":	
  ["io-­‐base",	
  "datatype-­‐xml"]
                            	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  }
                            	
  	
  	
  	
  	
  	
  	
  	
  }
                            	
  	
  	
  	
  },	
  


http://developer.yahoo.com/yui/3/io/
Easier
                   •        More Consistent
                            Node supports the HTMLElements API

                                                           Y.Node               HTMLElement
                                                           reset()          HTMLFormElement.reset()

                                                            blur()          HTMLInputElement.blur()

                                                        appendChild()         Node.appendChild()

                                                         cloneNode()           Node.cloneNode()

                                                         hasAttribute          Node.hasAttirbute

                                                        hasChildNodes()      Node.hasChildNodes()

                                                         insertBefore         Node.insertBefore()

                                                        removeChild()         Node.removeChild()

                                                        replaceChild()        Node.replaceChild()

                                                    scrollIntoview()      HTMLElement.scrollIntoView()

                                                   get(“parentNode”)            Node.parentNode

                                             set(“innterHTML”,”Foo”)         HTMLElement.innerHTML


http://www.w3.org/TR/DOM-Level-2-Core/
http://developer.yahoo.com/yui/3/node/#node-migration
Easier
   •   More Consistent
       Node supports the HTMLElements API
       Node normalizes the HTMLElements API


          node.getAttribute("href")
          node.contains(aNode)
          node.getStyle("paddingTop")
          node.previous()
Easier
                    •        More Consistent
                             Node supports the HTMLElements API
                             Node normalizes the HTMLElements API
                             Array supports some Array methods of JavaScript 1.6



                                   Y.Array.each()	
  	
  	
  (forEach)
                                   Y.Array.indexOf()
                                   Y.Array.some()




https://developer.mozilla.org/en/javascript
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array
Easier
                    •        More Consistent
                             Node supports the HTMLElements API
                             Node normalizes the HTMLElements API
                             Array supports some Array methods of JavaScript 1.6
                             All events are custom events



                                     //DOM	
  events
                                     button.on("click",	
  doSomething);


                                     //Custom	
  events
                                     instance.on("myEvent",	
  doSomething);




http://developer.yahoo.com/yui/3/event/
Easier
   •   More Consistent

   •   More Convenient
       Flatter namespace & chainability



           YUI().use(‘node-­‐base’,function(Y){
           	
  	
  	
  	
  Y.one(‘body’).addClass(‘yui-­‐skin-­‐sam’);
           });
Easier
   •   More Consistent

   •   More Convenient
       Flatter namespace & chainability
       Language enhancements & batch operations


          Y.Array.test()
          Y.Array.hash()
          Y.Array.numericSort()
          Y.all(‘li’).each(function(){


          });
Easier
                   •        More Consistent

                   •        More Convenient
                            Flatter namespace & chainability
                            Language enhancements & batch operations
                            Dynamic loading & Runtime Configure & Simple YUI

                                   //YUI	
  inline	
  config	
  (defaul	
  level)
                                   //YUI.GlobalConfig	
  (global	
  level)
                                   //YUI_config	
  (page	
  level)
                                   //YUI	
  instance	
  config	
  (instance	
  level)
                                   YUI({
                                   	
  	
  	
  combine:false
                                   }).use(‘node-­‐base’,function(Y){
                                   	
  	
  	
  	
  	
  Y.one(‘body’).addClass(‘yui-­‐skin-­‐sam’);
                                   });


                                   var	
  Y	
  =	
  YUI().use(‘*’);
http://www.yuiblog.com/blog/2010/09/03/coming-inyui-3-2-0-simpleyui/
Easier
                   •       More Consistent

                   •       More Convenient

                   •       More Powerful
                           Sandbox


                                  YUI().use(‘node’,function({
                                  	
  	
  	
  Y.all(‘.k2’).addClass(‘k3’);
                                  });


                                  YUI({
                                  	
  	
  root:‘yui/3.1.0/’
                                  }).use(‘node’,function(){
                                  	
  	
  Y.all(‘.k2’).addClass(‘k3’);
                                  });

http://www.infoq.com/cn/articles/sandboxOnB
Easier
   •   More Consistent

   •   More Convenient

   •   More Powerful
       Sandbox
       Plugin


       	
   node.plug(IOPlugin);
       	
   node.io.getContent("http://foo/bar");
       	
  	
  
       	
  	
  node.plug(DragDropPlugin);
       	
   node.dd.set("handle",	
  ".title");
Easier
   •   More Consistent

   •   More Convenient

   •   More Powerful
       Sandbox
       Plugin
       Selector

         YUI().use('node',	
  function(Y)	
  {
         	
  	
  	
  	
  var	
  node	
  =	
  Y.one('#demo'),
         	
  	
  	
  	
  	
  	
  	
  	
  node2	
  =	
  node.one('p');
         	
  	
  	
  	
  if	
  (node2)	
  {	
  
         	
  	
  	
  	
  	
  	
  	
  	
  node2.addClass('bar');	
  
         	
  	
  	
  	
  }
         });
         YUI().use(‘node’,‘selector-­‐css3’,function(Y){
                    var	
  one	
  =	
  Y.one(‘li[foo=”en”]’);
         });
Easier
                 •       More Consistent

                 •       More Convenient

                 •       More Powerful
                         Sandbox
                         Plugin
                         Selector
                         AOP


                             Do.before()
                             Do.after()
                             Do.detach()
                             AOP




http://developer.yahoo.com/yui/3/api/Do.html
http://uedmagazine.com/ued/comments.php?y=09&m=09&entry=entry090923-120216
Easier
                    •        More Consistent

                    •        More Convenient

                    •        More Powerful

                    •        More Securable



                                        Node is the single point of access to the DOM.


                                        Makes YUI 3 ideal as a trusted source for"constrained"
                                        environments like Caja and Ad-safe.




http://adsafe.org
https://github.com/yui/yui-caja
http://code.google.com/p/google-caja/
Faster
   •   Loading, Combo Handler & Rollup

        YUI().use(‘node-­‐base’,function(){
        	
  	
  Y.one(‘body’).addClass(‘yui3-­‐skin-­‐sam’);
        });



         <script id="yui_3_3_0_1_13006792497902" type="text/javascript" charset="utf-8" src="http://yui.yahooapis.com/3.3.0/
         build/loader/loader-min.js">
         <script id="yui_3_3_0_1_13006792497903" type="text/javascript" charset="utf-8" src="http://yui.yahooapis.com/combo?
         3.3.0/build/oop/oop-min.js&3.3.0/build/dom/dom-base-min.js&3.3.0/build/dom/selector-native-min.js&3.3.0/build/dom/
         selector-css2-min.js&3.3.0/build/event-custom/event-custom-base-min.js&3.3.0/build/event/event-base-min.js&3.3.0/build/
         node/node-base-min.js">



         Urls : 2, Files : 8
Faster
   •   Loading, Combo Handler & Rollup

        YUI({
        	
   combine:false
        }).use('node-­‐base','node-­‐event-­‐delegate','node-­‐
        screen','node-­‐style',function(Y){
        	
   Y.one('body').addClass('yui3-­‐skin-­‐sam');
        });
        <script id="yui_3_3_0_1_13006898295412" type="text/javascript" charset="utf-8" src="http://yui.yahooapis.com/3.3.0/
        build/loader/loader-min.js">
        <script id="yui_3_3_0_1_13006898295413" type="text/javascript" charset="utf-8" src="http://yui.yahooapis.com/3.3.0/
        build/oop/oop-min.js">
        <script id="yui_3_3_0_1_13006898295414" type="text/javascript" charset="utf-8" src="http://yui.yahooapis.com/3.3.0/
        build/event-custom/event-custom-base-min.js">
        <script id="yui_3_3_0_1_13006898295415" type="text/javascript" charset="utf-8" src="http://yui.yahooapis.com/3.3.0/
        build/event/event-base-min.js">
        <script id="yui_3_3_0_1_13006898295416" type="text/javascript" charset="utf-8" src="http://yui.yahooapis.com/3.3.0/
        build/dom/dom-min.js">
        <script id="yui_3_3_0_1_13006898295417" type="text/javascript" charset="utf-8" src="http://yui.yahooapis.com/3.3.0/
        build/pluginhost/pluginhost-min.js">
        <script id="yui_3_3_0_1_13006898295418" type="text/javascript" charset="utf-8" src="http://yui.yahooapis.com/3.3.0/
        build/node/node-min.js">
        <script id="yui_3_3_0_1_13006898295419" type="text/javascript" charset="utf-8" src="http://yui.yahooapis.com/3.3.0/
        build/event/event-delegate-min.js">


         Urls : 8, Files : 8
Faster
   •   Loading, Combo Handler & Rollup

   •   Runtime performance
       register vs execute, not synchronous, JIT Loading


          YUI.add(‘module-­‐id’,function(Y){

          },‘3.3.0’,{requires:[‘yui-­‐base’]});

          YUI().use(‘module-­‐id’,‘node-­‐base’,function(Y){
          	
  	
  	
  	
  Y.use(‘module-­‐new-­‐id’,function(Y){
                            //wow
          	
  	
  	
  	
  });
          	
  	
  	
  	
  Y.one(‘body’).addClass(‘yui3-­‐skin-­‐sam’);
          });
Faster
   •   Loading, Combo Handler & Rollup

   •   Runtime performance

   •   Re-factor core performance pain points
Trade-off



        Usable vs. Professional


http://ued.taobao.com/blog/2010/01/11/yui3%E8%AE%BE%E8%AE%A1%E4%B8%AD%E7%9A%84%E6%BF%80%E8%BF%9B%E5%92%8C%E5%A6%A5%E5%8D%8F/
License
                    •        BSD

                                    BSD开源协议是一个给于使用者很大自由的协议。基本上使用者
                                    可以”为所欲为”,可以自由的使用,修改源代码,也可以将修改后
                                    的代码作为开源或者专有软件再发布。

                                    BSD 代码鼓励代码共享,但需要尊重代码作者的著作权。BSD由
                                    于允许使用者修改和重新发布代码,也允许使用或在BSD代码上
                                    开发商业软件发布和销售,因此是对 商业集成很友好的协议。而
                                    很多的公司企业在选用开源产品的时候都首选BSD协议,因为可
                                    以完全控制这些第三方的代码,在必要的时候可以修改或者二次
                                    开发。




http://www.awflasher.com/blog/archives/939
http://developer.yahoo.com/yui/3/license.html
What is next about YUI?
                         •        General Infrastructure
                                •         Performance

                                •         RLS(YLS)

                         •        Mobile
                                •         MVC Infrastructure

                                •         Touch/Gesture Event

                         •        Widget
                                •         Calendar

                                •         Panel/Dialog/Windowing

                                •         pagination

                                •         Tree/Menu/Button/Toobar

                                •         Form Utilties

                         •        Node.js
http://yuilibrary.com/projects/yui3/roadmap
Our Lessions about YUI3
   •   From YUI3 to K2 (Now)

   •   YUI3 Core

   •   YUI3 Event (OOP & AOP)

   •   YUI3 Widget       (Attribute, base, plugin)



   •   YUI Test , Profile & Console

   •   YUI3 Performance (Cache, AsyncQueue)

   •   YUI3 CSS & Skins

   •   YUI3 Data Manipulation ( DataSchema, DataSource, DataType, RecoredSet, DataTable )

   •   YUI Doc
What is K2?
What is K2?
     The Second Generation Infrasturce of Koubei Front-end




http://kxt.koubei.com/wiki/index.php/F2E:K2
What is K2?
                   •        Web Structure

                                <!doctype html>
                                <html>
                                <head>
                                  <meta charset="UTF-8">
                                  <meta http-equiv="X-UA-Compatible" content="IE=Edge">
                                  <meta name="keywords" content="keyword1,keyword2,keyword3">
                                  <meta name="description" content="some sentences">
                                  <title>page title</title>
                                  <!--start: for iOS-->
                                  <link rel="apple-touch-icon" href="http://k.kbcdn.com/product/common/header/
                                fav.png">
                                  <!--end : for iOS-->
                                  <script>
                                   /* inline script */
                                  </script>
                                  <link rel="stylesheet" href="eg.css">
                                  <style>
                                   /* inline css */
                                  </style>
                                </head>
                                <body>
                                  <div>
                                   <!-- 内容 -->
                                  </div>
                                  <script src="eg.js"></script>
                                  <script>
                                   /* inline script */
                                  </script>
                                </body>
                                </html>




http://kxt.koubei.com/wiki/index.php/F2E:HTML
What is K2?
                    •      Web Structure

                    •      Core Engine & Components (Powered by YUI3)
                           Core       Utilities       Widgets         Components   CSS & Skin
                           seed       datalazyload    editor          ww           reset
                                      validator       switch                       color
                                      uploader        shutter                      common
                                      swf             calendar                     corner
                                      scroll-follow   image-cropper                grids
                                      popup           pagination                   icon
                                      resize          bookmark                     button
                                                      cdselector
                                                      form




http://kxt.koubei.com/k2
What is K2?
  •       Web Structure

  •       Core Engine & Components (Powered by YUI3)

  •       Front-end Runtime
      •    k.kbcdn.com

      •    Minify

      •    CMS & CMS
What is K2?
  •       Web Structure

  •       Core Engine & Components (Powered by YUI3)

  •       Front-end Runtime

  •       Development Runtime
      •    ATT2, Pea

      •    http://kxt.koubei.com/k2

      •    K2 Runtime

           •   console, noCache, noVersion, syntaxHighlight, noCombo, local

      •    TDD

      •    Yeti @ koubei.com

      •    grape

      •    hive, queen
What is K2?
  •       Web Structure

  •       Core Engine & Components (Powered by YUI3)

  •       Front-end Runtime

  •       Development Runtime

  •       Tools
      •    F2E Validator

      •    KFC

      •    Cod

      •    CodeCola

      •    FoTiaoQiang
What is next about K2?
                    •         Web Structure
                              Web Module Template Engine (Web Server   & JS Engine Assembling)




                                 {
                                 	
  	
  ‘module’:‘tuan-­‐list’,
                                 	
  	
  ‘path’:’...’,
                                 	
  	
  ‘data’:{
                                 	
  	
  	
  	
  ‘path’:’...’,
                                 	
  	
  	
  	
  ‘require’:[‘...’]
                                 	
  	
  },
                                 	
  	
  ‘js’:{
                                 	
  	
  	
  	
  ‘path’:’...’,
                                 	
  	
  	
  	
  ‘require’:[‘...’]
                                 	
  	
  },
                                 	
  	
  ‘css’:{
                                 	
  	
  	
  	
  ‘path’:’...’,
                                 	
  	
  	
  	
  ‘require’:[‘...’],
                                 	
  	
  },
                                 	
  	
  ‘callback’:’...’,
                                 	
  	
  ‘require’:[‘...’]
                                 }

http://mustache.github.com/
What is next about K2?
   •   Web Structure

   •   Core Engine & Components (Powered by YUI3)
       Core           Utilities      Widgets        Components       CSS & Skin
       (for mobile)   (for mobile)   (for mobile)   (for mobile)     (for mobile)
                                                    shareTo          Koubei Design Pattern
                                                    Favorite
                                                    subscribe
                                                    login & singup
                                                    feedback
What is next about K2?
  •       Web Structure

  •       Core Engine & Components (Powered by YUI3)

  •       Front-end Runtime
      •    Java Loader

      •    Koubei Server Loader @ Node.js

      •    F2E Minify

      •    Front-end Management System 1.0
What is next about K2?
  •       Web Structure

  •       Core Engine & Components (Powered by YUI3)

  •       Front-end Runtime

  •       Development Runtime
      •    ATT3 @ Node.js

      •    Debug anywhere & anytime @ seed 2.0
What is next about K2?
  •       Web Structure

  •       Core Engine & Components (Powered by YUI3)

  •       Front-end Runtime

  •       Development Runtime

  •       Tools
      •    SlowSlow

      •    input.koubei.com

      •    performance.koubei.com
Thank you




http://zh.wikipedia.org/wiki/K2

More Related Content

What's hot

Mobile HTML, CSS, and JavaScript
Mobile HTML, CSS, and JavaScriptMobile HTML, CSS, and JavaScript
Mobile HTML, CSS, and JavaScriptfranksvalli
 
Scalable JavaScript Application Architecture
Scalable JavaScript Application ArchitectureScalable JavaScript Application Architecture
Scalable JavaScript Application ArchitectureNicholas Zakas
 
Hi performance table views with QuartzCore and CoreText
Hi performance table views with QuartzCore and CoreTextHi performance table views with QuartzCore and CoreText
Hi performance table views with QuartzCore and CoreTextMugunth Kumar
 
Maintainable JavaScript 2012
Maintainable JavaScript 2012Maintainable JavaScript 2012
Maintainable JavaScript 2012Nicholas Zakas
 
How to make Ajax work for you
How to make Ajax work for youHow to make Ajax work for you
How to make Ajax work for youSimon Willison
 
High Performance Ajax Applications
High Performance Ajax ApplicationsHigh Performance Ajax Applications
High Performance Ajax ApplicationsJulien Lecomte
 
Patterns for JVM languages - Geecon 2014
Patterns for JVM languages - Geecon 2014Patterns for JVM languages - Geecon 2014
Patterns for JVM languages - Geecon 2014Jaroslaw Palka
 
Why Node.js
Why Node.jsWhy Node.js
Why Node.jsguileen
 
HTML5: where flash isn't needed anymore
HTML5: where flash isn't needed anymoreHTML5: where flash isn't needed anymore
HTML5: where flash isn't needed anymoreRemy Sharp
 
jQuery Proven Performance Tips & Tricks
jQuery Proven Performance Tips & TricksjQuery Proven Performance Tips & Tricks
jQuery Proven Performance Tips & TricksAddy Osmani
 
ActiveJDBC - ActiveRecord implementation in Java
ActiveJDBC - ActiveRecord implementation in JavaActiveJDBC - ActiveRecord implementation in Java
ActiveJDBC - ActiveRecord implementation in Javaipolevoy
 
ActiveWeb: Chicago Java User Group Presentation
ActiveWeb: Chicago Java User Group PresentationActiveWeb: Chicago Java User Group Presentation
ActiveWeb: Chicago Java User Group Presentationipolevoy
 
JavaScript Modules Done Right
JavaScript Modules Done RightJavaScript Modules Done Right
JavaScript Modules Done RightMariusz Nowak
 
#NewMeetup Performance
#NewMeetup Performance#NewMeetup Performance
#NewMeetup PerformanceJustin Cataldo
 
JavaFX 2 and Scala - Like Milk and Cookies (33rd Degrees)
JavaFX 2 and Scala - Like Milk and Cookies (33rd Degrees)JavaFX 2 and Scala - Like Milk and Cookies (33rd Degrees)
JavaFX 2 and Scala - Like Milk and Cookies (33rd Degrees)Stephen Chin
 
Meetup Performance
Meetup PerformanceMeetup Performance
Meetup PerformanceGreg Whalin
 
Web components with java by Haijian Wang
Web components with java by Haijian WangWeb components with java by Haijian Wang
Web components with java by Haijian WangGWTcon
 

What's hot (20)

Mobile HTML, CSS, and JavaScript
Mobile HTML, CSS, and JavaScriptMobile HTML, CSS, and JavaScript
Mobile HTML, CSS, and JavaScript
 
Scalable JavaScript Application Architecture
Scalable JavaScript Application ArchitectureScalable JavaScript Application Architecture
Scalable JavaScript Application Architecture
 
Hi performance table views with QuartzCore and CoreText
Hi performance table views with QuartzCore and CoreTextHi performance table views with QuartzCore and CoreText
Hi performance table views with QuartzCore and CoreText
 
Maintainable JavaScript 2012
Maintainable JavaScript 2012Maintainable JavaScript 2012
Maintainable JavaScript 2012
 
How to make Ajax work for you
How to make Ajax work for youHow to make Ajax work for you
How to make Ajax work for you
 
Javascript Design Patterns
Javascript Design PatternsJavascript Design Patterns
Javascript Design Patterns
 
High Performance Ajax Applications
High Performance Ajax ApplicationsHigh Performance Ajax Applications
High Performance Ajax Applications
 
Patterns for JVM languages - Geecon 2014
Patterns for JVM languages - Geecon 2014Patterns for JVM languages - Geecon 2014
Patterns for JVM languages - Geecon 2014
 
Why Node.js
Why Node.jsWhy Node.js
Why Node.js
 
HTML5: where flash isn't needed anymore
HTML5: where flash isn't needed anymoreHTML5: where flash isn't needed anymore
HTML5: where flash isn't needed anymore
 
WordPress and Ajax
WordPress and AjaxWordPress and Ajax
WordPress and Ajax
 
jQuery Proven Performance Tips & Tricks
jQuery Proven Performance Tips & TricksjQuery Proven Performance Tips & Tricks
jQuery Proven Performance Tips & Tricks
 
ActiveJDBC - ActiveRecord implementation in Java
ActiveJDBC - ActiveRecord implementation in JavaActiveJDBC - ActiveRecord implementation in Java
ActiveJDBC - ActiveRecord implementation in Java
 
ActiveWeb: Chicago Java User Group Presentation
ActiveWeb: Chicago Java User Group PresentationActiveWeb: Chicago Java User Group Presentation
ActiveWeb: Chicago Java User Group Presentation
 
JavaScript Modules Done Right
JavaScript Modules Done RightJavaScript Modules Done Right
JavaScript Modules Done Right
 
#NewMeetup Performance
#NewMeetup Performance#NewMeetup Performance
#NewMeetup Performance
 
JavaFX 2 and Scala - Like Milk and Cookies (33rd Degrees)
JavaFX 2 and Scala - Like Milk and Cookies (33rd Degrees)JavaFX 2 and Scala - Like Milk and Cookies (33rd Degrees)
JavaFX 2 and Scala - Like Milk and Cookies (33rd Degrees)
 
Meetup Performance
Meetup PerformanceMeetup Performance
Meetup Performance
 
iOS 7 SDK特訓班
iOS 7 SDK特訓班iOS 7 SDK特訓班
iOS 7 SDK特訓班
 
Web components with java by Haijian Wang
Web components with java by Haijian WangWeb components with java by Haijian Wang
Web components with java by Haijian Wang
 

Viewers also liked

我的工作态度@口碑网
我的工作态度@口碑网我的工作态度@口碑网
我的工作态度@口碑网kaven yan
 
The JSON Saga
The JSON SagaThe JSON Saga
The JSON Sagakaven yan
 
Adi Stan - aplicatii Facebook
Adi Stan - aplicatii FacebookAdi Stan - aplicatii Facebook
Adi Stan - aplicatii FacebookClaudiu Gamulescu
 
我的工作态度+@口碑网
我的工作态度+@口碑网我的工作态度+@口碑网
我的工作态度+@口碑网kaven yan
 
理解Ajax性能
理解Ajax性能理解Ajax性能
理解Ajax性能kaven yan
 
工作指南@口碑网
工作指南@口碑网工作指南@口碑网
工作指南@口碑网kaven yan
 

Viewers also liked (6)

我的工作态度@口碑网
我的工作态度@口碑网我的工作态度@口碑网
我的工作态度@口碑网
 
The JSON Saga
The JSON SagaThe JSON Saga
The JSON Saga
 
Adi Stan - aplicatii Facebook
Adi Stan - aplicatii FacebookAdi Stan - aplicatii Facebook
Adi Stan - aplicatii Facebook
 
我的工作态度+@口碑网
我的工作态度+@口碑网我的工作态度+@口碑网
我的工作态度+@口碑网
 
理解Ajax性能
理解Ajax性能理解Ajax性能
理解Ajax性能
 
工作指南@口碑网
工作指南@口碑网工作指南@口碑网
工作指南@口碑网
 

Similar to From YUI3 to K2: A Guide to Migrating from Yahoo User Interface 3 to Koubei Framework 2

Server Side JavaScript - You ain't seen nothing yet
Server Side JavaScript - You ain't seen nothing yetServer Side JavaScript - You ain't seen nothing yet
Server Side JavaScript - You ain't seen nothing yetTom Croucher
 
Building Dojo in the Cloud
Building Dojo in the CloudBuilding Dojo in the Cloud
Building Dojo in the CloudJames Thomas
 
Let's run JavaScript Everywhere
Let's run JavaScript EverywhereLet's run JavaScript Everywhere
Let's run JavaScript EverywhereTom Croucher
 
Running YUI 3 on Node.js - JSConf 2010
Running YUI 3 on Node.js - JSConf 2010Running YUI 3 on Node.js - JSConf 2010
Running YUI 3 on Node.js - JSConf 2010Adam Moore
 
JavaScript Library Overview (Ajax Exp West 2007)
JavaScript Library Overview (Ajax Exp West 2007)JavaScript Library Overview (Ajax Exp West 2007)
JavaScript Library Overview (Ajax Exp West 2007)jeresig
 
Python - A Comprehensive Programming Language
Python - A Comprehensive Programming LanguagePython - A Comprehensive Programming Language
Python - A Comprehensive Programming LanguageTsungWei Hu
 
How dojo works
How dojo worksHow dojo works
How dojo worksAmit Tyagi
 
JavaScript Everywhere! Creating a 100% JavaScript web stack
JavaScript Everywhere! Creating a 100% JavaScript web stackJavaScript Everywhere! Creating a 100% JavaScript web stack
JavaScript Everywhere! Creating a 100% JavaScript web stackTom Croucher
 
Node js实践
Node js实践Node js实践
Node js实践jay li
 
Introduction to YUI PHP Loader
Introduction to YUI PHP LoaderIntroduction to YUI PHP Loader
Introduction to YUI PHP LoaderChad Auld
 
soft-shake.ch - Hands on Node.js
soft-shake.ch - Hands on Node.jssoft-shake.ch - Hands on Node.js
soft-shake.ch - Hands on Node.jssoft-shake.ch
 
WebNet Conference 2012 - Designing complex applications using html5 and knock...
WebNet Conference 2012 - Designing complex applications using html5 and knock...WebNet Conference 2012 - Designing complex applications using html5 and knock...
WebNet Conference 2012 - Designing complex applications using html5 and knock...Fabio Franzini
 
Front-end Modular & Autmomated Development
Front-end Modular & Autmomated Development Front-end Modular & Autmomated Development
Front-end Modular & Autmomated Development Joseph Chiang
 
JavaScript Libraries (Kings of Code)
JavaScript Libraries (Kings of Code)JavaScript Libraries (Kings of Code)
JavaScript Libraries (Kings of Code)jeresig
 
Playframework + Twitter Bootstrap
Playframework + Twitter BootstrapPlayframework + Twitter Bootstrap
Playframework + Twitter BootstrapKevingo Tsai
 
JavaScript Libraries (@Media)
JavaScript Libraries (@Media)JavaScript Libraries (@Media)
JavaScript Libraries (@Media)jeresig
 
JavaScript Libraries: The Big Picture
JavaScript Libraries: The Big PictureJavaScript Libraries: The Big Picture
JavaScript Libraries: The Big PictureSimon Willison
 
yui3 is Sexy - 使用 YUI 3 的 Sexy Part !
yui3 is Sexy - 使用 YUI 3 的 Sexy Part !yui3 is Sexy - 使用 YUI 3 的 Sexy Part !
yui3 is Sexy - 使用 YUI 3 的 Sexy Part !Joseph Chiang
 
How to make Ajax Libraries work for you
How to make Ajax Libraries work for youHow to make Ajax Libraries work for you
How to make Ajax Libraries work for youSimon Willison
 

Similar to From YUI3 to K2: A Guide to Migrating from Yahoo User Interface 3 to Koubei Framework 2 (20)

Server Side JavaScript - You ain't seen nothing yet
Server Side JavaScript - You ain't seen nothing yetServer Side JavaScript - You ain't seen nothing yet
Server Side JavaScript - You ain't seen nothing yet
 
Building Dojo in the Cloud
Building Dojo in the CloudBuilding Dojo in the Cloud
Building Dojo in the Cloud
 
Let's run JavaScript Everywhere
Let's run JavaScript EverywhereLet's run JavaScript Everywhere
Let's run JavaScript Everywhere
 
Running YUI 3 on Node.js - JSConf 2010
Running YUI 3 on Node.js - JSConf 2010Running YUI 3 on Node.js - JSConf 2010
Running YUI 3 on Node.js - JSConf 2010
 
JavaScript Library Overview (Ajax Exp West 2007)
JavaScript Library Overview (Ajax Exp West 2007)JavaScript Library Overview (Ajax Exp West 2007)
JavaScript Library Overview (Ajax Exp West 2007)
 
Python - A Comprehensive Programming Language
Python - A Comprehensive Programming LanguagePython - A Comprehensive Programming Language
Python - A Comprehensive Programming Language
 
How dojo works
How dojo worksHow dojo works
How dojo works
 
JavaScript Everywhere! Creating a 100% JavaScript web stack
JavaScript Everywhere! Creating a 100% JavaScript web stackJavaScript Everywhere! Creating a 100% JavaScript web stack
JavaScript Everywhere! Creating a 100% JavaScript web stack
 
Node js实践
Node js实践Node js实践
Node js实践
 
Introduction to YUI PHP Loader
Introduction to YUI PHP LoaderIntroduction to YUI PHP Loader
Introduction to YUI PHP Loader
 
soft-shake.ch - Hands on Node.js
soft-shake.ch - Hands on Node.jssoft-shake.ch - Hands on Node.js
soft-shake.ch - Hands on Node.js
 
WebNet Conference 2012 - Designing complex applications using html5 and knock...
WebNet Conference 2012 - Designing complex applications using html5 and knock...WebNet Conference 2012 - Designing complex applications using html5 and knock...
WebNet Conference 2012 - Designing complex applications using html5 and knock...
 
Introduction to OCI Image Technologies Serving Container
Introduction to OCI Image Technologies Serving ContainerIntroduction to OCI Image Technologies Serving Container
Introduction to OCI Image Technologies Serving Container
 
Front-end Modular & Autmomated Development
Front-end Modular & Autmomated Development Front-end Modular & Autmomated Development
Front-end Modular & Autmomated Development
 
JavaScript Libraries (Kings of Code)
JavaScript Libraries (Kings of Code)JavaScript Libraries (Kings of Code)
JavaScript Libraries (Kings of Code)
 
Playframework + Twitter Bootstrap
Playframework + Twitter BootstrapPlayframework + Twitter Bootstrap
Playframework + Twitter Bootstrap
 
JavaScript Libraries (@Media)
JavaScript Libraries (@Media)JavaScript Libraries (@Media)
JavaScript Libraries (@Media)
 
JavaScript Libraries: The Big Picture
JavaScript Libraries: The Big PictureJavaScript Libraries: The Big Picture
JavaScript Libraries: The Big Picture
 
yui3 is Sexy - 使用 YUI 3 的 Sexy Part !
yui3 is Sexy - 使用 YUI 3 的 Sexy Part !yui3 is Sexy - 使用 YUI 3 的 Sexy Part !
yui3 is Sexy - 使用 YUI 3 的 Sexy Part !
 
How to make Ajax Libraries work for you
How to make Ajax Libraries work for youHow to make Ajax Libraries work for you
How to make Ajax Libraries work for you
 

More from kaven yan

HTML5@电子商务.com
HTML5@电子商务.comHTML5@电子商务.com
HTML5@电子商务.comkaven yan
 
Http协议(rfc2616)中文版
Http协议(rfc2616)中文版Http协议(rfc2616)中文版
Http协议(rfc2616)中文版kaven yan
 
互联网精神
互联网精神互联网精神
互联网精神kaven yan
 
拆分初始化负载
拆分初始化负载拆分初始化负载
拆分初始化负载kaven yan
 
前端性能优化和自动化
前端性能优化和自动化前端性能优化和自动化
前端性能优化和自动化kaven yan
 
Ajax Performance
Ajax PerformanceAjax Performance
Ajax Performancekaven yan
 

More from kaven yan (6)

HTML5@电子商务.com
HTML5@电子商务.comHTML5@电子商务.com
HTML5@电子商务.com
 
Http协议(rfc2616)中文版
Http协议(rfc2616)中文版Http协议(rfc2616)中文版
Http协议(rfc2616)中文版
 
互联网精神
互联网精神互联网精神
互联网精神
 
拆分初始化负载
拆分初始化负载拆分初始化负载
拆分初始化负载
 
前端性能优化和自动化
前端性能优化和自动化前端性能优化和自动化
前端性能优化和自动化
 
Ajax Performance
Ajax PerformanceAjax Performance
Ajax Performance
 

Recently uploaded

Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...Wes McKinney
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfNeo4j
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationKnoldus Inc.
 
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesMuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesManik S Magar
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsRavi Sanghani
 
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxGenerative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxfnnc6jmgwh
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI AgeCprime
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesKari Kakkonen
 
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...itnewsafrica
 
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Nikki Chapple
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 

Recently uploaded (20)

Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdf
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog Presentation
 
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesMuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and Insights
 
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxGenerative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI Age
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examples
 
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
 
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 

From YUI3 to K2: A Guide to Migrating from Yahoo User Interface 3 to Koubei Framework 2

  • 1. From YUI3 to K2 Koubei F2E 三七 2011.04.06
  • 4.
  • 6. History • 2005.??.?? YUI Start • 2006.02.13 YUI 0.10.0 Library & Blog Open Source • 2007.02.20 YUI 2.2.0(0.12.2) • 2007.08.20 YUI Compressor 1.1 • 2008.08.13 YUI 3.0.0pr1 • 2008.12.05 YUI Doc 1.0.0b • 2009.09.14 YUI 2.8.0 • 2009.03.10 YUI Build Tools • 2009.09.09 YUI PHP Loader • 2009.09.29 YUI 3.0.0 GA • 3010.03.31 YUI 3.1.0 • 2010.04.05 YUI3 Nodejs • 2010.08.25 Yeti 0.1.0 • 2010.09.07 YUI 3.2.0 • 2010.01.12 YUI 3.3.0 • 2010.04.?? YUI 2.9.0 • 2010.0?.?? YUI 3.4.0
  • 7. YUI Family YUI 2 YUI 3 UI YUI CSS YUI Gallery CDN hosting PHPLoader Combo Loader YUI3 + Node.js Server YLS (YUI Loader Server) YUI Doc Builder YUI Test Compressor Development YUI Console Profiler Yeti GBS (Graded Browser Support) YUI Blog yuilibrary / forum YUI Theater #yui (freenode) Developer @yuilibrary YUI (github.com)
  • 8.
  • 9. Goals YUI().use('lighter',  function(Y)  {   Y.all('.faster  li').each(function(v)  {     v.set('innerHTML',  'easier');   }); });
  • 10. Lighter • Emphasis on Code Reuse Don’t write code more than once, use it again. Y.aggregate() Y.agument() Y.bind() Y.clone() Y.extend() Y.rbind() http://developer.yahoo.com/yui/3/api/module_oop.html
  • 11. Lighter • Emphasis on Code Reuse Don’t write code more than once, use it again. Attribute Base EventTarget Plugin.Host Widget MyWidget Widget Hierarchy http://josephjiang.com/entry.php?id=257 http://developer.yahoo.com/yui/theater/video.php?v=desai-yuiconf2009-widgets
  • 12. Lighter • Emphasis on Code Reuse Don’t write code more than once, use it again. Component Core Utilities Widgets Plugins CSS Infrastructure YUI (seed) Attribute Animation Autocomplete Console Filters Plugin Reset Event Base AsyncQueue Charts FocusManager Node Base Loader Plugin Cache Console Plugin Fonts DOM Widget Cookie DataTable MenuNav Node Plugin Grids OOP DataSchema Dial Node DataSource Overlay DataType RTE DD ScrollView History Slider ImageLoader TabView Internationalization IO JSON JSONP Profiler Recoredset Resize Sortable StyleSheet SWF Test Transition Uploader YQL Query
  • 13. Lighter • Emphasis on Code Reuse Don’t write code more than once, use it again. • Finer Grainded, Modules & Sub-Modules Don’t load what you don’t need        "io":  {                "submodules":  {                        "io-­‐base":  {                                "optional":  ["querystring-­‐stringify-­‐simple"],                                  "requires":  ["event-­‐custom-­‐base"]                        },                          "io-­‐form":  {                                "requires":  ["io-­‐base",  "node-­‐base",  "node-­‐style"]                        },                          "io-­‐queue":  {                                "requires":  ["io-­‐base",  "queue-­‐promote"]                        },                          "io-­‐upload-­‐iframe":  {                                "requires":  ["io-­‐base",  "node-­‐base"]                        },                          "io-­‐xdr":  {                                "requires":  ["io-­‐base",  "datatype-­‐xml"]                        }                }        },   http://developer.yahoo.com/yui/3/io/
  • 14. Easier • More Consistent Node supports the HTMLElements API Y.Node HTMLElement reset() HTMLFormElement.reset() blur() HTMLInputElement.blur() appendChild() Node.appendChild() cloneNode() Node.cloneNode() hasAttribute Node.hasAttirbute hasChildNodes() Node.hasChildNodes() insertBefore Node.insertBefore() removeChild() Node.removeChild() replaceChild() Node.replaceChild() scrollIntoview() HTMLElement.scrollIntoView() get(“parentNode”) Node.parentNode set(“innterHTML”,”Foo”) HTMLElement.innerHTML http://www.w3.org/TR/DOM-Level-2-Core/ http://developer.yahoo.com/yui/3/node/#node-migration
  • 15. Easier • More Consistent Node supports the HTMLElements API Node normalizes the HTMLElements API node.getAttribute("href") node.contains(aNode) node.getStyle("paddingTop") node.previous()
  • 16. Easier • More Consistent Node supports the HTMLElements API Node normalizes the HTMLElements API Array supports some Array methods of JavaScript 1.6 Y.Array.each()      (forEach) Y.Array.indexOf() Y.Array.some() https://developer.mozilla.org/en/javascript https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array
  • 17. Easier • More Consistent Node supports the HTMLElements API Node normalizes the HTMLElements API Array supports some Array methods of JavaScript 1.6 All events are custom events //DOM  events button.on("click",  doSomething); //Custom  events instance.on("myEvent",  doSomething); http://developer.yahoo.com/yui/3/event/
  • 18. Easier • More Consistent • More Convenient Flatter namespace & chainability YUI().use(‘node-­‐base’,function(Y){        Y.one(‘body’).addClass(‘yui-­‐skin-­‐sam’); });
  • 19. Easier • More Consistent • More Convenient Flatter namespace & chainability Language enhancements & batch operations Y.Array.test() Y.Array.hash() Y.Array.numericSort() Y.all(‘li’).each(function(){ });
  • 20. Easier • More Consistent • More Convenient Flatter namespace & chainability Language enhancements & batch operations Dynamic loading & Runtime Configure & Simple YUI //YUI  inline  config  (defaul  level) //YUI.GlobalConfig  (global  level) //YUI_config  (page  level) //YUI  instance  config  (instance  level) YUI({      combine:false }).use(‘node-­‐base’,function(Y){          Y.one(‘body’).addClass(‘yui-­‐skin-­‐sam’); }); var  Y  =  YUI().use(‘*’); http://www.yuiblog.com/blog/2010/09/03/coming-inyui-3-2-0-simpleyui/
  • 21. Easier • More Consistent • More Convenient • More Powerful Sandbox YUI().use(‘node’,function({      Y.all(‘.k2’).addClass(‘k3’); }); YUI({    root:‘yui/3.1.0/’ }).use(‘node’,function(){    Y.all(‘.k2’).addClass(‘k3’); }); http://www.infoq.com/cn/articles/sandboxOnB
  • 22. Easier • More Consistent • More Convenient • More Powerful Sandbox Plugin   node.plug(IOPlugin);   node.io.getContent("http://foo/bar");        node.plug(DragDropPlugin);   node.dd.set("handle",  ".title");
  • 23. Easier • More Consistent • More Convenient • More Powerful Sandbox Plugin Selector YUI().use('node',  function(Y)  {        var  node  =  Y.one('#demo'),                node2  =  node.one('p');        if  (node2)  {                  node2.addClass('bar');          } }); YUI().use(‘node’,‘selector-­‐css3’,function(Y){ var  one  =  Y.one(‘li[foo=”en”]’); });
  • 24. Easier • More Consistent • More Convenient • More Powerful Sandbox Plugin Selector AOP Do.before() Do.after() Do.detach() AOP http://developer.yahoo.com/yui/3/api/Do.html http://uedmagazine.com/ued/comments.php?y=09&m=09&entry=entry090923-120216
  • 25. Easier • More Consistent • More Convenient • More Powerful • More Securable Node is the single point of access to the DOM. Makes YUI 3 ideal as a trusted source for"constrained" environments like Caja and Ad-safe. http://adsafe.org https://github.com/yui/yui-caja http://code.google.com/p/google-caja/
  • 26. Faster • Loading, Combo Handler & Rollup YUI().use(‘node-­‐base’,function(){    Y.one(‘body’).addClass(‘yui3-­‐skin-­‐sam’); }); <script id="yui_3_3_0_1_13006792497902" type="text/javascript" charset="utf-8" src="http://yui.yahooapis.com/3.3.0/ build/loader/loader-min.js"> <script id="yui_3_3_0_1_13006792497903" type="text/javascript" charset="utf-8" src="http://yui.yahooapis.com/combo? 3.3.0/build/oop/oop-min.js&3.3.0/build/dom/dom-base-min.js&3.3.0/build/dom/selector-native-min.js&3.3.0/build/dom/ selector-css2-min.js&3.3.0/build/event-custom/event-custom-base-min.js&3.3.0/build/event/event-base-min.js&3.3.0/build/ node/node-base-min.js"> Urls : 2, Files : 8
  • 27. Faster • Loading, Combo Handler & Rollup YUI({   combine:false }).use('node-­‐base','node-­‐event-­‐delegate','node-­‐ screen','node-­‐style',function(Y){   Y.one('body').addClass('yui3-­‐skin-­‐sam'); }); <script id="yui_3_3_0_1_13006898295412" type="text/javascript" charset="utf-8" src="http://yui.yahooapis.com/3.3.0/ build/loader/loader-min.js"> <script id="yui_3_3_0_1_13006898295413" type="text/javascript" charset="utf-8" src="http://yui.yahooapis.com/3.3.0/ build/oop/oop-min.js"> <script id="yui_3_3_0_1_13006898295414" type="text/javascript" charset="utf-8" src="http://yui.yahooapis.com/3.3.0/ build/event-custom/event-custom-base-min.js"> <script id="yui_3_3_0_1_13006898295415" type="text/javascript" charset="utf-8" src="http://yui.yahooapis.com/3.3.0/ build/event/event-base-min.js"> <script id="yui_3_3_0_1_13006898295416" type="text/javascript" charset="utf-8" src="http://yui.yahooapis.com/3.3.0/ build/dom/dom-min.js"> <script id="yui_3_3_0_1_13006898295417" type="text/javascript" charset="utf-8" src="http://yui.yahooapis.com/3.3.0/ build/pluginhost/pluginhost-min.js"> <script id="yui_3_3_0_1_13006898295418" type="text/javascript" charset="utf-8" src="http://yui.yahooapis.com/3.3.0/ build/node/node-min.js"> <script id="yui_3_3_0_1_13006898295419" type="text/javascript" charset="utf-8" src="http://yui.yahooapis.com/3.3.0/ build/event/event-delegate-min.js"> Urls : 8, Files : 8
  • 28. Faster • Loading, Combo Handler & Rollup • Runtime performance register vs execute, not synchronous, JIT Loading YUI.add(‘module-­‐id’,function(Y){ },‘3.3.0’,{requires:[‘yui-­‐base’]}); YUI().use(‘module-­‐id’,‘node-­‐base’,function(Y){        Y.use(‘module-­‐new-­‐id’,function(Y){ //wow        });        Y.one(‘body’).addClass(‘yui3-­‐skin-­‐sam’); });
  • 29. Faster • Loading, Combo Handler & Rollup • Runtime performance • Re-factor core performance pain points
  • 30. Trade-off Usable vs. Professional http://ued.taobao.com/blog/2010/01/11/yui3%E8%AE%BE%E8%AE%A1%E4%B8%AD%E7%9A%84%E6%BF%80%E8%BF%9B%E5%92%8C%E5%A6%A5%E5%8D%8F/
  • 31. License • BSD BSD开源协议是一个给于使用者很大自由的协议。基本上使用者 可以”为所欲为”,可以自由的使用,修改源代码,也可以将修改后 的代码作为开源或者专有软件再发布。 BSD 代码鼓励代码共享,但需要尊重代码作者的著作权。BSD由 于允许使用者修改和重新发布代码,也允许使用或在BSD代码上 开发商业软件发布和销售,因此是对 商业集成很友好的协议。而 很多的公司企业在选用开源产品的时候都首选BSD协议,因为可 以完全控制这些第三方的代码,在必要的时候可以修改或者二次 开发。 http://www.awflasher.com/blog/archives/939 http://developer.yahoo.com/yui/3/license.html
  • 32. What is next about YUI? • General Infrastructure • Performance • RLS(YLS) • Mobile • MVC Infrastructure • Touch/Gesture Event • Widget • Calendar • Panel/Dialog/Windowing • pagination • Tree/Menu/Button/Toobar • Form Utilties • Node.js http://yuilibrary.com/projects/yui3/roadmap
  • 33. Our Lessions about YUI3 • From YUI3 to K2 (Now) • YUI3 Core • YUI3 Event (OOP & AOP) • YUI3 Widget (Attribute, base, plugin) • YUI Test , Profile & Console • YUI3 Performance (Cache, AsyncQueue) • YUI3 CSS & Skins • YUI3 Data Manipulation ( DataSchema, DataSource, DataType, RecoredSet, DataTable ) • YUI Doc
  • 35. What is K2? The Second Generation Infrasturce of Koubei Front-end http://kxt.koubei.com/wiki/index.php/F2E:K2
  • 36. What is K2? • Web Structure <!doctype html> <html> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=Edge"> <meta name="keywords" content="keyword1,keyword2,keyword3"> <meta name="description" content="some sentences"> <title>page title</title> <!--start: for iOS--> <link rel="apple-touch-icon" href="http://k.kbcdn.com/product/common/header/ fav.png"> <!--end : for iOS--> <script> /* inline script */ </script> <link rel="stylesheet" href="eg.css"> <style> /* inline css */ </style> </head> <body> <div> <!-- 内容 --> </div> <script src="eg.js"></script> <script> /* inline script */ </script> </body> </html> http://kxt.koubei.com/wiki/index.php/F2E:HTML
  • 37. What is K2? • Web Structure • Core Engine & Components (Powered by YUI3) Core Utilities Widgets Components CSS & Skin seed datalazyload editor ww reset validator switch color uploader shutter common swf calendar corner scroll-follow image-cropper grids popup pagination icon resize bookmark button cdselector form http://kxt.koubei.com/k2
  • 38. What is K2? • Web Structure • Core Engine & Components (Powered by YUI3) • Front-end Runtime • k.kbcdn.com • Minify • CMS & CMS
  • 39. What is K2? • Web Structure • Core Engine & Components (Powered by YUI3) • Front-end Runtime • Development Runtime • ATT2, Pea • http://kxt.koubei.com/k2 • K2 Runtime • console, noCache, noVersion, syntaxHighlight, noCombo, local • TDD • Yeti @ koubei.com • grape • hive, queen
  • 40. What is K2? • Web Structure • Core Engine & Components (Powered by YUI3) • Front-end Runtime • Development Runtime • Tools • F2E Validator • KFC • Cod • CodeCola • FoTiaoQiang
  • 41. What is next about K2? • Web Structure Web Module Template Engine (Web Server & JS Engine Assembling) {    ‘module’:‘tuan-­‐list’,    ‘path’:’...’,    ‘data’:{        ‘path’:’...’,        ‘require’:[‘...’]    },    ‘js’:{        ‘path’:’...’,        ‘require’:[‘...’]    },    ‘css’:{        ‘path’:’...’,        ‘require’:[‘...’],    },    ‘callback’:’...’,    ‘require’:[‘...’] } http://mustache.github.com/
  • 42. What is next about K2? • Web Structure • Core Engine & Components (Powered by YUI3) Core Utilities Widgets Components CSS & Skin (for mobile) (for mobile) (for mobile) (for mobile) (for mobile) shareTo Koubei Design Pattern Favorite subscribe login & singup feedback
  • 43. What is next about K2? • Web Structure • Core Engine & Components (Powered by YUI3) • Front-end Runtime • Java Loader • Koubei Server Loader @ Node.js • F2E Minify • Front-end Management System 1.0
  • 44. What is next about K2? • Web Structure • Core Engine & Components (Powered by YUI3) • Front-end Runtime • Development Runtime • ATT3 @ Node.js • Debug anywhere & anytime @ seed 2.0
  • 45. What is next about K2? • Web Structure • Core Engine & Components (Powered by YUI3) • Front-end Runtime • Development Runtime • Tools • SlowSlow • input.koubei.com • performance.koubei.com