SlideShare une entreprise Scribd logo
1  sur  19
Titanium Studio et les modules
 Modules, librairies and co
#4 Meetup Paris Titanium
     Y a-t-il des modules pour titanium ? Quels sont les
     modules intéressants ? Et moi si veux programmer
     de manière modulaire ?




                                                           Gautier Pialat
Qui suis-je ?
   Que fais-je ? ou vais-je ?
  - Consultant sur des projets Business Intelligence
  - Aide à la mise en place de projets agiles (Scrum)

  - Co-Fondateur de captainspot (SM et développeur sur Titanium)




   - Passionné par l’agile, le Lean startup et l’entreprenariat
   - Interventions chez Leeaarn

                                                                   2
Le menu
  Les différents plats




                         3
Le marketPlace titanium
    les généralités
 - MarketPlace ->Search Results > Newest first
       - Veille techno !!

 - Gestion des modules obsolètes absente.
       - Attention aux vieux modules

 - Préférer le téléchargement des modules gratuits et open source sur github!

 - 24 modules passés en open source

                   - Modules : License violation detected
                        - Créer un nouveau projet
                        - Récupérer guid et copier dans ancien projet
                        - La Solution



                                                                                4
Des modules du marketplace
    les mesures



 - Module gérant le SDK 2 de google analytics (tableaux de bords orientés
   Mobile)

 - Disponible depuis mars 2013

 - Compatible Android et Iphone.




                                                                            5
Des modules du marketplace
  le push android




                             6
Des modules du marketplace
   les open sources !!



                            Bar code        Bump
                                                                     Charts (iOS)
                            scanner




 column
                                            image
                                                         Maps v2
                                            factory
                                                         (android)




          Identifie ton besoin puis prends des modules




                                                                                    7
Une librairie utilitaire
    Titan Up

 - Une librairie utilitaire
       - https://github.com/jpriebe/TitanUp

 - Respecte CommonJS

 - Des informations sur le téléphone.

 - Aide à une gestion propre de la géolocalisation et des vues MapsV1

 - Aide pour le design de composants graphiques génériques (crossPlatform)




                                                                             8
La librairie : Titan Up
     Les informations devices

 - Device.os
      - Retourne ios ou android

 - Device.physical(Height|Width)
     -   Récupérer les dip ou px longueur et largeur

 - Device.isTablet
     -   Savoir si on est sur une tablette

 - Device.working(Width|Height)
     -   Récupérer les dip ou px longueur et largeur (sans les menus, nav bars…)




                                                                                   9
Titan Up
     Le location manager et mapviews
 -   TU.LocationManager

      - Utilise les meilleures options de géolocs.

      - Une fois la localisation trouvée un refresh par minute.

 -   TU.UI.Views.ManagedMapView

      -   Constat : crash android 2 instances de mapview par appli (map V1).

      -   Gestion d’instance unique

      -   Inclure une mapview dans une vue via une fonction ?
             - Lors de appel fonction si vue différente alors on supprime la mapview de l’ancienne vue et on
                la met dans la nouvelle vue.




                                                                                                               10
Titan Up
       Aide pour UI
-   TU.UI.EventThrottle
         -   Prévenir les doubles clics

-   TU.UI.Sizer(numeric)
      - Permet de calculer les dip pour iphone et les px pour android.

-   TU.UI.Theme
         -   Mettre dans un endroit centralisé ces fonts et couleurs

         -   TU.UI.Views.SimplePicker (ios et android)



         -   TU.UI.Views.SelectBar (ios et android)




                                                                         11
Modules et Common JS
  Moi aussi je veux être modulaire !!!

                 - Constat : pauvreté de la doc CommonJS coté
                   éditeur (comme souvent !!)

                 - Ne plus utiliser les includes :
                        -   Risque de collision de variables


                 - Ne pas utiliser les multi contextes




                 - Quelques règles de l’approche modulaire :
                        -   Ne charger les modules que quand cela est nécessaire
                        -   N’exporter que ce dont vous avez besoin
                        -   Utiliser prototype dès que vous le pouvez




                                                                                   12
