SlideShare a Scribd company logo
LibSAPO.js
                             The return of the JavaScript library




                                         SAPO Sessions
                                          2010-10-06
Wednesday, October 6, 2010
Tiago Rodrigues



                       Webdeveloper no SAPO
                       Equipa de JavaScript
                       trodrigues.net
                       @trodrigues




Wednesday, October 6, 2010
LibSAPO.js
                             A história e o porquê




Wednesday, October 6, 2010
Baseada em Prototype




Wednesday, October 6, 2010
Baseada em Prototype

       Módulos necessários ao SAPO




Wednesday, October 6, 2010
Baseada em Prototype

       Módulos necessários ao SAPO

       Surgiu na mesma altura que outras libraries




Wednesday, October 6, 2010
Baseada em Prototype

       Módulos necessários ao SAPO

       Surgiu na mesma altura que outras libraries

       Boom do JavaScript




Wednesday, October 6, 2010
Mais recentemente




Wednesday, October 6, 2010
Mais recentemente

        A LibSAPO.js já é standalone




Wednesday, October 6, 2010
Mais recentemente

        A LibSAPO.js já é standalone

        Não é construída sobre outra library




Wednesday, October 6, 2010
Mais recentemente

        A LibSAPO.js já é standalone

        Não é construída sobre outra library

        Pode usar alguns módulos externos




Wednesday, October 6, 2010
Mais recentemente

        A LibSAPO.js já é standalone

        Não é construída sobre outra library

        Pode usar alguns módulos externos

        Segue parte da API de Prototype




Wednesday, October 6, 2010
Porquê a LibSAPO.js ?




Wednesday, October 6, 2010
Porquê a LibSAPO.js ?

        Orientada às necessidades do SAPO




Wednesday, October 6, 2010
Porquê a LibSAPO.js ?

        Orientada às necessidades do SAPO

        Não está tão dependente de libs third party




Wednesday, October 6, 2010
Porquê a LibSAPO.js ?

        Orientada às necessidades do SAPO

        Não está tão dependente de libs third party

        Resolução de bugs mais rápida




Wednesday, October 6, 2010
Porquê a LibSAPO.js ?

        Orientada às necessidades do SAPO

        Não está tão dependente de libs third party

        Resolução de bugs mais rápida

        Adição de features on demand




Wednesday, October 6, 2010
Porque não um fork ?




Wednesday, October 6, 2010
Porque não um fork ?

        Manutenção de código mais complexa




Wednesday, October 6, 2010
Porque não um fork ?

        Manutenção de código mais complexa

        Afastamento da library original




Wednesday, October 6, 2010
Porque não um fork ?

        Manutenção de código mais complexa

        Afastamento da library original

        Dificuldade de integração de novas features




Wednesday, October 6, 2010
Porque não um fork ?

        Manutenção de código mais complexa

        Afastamento da library original

        Dificuldade de integração de novas features

        Difícil reaproveitar componentes




Wednesday, October 6, 2010
Filosofia




Wednesday, October 6, 2010
Filosofia

        Modularidade




Wednesday, October 6, 2010
Filosofia

        Modularidade

        Performance




Wednesday, October 6, 2010
Filosofia

        Modularidade

        Performance

        Não reutilizar tanto código da própria library




Wednesday, October 6, 2010
Desvantagens




Wednesday, October 6, 2010
Desvantagens

        API mais complexa




Wednesday, October 6, 2010
Desvantagens

        API mais complexa

        Muitos módulos para conhecer/compreender




Wednesday, October 6, 2010
Perguntas até agora ?




Wednesday, October 6, 2010
LibSAPO.js
                              Namespaces e API




Wednesday, October 6, 2010
O namespace SAPO




Wednesday, October 6, 2010
O namespace SAPO

            Todos os módulos estão contidos neste namespace




Wednesday, October 6, 2010
O namespace SAPO

           Todos os módulos estão contidos neste namespace

           Variáveis globais declaradas: SAPO e s$




Wednesday, October 6, 2010
O namespace SAPO

           Todos os módulos estão contidos neste namespace

           Variáveis globais declaradas: SAPO e s$

           Não há extensão do DOM e tipos primitivos,
           excepto:




