Ich möchte mit dem Schreiben einer anspruchsvollen Anwendung in JavaScript beginnen, die im Web laufen soll. Ich habe kleine Bits von throwaway Code in JavaScript vor geschrieben, mit dem DOM direkt und ein wenig jQuery. Aber dies ist das erste Mal, ich bin auf der Suche nach einer vollwertigen Anwendung zu schreiben, um im Browser laufen.
Ich frage mich also, welche Toolchains die Leute bevorzugen, um ernsthaft in JavaScript zu entwickeln. Insbesondere bin ich in den folgenden interessiert, zusammen mit einigen Informationen darüber, warum Sie die Komponenten, die Sie getan haben, und wie sie alle zusammen in Ihrem Arbeitsablauf passen gewählt:
- Welchen Editor und welche Editor-Plugins/Modi/Skripte verwenden Sie? Ich bin im Allgemeinen ein Emacs-Benutzer und verwende
js2.el
im Moment, aber ich bin daran interessiert, von anderen Einrichtungen zu hören. - Verwenden Sie irgendeine Art von IDE (Aptana, Dashcode oder ähnliches)?
- Welche JavaScript-Bibliotheken oder -Frameworks verwenden Sie?
- Verwenden Sie eine der Sprachen, die zu JavaScript kompiliert werden können (GWT, Haxe, Objective-J)?
- Welche Unit-Test-Frameworks verwenden Sie? Wie rufen Sie sie auf? Können sie von Ihrem Editor/IDE, von der Kommandozeile, vom Browser in einer Webseite, von Ihrem JavaScript-Debugger aus aufgerufen werden?
- Welche automatisierten Tools zum Testen von Benutzeroberflächen verwenden Sie (z. B. Selenium, Watir, Sahi)? Wie können diese wiederum aufgerufen werden? (Die Möglichkeit, Einheitstests und Schnittstellentests von der Befehlszeile aus aufzurufen, wäre für die Ausführung von Buildbots sehr nützlich)
- Welche anderen Code-Qualitäts-Tools verwenden Sie (JSlint, Code-Coverage-Tools, oder etwas in der Art)?
- Was verwenden Sie für Ihre Debugging-Umgebung (Firebug, WebKit inspector, etc.)? Hat es eine Integration mit Ihrem Editor oder IDE?
- Welche Nachbearbeitung führen Sie an Ihrem Code durch, bevor Sie ihn bereitstellen (Obfuskatoren, Minifier, jegliche Art von Optimierern)?
- Haben Sie irgendwelche Werkzeuge für die Verwaltung von Modulabhängigkeiten oder das dynamische Laden von Code, wenn er benötigt wird? Die Anwendung, die ich schreibe, wird mit einer großen Menge an Code arbeiten, und ich möchte die Ladezeiten niedrig halten, so dass Tools für die Verfolgung, welche Module benötigt werden oder das Laden von Code bei Bedarf wäre hilfreich.
- Gibt es noch andere wichtige Tools in Ihrer Toolchain (die spezifisch für die JavaScript-Entwicklung für browserbasierte Anwendungen sind; ich habe bereits ein perfektes Versionskontrollsystem, Bugtracker usw.)?
Ich bin weniger an Listen interessiert, in denen steht: "Hier sind ein paar Dinge, die Sie verwenden könnten" (ich kenne viele der verfügbaren Tools), als vielmehr an dem Stack, den Sie tatsächlich in der Praxis verwenden und wie alles zusammenpasst. Ich hoffe, dies in erster Linie als Client-seitige Anwendung zu entwickeln, mit dem Server nur für die Authentifizierung und zum Speichern und Abrufen von Daten verwendet werden, so bin ich nicht daran interessiert, welche Server-seitige Framework Sie verwenden, es sei denn, es ist integraler Bestandteil der Client-seitigen Code in irgendeiner Weise.
bearbeiten : Ich interessiere mich besonders für die Unit- und User-Interface-Test-Frameworks und wie Sie diese automatisieren. Ich würde es vorziehen, eine einzige "make test"- oder "rake test"-Aufgabe von der Kommandozeile aus zu starten, um alle Tests für die Projekte auszuführen, und je nach Erfolg oder Misserfolg der Tests einen Status zurückzugeben. Dies würde eine viel einfachere Integration mit Buildbots ermöglichen. Außerdem bin ich daran interessiert, ob jemand Unit-Tests schreibt, die außerhalb eines Browsers (in Rhino, spidermonkey, v8, oder ähnlichem) für Code ausgeführt werden können, der nicht vom Browser abhängt, um eine schnellere Bearbeitung einer Teilmenge Ihrer Tests zu ermöglichen.