Modules et Common JS
           Les modules génériques                                   -   Module générique non objet
  - Besoin de fonctions jouant un rôle
                                                                    -   Export des fonctions nécessaires
  utilitaire ?
                                 HelloModule.js                                   app.js

var _textHello = '‘hello'‘;
var _textCoucou = '‘coucou '‘;                         var HelloM= require ('/HelloModule');
var _counter = 0;
                                                       HelloM.sayHello();
function sayHello ()                                   HelloM.sayCoucou();
{                                                      alert(HelloM. countNBHelloOrCoucou())
_counter ++;
 return _textHello;
}

function sayCoucou ()
{
_counter ++;
 return _textCoucou ;
}

function countNBHelloOrCoucou()
{
return _counter ++;
}


exports.sayHello = sayHello;
exports.sayCoucou = sayCoucou;
exports.countNBHelloOrCoucou = countNBHelloOrCoucou;




                                                                                                           13
Modules et Common JS
         Les classes statiques
                                                           -    Module objet
  - Classe objet utilitaire ?                              -    Export du module
                         PointCounter.js
                                                                           app.js
//variables statiques privées
var _points = 0;
var _defaultPoints = 3;                    var Counter= require ('/PointCounter');

function MyClass ()
{                                          Counter. winPoints();
}                                          alert(‘’J’ai déjà ‘’+Counter.winPoints()+’’ points’’ );

// méthode statique privée
var _ pointsCounter = function ()
{
_points = _points + _defaultPoints;
return _points ;
};

// méthode statique publique
MyClass.winPoints = function ()
{
return _pointsCounter() ;
};

module.exports = PointCounter;



                                                                                                     14
Modules et Common JS
              Les classes                                                           -       Module objet
     - Besoin d’objets ?                                                            -       Export de l’objet nécessaire

                                         Point.js                                               pointFactory.js
function Point(x,y)
{
  var _x = x;                                                       var Point = require(/Point);
  var _y= y;                                                        var p1 = new Point(5,2);
  var _point = null;                                                var p2 = new Point(12,-2);
    var _pointCreator = function ()
    {                                                               alert(p1.printPoint);
          point = {x : _x , y : _y}
    };


    this.xgetPoint = function ()
    {
          return _point;
     }

    this.printPoint = function ()
    {
          return ‘’Point x = ’’+_point .x+’’ et y = ‘’+_point .y;
     }

_pointCreator();

}

module.exports = Point;




                                                                                                                           15
Modules et Common JS
            Les classes et prototype
- Besoin de bcp d’objets et de performance?                               -    Utiliser prototype


                                     Person.js                                         contacts.js

 function Person(firstName,lastName) {
   this.firstName = firstName;                             var Person = require('Person');
   this.lastName = lastName;                               var arrayP = new array();
 }

 Person.prototype.fullName = function() {
                                                           arrayP.push(new Person(‘erwan',‘sarcelette');)
    return this.firstName+' '+this.lastName;               arrayP.push(new Person(‘lucie',‘durant');)
 };                                                        arrayP.push(new Person(‘damien',‘louis');)
 module.exports = Person;                                  var i;
                                                           for(i=arrayP.length;c--;)
                                                           {
                                                           Ti.API.info(arrayP[i].fullName());
                                                           }

                              La fonction prototype est définie une fois au chargement de
                              l‘objet => gain de performance !!

                              On ne peut pas accéder aux membres et méthodes privés


                                                                                                            16
Modules et Common JS
             et on peu l’utiliser pour les UI ? qui encapsule (wrapper)
                                           - Classe
    - Besoin d’objets graphiques modulaires                                           - Fonction qui étend l’objet graphique
                                     MyWindow .js                                     (parasitic inherance)

