2010-12-15 157 views
1

Je vais vous expliquer mon idée derrière ceci: J'utilise Python pour Google App Engine + js + cssNouvelle approche MVC et javascript; Q: Puis-je avoir des problèmes à l'avenir avec cette approche?

le projet principal sera stocké dans le dossier src comme ceci: \ src \ app < --- ici va tout l'application python pour Gae \ javascript < --- mes fichiers javascript non emballés \ static_files < --- fichiers statiques pour Gae

maintenant le javascript dir ressemble à ceci

\ javascript \ frameworks < --- peut-être jQuery & & jQueryUI \ modèles < --- fichiers js \ contrôleurs < --- fichiers js \ vues < --- fichiers HTML! app.js < --- l'application principale pour js compile.py < --- c'est le fichier que je vais parler plus

A propos compile.py: Ce fichier aura 2 méthodes pour un min et autre pour le développement du fichier javascript; Quand est exécuté fera:

  1. Rejoindre tous les fichiers avec l'extension "js";
  2. L'app.js contient une variable nommée "views" et est un objet, comme un hachage; Ensuite, le compilateur copie le contenu de chaque fichier avec l'extension "html" située dans le répertoire "/ javascript/views /" en utilisant cette règle; exemple: si nous avons une vue comme celle-ci "/views/login.html" alors les "vues" js var auront une propriété nommée "login"; views ['login'] = '... contenu ...'; example2: "/views/admin/sexyBitcy.html" puis "[admin.sexyBitcy '] =' ... content ... 'ou tout ce qui existe dans ce fichier html ..;
  3. Ensuite, ce gros fichier sera sauvegardé dans le répertoire "/src/static_files/core.js"; si est minifié sera enregistré en tant que "/src/static_files/core.min.js";

Le javascript utilisera injection de dépendance, ou sorte de lui. (:

Je vais vous expliquer comment cela fonctionnera alors:

  1. index.html qui est chargé lorsque vous entrez dans le site charge les core.js et les jquery.js,
  2. le noyau .js créera la mise en page de la page, car le référencement n'est pas important pour la plupart des pages;
  3. le core.js utilise les controllers-models-views pour créer la mise en page bien sûr, le html pour la mise en page est à l'intérieur le var "views" sera une variable lourde bien sûr!
  4. Une partie du code:

    mvcInjector = new MVCInjector; mvcInjector.mapView(views['login'], 'login', LoginController); parent = $('#jscontent');

jquery view = mvcInjector.instanceView ('login', parent); // < --- cela créera le contenu des vues ['login'] dans le noeud parent "parent = $ ('# jscontent');" puis utilisera le LoginController qui mappera les "SkinParts" (comme dans FLEX si vous le savez); qu'est-ce que cela signifie de cartographier les "SkinParts"? - lorsque l'utilisateur clique sur un bouton, un gestionnaire pour cette action est défini dans le contrôleur; ex .:

// LoginController

this.init = function(){ 
    // map skin parts 
    this.mapSkinPart('email', 'input[name]="email"'); 
    this.mapSkinPart('submit', 'input[name]="submit"'); 

    // link skin parts to handlers 
    this.getSkinPart('submit').click = this.login; 
} 

// handlers 
this.login = function(event){ 
    // connect to the db 
    // some problems here the get the value as the "this" keyword references to the this of the controller class, I will work it around soon 
    alert('open window button1' + this.getSkinPart('email').value()); 
} 

Si quelque chose ne sait pas dire quelque chose, je serai heureux de vous expliquer; Donc la question demeure: est-ce évolutif, gérable et assez rapide pour une grande application RIA construite avec javascript + jquery et peut-être avec jqueryUI?

Merci;)

Répondre

0

J'aime votre idée quitter un peu.

Je pense sur le chargement des pages html par ajax, si elles sont grandes et beaucoup d'entre eux sont là ...

Jetez un oeil sur le projet angular, je l'espère, cela pourrait vous aider beaucoup. C'est une sorte de framework JS, conçu pour fonctionner avec jQuery. Bien adapté au développement piloté par les tests. Il utilise html comme modèles, vous pouvez simplement créer vos propres contrôleurs, utiliser l'injecteur de dépendance, etc ... N'hésitez pas à poser vos questions sur mailing list.

Ensuite, je dois recommander JsTestDriver - coureur de test vraiment cool pour JS (vous pouvez facilement exécuter Les tests unitaires dans de nombreux navigateurs, au cours du développement - disons après l'enregistrement, ...)

+0

bien mes pages ne sont pas correctement pages , ils sont le contenu de la fenêtre, juste le modèle est ensuite peuplé via js, et sont utilisés encore et encore. Ils seront utilisés pour être petits donc seuls les composants de base seront chargés par défaut, les autres seront chargés par ajax Nice l'angulaire, mais je dois passer un peu de temps à comprendre les espaces de noms en html et de liaison ... –