Wednesday, October 6, 2010
O namespace SAPO

           Todos os módulos estão contidos neste namespace

           Variáveis globais declaradas: SAPO e s$

           Não há extensão do DOM e tipos primitivos,
           excepto:

           • Function.bindObj()
           • Function.bindObjEvent()


Wednesday, October 6, 2010
bindObj e bindObjEvent

        var obj = {
            quant: 10,
            add: function(){
                alert(this.quant);
            }
        };

        var add = obj.add;
        add(); // undefined

        var add = obj.add.bindObj(obj);
        add(); // 10




Wednesday, October 6, 2010
bindObj e bindObjEvent

        var obj = {
            quant: 10,
            add: function(msg){
                alert(msg);
                alert(this.quant);
            }
        };

        var add = obj.add.bindObj(obj, "hello");
        add(); // hello, 10




Wednesday, October 6, 2010
Como usar a LibSAPO.js ?

       <script src="http://js.sapo.pt/SAPO/"></script>
       <script
           src="http://js.sapo.pt/SAPO/Utility/Dimensions/1.1/"></script>
       <script
           src="http://js.sapo.pt/SAPO/Component/Dialog/1.1/"></script>

       <script>
       (function(){
           SAPO.Component.Dialog.info("hello !");

           var Dialog = SAPO.Component.Dialog;
           Dialog.info("hello again !");
       }());
       </script>



Wednesday, October 6, 2010
Métodos SAPO




Wednesday, October 6, 2010
Métodos SAPO

        namespace(‘name’)




Wednesday, October 6, 2010
Métodos SAPO

        namespace(‘name’)

        extendObj(original, extension)




Wednesday, October 6, 2010
Métodos SAPO

        namespace(‘name’)

        extendObj(original, extension)

        Browser




Wednesday, October 6, 2010
Métodos SAPO

        namespace(‘name’)

        extendObj(original, extension)

        Browser

        require(modules, callback, async)




Wednesday, October 6, 2010
SAPO.require

        <script src="http://js.sapo.pt/SAPO/"></script>
        <script>
        SAPO.require(
            [
                 'SAPO.Utility.Dimensions',
                 'SAPO.Component.Dialog'
            ], function(){
                 SAPO.Component.Dialog.alert('o hai !');
            }
        );
        </script>




Wednesday, October 6, 2010
O namespace SAPO

        Namespaces principais:




Wednesday, October 6, 2010
O namespace SAPO

        Namespaces principais:

           • Dom




Wednesday, October 6, 2010
O namespace SAPO

        Namespaces principais:

           • Dom
           • Communication




Wednesday, October 6, 2010
O namespace SAPO

        Namespaces principais:

           • Dom
           • Communication
           • Utility




Wednesday, October 6, 2010
O namespace SAPO

        Namespaces principais:

           • Dom
           • Communication
           • Utility
           • Component




Wednesday, October 6, 2010
O namespace SAPO

        Namespaces principais:

           • Dom
           • Communication
           • Utility
           • Component
           • Effects


Wednesday, October 6, 2010
O namespace SAPO

        Namespaces principais:

           • Dom
           • Communication
           • Utility
           • Component
           • Effects
           • Widget

Wednesday, October 6, 2010
SAPO.Dom.Element

        Métodos relacionados com DOM elements
        • get/create
        • offset, position, size
        • insert before/after
        • hasAttribute




Wednesday, October 6, 2010
SAPO.Dom.Css

        Métodos relacionados com CSS
        • add/remove/has/toggle classname
        • get/set style
        • show/hide/toggle element
        • appendStyleTag
        • appendStylesheet



Wednesday, October 6, 2010
SAPO.Dom.Selector

        Sizzle
        • select(selector, context)
        • matches(selector, filterSet)




Wednesday, October 6, 2010
SAPO.Dom.Event

        Abstracção de eventos
        • observe/stopObserving(element, event, callback)
        • fire
        • stop
        • element, findElement
        • pointer, mouse button



Wednesday, October 6, 2010
SAPO.Dom.Event

        SAPO.Dom.Event.observe(button, 'click', function(ev){
            SAPO.Dom.Event.stop(ev);

                  alert("hello");
        });




Wednesday, October 6, 2010
SAPO.Dom.Event

        var obj = {
            name: 'Tiago',
            handler: function(ev){
                alert(this.name);
            }
        }

        SAPO.Dom.Event.observe(button, 'click',
                          obj.handler.bindObjEvent(obj));