function MyWindow (params)
                                                                                                  app.js
{
   var _self = null;
   var _iv = null;                                                   var MyWindow = require ('/MyWindow');
   var _imageurl = 'http://www.google.com/images/srpr/logo3w.png';

    if (typeof params.imageurl != "undefined")                       var w = new MyWindow ({
    {                                                                    imageurl:
        _imageurl = params.imageurl;                                 'http://l.yimg.com/a/i/ww/met/yahoo_logo_us_061509.png'
        delete params.imageurl;                                      });
    }

    _self = Ti.UI.createWindow (params);                             w.open ();

    _iv = Ti.UI.createImageView ({                                   setTimeout (function () {
        top: 0,                                                         w.changeImage ('https://s-
        image: _imageurl
    });                                                              static.ak.fbcdn.net/rsrc.php/v2/yv/r/aWMatkshsiW.png');
                                                                     }, 3000);
    _self.add (_iv);

    _self.changeImage = function (imageurl)
    {
       _iv.setImage (imageurl);
    };

    return _self;
}

module.exports = MyWindow;


                                                                                                                               17
QUESTIONS
ET REPONSES




              18
Sources utiliées pour la présentation
  - http://smorgasbork.com/component/content/article/38-titanium-
    mobile/135-titanium-mobile-beyond-the-prototype (CommonJS)

  - https://marketplace.appcelerator.com/home (maketplace)

  - Appcelerator Titanium : Patterns and Best Practices(livre et
    commonJS)

  - https://github.com/appcelerator/titanium_modules (module open
    sources titanium)

  - http://iamyellow.net/post/40100981563/gcm-appcelerator-titanium-
    module (push notification android)

  - https://github.com/MattTuttle/titanium-google-analytics (gg analytics)




                                                                             19

Contenu connexe

Similaire à Titanium studio et les modules

Introduction module IHM Polytech Sophia Dept Info SI3
Introduction module IHM Polytech Sophia Dept Info SI3Introduction module IHM Polytech Sophia Dept Info SI3
Introduction module IHM Polytech Sophia Dept Info SI3Anne-Marie Pinna-Dery
 
Les ateliers android_1_vers2015
Les ateliers android_1_vers2015Les ateliers android_1_vers2015
Les ateliers android_1_vers2015Saber LAJILI
 
Les ateliers android_1_vers2015
Les ateliers android_1_vers2015Les ateliers android_1_vers2015
Les ateliers android_1_vers2015Sabeur LAJILI
 
Les ateliers android_1_vers2015
Les ateliers android_1_vers2015Les ateliers android_1_vers2015
Les ateliers android_1_vers2015Sabeur LAJILI
 
Solution d'OTA
Solution d'OTASolution d'OTA
Solution d'OTASidereo
 
Dojo Mobile @ Devoxx France
Dojo Mobile @ Devoxx FranceDojo Mobile @ Devoxx France
Dojo Mobile @ Devoxx Francecjolif
 
Cas de la refonte de STM.info
Cas de la refonte de STM.infoCas de la refonte de STM.info
Cas de la refonte de STM.infoTP1
 
Les générateurs de code, pour se simplifier la vie au quotidien
Les générateurs de code, pour se simplifier la vie au quotidienLes générateurs de code, pour se simplifier la vie au quotidien
Les générateurs de code, pour se simplifier la vie au quotidienNicolas Carlo
 
Outils de construction pour la recherche
Outils de construction pour la rechercheOutils de construction pour la recherche
Outils de construction pour la rechercheJohan Moreau
 
ASFWS 2012 - Le développement d’applications sécurisées avec Android par Joha...
ASFWS 2012 - Le développement d’applications sécurisées avec Android par Joha...ASFWS 2012 - Le développement d’applications sécurisées avec Android par Joha...
ASFWS 2012 - Le développement d’applications sécurisées avec Android par Joha...Cyber Security Alliance
 
Développement des applications REDUX.pptx
Développement des applications REDUX.pptxDéveloppement des applications REDUX.pptx
Développement des applications REDUX.pptxSoumiaZITI1
 
Qualité logicielle
Qualité logicielleQualité logicielle
Qualité logiciellecyrilgandon
 
