Я хочу начать писать сложное приложение на JavaScript для работы в Интернете. Раньше я писал немного бит кода в JavaScript, используя DOM напрямую и немного jQuery. Но это первый раз, когда я хочу написать полнофункциональное приложение для запуска в браузере.
Итак, мне интересно, какие инструментальные средства предпочитают для серьезных разработок в JavaScript. В частности, меня интересует следующее, а также некоторая информация о том, почему вы выбрали компоненты, которые вы сделали, и как они все вписываются в ваш рабочий процесс:
- Какие редакторы и редакторы/режимы/скрипты вы используете? Я вообще-то пользователь Emacs, и сейчас использую
js2.el
, но мне интересно узнать о других настройках. - Используете ли вы какую-либо IDE (Aptana, Dashcode и т.п.)?
- Какие библиотеки JavaScript или фреймворки вы используете?
- Используете ли вы какие-либо языки, которые скомпилируются для JavaScript (GWT, haxe, Objective-J)?
- Какие unit test рамки вы используете? Как вы их вызываете? Могут ли они быть вызваны из вашего редактора /IDE из командной строки из браузера на веб-странице из вашего отладчика JavaScript?
- Какие автоматические инструменты тестирования пользовательского интерфейса вы используете (например, Selenium, Watir, Sahi)? Опять же, как их можно вызвать? (Возможность запуска модульных тестов и тестов интерфейса из командной строки была бы очень полезна для запуска buildbots)
- Какие другие инструменты качества кода вы используете (JSlint, инструменты покрытия кода или что-то в этом роде)?
- Что вы используете для своей среды отладки (Firebug, инспектор WebKit и т.д.)? Имеет ли он интеграцию с вашим редактором или IDE?
- Какую пост-обработку вы выполняете на своем коде перед ее развертыванием (обфускаторы, minifiers, любые оптимизаторы)?
- Есть ли у вас какие-либо инструменты для управления зависимостями модулей или динамической загрузки кода по мере необходимости? Приложение, которое я пишу, будет работать с большим количеством кода, и я хотел бы уменьшить время загрузки, поэтому были бы полезны инструменты для отслеживания того, какие модули необходимы или загрузка кода по запросу.
- Существуют ли какие-либо другие необходимые инструменты в вашей toolchain (которые специфичны для разработки JavaScript для приложений на основе браузера, у меня уже есть отличная система контроля версий, отслеживание ошибок и т.д.)?
Меня меньше интересуют здесь в списках "вот куча вещей, которые вы могли бы использовать" (я знаю много доступных инструментов) и многое другое в стеке, которое вы фактически используете на практике и как все это сочетается. Я надеюсь, что это будет развиваться в первую очередь как приложение на стороне клиента, причем сервер просто используется для аутентификации и хранения и извлечения данных, поэтому мне неинтересно, какая платформа на стороне сервера вы используете, если она не является неотъемлемой частью клиента в некотором роде.
edit. Меня особенно интересуют рамки тестирования модулей и пользовательского интерфейса, и как их автоматизировать. Я предпочитаю иметь возможность запускать одну синглную задачу "make test" или "rake test" из командной строки для запуска всех тестов для проектов и вернуть статус в зависимости от успеха или неудачи тестов. Это позволит значительно упростить интеграцию с buildbots. Кроме того, мне интересно, кто-нибудь пишет модульные тесты, которые могут выполняться за пределами браузера (в Rhino, spidermonkey, v8 и т.п.) Для кода, который не зависит от браузера, для более быстрого поворота на подмножестве вашего тесты.