Wednesday, October 6, 2010
SAPO.Dom.Loaded

        Indica quando o DOM está carregado
        Gera um evento dom:loaded




Wednesday, October 6, 2010
SAPO.Dom.Loaded

        SAPO.Dom.Event.observe(document, 'dom:loaded', function(ev){
            // do awesome javascript stuff
            var el = document.getElementById("container");
        });




Wednesday, October 6, 2010
SAPO.Communication.Ajax

        new SAPO.Communication.Ajax('/url', {
            parameters: { user: 'trodrigues' },
            onSuccess: function(response, data){
                alert(data);
            }
        });




Wednesday, October 6, 2010
SAPO.Communication.Ajax

        SAPO.Communication.Ajax.load('/view.html', function(html) {
            document.getElementById('container').innerHTML = html;
        });




Wednesday, October 6, 2010
Syndication

        • SAPO.Communication.Syndication
        • Semelhante a JSONP
        • Dar a volta à Same Origin Policy
        • adiciona parâmetro jsonTag a url
                 • Exemplo: http://service.url/datafeed?jsonTag=varname
        • servidor deve devolver var jsonTagName = {};



Wednesday, October 6, 2010
Syndication

        new SAPO.Communication.Syndication(
            'http://service.url/datafeed', {
                onComplete: function(data) {
                    alert(data.name);
                }
            }
        );

        <script type="text/javascript">
            var json6386348 = {
                name: 'Tiago'
            };
        </script>




Wednesday, October 6, 2010
SAPO.Utility

        Array
        Cache
        Cookie
        Crypto
        Date
        Dimensions
        Dumper


Wednesday, October 6, 2010
SAPO.Utility

        Array                Error
        Cache                FormValidator
        Cookie               I18n
        Crypto               Pagination
        Date                 Selection
        Dimensions           Serialize
        Dumper               String


Wednesday, October 6, 2010
SAPO.Utility

        Array                Error           Swf
        Cache                FormValidator   Templating
        Cookie               I18n            Url
        Crypto               Pagination      Validator
        Date                 Selection       Variable
        Dimensions           Serialize       VideoEmbed
        Dumper               String


Wednesday, October 6, 2010
SAPO.Effects

        • Ainda em forte desenvolvimento




Wednesday, October 6, 2010
SAPO.Effects

        • Ainda em forte desenvolvimento
        • Baseado em ideias do scripty2




Wednesday, October 6, 2010
SAPO.Effects

        • Ainda em forte desenvolvimento
        • Baseado em ideias do scripty2
        • Transições de CSS quando possível




Wednesday, October 6, 2010
SAPO.Effects

        • Ainda em forte desenvolvimento
        • Baseado em ideias do scripty2
        • Transições de CSS quando possível
        • Módulos existentes:
           • Fade
           • Slide



Wednesday, October 6, 2010
SAPO.Component

                             Autocomplete
                             ColorPicker
                             Contextmenu
                             DatePicker
                             Dialog
                             Draggable
                             Droppable


Wednesday, October 6, 2010
SAPO.Component

                             Autocomplete   Gallery
                             ColorPicker    Imagenote
                             Contextmenu    Passwordmeter
                             DatePicker     Rating
                             Dialog         Slidebox
                             Draggable      Tabs
                             Droppable      Tooltip


Wednesday, October 6, 2010
SAPO.Widget

        Widgets utilizadas em vários serviços
        Base para snippets




Wednesday, October 6, 2010
Bundles

        Concatenar e minificar uma lista de ficheiros




Wednesday, October 6, 2010
Bundles

        Concatenar e minificar uma lista de ficheiros
        Menos pedidos HTTP




Wednesday, October 6, 2010
Bundles

        Concatenar e minificar uma lista de ficheiros
        Menos pedidos HTTP
        Opcional, mas ajuda




Wednesday, October 6, 2010
Bundles

        Concatenar e minificar uma lista de ficheiros
        Menos pedidos HTTP
        Opcional, mas ajuda
        Usados internamente




Wednesday, October 6, 2010
Bundles

        Concatenar e minificar uma lista de ficheiros
        Menos pedidos HTTP
        Opcional, mas ajuda
        Usados internamente
        Servidos de http://js.sapo.pt/Bundles/