Checklist pour concevoir une application dans le cloud.10 conseils à l'attent...
Checklist pour concevoir une application dans le cloud.10 conseils à l'attent...Checklist pour concevoir une application dans le cloud.10 conseils à l'attent...
Checklist pour concevoir une application dans le cloud.10 conseils à l'attent...Alexandre Touret
 
Quelques conseils sur la migration des modules à Drupal 8. Étude de cas: Node...
Quelques conseils sur la migration des modules à Drupal 8. Étude de cas: Node...Quelques conseils sur la migration des modules à Drupal 8. Étude de cas: Node...
Quelques conseils sur la migration des modules à Drupal 8. Étude de cas: Node...Adrian CID ALMAGUER
 
Notions de base de JavaScript
Notions de base de JavaScriptNotions de base de JavaScript
Notions de base de JavaScriptKristen Le Liboux
 
C++ 11 - Tech Days 2014 in Paris
C++ 11 - Tech Days 2014 in ParisC++ 11 - Tech Days 2014 in Paris
C++ 11 - Tech Days 2014 in Parischristophep21
 
Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
Bonnes pratiques pour apprivoiser le C++11 avec Visual C++Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
Bonnes pratiques pour apprivoiser le C++11 avec Visual C++Microsoft
 
Apple Watch par Benoit Capallere et Joeffrey Bocquet
Apple Watch par Benoit Capallere et Joeffrey BocquetApple Watch par Benoit Capallere et Joeffrey Bocquet
Apple Watch par Benoit Capallere et Joeffrey BocquetCocoaHeads France
 

Similaire à Titanium studio et les modules (20)

Introduction module IHM Polytech Sophia Dept Info SI3
Introduction module IHM Polytech Sophia Dept Info SI3Introduction module IHM Polytech Sophia Dept Info SI3
Introduction module IHM Polytech Sophia Dept Info SI3
 
Les ateliers android_1_vers2015
Les ateliers android_1_vers2015Les ateliers android_1_vers2015
Les ateliers android_1_vers2015
 
Les ateliers android_1_vers2015
Les ateliers android_1_vers2015Les ateliers android_1_vers2015
Les ateliers android_1_vers2015
 
Les ateliers android_1_vers2015
Les ateliers android_1_vers2015Les ateliers android_1_vers2015
Les ateliers android_1_vers2015
 
Solution d'OTA
Solution d'OTASolution d'OTA
Solution d'OTA
 
Dojo Mobile @ Devoxx France
Dojo Mobile @ Devoxx FranceDojo Mobile @ Devoxx France
Dojo Mobile @ Devoxx France
 
Cas de la refonte de STM.info
Cas de la refonte de STM.infoCas de la refonte de STM.info
Cas de la refonte de STM.info
 
Les générateurs de code, pour se simplifier la vie au quotidien
Les générateurs de code, pour se simplifier la vie au quotidienLes générateurs de code, pour se simplifier la vie au quotidien
Les générateurs de code, pour se simplifier la vie au quotidien
 
Outils de construction pour la recherche
Outils de construction pour la rechercheOutils de construction pour la recherche
Outils de construction pour la recherche
 
Vert.x 3
Vert.x 3Vert.x 3
Vert.x 3
 
CV_Bilel CHAOUADI
CV_Bilel CHAOUADICV_Bilel CHAOUADI
CV_Bilel CHAOUADI
 
ASFWS 2012 - Le développement d’applications sécurisées avec Android par Joha...
ASFWS 2012 - Le développement d’applications sécurisées avec Android par Joha...ASFWS 2012 - Le développement d’applications sécurisées avec Android par Joha...
ASFWS 2012 - Le développement d’applications sécurisées avec Android par Joha...
 
Développement des applications REDUX.pptx
Développement des applications REDUX.pptxDéveloppement des applications REDUX.pptx
Développement des applications REDUX.pptx
 
Qualité logicielle
Qualité logicielleQualité logicielle
Qualité logicielle
 
