a deep dive into enyo
play

A Deep Dive into Enyo Ben Combee Developer Platform Architect, Enyo - PowerPoint PPT Presentation

A Deep Dive into Enyo Ben Combee Developer Platform Architect, Enyo Team, HP ben.combee@palm.com @unwiredben on Twitter Thursday, May 31, 12 Thursday, May 31, 12 We need 500 apps for the TouchPad, stat! Thursday, May 31, 12 We want apps


  1. A Deep Dive into Enyo Ben Combee Developer Platform Architect, Enyo Team, HP ben.combee@palm.com @unwiredben on Twitter Thursday, May 31, 12

  2. Thursday, May 31, 12

  3. We need 500 apps for the TouchPad, stat! Thursday, May 31, 12

  4. We want apps from devs that aren’t HTML+CSS experts. Thursday, May 31, 12

  5. How? Thursday, May 31, 12

  6. Components. As seen in Visual Basic. They’re not sexy. They work. Thursday, May 31, 12

  7. Cross-platform: Desktop browsers. Mobile browsers. Apps. Thursday, May 31, 12

  8. All source is on github.com/enyojs Apache 2.0 forever. Thursday, May 31, 12

  9. Enyo 2.0: The Core Parts Thursday, May 31, 12

  10. boot - load all the source Thursday, May 31, 12

  11. /* package.js */ enyo.depends( “app.js”, “../css/app.css”, “$lib/onyx”); Thursday, May 31, 12

  12. Thursday, May 31, 12

  13. kernel - OOP, there it is Thursday, May 31, 12

  14. enyo.kind() is a constructor factory Thursday, May 31, 12

  15. enyo.kind({ name: “FireFly”, kind: “TelevisionShow”, show: function() { this.inherited(arguments); system.play(“ObjectsInSpace.mp4”); } }); var ff = new FireFly(); // wait 10 weeks delete ff; Thursday, May 31, 12

  16. enyo.Object provides property publishing Thursday, May 31, 12

  17. enyo.kind({ name: “UPC”, kind: enyo.Object, published: { productID: “0000000000” }, create: function() { this. productIDChanged(); }, productIDChanged: function(oldValue) { this.barcode = generate(this.productID); } }); Thursday, May 31, 12

  18. var x = new UPC({ productID: “123456789X” }); x.setProductID(“5678900002”); pID = x.getProductID(); Thursday, May 31, 12

  19. enyo.Component enables encapsulation and events Thursday, May 31, 12

  20. enyo.kind({ name: “SithLord”, kind: “Jedi”, events: { onSpeak: “” }, scream: function(message) { doSpeak({ message: message, tone: “whiney” }); }) }); Thursday, May 31, 12

  21. enyo.kind({ name: “SithLords”, components: [ { kind: SithLord, name: “DarthVader”, onSpeak: “listenToToys” }, { kind: SithLord, name: “Palpatine” }, { kind: SithLord, name: “DarthSidious” } ], listenToToys: function(inSender, inEvent) { alert(inEvent.mesage); } }); Thursday, May 31, 12

  22. var toys = new SithLords; toys.$.DarthVader.setWeapon(lightsaber); toys.$.DarthVader.throw(toys.$.Palpatine); toys.$.DarthVader.scream(“NOOOOOOO!”); Thursday, May 31, 12

  23. enyo.UIComponent provides hooks for layout control Thursday, May 31, 12

  24. enyo.Signals is routing for app-level events Thursday, May 31, 12

  25. lang.js - utilities log.js - logging job.js - setTimeout wrapper animation.js - math + reqFrame macroize.js - templates PhoneGap.js - app event support platform.js - platform-detection code Thursday, May 31, 12

  26. dom - dealing with HTML Thursday, May 31, 12

  27. enyo.Control: a rendering engine for HTML Thursday, May 31, 12

  28. enyo.kind({ name: “BumperSticker”, kind: enyo.Control, tag: “div”, content: “I’m Fluent in JS!”, style: “color: blue; font-size: 96pt” }); var bs = new BumperSticker(); bs.renderInto(document.body); Thursday, May 31, 12

  29. dispatcher.js: hooks all the standard DOM events into the Enyo event system Thursday, May 31, 12

  30. enyo.kind({ name: “BumperSticker”, content: “I’m Fluent in JS!”, style: “color: blue; font-size: 96pt”, tap: function() { alert(“someone bumped me!”); } }); var bs = new BumperSticker(); bs.renderInto(document.body); Thursday, May 31, 12

  31. ajax - data-access through XHR & JSONP Thursday, May 31, 12

  32. function apiOK(inAsync, inValue) { alert( “success: “ + inValue ); } function apiFAIL(inAsync, inError) { alert( “FAIL: “ + inError ); } var a = new enyo.Ajax({ url: “http://example.org/api” }); a.response(apiOK); a.error(apiFAIL); a.go({ q: searchString }); Thursday, May 31, 12

  33. ui - building blocks for making themed widgets Thursday, May 31, 12

  34. Button.js BaseLayout.js Checkbox.js DragAvatar.js Image.js Group.js Input.js GroupItem.js Repeater.js Selection.js RichText.js ToolDecorator.js Select.js Thursday, May 31, 12

  35. touch - enyo.Scroller & touchscreen support Thursday, May 31, 12

  36. enyo.Scroller handles showing 10 lbs of content in a 2 lb box with tweaks to scroll smoothly on modern browsers and touch screens Thursday, May 31, 12

  37. The Layout Libraries Thursday, May 31, 12

  38. fittable - responsive app layouts Thursday, May 31, 12

  39. Thursday, May 31, 12

  40. list - optimized scrolling through 1000s of items Thursday, May 31, 12

  41. Thursday, May 31, 12

  42. panels - configurable app layouts Thursday, May 31, 12

  43. Thursday, May 31, 12

  44. tree - collapsable display of structure information Thursday, May 31, 12

  45. Thursday, May 31, 12

  46. ...and now, let’s introduce Onyx Thursday, May 31, 12

  47. if enyo is jQuery (i.e. very useful by itself) Thursday, May 31, 12

  48. then Onyx is our jQuery UI (a library that extends the core to do great things) Thursday, May 31, 12

  49. CSS themes + JS behavior + composite controls Thursday, May 31, 12

  50. Thursday, May 31, 12

  51. Button, Checkbox, Drawer, FlyweightPicker, Grabber, Groupbox, Icon, Input, Menu, Toolbar, Picker, Popup, ProgressBar, ProgressButton, RadioButton, RichText, Scrim, Slider, Spinner, SwipeableItem, TabPanels, TextArea, Tooltip Phew! Thursday, May 31, 12

  52. Samples Thursday, May 31, 12

  53. Onyx Sampler - live views of all Onyx controls & sample code enyojs.com/samples/onyxsampler Thursday, May 31, 12

  54. Flickr Search - find pictures from search terms enyojs.com/samples/flickr Thursday, May 31, 12

  55. Bing Maps - wraps external JS library with Enyo control enyojs.com/samples/maps Thursday, May 31, 12

  56. API Viewer - pulls inline docs from source tree enyojs.com/api Thursday, May 31, 12

  57. CryptoTweets - game using enyo & onyx & web services enyojs.com/samples/cryptotweets Thursday, May 31, 12

  58. Community Gallery - listing of developer-contributed controls enyojs.com/gallery Thursday, May 31, 12

  59. The Enyo Community Thursday, May 31, 12

  60. Developer Forums - forums.enyojs.com Blog - blog.enyojs.com Twitter - @enyojs Email - enyojs@palm.com Thursday, May 31, 12

  61. github - github.com/enyojs fork, modify, send us pretty pull requests submit components to the community gallery participate on the forums Thursday, May 31, 12

  62. We’re hiring great JavaScript engineers. Know about cross-platform mobile web? Worked on your own frameworks? Talk to us! email enyojs@palm.com Thursday, May 31, 12

  63. Thursday, May 31, 12

Recommend


More recommend