60 votes

Ce qui est dans votre code JavaScript de la chaîne?

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.

8voto

Cherian Points 8302

Au moment de poser cette question, Google closure compiler n'était pas en lice.
C'est un très bon outil qui minimifies JavaScript mieux que beaucoup d'autres là-bas. Vous pouvez l'exécuter avec page speed pour analyser les sites existants. Il a beaucoup d'autres fonctionnalités intégrées,comme la détection du code mort, des références, etc.

3voto

ndp Points 8959
  • IntelliJ IDEA/RubyMine pour l'édition.
  • jQuery + Plugins raison de sa similitude avec Ruby
  • Utilisez-vous l'une des langues que les compiler en JavaScript (GWT, haxe, Objective-J)?
  • JSUnit avec Blue Ridge (Rails), mais reposent plus sur le Sélénium tests
  • Pas de code outils de la qualité au-delà de la paire de programmation et de tests
  • Déboguer avec Firebug pour la plupart
  • Compter sur la compression gzip afin de réduire l'espace
  • Créer des lots de petite modulaire fichiers JS
  • L'utilisation des rails de manière statique de combiner et d'intégrer automatiquement ces fichiers en tant que de besoin. C'est le code personnalisé, mais j'ai blogué à ce sujet. Cela vous permet de garder les choses modulaire comme le développement
  • Construire tout un peu de plugins jQuery pour gérer les widgets sur le site

3voto

Tim Down Points 124501

Juste commencé à l'aide de RubyMine JavaScript IDE, purement pour la prise en charge de JavaScript, ce qui est assez bon. C'est la même que celle dans IntelliJ IDEA.

Pour le débogage, Firebug est une évidence incontournable, même si elle a disparu de descente un peu récemment, à mon avis. J'ai tendance à utiliser l'enregistrement de plus d'un débogueur, donc je trouve log4javascript très utile (bien que je devrais sans doute point que je ne l'écrire). J'ai aussi utiliser WebKit inspecteur du truc et IE 8 débogueur de temps en temps, et le débuggeur de Visual Studio avec les anciennes versions d'IE.

Pour la qualité du code, j'utilise JSLint manuellement et, occasionnellement, depuis que je suis en désaccord avec certaines de ses recommandations. RubyMine/IntelliJ a aussi des tonnes de JS "inspections" analyser votre code que vous écrivez et de générer des avertissements à côté de votre code, que je trouve utile.

J'ai tendance à développer sur quelques pages de développement qui incluent l'individu, unminified scripts et lors de la création d'un build, je lance un script de génération (la mienne, écrit en Ant) qui vérifie mon code de contrôle de version, concatène les différents scripts, supprime la journalisation de débogage et d'appels, minifies/compresse (à l'aide de JSMin ou YUICompressor) le code et exécute les tests unitaires. Mon unité de script de test est ma propre et n'est rien massivement de fantaisie.

Il fonctionne raisonnablement bien, mais n'est pas parfait.

2voto

Brandon Thomson Points 1277

Je n'ai pas écrit quelque chose d'énorme en Javascript (environ 3000 lignes dans mon projet le plus récent), mais je ne JSLint mon code et minify/combiner avec toutes les bibliothèques dont j'ai besoin dans mon déployer/script de construction. Mon script de construction modifie également le code HTML à partir de l'importation de scripts et bibliothèques directement, à l'importation de la production comprimé code. De cette façon, vous n'avez pas à exécuter le script de compilation pour voir les changements dans le développement, ce qui est essentiel.

YUI Compressor est assez lent, surtout depuis qu'il démarre la machine à courir, mais il fait le travail. Une sorte de minification dans votre script de déploiement est essentiel de se débarrasser de tous les commentaires, et si vous éviter les variables globales, vous obtiendrez un montant significatif de nom de l'identificateur de la longueur de compression trop, bien que pas beaucoup de bénéfices après gzip. Peut-être que vous aurez envie d'une autre étape pour supprimer de la console.les lignes de débogage et d'autres de débogage de code.

Pour le débogage, FireBug. Je suis sûr que le webkit débogueur est bien aussi.

Pour le développement, vim avec une amélioration de la js tiret script et ctags avec certains js modifications. Je ne sais pas quels sont les avantages d'un vrai IDE mais je suis sûr qu'il y a quelques. Vim n'est pas de faire de la coloration syntaxique du code HTML à l'intérieur de chaînes de caractères javascript par défaut, mais apparemment il peut être configuré pour.

JSLint s'exécute dans Rhino facilement, mais spidermonkey se fait environ 3x plus rapide puisqu'il n'en a pas besoin pour le démarrage de la JVM. Crockford ne prend pas en charge cet arrangement, mais j'ai réussi à le faire fonctionner d'une certaine manière.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X