Checklist pour concevoir une application dans le cloud.10 conseils à l'attent...
Checklist pour concevoir une application dans le cloud.10 conseils à l'attent...Checklist pour concevoir une application dans le cloud.10 conseils à l'attent...
Checklist pour concevoir une application dans le cloud.10 conseils à l'attent...
 
Quelques conseils sur la migration des modules à Drupal 8. Étude de cas: Node...
Quelques conseils sur la migration des modules à Drupal 8. Étude de cas: Node...Quelques conseils sur la migration des modules à Drupal 8. Étude de cas: Node...
Quelques conseils sur la migration des modules à Drupal 8. Étude de cas: Node...
 
Notions de base de JavaScript
Notions de base de JavaScriptNotions de base de JavaScript
Notions de base de JavaScript
 
C++ 11 - Tech Days 2014 in Paris
C++ 11 - Tech Days 2014 in ParisC++ 11 - Tech Days 2014 in Paris
C++ 11 - Tech Days 2014 in Paris
 
Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
Bonnes pratiques pour apprivoiser le C++11 avec Visual C++Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
 
Apple Watch par Benoit Capallere et Joeffrey Bocquet
Apple Watch par Benoit Capallere et Joeffrey BocquetApple Watch par Benoit Capallere et Joeffrey Bocquet
Apple Watch par Benoit Capallere et Joeffrey Bocquet
 

Plus de Gautier Pialat

Des outils pour vos développements mobiles (avec titanium)
Des outils pour vos développements mobiles (avec titanium)Des outils pour vos développements mobiles (avec titanium)
Des outils pour vos développements mobiles (avec titanium)Gautier Pialat
 
Le développement mobile avec titanium (1)
Le développement mobile avec titanium (1)Le développement mobile avec titanium (1)
Le développement mobile avec titanium (1)Gautier Pialat
 
Titanium studio : intégration design dans alloy
Titanium studio :  intégration design dans alloyTitanium studio :  intégration design dans alloy
Titanium studio : intégration design dans alloyGautier Pialat
 
Notifications sur android avec Titanium
Notifications sur android avec TitaniumNotifications sur android avec Titanium
Notifications sur android avec TitaniumGautier Pialat
 
Présentation scrum pour cours leeaarn
Présentation scrum pour cours leeaarnPrésentation scrum pour cours leeaarn
Présentation scrum pour cours leeaarnGautier Pialat
 

Plus de Gautier Pialat (6)

Des outils pour vos développements mobiles (avec titanium)
Des outils pour vos développements mobiles (avec titanium)Des outils pour vos développements mobiles (avec titanium)
Des outils pour vos développements mobiles (avec titanium)
 
Formation Titanium
Formation TitaniumFormation Titanium
Formation Titanium
 
Le développement mobile avec titanium (1)
Le développement mobile avec titanium (1)Le développement mobile avec titanium (1)
Le développement mobile avec titanium (1)
 
Titanium studio : intégration design dans alloy
Titanium studio :  intégration design dans alloyTitanium studio :  intégration design dans alloy
Titanium studio : intégration design dans alloy
 
Notifications sur android avec Titanium
Notifications sur android avec TitaniumNotifications sur android avec Titanium
Notifications sur android avec Titanium
 
Présentation scrum pour cours leeaarn
Présentation scrum pour cours leeaarnPrésentation scrum pour cours leeaarn
Présentation scrum pour cours leeaarn
 

