Je suis à la recherche pour commencer à écrire un sophistiqué application en JavaScript à exécuter sur le web. J'ai écrit des petits bouts de code jetable en JavaScript avant, en utilisant le DOM directement et un peu de jQuery. Mais c'est la première fois que je suis à la recherche d'écrire une application complète pour s'exécuter dans le navigateur.
Donc, je me demandais ce que toolchains les gens préfèrent pour faire de sérieuses de développement en JavaScript. En particulier, je m'intéresse dans ce qui suit, ainsi que quelques informations au sujet de pourquoi vous avez choisi les composants que vous avez fait et comment ils vont tous ensemble dans votre flux de travail:
- Ce que l'éditeur et éditeur plugins/modes de/scripts utilisez-vous? Je suis un utilisateur d'Emacs, et je suis en utilisant
js2.el
pour le moment, mais je suis intéressé à entendre parler d'autres configurations. - Utilisez-vous toute sorte d'IDE (Aptana, Dashcode, par exemple)?
- Ce que les bibliothèques JavaScript ou cadres utilisez-vous?
- Utilisez-vous l'une des langues que les compiler en JavaScript (GWT, haxe, Objective-J)?
- Ce test de l'unité de cadres utilisez-vous? Comment voulez-vous appeler? Peuvent-elles être invoquées à partir de votre éditeur/IDE, à partir de la ligne de commande, depuis le navigateur dans une page web, à partir de votre débogueur JavaScript?
- Ce automatisée de l'utilisateur de l'interface de test des outils utilisez-vous (comme le Sélénium, Watir, Sahi)? Encore une fois, comment peut-il être invoqué? (Être capable d'invoquer des tests unitaires et des tests d'interface à partir de la ligne de commande serait très utile, pour l'exécution de buildbots)
- Ce que d'autres de la qualité du code d'outils utilisez-vous (JSlint, les outils de couverture de code, ou quelque chose du genre)?
- Qu'utilisez-vous pour votre environnement de débogage (Firebug, WebKit inspecteur, etc)? Quel est son intégration avec votre éditeur de texte ou IDE?
- Ce post-traitement ne vous lancez sur votre code avant de le déployer (obfuscators, minifiers, tout type de optimiseurs)?
- Vous avez toute sorte d'outils pour la gestion des dépendances des modules ou le chargement dynamique de code qu'il faut? L'application que je suis en train d'écrire sera de travailler avec une grande quantité de code, et je voudrais garder des temps de chargement vers le bas, de sorte que les outils pour le suivi de ce que les modules sont nécessaires ou code de chargement à la demande seraient utiles.
- Existe-il d'autres outils essentiels dans votre chaîne d'outils (qui sont spécifiques de développement JavaScript pour les applications basées sur navigateur; j'ai déjà un parfaitement bon système de contrôle de version, bug tracker, etc)?
Je suis moins intéressé ici dans les listes de "voici un tas de choses que vous pourriez utiliser" (je connais beaucoup d'outils qui sont disponibles), et de plus en plus dans la pile que vous utilisez réellement dans la pratique et comment il s'adapte à tous ensemble. Je suis l'espoir de développer ce principalement en tant que client de l'application côté, avec le serveur vient d'être utilisé pour l'authentification et pour stocker et récupérer des données, donc je ne suis pas intéressé par ce framework côté serveur que vous utilisez, à moins qu'elle fait partie intégrante du code côté client, d'une certaine façon.
edit: je suis particulièrement intéressé par l'unité d'interface utilisateur et les infrastructures de test, et comment vous de les automatiser. Je préfère être en mesure d'exécuter un simple "make test" ou "râteau" test de la tâche à partir de la ligne de commande pour exécuter tous les tests pour les projets, et de la renvoyer un état en fonction de la réussite ou de l'échec des tests. Cela permettrait à beaucoup plus facile l'intégration avec buildbots. Aussi, je suis intéressé si quelqu'un écrit des tests unitaires qui peut être exécuté en dehors d'un navigateur (dans Rhino, spidermonkey, v8, par exemple) pour un code qui ne dépend pas du navigateur, pour des délais de traitement plus sur un sous-ensemble de vos tests.