Upgrade to Pro — share decks privately, control downloads, hide ads and more …

De 0 a Polymer

De 0 a Polymer

Charla sobre Polymer para las Jornadas del Hacklab Almería 2016, celebradas en "El Ejido".

Israel Blancas

December 02, 2016
Tweet

More Decks by Israel Blancas

Other Decks in Technology

Transcript

  1. De 0 a Polymer
    +Israel Blancas
    @iblancasa
    GDG Granada

    View Slide

  2. Israel Blancas
    @iblancasa
    Software Engineer at Real-Time Innovations
    Google Developer Group organizer

    View Slide

  3. GDG Granada

    View Slide

  4. Modular
    programming
    GDG Granada

    View Slide

  5. Aseptic
    Consistent
    Flexible
    Production
    GDG Granada

    View Slide

  6. Quality Speed
    GDG Granada

    View Slide

  7. Quality Speed
    GDG Granada

    View Slide

  8. GDG Granada

    View Slide

  9. View Slide

  10. GDG Granada

    View Slide

  11. GDG Granada

    View Slide

  12. Web Components are low-level
    primitives that let you define
    your own HTML Elements.
    GDG Granada

    View Slide

  13. Template
    Shadow DOM
    Custom Elements
    HTML Imports
    native client-side templating
    scoping, composition
    define new HTML/DOM
    loading web components
    GDG Granada

    View Slide

  14. Primitives are designed so we can
    build libraries on top of them.
    GDG Granada

    View Slide

  15. So what is Polymer?
    GDG Granada

    View Slide

  16. Polymer is not
    a framework
    GDG Granada

    View Slide

  17. Existing Frameworks
    Applications
    Web Platform
    Web Components built with Polymer (or not)
    GDG Granada

    View Slide

  18. Polymer is not
    a framework
    Sure?
    GDG Granada

    View Slide

  19. Over 3M pages
    GDG Granada

    View Slide

  20. GDG Granada

    View Slide

  21. GDG Granada

    View Slide

  22. GDG Granada

    View Slide

  23. GDG Granada

    View Slide

  24. GDG Granada

    View Slide

  25. GDG Granada

    View Slide

  26. Let’s build
    an element!
    Image by Gloria Viganò for the Noun Project
    GDG Granada

    View Slide

  27. Hey user! Something awesome happened!
    GDG Granada

    View Slide

  28. GDG Granada
    Install the tools

    View Slide

  29. GDG Granada
    NodeJS and NPM

    View Slide

  30. GDG Granada
    bower and polymer-cli
    npm install -g

    View Slide

  31. x
    Hey user! Something awesome happened!

    GDG Granada

    View Slide

  32. polymer init
    GDG Granada

    View Slide

  33. Select
    “element - A blank element template”
    GDG Granada

    View Slide

  34. Element name: alert-banner
    GDG Granada

    View Slide

  35. Element name: alert-banner
    Brief description of the element:
    Hacklab example
    GDG Granada

    View Slide

  36. bower_components
    demo
    test
    alert-banner.html
    bower.json
    index.html
    README.md
    GDG Granada

    View Slide

  37. GDG Granada

    View Slide

  38. alert-banner.html



    <br/>Polymer({<br/>is: ‘alert-banner'<br/>});<br/>


    GDG Granada

    View Slide

  39. alert-banner.html



    <br/>Polymer({<br/>is: ‘alert-banner'<br/>});<br/>


    Import all of your
    dependencies
    GDG Granada

    View Slide

  40. alert-banner.html



    <br/>Polymer({<br/>is: ‘alert-banner'<br/>});<br/>


    A container for your
    element definition
    GDG Granada

    View Slide

  41. alert-banner.html



    <br/>Polymer({<br/>is: ‘alert-banner'<br/>});<br/>

    Local DOM is the DOM
    an elements is in charge of
    creating and managing

    GDG Granada

    View Slide

  42. Shadow DOM
    GDG Granada

    View Slide

  43. Shadow DOM || “Shady DOM”
    GDG Granada

    View Slide

  44. Shadow DOM || “Shady DOM” == Local DOM
    GDG Granada

    View Slide

  45. alert-banner.html



    <br/>Polymer({<br/>is: ‘alert-banner'<br/>});<br/>

    Local DOM is the DOM
    an elements is in charge of
    creating and managing

    GDG Granada

    View Slide

  46. alert-banner.html


    <br/>.alert { background: blue; color: white; }<br/>

    Hey user! Something awesome happened!


    <br/>Polymer({<br/>is: ‘alert-banner'<br/>});<br/>


    Hey user! Something awesome happ
    Hey user! Something awesome happ
    GDG Granada

    View Slide

  47. alert-banner.html


    <br/>.alert { background: blue; color: white; }<br/>

    Hey user! Something awesome happened!


    <br/>Polymer({<br/>is: ‘alert-banner'<br/>});<br/>


    Define your
    prototype
    GDG Granada

    View Slide





  48. Polymer!



    GDG Granada

    View Slide




  49. Hacklab
    src="bower_components/webcomponentsjs/webcomponents-lite.min.js">







    GDG Granada

    View Slide

  50. Hey user! Something awesome happened!
    GDG Granada

    View Slide

  51. alert-banner.html


    <br/>.alert { background: blue; color: white; }<br/>

    Hey user! Something awesome happened!


    <br/>Polymer({<br/>is: ‘alert-banner'<br/>});<br/>


    Replace hard-coded data
    GDG Granada

    View Slide

  52. alert-banner.html


    <br/>.alert { background: blue; color: white; }<br/>




    <br/>Polymer({<br/>is: ‘alert-banner'<br/>});<br/>


    With content elements!
    GDG Granada

    View Slide

  53. Light DOM - The world outside
    your component’s Local DOM
    GDG Granada

    View Slide

  54. alert-banner.html


    <br/>.alert { background: blue; color: white; }<br/>




    <br/>Polymer({<br/>is: ‘alert-banner'<br/>});<br/>

    Select content with
    CSS selectors
    GDG Granada

    View Slide




  55. Polymer!




    Lorem ipsum dolor sit amet…
    GDG Granada

    View Slide




  56. Polymer!


    Success! Your first component!


    GDG Granada

    View Slide




  57. Polymer!


    Success! Your first component!


    Matching class
    GDG Granada

    View Slide

  58. Success! Your first component!
    GDG Granada

    View Slide

  59. Elements
    Building blocks for a better web
    GDG Granada

    View Slide

  60. There’s an element for that!
    GDG Granada

    View Slide

  61. https://beta.webcomponents.org
    /collection/Polymer/elements
    GDG Granada

    View Slide

  62. GDG Granada

    View Slide

  63. Applications
    Combining elements into something great
    GDG Granada

    View Slide

  64. Create or reuse elements in any app
    GDG Granada

    View Slide

  65. GDG Granada

    View Slide

  66. App-wide Theming
    #303f9f
    CSS custom properties
    --dark-primary-color
    --light-primary-color
    --accent-color
    --primary-text-color
    #303f9f
    --dark-primary-color
    --light-primary-color
    --accent-color
    --primary-text-color
    GDG Granada

    View Slide

  67. Production-ising Apps
    GDG Granada

    View Slide

  68. Build process out of the box
    GDG Granada

    View Slide

  69. View Slide

  70. What are the Progressive Web Apps?

    View Slide

  71. Progressive Web App uses modern web
    platform capabilities to deliver an app-like
    user experience

    View Slide

  72. Instant loading
    Fast
    Push notifications
    Add to home screen
    Secure Responsive

    View Slide

  73. View Slide

  74. Android App Mobile Web
    $3.75
    $0.07
    Housing.com: User Acquisition Costs

    View Slide

  75. View Slide

  76. View Slide

  77. View Slide

  78. View Slide

  79. https://pwa.rocks/

    View Slide

  80. https://developers.google.com/
    web/progressive-web-apps/

    View Slide

  81. Polymer Starter Kit
    Web app scaffolding, via web
    components.
    goo.gl/qy16Jk

    View Slide

  82. GDG Granada
    GDG Granada

    View Slide

  83. GDG Granada

    View Slide

  84. polymer-project.org
    GDG Granada

    View Slide

  85. Thank you :)
    Questions?
    +Israel Blancas
    @iblancasa
    GDG Granada

    View Slide