Предисловие
Пришла мне в голову смелая мысль, взяться за написание туториала по разработке на node.js (что-то наподобие ruby.railstutorial.org). Так как я первый раз берусь за подобный труд то для для меня очень важен любой фидбэк. Нужно это — не нужно. Что стоит убрать а на чем остановиться подробнее, в общем любая конструктивная критика. Надеюсь что дело пойдет и вам понравится, в этом случае по мере написания буду выкладывать главы на хабр.
Вступление
Приветствую, перед вами небольшой учебник по практической разработке на node.js, с использованием фреймворка express. Я с большим энтузиазмом отношусь к node и сопутствующим технологиям. Node.js в первую очередь привлекает свежестью в подходах к разработке, смелостью и драйвом.
О том, что такое node.js вы можете прочитать на http://nodejs.org/, если коротко — то это серверная платформа, для выполнения javascript. Так же мы будем использовать express, web-фреймворк построеный на концепции middleware (о том, что это такое, поговорим поподробнее чуть позже)
В процессе изучения мы познакомимся с различными аспектами web-разработки, такими как использование системы контроля версий, автоматическое тестирование и так далее. В результате по ходу изучения мы разработаем вполне рабочее web-приложение (простенький аналог твиттера)
Хочется отметить, что очень большое влияние на меня оказал railstutorial, это лучшее пособие по web-разработке, которое я встречал, и мне очень хотелось бы создать нечто подобное для node.js.
Глава 1. Старт
В этой главе мы развернем рабочее окружение с нуля, установим все необходимые инструменты, создадим простенькое приложение и даже запустим его на облачном хостинге.
1.1 Рабочее окружение
Так как я в основном использую в работе linux, а если точнее — Ubuntu 12.04, основная часть инструкций по установке тех или иных инструментов будет ориентирована на ползователей линукс, но я буду стараться по возможности давать ссылки на инструкции и для других ОС.
Для того чтобы точно следовать инструкциям в учебнике, вам нужно будет поставить систему контроля версий git, дело в том, что мы не только будем размещать код своих проектов в git, но и устанавливать многие инструменты из репозиториев на гитхабе.
Так что, первое что мы сделаем — это...
1.1.1 Установка git
Пользователи apt-based дистрибутивов могут выполнить в терминале:
$ sudo apt-get install git-core
Остальные отправляются читать инструкции по адресу http://git-scm.com/book/ch1-4.html
1.1.2 Установка node.js и npm
Теперь пришло время поставить последнюю стабильню версию node.js и npm (установщик пакетов для node). Инструкции по установке разных ОС можно найти здесь. Для установки на ubuntu выполняем:
$ sudo apt-get install python-software-properties $ sudo add-apt-repository ppa:chris-lea/node.js $ sudo apt-get update $ sudo apt-get install nodejs npm
Если есть желание — можно запустить консоль node и поиграться с интерпретатором javascript.
1.1.3 Среда разработки
Тут каждый волен выбирать по своему вкусу, лично меня вполне устраивает gedit с установленным набором плагинов gmate. Вполне подходят Netbeans или Webstorm.
1.1.4 Express и первое приложение
Теперь пришло время познакомиться с фреймворком express. Фреймворк очень простой, и вполне приемлемо документированный.
Устанавливаем express глобально:
$ sudo npm install -g express
Создаем директорию для наших учебных проектов:
$ mkdir -p ~/projects/node-tutorial $ cd ~/projects/node-tutorial
Создаем проект и устанавливаем зависимости:
$ express first-app $ cd first-app && npm install
Желающие могут покопаться в том что нам сгенерировал генератор приложений, думаю, что люди знакомые с javascript могут предположить что там происходит.
Теперь приложение можно запустить:
$ node app
И увидеть результат работы http://localhost:3000/
1.2 Система контроля версий
Теперь, когда у нас уже есть рабочее приложение, более подробно коснемся работы с сисемой контроля версий. Для того чтобы лучше познакомиться с работой git, стоит почитать книжку Pro Git, но можно и обойтись инструкциями в данном учебнике.
1.2.1 Настройка git
Для более комфортной работы с git стоит сначала указать свои личные данные:
$ git config --global user.name "Your Name" $ git config --global user.email your.email@example.com
И настроить алиасы для наиболее часто используемых комманд:
$ git config --global alias.co checkout $ git config --global alias.ci commit
1.2.2 Работа с git
Git настроен и можно размещать наше приложение в репозитории, инициализируем новый репозиторий:
$ git init
Добавляем директорию с зависимостями приложения в gitignore:
$ echo 'node_modules' > .gitignore
Помещаем все файлы в индекс и создаем первый коммит:
$ git add . $ git ci -m "Initial commit"
1.2.3 GitHub
После размещения кода проекта в репозитории пришло время выложить проект на GitHub. GitHub — это социальная сеть и хостинг для проектов. Огромное число opensource проектов хостится на гитхабе, так что если вы там е��е не зарегистрированы — самое время сделать это.
Перед тем как работать с GitHub нужно будет создать RSA ключи для доступа по ssh. Процедура описана тут. Для пользователей linux привожу инструкцию по созданию ключей если их у вас еще нет.
$ ssh-keygen -t rsa -C "your_email@youremail.com"
Отвечаем на вопросы генератора, после чего копируем содержимое файла
~/.ssh/id_rsa.pub:$ sudo apt-get install xclip $ xclip -sel clip < ~/.ssh/id_rsa.pub
После этого нужно пройти по ссылке Account Settings, зайти в раздел SSH Keys и нажать кнопку Add SSH Key и вставить ключ из буфера обмена в поле Key. Затем сохранить.
Проверить что ключ работает можно так:
$ ssh -T git@github.com
Возможно вы увидете предупреждение:
The authenticity of host 'github.com (207.97.227.239)' can't be established. # RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48. # Are you sure you want to continue connecting (yes/no)?
Нужно просто ответить 'yes' и тогда, если ключ успешно добавился, вы увидите ответ сервера:
Hi username! You've successfully authenticated, but GitHub does not # provide shell access.
Когда ключи настроены создаем новый репозиторий с названием first-app и дефолтными настройками, после чего выкладываем код на гитхаб:
$ git remote add origin git@github.com:ваш_ник_на_гитхабе/first-app.git $ git push -u origin master
1.3 Разворачиваем приложение
Теперь наступает самый волнующий этап, мы будем разворачивать приложение на хостинге.
Для этого воспол��зуемся услугами облачной системы деплоя Heroku. Если вам интересно как работает хостинг Heroku, советую поизучать их раздел How it Works
1.3.1 Настройка Heroku
Для начала нам надо зарегистрироваться и установить необходимый инструментарий.
Пользователи ubuntu выполняют:
$ wget -qO- https://toolbelt.heroku.com/install-ubuntu.sh | sh
Когда установка завершится, нужно будет залогиниться из коммандной строки:
$ heroku login
1.3.2 Размещаем приложение на heroku
Теперь наше окружение полностью готов к выкладке на хостинг. Размещение node.js проекта на Heroku требует еще нескольких действий, вы можете почитать об этом в документации или просто выполнить инструкции.
В файле package.json нашего проекта, нужно указать версии ноды и npm, package.json должен выглядеть так:
{ "name": "application-name", "version": "0.0.1", "private": true, "scripts": { "start": "node app" }, "dependencies": { "express": "3.0.x", "jade": "*" }, "engines": { "node": "0.8.x", "npm": "1.1.x" } }
Теперь в корне проекта создаем файл Procfile:
$ echo 'web: node app.js' > Procfile
Проверяем что все запускается с помощью менеджера процессов:
$ foreman start
Приложение должно быть доступно на http://localhost:5000/
Добавляем файлы в репозиторий:
$ git add . $ git ci -m "Added Procfile and engines" $ git push
Создаем приложение на heroku:
$ heroku create $ heroku keys:add ~/.ssh/id_rsa.pub $ git push heroku master
Набираем:
$ heroku open
и любуемся задеплоеным приложением.