Wednesday, October 6, 2010
Snippets

        Semelhantes a bundles




Wednesday, October 6, 2010
Snippets

        Semelhantes a bundles
        Inclusão de widgets em páginas




Wednesday, October 6, 2010
Snippets

        Semelhantes a bundles
        Inclusão de widgets em páginas
        Carregam e inicializam código necessário




Wednesday, October 6, 2010
Snippets

        Semelhantes a bundles
        Inclusão de widgets em páginas
        Carregam e inicializam código necessário
        Possibilitam uso externo de widgets




Wednesday, October 6, 2010
Snippets

        Semelhantes a bundles
        Inclusão de widgets em páginas
        Carregam e inicializam código necessário
        Possibilitam uso externo de widgets
        Servidas de http://js.sapo.pt/Snippets/




Wednesday, October 6, 2010
Snippets

        <script
            src="http://js.sapo.pt/Snippets/Gallery-0.1.js?url=http://
        services.sapo.pt/Photos/RSS2/?u=shiryu&a=3"></script>




Wednesday, October 6, 2010
Mais perguntas ?




Wednesday, October 6, 2010
Documentação

        http://js.sapo.pt
        API, Guias, tutorials


        http://libsapojs.blogs.sapo.pt/
        http://twitter.com/libsapojs




Wednesday, October 6, 2010
Rever SAPO Session #2

        JavaScript for Beginners
        http://developers.blogs.sapo.pt/7998.html


        JavaScript done right
        http://developers.blogs.sapo.pt/9093.html




Wednesday, October 6, 2010
Rever SAPO Session #2

        Apresentações do Gamboa
        http://www.slideshare.net/suskind




Wednesday, October 6, 2010
return “that’s it”;

        Imagens:
        http://www.flickr.com/photos/delgrossodotcom/3574562862/
        http://www.flickr.com/photos/22746515@N02/3435112960/



        Tiago Rodrigues
        tiago.c.rodrigues@co.sapo.pt
        http://trodrigues.net                                     Creative Commons
                                                                     Attribution
                                                                   NonCommercial
        @trodrigues                                                 ShareAlike 3.0




Wednesday, October 6, 2010

More Related Content

PDF
Storytelling For The Web: Integrate Storytelling in your Design Process
PDF
Artificial Intelligence, Data and Competition – SCHREPEL – June 2024 OECD dis...
PDF
2024 Trend Updates: What Really Works In SEO & Content Marketing
PDF
10 Insightful Quotes On Designing A Better Customer Experience
PDF
Opin hugbúnaður í rekstri hjá skýrr
PDF
Node.js, toy or power tool?
PDF
Nodejs
PDF
SEO: Getting Personal
Storytelling For The Web: Integrate Storytelling in your Design Process
Artificial Intelligence, Data and Competition – SCHREPEL – June 2024 OECD dis...
2024 Trend Updates: What Really Works In SEO & Content Marketing
10 Insightful Quotes On Designing A Better Customer Experience
Opin hugbúnaður í rekstri hjá skýrr
Node.js, toy or power tool?
Nodejs
SEO: Getting Personal
Ad

