Approche globale du framework Tango.js

NOYAU APPLICATIF TANGO.JS

Gestion des Tiers

Profitez d'un environnement MVC cross-platforme pour créer et déployer vos instances applicatives.

Véritable chef d'orchestre du framework, le noyau de Tango.js (tgxCore) pilote la majorité des comportements génériques du framework, et les interactions entre ses différentes composantes.

  • Un langage interne unique : le JavaScript
  • Génération d'interfaces modulaires HTML/CSS/JavaScript
  • Construction d'application sur architecture Modèles-Vues-Contrôleurs (MVC)
  • Inclusion simple et légère, autorisant la cohabitation avec d'autres frameworks, librairies ou codes persos.

Les instances applicatives Tango.js peuvent être exécutées sur différentes plateformes cibles :

  • Navigateur web (idéal client web)
  • Node.js (idéal serveur ou client lourd)
  • Cordova (idéal client mobile)
  • Chromium (idéal client lourd)
  • Docker et Kubernetes (idéal virtualisation)

Les instances peuvent également se présenter sous deux formes :

  • Physique : La cible héberge les codes sources nécessaires à son fonctionnement
  • Instanciée : La cible reçoit les codes sources depuis une autre instance Tango.js (ex : instanciation client Web depuis serveur Tango)

Tango.js offre un contexte d'exécution à la fois souple et sécurisée

  • Respect des pratiques de sécurité standard (CORS, HTTP Only, Inclusion des ressources en sandbox...)
  • Protection contre les injections de code
  • Communications cryptées par token (vérification de l'intégrité et de la validité dans le temps des données)
  • Utilitaires facilitant les séquences d'exécutions asynchrones (SyncProcess, retryAction...)
  • Code JS rétro-compatible

Les instances serveurs ou non visuelles peuvent bénéficier de fonctionnalités spécifiques :

  • Un surcouche serveur au noyau tgxCore (tgxServer), permet la distribution d'instances Web et la gestion des connexions clients
  • Le "Server Manager" permet le pilotage et l'affichage des logs d'une instance serveur distante via une page Web
  • Les instances Node.js peuvent bénéficier d'un support Workers/Threads permettant :
    • La répartition de charge d’exécution dans un contexte multi-processeur
    • La limitation des risques liées aux fuites de mémoires éventuelles (MemoryLeak)

Déployez plusieurs applications sur une même instance, et organisez vos modules spécifiques ou mutualisés entre applications.

Les modules et ressources sont proposés avec une organisation par dossier commun et dossiers d'application.
Exemple :

  • Modules (ressources communes à l'ensemble des applications)
    • app (ressources générales d'application)
    • exp (ressources d'exploitation)
    • mod (ressources modulaires)
    • params (ressources de paramétrage)
    • ref (ressources de références)
    • res (ressources de ressources)
    • sys (ressources système)

    • tango_app_1 (ressources spécifiques à l'application tango_app_1)
      • app (ressources générales d'application
      • exp (ressources d'exploitation)
      • mod (ressources modulaires)
      • ...
    • tango_app_2 (ressources spécifiques à l'application tango_app_2)
      • app (ressources générales d'application
      • exp (ressources d'exploitation)
      • mod (ressources modulaires)
      • ...

Les interfaces sont créées à partir de composants d'interfaces (vues, contrôleurs et autres composants visuels ou non visuels) et sont directement gérées par le noyau en suivants des processus de propagation d'états configurables.

Les composants crées héritent d'un objet générique "Tgx", fournissant les fonctionnalités et comportements supportés par le noyau, offrant une totale liberté de manipulation et d'interaction entre les différents composants.

Les propagations d'état permettent une synchronisation des différents étapes de construction ou destruction des composants, quelque soit le niveau de profondeur ou d'imbrication des vues de l'application.

  • Composants standards inclus avec le noyau
    • tgx (non visuel) : objet générique de composant
    • tgxView (visuel) : composant "Vue" HTML
    • tgxController (non visuel) : composant "Contrôleur"
    • tgxRouteProvider (non visuel) : composant assurant le routage des interfaces et la synchronisation avec les adresses URL pour les navigateurs Web.
    • tgxRouteLink (visuel ou non visuel) : composant permettant la création de liens (cliquable ou automatique) pour le chargement des vues
  • Processus et évènements de propagation personnalisables, avec par défaut :
    • Create/onCreated : Composant en cours de création/Composant crée
    • Prepare/onPrepared : Composant en cours d'initialisation/Composant préparé
    • Start/onStarted : Composant en cours de démarrage/Composant démarré
    • Destroy/onDestroyed : Composant en cours de destruction/Composant détruit
  • Les processus de création de composants (non visuels et visuels) sont également supportés dans les contextes d'applications Node.js, grâce à l'utilisation du module jsDom (Possibilité Server Side Rendering).
    Vos interfaces et modules sont ainsi réutilisables dans tous les contextes d'application.
  • Le mode "Développeur", accessible depuis les instances Web, propose de nombreuses options de traçage et débogage, avec notamment un accès direct aux propriétés des composants instanciés sur une page.

Des fonctionnalités de finalisation de codes sources sont proposées pour préparer et sécuriser vos déploiements, et optimiser les temps de chargements de vos applications.

  • Compilateur : compilation du noyau et des différents composants utilisés pour gagner en sécurité et en temps d'initialisation de vos applications
  • Minifieur/Obfuscateur : pour gagner en temps de téléchargement des ressources de vos applications et protéger vos code sources

Un installateur (PHP) est proposé afin de faciliter l'installation d'instances physiques.

  • Installation, mise à jour ou reset depuis dépôts GIT
  • Sélection de versions
  • Accès aux utilitaires serveur


Le fonctionnement du noyau Tango.js requiert l'intégration de librairies tierces pouvant dépendre de la cible d’exécution:

Pour toutes les cibles :

  • jQuery

Pour les cibles serveurs :

  • Node.js
  • Serveur Web Apache

Pour la compilation de cibles mobiles :

  • Cordova ou équivalent

Vous souhaitez en savoir plus ? Parlons-en de vive voix !