Titanium studio et les modules

  • 1. Titanium Studio et les modules Modules, librairies and co #4 Meetup Paris Titanium Y a-t-il des modules pour titanium ? Quels sont les modules intéressants ? Et moi si veux programmer de manière modulaire ? Gautier Pialat
  • 2. Qui suis-je ? Que fais-je ? ou vais-je ? - Consultant sur des projets Business Intelligence - Aide à la mise en place de projets agiles (Scrum) - Co-Fondateur de captainspot (SM et développeur sur Titanium) - Passionné par l’agile, le Lean startup et l’entreprenariat - Interventions chez Leeaarn 2
  • 3. Le menu Les différents plats 3
  • 4. Le marketPlace titanium les généralités - MarketPlace ->Search Results > Newest first - Veille techno !! - Gestion des modules obsolètes absente. - Attention aux vieux modules - Préférer le téléchargement des modules gratuits et open source sur github! - 24 modules passés en open source - Modules : License violation detected - Créer un nouveau projet - Récupérer guid et copier dans ancien projet - La Solution 4
  • 5. Des modules du marketplace les mesures - Module gérant le SDK 2 de google analytics (tableaux de bords orientés Mobile) - Disponible depuis mars 2013 - Compatible Android et Iphone. 5
  • 6. Des modules du marketplace le push android 6
  • 7. Des modules du marketplace les open sources !! Bar code Bump Charts (iOS) scanner column image Maps v2 factory (android) Identifie ton besoin puis prends des modules 7
  • 8. Une librairie utilitaire Titan Up - Une librairie utilitaire - https://github.com/jpriebe/TitanUp - Respecte CommonJS - Des informations sur le téléphone. - Aide à une gestion propre de la géolocalisation et des vues MapsV1 - Aide pour le design de composants graphiques génériques (crossPlatform) 8
  • 9. La librairie : Titan Up Les informations devices - Device.os - Retourne ios ou android - Device.physical(Height|Width) - Récupérer les dip ou px longueur et largeur - Device.isTablet - Savoir si on est sur une tablette - Device.working(Width|Height) - Récupérer les dip ou px longueur et largeur (sans les menus, nav bars…) 9
  • 10. Titan Up Le location manager et mapviews - TU.LocationManager - Utilise les meilleures options de géolocs. - Une fois la localisation trouvée un refresh par minute. - TU.UI.Views.ManagedMapView - Constat : crash android 2 instances de mapview par appli (map V1). - Gestion d’instance unique - Inclure une mapview dans une vue via une fonction ? - Lors de appel fonction si vue différente alors on supprime la mapview de l’ancienne vue et on la met dans la nouvelle vue. 10
  • 11. Titan Up Aide pour UI - TU.UI.EventThrottle - Prévenir les doubles clics - TU.UI.Sizer(numeric) - Permet de calculer les dip pour iphone et les px pour android. - TU.UI.Theme - Mettre dans un endroit centralisé ces fonts et couleurs - TU.UI.Views.SimplePicker (ios et android) - TU.UI.Views.SelectBar (ios et android) 11
  • 12. Modules et Common JS Moi aussi je veux être modulaire !!! - Constat : pauvreté de la doc CommonJS coté éditeur (comme souvent !!) - Ne plus utiliser les includes : - Risque de collision de variables - Ne pas utiliser les multi contextes - Quelques règles de l’approche modulaire : - Ne charger les modules que quand cela est nécessaire - N’exporter que ce dont vous avez besoin - Utiliser prototype dès que vous le pouvez 12
  • 13. Modules et Common JS Les modules génériques - Module générique non objet - Besoin de fonctions jouant un rôle - Export des fonctions nécessaires utilitaire ? HelloModule.js app.js var _textHello = '‘hello'‘; var _textCoucou = '‘coucou '‘; var HelloM= require ('/HelloModule'); var _counter = 0; HelloM.sayHello(); function sayHello () HelloM.sayCoucou(); { alert(HelloM. countNBHelloOrCoucou()) _counter ++; return _textHello; } function sayCoucou () { _counter ++; return _textCoucou ; } function countNBHelloOrCoucou() { return _counter ++; } exports.sayHello = sayHello; exports.sayCoucou = sayCoucou; exports.countNBHelloOrCoucou = countNBHelloOrCoucou; 13
  • 14. Modules et Common JS Les classes statiques - Module objet - Classe objet utilitaire ? - Export du module PointCounter.js app.js //variables statiques privées var _points = 0; var _defaultPoints = 3; var Counter= require ('/PointCounter'); function MyClass () { Counter. winPoints(); } alert(‘’J’ai déjà ‘’+Counter.winPoints()+’’ points’’ ); // méthode statique privée var _ pointsCounter = function () { _points = _points + _defaultPoints; return _points ; }; // méthode statique publique MyClass.winPoints = function () { return _pointsCounter() ; }; module.exports = PointCounter; 14
  • 15. Modules et Common JS Les classes - Module objet - Besoin d’objets ? - Export de l’objet nécessaire Point.js pointFactory.js function Point(x,y) { var _x = x; var Point = require(/Point); var _y= y; var p1 = new Point(5,2); var _point = null; var p2 = new Point(12,-2); var _pointCreator = function () { alert(p1.printPoint); point = {x : _x , y : _y} }; this.xgetPoint = function () { return _point; } this.printPoint = function () { return ‘’Point x = ’’+_point .x+’’ et y = ‘’+_point .y; } _pointCreator(); } module.exports = Point; 15
  • 16. Modules et Common JS Les classes et prototype - Besoin de bcp d’objets et de performance? - Utiliser prototype Person.js contacts.js function Person(firstName,lastName) { this.firstName = firstName; var Person = require('Person'); this.lastName = lastName; var arrayP = new array(); } Person.prototype.fullName = function() { arrayP.push(new Person(‘erwan',‘sarcelette');) return this.firstName+' '+this.lastName; arrayP.push(new Person(‘lucie',‘durant');) }; arrayP.push(new Person(‘damien',‘louis');) module.exports = Person; var i; for(i=arrayP.length;c--;) { Ti.API.info(arrayP[i].fullName()); } La fonction prototype est définie une fois au chargement de l‘objet => gain de performance !! On ne peut pas accéder aux membres et méthodes privés 16
  • 17. Modules et Common JS et on peu l’utiliser pour les UI ? qui encapsule (wrapper) - Classe - Besoin d’objets graphiques modulaires - Fonction qui étend l’objet graphique MyWindow .js (parasitic inherance) function MyWindow (params) app.js { var _self = null; var _iv = null; var MyWindow = require ('/MyWindow'); var _imageurl = 'http://www.google.com/images/srpr/logo3w.png'; if (typeof params.imageurl != "undefined") var w = new MyWindow ({ { imageurl: _imageurl = params.imageurl; 'http://l.yimg.com/a/i/ww/met/yahoo_logo_us_061509.png' delete params.imageurl; }); } _self = Ti.UI.createWindow (params); w.open (); _iv = Ti.UI.createImageView ({ setTimeout (function () { top: 0, w.changeImage ('https://s- image: _imageurl }); static.ak.fbcdn.net/rsrc.php/v2/yv/r/aWMatkshsiW.png'); }, 3000); _self.add (_iv); _self.changeImage = function (imageurl) { _iv.setImage (imageurl); }; return _self; } module.exports = MyWindow; 17
  • 19. Sources utiliées pour la présentation - http://smorgasbork.com/component/content/article/38-titanium- mobile/135-titanium-mobile-beyond-the-prototype (CommonJS) - https://marketplace.appcelerator.com/home (maketplace) - Appcelerator Titanium : Patterns and Best Practices(livre et commonJS) - https://github.com/appcelerator/titanium_modules (module open sources titanium) - http://iamyellow.net/post/40100981563/gcm-appcelerator-titanium- module (push notification android) - https://github.com/MattTuttle/titanium-google-analytics (gg analytics) 19

Notes de l'éditeur

  1. Admob : régie pub mobile de gg pour diffuser de la pub pour son mobile. AirPrint : Imprimer sur une imprimante qui est connectée à internet. BarcodeScanner : Permet la lecture des codes bar. Bump : On entrechoque deux téléphones et on tranfère des données. Charts : librairie pour créer des beaux graphiques Column : déoupage en colonnes de texte Facebook : utiliser l’api native android ou iphone Flurry : analytics spécialisé pour les mobiles Image Factory : Module qui permet de créer/modifier des images. Map v2 : Version de mapV2 pour android