30
Yahoo! User Interface Libraries

SymfonyCamp - YUI 2008

Embed Size (px)

DESCRIPTION

SymfonyCamp - YUI 2008

Citation preview

Page 1: SymfonyCamp - YUI 2008

- 1 -

Yahoo!UserInterfaceLibraries

Page 2: SymfonyCamp - YUI 2008

YUIisbuiltbypeopleinYahoo!forpeopleinYahoo!

Page 3: SymfonyCamp - YUI 2008

Ourproductshavetoworkfor*alot*ofusers.

Page 4: SymfonyCamp - YUI 2008

Fixingthesameissuesoverandoveragainmakesforboredandfrustrateddevelopers.

Page 5: SymfonyCamp - YUI 2008

Frustratedandboreddevelopersdon’tworkefficiently.

Page 6: SymfonyCamp - YUI 2008

Wedon’tlikepeopletobefrustratedandbored.

Page 7: SymfonyCamp - YUI 2008

ThisiswhywebuilttheYahooUserInterfacelibraries.

Page 8: SymfonyCamp - YUI 2008

AndweextendYUIbasedondeveloperfeedback.

Page 9: SymfonyCamp - YUI 2008

AlookattheopensourceYahoo!‣  Yahoo!isbuiltfromopensourcetoolsandcommunities

‣  FreeBSD,Linux,Apache,PHP,MySQL

‣  Wecontributebackandeveryonewins

‣  Weshareourtools,experience,anddatathroughopenAPIsandwebservices

‣  Yahoo!UserInterfaceLibraries(BSD)+EdgeCaching‣  UserInterfaceDesignPatterns‣  Yslow+ExceptionalPerformanceRules

‣  R3Template+TranslationManagement

Page 10: SymfonyCamp - YUI 2008

AlookatYahoo!UserInterfaceLibraries‣  JavaScriptFramework

‣  Utilities‐YAHOO,Dom,Event,Animation,BrowserHistoryManager,ConnectionManager,Cookie,DataSource,DragandDrop,Element,Get,ImageLoader,JSON,Resize,Selector,Loader

‣  Controls/Widgets‐AutoComplete,Button,Calendar,Charts,ColorPicker,DataTable,ImageCropper,RichTextEditor,Slider,Uploader

‣  Container(Module,Overlay,Panel,Tooltip,Dialog),LayoutManager,Menu,TabView,TreeView

‣  Debug–Logger,Profiler,Test

Page 11: SymfonyCamp - YUI 2008

YUICore

‣  YAHOOGlobalObject‣  BaserequirementforallYUIcomponents

‣  DOMCollection

‣  ConveniencemethodsforDOMinteractions

‣  EventUtility‣  Eventnormalizationandcustomevents

MakingJavaScriptdevelopmentlessrandomacrossbrowsersandeasiertoconcentrateonthearchitectureofyourscripts.

Page 12: SymfonyCamp - YUI 2008

YUIUtilities

AnimationUtility

BrowserHistoryManager

ConnectionManager(Ajax)

CookieUtility

DataSourceUtility

DragandDropUtility

ElementUtility

GetUtility(script/cssloading)

ImageLoaderUtility

JSONUtility

ResizeUtility

SelectorUtility

LoaderUtility

Page 13: SymfonyCamp - YUI 2008

YUIWidgetsAutoComplete

Button

Calendar

Charts

ColorPicker

Container

Module

Overlay

Panel

Tooltip

Dialog

DataTable

ImageCropper

LayoutManager

Menu

RichTextEditor

Slider

TabView

TreeView

Uploader

CreatingHTML/CSS/JSbasedRIAswithtestedandfullyskinnablecomponents.

Page 14: SymfonyCamp - YUI 2008

YUIDeveloperTools

‣  LoggerControl‣  Profiler‣  Client‐side,cross‐browserprofiling

‣  ProfilerViewerControl‣  YUITestUtility

Page 15: SymfonyCamp - YUI 2008

AlookatYahoo!UserInterfaceLibraries‣  CSSFoundation‣  Reset‣  Base‣  Fonts‣  Grids