Libsapojs return

  • 1. LibSAPO.js The return of the JavaScript library SAPO Sessions 2010-10-06 Wednesday, October 6, 2010
  • 2. Tiago Rodrigues Webdeveloper no SAPO Equipa de JavaScript trodrigues.net @trodrigues Wednesday, October 6, 2010
  • 3. LibSAPO.js A história e o porquê Wednesday, October 6, 2010
  • 5. Baseada em Prototype Módulos necessários ao SAPO Wednesday, October 6, 2010
  • 6. Baseada em Prototype Módulos necessários ao SAPO Surgiu na mesma altura que outras libraries Wednesday, October 6, 2010
  • 7. Baseada em Prototype Módulos necessários ao SAPO Surgiu na mesma altura que outras libraries Boom do JavaScript Wednesday, October 6, 2010
  • 9. Mais recentemente A LibSAPO.js já é standalone Wednesday, October 6, 2010
  • 10. Mais recentemente A LibSAPO.js já é standalone Não é construída sobre outra library Wednesday, October 6, 2010
  • 11. Mais recentemente A LibSAPO.js já é standalone Não é construída sobre outra library Pode usar alguns módulos externos Wednesday, October 6, 2010
  • 12. Mais recentemente A LibSAPO.js já é standalone Não é construída sobre outra library Pode usar alguns módulos externos Segue parte da API de Prototype Wednesday, October 6, 2010
  • 13. Porquê a LibSAPO.js ? Wednesday, October 6, 2010
  • 14. Porquê a LibSAPO.js ? Orientada às necessidades do SAPO Wednesday, October 6, 2010
  • 15. Porquê a LibSAPO.js ? Orientada às necessidades do SAPO Não está tão dependente de libs third party Wednesday, October 6, 2010
  • 16. Porquê a LibSAPO.js ? Orientada às necessidades do SAPO Não está tão dependente de libs third party Resolução de bugs mais rápida Wednesday, October 6, 2010
  • 17. Porquê a LibSAPO.js ? Orientada às necessidades do SAPO Não está tão dependente de libs third party Resolução de bugs mais rápida Adição de features on demand Wednesday, October 6, 2010
  • 18. Porque não um fork ? Wednesday, October 6, 2010
  • 19. Porque não um fork ? Manutenção de código mais complexa Wednesday, October 6, 2010
  • 20. Porque não um fork ? Manutenção de código mais complexa Afastamento da library original Wednesday, October 6, 2010
  • 21. Porque não um fork ? Manutenção de código mais complexa Afastamento da library original Dificuldade de integração de novas features Wednesday, October 6, 2010
  • 22. Porque não um fork ? Manutenção de código mais complexa Afastamento da library original Dificuldade de integração de novas features Difícil reaproveitar componentes Wednesday, October 6, 2010
  • 24. Filosofia Modularidade Wednesday, October 6, 2010
  • 25. Filosofia Modularidade Performance Wednesday, October 6, 2010
  • 26. Filosofia Modularidade Performance Não reutilizar tanto código da própria library Wednesday, October 6, 2010
  • 28. Desvantagens API mais complexa Wednesday, October 6, 2010
  • 29. Desvantagens API mais complexa Muitos módulos para conhecer/compreender Wednesday, October 6, 2010
  • 30. Perguntas até agora ? Wednesday, October 6, 2010
  • 31. LibSAPO.js Namespaces e API Wednesday, October 6, 2010
  • 32. O namespace SAPO Wednesday, October 6, 2010
  • 33. O namespace SAPO Todos os módulos estão contidos neste namespace Wednesday, October 6, 2010
  • 34. O namespace SAPO Todos os módulos estão contidos neste namespace Variáveis globais declaradas: SAPO e s$ Wednesday, October 6, 2010
  • 35. O namespace SAPO Todos os módulos estão contidos neste namespace Variáveis globais declaradas: SAPO e s$ Não há extensão do DOM e tipos primitivos, excepto: Wednesday, October 6, 2010
  • 36. O namespace SAPO Todos os módulos estão contidos neste namespace Variáveis globais declaradas: SAPO e s$ Não há extensão do DOM e tipos primitivos, excepto: • Function.bindObj() • Function.bindObjEvent() Wednesday, October 6, 2010
  • 37. bindObj e bindObjEvent var obj = { quant: 10, add: function(){ alert(this.quant); } }; var add = obj.add; add(); // undefined var add = obj.add.bindObj(obj); add(); // 10 Wednesday, October 6, 2010
  • 38. bindObj e bindObjEvent var obj = { quant: 10, add: function(msg){ alert(msg); alert(this.quant); } }; var add = obj.add.bindObj(obj, "hello"); add(); // hello, 10 Wednesday, October 6, 2010
  • 39. Como usar a LibSAPO.js ? <script src="http://js.sapo.pt/SAPO/"></script> <script src="http://js.sapo.pt/SAPO/Utility/Dimensions/1.1/"></script> <script src="http://js.sapo.pt/SAPO/Component/Dialog/1.1/"></script> <script> (function(){ SAPO.Component.Dialog.info("hello !"); var Dialog = SAPO.Component.Dialog; Dialog.info("hello again !"); }()); </script> Wednesday, October 6, 2010
  • 41. Métodos SAPO namespace(‘name’) Wednesday, October 6, 2010
  • 42. Métodos SAPO namespace(‘name’) extendObj(original, extension) Wednesday, October 6, 2010
  • 43. Métodos SAPO namespace(‘name’) extendObj(original, extension) Browser Wednesday, October 6, 2010
  • 44. Métodos SAPO namespace(‘name’) extendObj(original, extension) Browser require(modules, callback, async) Wednesday, October 6, 2010
  • 45. SAPO.require <script src="http://js.sapo.pt/SAPO/"></script> <script> SAPO.require( [ 'SAPO.Utility.Dimensions', 'SAPO.Component.Dialog' ], function(){ SAPO.Component.Dialog.alert('o hai !'); } ); </script> Wednesday, October 6, 2010
  • 46. O namespace SAPO Namespaces principais: Wednesday, October 6, 2010
  • 47. O namespace SAPO Namespaces principais: • Dom Wednesday, October 6, 2010
  • 48. O namespace SAPO Namespaces principais: • Dom • Communication Wednesday, October 6, 2010
  • 49. O namespace SAPO Namespaces principais: • Dom • Communication • Utility Wednesday, October 6, 2010
  • 50. O namespace SAPO Namespaces principais: • Dom • Communication • Utility • Component Wednesday, October 6, 2010
  • 51. O namespace SAPO Namespaces principais: • Dom • Communication • Utility • Component • Effects Wednesday, October 6, 2010
  • 52. O namespace SAPO Namespaces principais: • Dom • Communication • Utility • Component • Effects • Widget Wednesday, October 6, 2010
  • 53. SAPO.Dom.Element Métodos relacionados com DOM elements • get/create • offset, position, size • insert before/after • hasAttribute Wednesday, October 6, 2010
  • 54. SAPO.Dom.Css Métodos relacionados com CSS • add/remove/has/toggle classname • get/set style • show/hide/toggle element • appendStyleTag • appendStylesheet Wednesday, October 6, 2010
  • 55. SAPO.Dom.Selector Sizzle • select(selector, context) • matches(selector, filterSet) Wednesday, October 6, 2010
  • 56. SAPO.Dom.Event Abstracção de eventos • observe/stopObserving(element, event, callback) • fire • stop • element, findElement • pointer, mouse button Wednesday, October 6, 2010
  • 57. SAPO.Dom.Event SAPO.Dom.Event.observe(button, 'click', function(ev){ SAPO.Dom.Event.stop(ev); alert("hello"); }); Wednesday, October 6, 2010
  • 58. SAPO.Dom.Event var obj = { name: 'Tiago', handler: function(ev){ alert(this.name); } } SAPO.Dom.Event.observe(button, 'click', obj.handler.bindObjEvent(obj)); Wednesday, October 6, 2010
  • 59. SAPO.Dom.Loaded Indica quando o DOM está carregado Gera um evento dom:loaded Wednesday, October 6, 2010
  • 60. SAPO.Dom.Loaded SAPO.Dom.Event.observe(document, 'dom:loaded', function(ev){ // do awesome javascript stuff var el = document.getElementById("container"); }); Wednesday, October 6, 2010
  • 61. SAPO.Communication.Ajax new SAPO.Communication.Ajax('/url', { parameters: { user: 'trodrigues' }, onSuccess: function(response, data){ alert(data); } }); Wednesday, October 6, 2010
  • 62. SAPO.Communication.Ajax SAPO.Communication.Ajax.load('/view.html', function(html) { document.getElementById('container').innerHTML = html; }); Wednesday, October 6, 2010
  • 63. Syndication • SAPO.Communication.Syndication • Semelhante a JSONP • Dar a volta à Same Origin Policy • adiciona parâmetro jsonTag a url • Exemplo: http://service.url/datafeed?jsonTag=varname • servidor deve devolver var jsonTagName = {}; Wednesday, October 6, 2010
  • 64. Syndication new SAPO.Communication.Syndication( 'http://service.url/datafeed', { onComplete: function(data) { alert(data.name); } } ); <script type="text/javascript"> var json6386348 = { name: 'Tiago' }; </script> Wednesday, October 6, 2010
  • 65. SAPO.Utility Array Cache Cookie Crypto Date Dimensions Dumper Wednesday, October 6, 2010
  • 66. SAPO.Utility Array Error Cache FormValidator Cookie I18n Crypto Pagination Date Selection Dimensions Serialize Dumper String Wednesday, October 6, 2010
  • 67. SAPO.Utility Array Error Swf Cache FormValidator Templating Cookie I18n Url Crypto Pagination Validator Date Selection Variable Dimensions Serialize VideoEmbed Dumper String Wednesday, October 6, 2010
  • 68. SAPO.Effects • Ainda em forte desenvolvimento Wednesday, October 6, 2010
  • 69. SAPO.Effects • Ainda em forte desenvolvimento • Baseado em ideias do scripty2 Wednesday, October 6, 2010
  • 70. SAPO.Effects • Ainda em forte desenvolvimento • Baseado em ideias do scripty2 • Transições de CSS quando possível Wednesday, October 6, 2010
  • 71. SAPO.Effects • Ainda em forte desenvolvimento • Baseado em ideias do scripty2 • Transições de CSS quando possível • Módulos existentes: • Fade • Slide Wednesday, October 6, 2010
  • 72. SAPO.Component Autocomplete ColorPicker Contextmenu DatePicker Dialog Draggable Droppable Wednesday, October 6, 2010
  • 73. SAPO.Component Autocomplete Gallery ColorPicker Imagenote Contextmenu Passwordmeter DatePicker Rating Dialog Slidebox Draggable Tabs Droppable Tooltip Wednesday, October 6, 2010
  • 74. SAPO.Widget Widgets utilizadas em vários serviços Base para snippets Wednesday, October 6, 2010
  • 75. Bundles Concatenar e minificar uma lista de ficheiros Wednesday, October 6, 2010
  • 76. Bundles Concatenar e minificar uma lista de ficheiros Menos pedidos HTTP Wednesday, October 6, 2010
  • 77. Bundles Concatenar e minificar uma lista de ficheiros Menos pedidos HTTP Opcional, mas ajuda Wednesday, October 6, 2010
  • 78. Bundles Concatenar e minificar uma lista de ficheiros Menos pedidos HTTP Opcional, mas ajuda Usados internamente Wednesday, October 6, 2010
  • 79. Bundles Concatenar e minificar uma lista de ficheiros Menos pedidos HTTP Opcional, mas ajuda Usados internamente Servidos de http://js.sapo.pt/Bundles/ Wednesday, October 6, 2010
  • 80. Snippets Semelhantes a bundles Wednesday, October 6, 2010
  • 81. Snippets Semelhantes a bundles Inclusão de widgets em páginas Wednesday, October 6, 2010
  • 82. Snippets Semelhantes a bundles Inclusão de widgets em páginas Carregam e inicializam código necessário Wednesday, October 6, 2010
  • 83. Snippets Semelhantes a bundles Inclusão de widgets em páginas Carregam e inicializam código necessário Possibilitam uso externo de widgets Wednesday, October 6, 2010
  • 84. Snippets Semelhantes a bundles Inclusão de widgets em páginas Carregam e inicializam código necessário Possibilitam uso externo de widgets Servidas de http://js.sapo.pt/Snippets/ Wednesday, October 6, 2010
  • 85. Snippets <script src="http://js.sapo.pt/Snippets/Gallery-0.1.js?url=http:// services.sapo.pt/Photos/RSS2/?u=shiryu&a=3"></script> Wednesday, October 6, 2010
  • 86. Mais perguntas ? Wednesday, October 6, 2010
  • 87. Documentação http://js.sapo.pt API, Guias, tutorials http://libsapojs.blogs.sapo.pt/ http://twitter.com/libsapojs Wednesday, October 6, 2010
  • 88. Rever SAPO Session #2 JavaScript for Beginners http://developers.blogs.sapo.pt/7998.html JavaScript done right http://developers.blogs.sapo.pt/9093.html Wednesday, October 6, 2010
  • 89. Rever SAPO Session #2 Apresentações do Gamboa http://www.slideshare.net/suskind Wednesday, October 6, 2010
  • 90. return “that’s it”; Imagens: http://www.flickr.com/photos/delgrossodotcom/3574562862/ http://www.flickr.com/photos/22746515@N02/3435112960/ Tiago Rodrigues tiago.c.rodrigues@co.sapo.pt http://trodrigues.net Creative Commons Attribution NonCommercial @trodrigues ShareAlike 3.0 Wednesday, October 6, 2010