This post is also available in: Английский
Рано или поздно любой разработчик сталкивается с вопросом, какие инструменты лучше всего подходят для его работы. Выбор хороших инструментов позволит существенно увеличить производительность разработки и повысить качество кода. В данной статье мы рассмотрим используемые нами средства при разработке frontend-части наших проектов, также организации самого процесса.
Инструменты.
Профессионала своего дела отличает не только качество его работы, но и выбор инструментов, которые он использует.
Текстовый редактор
Стоит начать с текстового редактора. Большинство людей не пользуют его и на 50% от возможностей. Скорее всего, если вы пользуетесь чем-то лучшим блокнота, то вам могут быть доступны такие возможности как:
- Zen Coding
Позволит вам быстро создавать html-разметку. Экономит время и позволят постигнуть особый дзен. (Прочитать про то, что это такое, можно на этой странице).
- Live Templates
Нам часто приходится набивать одни и теже конструкции: объявление функций, объектов, конструкций языка. Live Templates позволит автоматизировать рутинный набор шаблонных кусков кода и сконцентрировать внимание на более важных кусках приложения. Ко всему прочему вы можете легко расширить набор шаблонов, создав их для фреймворков, которые чаще всего используете.
- File Templates
Шаблоны файлов позволят вам быстро разворачивать новые модули проекта. И также, как и в случае с Live Templates обычно можно расширять набор шаблонов необходимыми.
- Live Edit
Наличие такой функции у редактора позволит не обновлять браузер при верстке макета после каждой правки — это действие автоматизируется!
Отличный текстовый редактор, который можно рекомендовать — Sublime Text 2. Поддержка плагинов на все случаи жизни, подсветка кода, кроссплатформенность — все это делает его отличным редактором для использования. К тому же он бесплатный.
Но для действительно крупных проектов мы используем PHPStorm/WebStorm от JetBrains. Эти продукты обеспечивают разработчика всем необходимым функционалом, особенностями, описанными выше, а также отсвечиванием кода и зависимостей между всеми файлами проекта.
Как SublimeText, так и PHPStorm поддерживают множество комбинаций клавиш, зная которые можно ускорить и упростить редактирование текста. Изучить комбинации можно используя сервис Shortcut Foo . Обучение проходит в игровой форме, так что это отличный способ совместить приятное с полезным.
Технологии
Используйте те технологии, которые позволят писать меньше кода для достижения того же результата. Однако помните, что поддержка получаемого кода должна выходить как можно дешевле.
К примеру хорошей практикой является использование sass/less, которые расширяют привычные нам css добавляя такие удобные механизмы, как переменные. После того, как ваши файлы стилей готовы, достаточно запустить программу-процессор, которая переведет sass/less в обычный css.
Использование БЭМ-методологии поможет крупным поектам не погрязнуть в коде верстке. Четкие разделение стилей на отдельные файлы и структуризаия их внутри каталогов позволит тратить меньше времени на поддержку кода. Основные принципы БЭМа можно прочитать здесь. Также существует набор инструментов под названием bem-tools, который позвоялет быстро разворачивать файлы стилей.
Workflow
Отлаженный процесс разработки кода повышает скорость работы и ее качество.
Для обеспечения праллельной работы команды разработчиков используются стоит использовать стандартные средства, такие как git (про успешный git workfow можно прочить здесь). Для координации выполнения задач применяется система багтреккинга, к примеру Jira и Redmine.
Деплой проекта
Для разворачивания готового приложения на боевой среде мы используем Jenkins. Его задача — забрать из репозитория актуальную версию, и после окончания процесса сборки и подготовки файлов она должна вылить результаты на серверы. Для обеспечения этих процессов используется phing.
Остался открытым вопрос подготовки проекта к выливке. Для фронтенда на локальной среде разработки это обычно:
- Транслирование sass/less в css
- Контроль зависимостей
- Конкатенация файлов
- Проведение автотестов
Для продакшен-версии подготовка также включает в себя:
- Минификацию файлов
- Обфускация кода
- Оптимизацию изображений
Автоматизация всех этих действий — первостепенная задача, которую необходимо решить для организации оптимального процесса разработки.
Для выполнения данных задач мы используем проект Yeoman. Данный инструмент позволяет построить на своей основе весь процесс workflow frontend-разработки. Он реализует все указанные выше пункты.
Разработка с помощью Yeoman
Также Yeoman позволяет на своей основе построить весь процесс разработки фронтенда. С его помощью можно быстро развернуть структуру папок для типовых проектов. Для этого достаточно в папке проекта ввести команду:
yeoman init
Запустится диалог, после ответов на вопросы которого в каталоге развернутся служебные папки и файлы.
Помимо этого Yeoman позволяет указывать тип проекта. В таком случае он подготовит дерево папок и файлов для указанного фреймворка.
Выше было указано про такой удобный инструмент, как Live Edit. Так вот, Yeoman запускает веб-сервер для Ваших приложений с реализацией Live Edit. Для этого нужно вызвать команду:
yeoman server
Через пару секунд откроется окно браузера с запущенным приложением. Теперь любые изменения в html, css или js-файлах будут сразу же отображаться в браузере. Ваши sass-файлы также будут компилироваться в css после каждого их сохранения.
Для реализации процедуры сборки проекта Yeoman использует Grunt. Меняя файл его настроек можно гибко управлять процессами конкатенации, оптимизации и т.п. Запуск сборки выполняется командой.
yeoman build
Для проведения unit-тестов Yeoman использует связку JQunit и PhantomJS. Больше можете прочитать в статье «Тесты JavaScript и их автоматизация».
После удачного выполнения тестов Yeoman вернет сообщение об успехе. Он создаст папку dist, куда сложит проект, готовый к выливке в production.
Все вместе
Итак, если все собрать воедино, то шаги, из которых состоит workflow разработчика представляются следущими:
- Разворачивание каркаса проекта с помощью Yeoman.
- Создание элементов c помощью bem-tools.
- Написание кода.
- Сборка и тестирование с помощью Yeoman и средств отладки браузера/IDE.
- Выливка в репозиторий git.
- Запуск деплоя на сервере через Jenkins.
Узнать больше
Мы рекомендуем к просмотру видео с потрясающей презентацией Пола Айриша о Yeoman.