‣  GradeBrowserSupport/ProgressiveEnhancement

MakingCSSlayoutspredictableandworkacrossmostbrowsersandoperatingsystems.

Page 16: SymfonyCamp - YUI 2008

YUICSS‣  CSSReset‣  NeutralizesbrowserCSSstyles

‣  CSSBase‣  Appliesconsistentstylefoundationforcommonelements

‣  CSSFonts‣  Foundationfortypographyandfont‐sizing

‣  CSSGrids‣  Morethan1,000CSS‐drivenwireframesina4KBfile

Page 17: SymfonyCamp - YUI 2008

Yahoo!UIDesignPatterns‣  UserInterfaceDesignPatternsLibrary‣  Provensolutionstocommoninterfaceproblems

‣  RatingsandReviews‣  Carousel‣  Pagination

‣  http://developer.yahoo.com/ypatterns/

‣  Ascommonproblemsaretossedaroundacommunityandareresolved,commonsolutionsoftenspontaneouslyemerge.Eventually,thebestoftheseriseabovethedinandself‐identifyandbecomerefineduntiltheyreachthestatusofaDesignPattern

Page 18: SymfonyCamp - YUI 2008

YUIforProduction‣  YUICompressor

‣  SafeminificationforJSandCSS

‣  YUIContentDistributionNetwork‣  MultipleDatacenters

‣  OptimizeCompression/Caching

‣  http://yui.yahooapis.com/

‣  ComboHandler

‣  http://yui.yahooapis.com/combo

Page 19: SymfonyCamp - YUI 2008

YUIComboHandler‣  Multiplehttpconnections<scriptsrc=”http://yui.yahooapis.com/2.5.2/build/yahoo‐dom‐event/yahoo‐dom‐event.js”></script>

<scriptsrc=”http://yui.yahooapis.com/2.5.2/build/container/container_core‐min.js”></script>

<scriptsrc=”http://yui.yahooapis.com/2.5.2/build/menu/menu‐min.js”></script>

<scriptsrc=”http://yui.yahooapis.com/2.5.2/build/button/button‐min.js”></script>

‣  Singlehttpconnection

<scriptsrc=”http://yui.yahooapis.com/combo?2.5.2/build/yahoo‐dom‐event/yahoo‐dom‐event.js&2.5.2/build/container/container_core‐min.js&2.5.2/build/menu/menu‐min.js&2.5.2/build/button/button‐min.js”></script>

Page 20: SymfonyCamp - YUI 2008

Yahoo!YslowforFirebug‣  FirebugPlugin‣  http://getfirebug.com

‣  Yslow‣  Firefoxpluginforanalyzingperformancewithfirebug

‣  Basedonexceptionalperformancerules

‣  http://developer.yahoo.com/yslow/

Page 21: SymfonyCamp - YUI 2008

Yahoo!ExceptionalPerformanceRules1.  MakeFewerHTTPRequests

2.  UseaContentDeliveryNetwork

3.  AddanExpiresoraCache‐ControlHeader

4.  GzipComponents

5.  PutStylesheetsattheTop

6.  PutScriptsattheBottom

7.  AvoidCSSExpressions

8.  MakeJavaScriptandCSSExternal

9.  ReduceDNSLookups

10.  MinifyJavaScriptandCSS

11.  AvoidRedirects12.  RemoveDuplicateScripts

13.  ConfigureETags

14.  MakeAjaxCacheable

15.  FlushtheBufferEarly16.  UseGETforAJAXRequests17.  Post‐loadComponents

18.  PreloadComponents

19.  ReducetheNumberofDOMElements

20.  SplitComponentsAcrossDomains

21.  MinimizetheNumberofiframes

22.  No404s23.  ReduceCookieSize24.  UseCookie‐freeDomainsforComponents

25.  MinimizeDOMAccess

26.  DevelopSmartEventHandlers

Page 22: SymfonyCamp - YUI 2008

ysfYUIPlugin‣  LoaderforefficientlyloadingcomponentsinPHP(optimal

CSS/JSinclusion)

‣  Eventmanagement(on*=>becomeevents)+Caching

‣  JavascriptHelpersforAjax,Panels,Dialogs,Modal,andTooltips

‣  RichFormWidgets(RichTextEditor,Slider,ColorPicker,Auto‐Complete,In‐PlaceEditing)

‣  UIControls(TabView,TreeView,etc)‣  EnhancedsymfonywebdebugtoolbarwithY!Loggerand

Profilerintegration

Page 23: SymfonyCamp - YUI 2008

ysfYUIPlugin‐Helpersyui_link_to_function

yui_link_to_remote

yui_periodically_call_function

yui_periodically_call_remote

yui_update_element

yui_update_element_function

yui_button

yui_button_to_function

yui_button_to_remote

yui_form_remote_tag

yui_submit_tag

yui_submit_to_remote

yui_submit_image_to_remote

yui_reset_tag

Page 24: SymfonyCamp - YUI 2008

ysfYUIPlugin–Helpers(comingsoon)yui_grid

yui_layout

yui_toolbar

yui_container

yui_menu

yui_dialog

yui_tooltip

yui_tabview

yui_treeview

yui_datatable

yui_accordion

yui_lightbox

yui_collapse

yui_carousel

yui_resizable

Page 25: SymfonyCamp - YUI 2008

ysfYUIPlugin–FormWidgets‣  ysfYUITextWidget

‣  Autocomplete/InlineEdit

‣  ysfYUICheckboxWidget

‣  ysfYUIRadioWidget

‣  ysfYUISelectWidget

‣  ysfYUIMultiSelectWidget

‣  ysfYUIFileUploadWidget

‣  ysfYUIEditorWidget

‣  ysfYUICalendarWidget

‣  ysfYUIColorPickerWidget

‣  ysfYUISliderWidget

Page 26: SymfonyCamp - YUI 2008

ysfYUIPlugin–FormWidgets‣  ysfYUITextWidget

‣  Autocomplete/InlineEdit

‣  ysfYUICheckboxWidget

‣  ysfYUIRadioWidget

‣  ysfYUISelectWidget

‣  ysfYUIMultiSelectWidget

‣  ysfYUIFileUploadWidget

‣  ysfYUIEditorWidget

‣  ysfYUICalendarWidget

‣  ysfYUIColorPickerWidget

‣  ysfYUISliderWidget

Page 27: SymfonyCamp - YUI 2008

Acompletefrontendplatform‣  Acommunitymaintainedapproachtobuildingweb

applicationsfromframeworks

‣  PHPFramework

‣  JavaScriptFramework

‣  CSSFramework

‣  UIDesignPatterns+BestPractices‣  DevelopmentTools(logger,profiler,debugger,docs)

‣  Unit+FunctionalTestingFrameworks(LIME/YUITest)

‣  DeploymentTools(rsyncdeploymentsystem)

Page 28: SymfonyCamp - YUI 2008

YUIExamples+Documentation+Support‣  Morethan275functionalexamples

‣  http://developer.yahoo.com/yui/docs

‣  http://developer.yahoo.com/yui/examples/

‣  Yslow+PerformanceRules

‣  http://developer.yahoo.com/performance

‣  YUIBlog‣  http://yuiblog.com/

‣  MailingList@Yahoo!Groups

‣  http://tech.groups.yahoo.com/group/ydn‐javascript/

Page 29: SymfonyCamp - YUI 2008

YUI2evolvingtoYUI3‣  Lighter(lessweightonthewire)‣  Faster(fewerhttprequests,lesscodetowriteandcompile,

moreefficientcode)

‣  Moreconsistent(commonnaming,eventsignatures,andwidgetAPIsthroughoutthelibrary)

‣  Morepowerful(domorewithlessimplementationcode)

‣  Moresecurable(saferandeasiertoexposetomultipledevelopersworkinginthesameenvironment;easiertorunundersystemslikeCajaorADsafe)

Page 30: SymfonyCamp - YUI 2008

ThanksforlisteningandenjoytherestoftheWeb2.0Expo!