- PVSM.RU - https://www.pvsm.ru -
Пришла мне в голову смелая мысль, взяться за написание туториала по разработке на node.js (что-то наподобие ruby.railstutorial.org [1]). Так как я первый раз берусь за подобный труд то для для меня очень важен любой фидбэк. Нужно это — не нужно. Что стоит убрать а на чем остановиться подробнее, в общем любая конструктивная критика. Надеюсь что дело пойдет и вам понравится, в этом случае по мере написания буду выкладывать главы на хабр.
Приветствую, перед вами небольшой учебник по практической разработке на node.js, с использованием фреймворка express. Я с большим энтузиазмом отношусь к node и сопутствующим технологиям. Node.js в первую очередь привлекает свежестью в подходах к разработке, смелостью и драйвом.
О том, что такое node.js вы можете прочитать на http://nodejs.org/ [2], если коротко — то это серверная платформа, для выполнения javascript. Так же мы будем использовать express, web-фреймворк построеный на концепции middleware [3] (о том, что это такое, поговорим поподробнее чуть позже)
В процессе изучения мы познакомимся с различными аспектами web-разработки, такими как использование системы контроля версий, автоматическое тестирование и так далее. В результате по ходу изучения мы разработаем вполне рабочее web-приложение (простенький аналог твиттера)
Хочется отметить, что очень большое влияние на меня оказал railstutorial [4], это лучшее пособие по web-разработке, которое я встречал, и мне очень хотелось бы создать нечто подобное для node.js.
В этой главе мы развернем рабочее окружение с нуля, установим все необходимые инструменты, создадим простенькое приложение и даже запустим его на облачном
Так как я в основном использую в работе linux, а если точнее — Ubuntu 12.04, основная часть инструкций по установке тех или иных инструментов будет ориентирована на ползователей линукс, но я буду стараться по возможности давать ссылки на инструкции и для других ОС.
Для того чтобы точно следовать инструкциям в учебнике, вам нужно будет поставить систему контроля версий git [6], дело в том, что мы не только будем размещать код своих проектов в git, но и устанавливать многие инструменты из репозиториев на гитхабе [7].
Так что, первое что мы сделаем — это…
Пользователи apt-based дистрибутивов могут выполнить в терминале:
$ sudo apt-get install git-core
Остальные отправляются читать инструкции по адресу http://git-scm.com/book/ch1-4.html [8]
Теперь пришло время поставить последнюю стабильню версию node.js (на текущий момент это 0.8.1) и npm (установщик пакетов для node).
Инструкции по установке разных ОС можно найти здесь [9]
Для начала устанавливаем все что необходимо для компиляции пакета из исходников:
$ sudo apt-get install python g++ curl libssl-dev apache2-utils
Теперь скачиваем исходный код:
$ cd /tmp
$ git clone https://github.com/joyent/node.git
$ cd node
$ git checkout v0.8.1
Посделний этап — компиляция и установка:
$ ./configure
$ make
$ sudo make install
Когда все благополучно завершится, можно проверить версии пакетов, должно получиться:
$ node -v
v0.8.1
$ npm -v
1.1.33
Если есть желание — можно запустить консоль node и поиграться с интерпретатором javascript.
Тут каждый волен выбирать по своему вкусу, лично меня вполне устраивает gedit с установленным набором плагинов gmate [10]. Вполне подходят Netbeans или Webstorm.
Теперь пришло время познакомиться с фреймворком express [11]. Фреймворк очень простой, и вполне приемлемо документированный. Единственный неудобный момент — это то, что мы будем использовать бета версию 3.0.x а документация на официальном сайте написана для 2.x, так что советую иметь под рукой migration guide [12]
Устанавливаем express глобально:
$ sudo npm install -g express@3.0
Создаем директорию для наших учебных проектов:
$ mkdir -p ~/projects/node-tutorial
$ cd ~/projects/node-tutorial
Создаем проект и устанавливаем зависимости:
$ express node-demo-app
$ cd hello && npm node-demo-app
Теперь можно заглянуть в то что нам сгенерировал генератор приложений, вот внутренности app.js:
/**
* Module dependencies.
*/
var express = require('express')
, routes = require('./routes')
, http = require('http');
var app = express();
app.configure(function(){
app.set('port', process.env.PORT || 3000);
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(app.router);
app.use(express.static(__dirname + '/public'));
});
app.configure('development', function(){
app.use(express.errorHandler());
});
app.get('/', routes.index);
http.createServer(app).listen(app.get('port'), function(){
console.log("Express server listening on port " + app.get('port'));
});
Думаю, что люди знакомые с javascript могут предположить что тут происходит. Подключаются необходимые модули, конфигурируется приложение и запускается на 3000-м порту.
Теперь приложение можно запустить:
$ node app
И увидеть результат работы http://localhost:3000/ [13]
Теперь, когда у нас уже есть рабочее приложение, более подробно коснемся работы с сисемой контроля версий. Для того чтобы лучше познакомиться с работой git, стоит почитать книжку Pro Git [14], но можно и обойтись инструкциями в данном учебнике.
Для более комфортной работы с 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
Git настроен и можно размещать наше приложение в репозитории, инициализируем новый репозиторий:
$ git init
Добавляем директорию с зависимостями приложения в gitignore:
$ echo '/node_modules' > .gitignore
Помещаем все файлы в индекс и создаем первый коммит:
$ git add .
$ git ci -m "Initial commit"
После размещения кода проекта в репозитории пришло время выложить проект на GitHub [15]. GitHub — это социальная сеть и
Создаем [18] новый репозиторий node-demo-app.
Выкладываем код на гитхаб:
$ git remote add origin git@github.com:ваш_ник_на_гитхабе/node-demo-app.git
$ git push -u origin master
Теперь наступает самый волнующий этап, мы будем разворачивать приложение на
Для этого воспользуемся услугами облачной системы деплоя Heroku [19].
Для начала нам надо зарегистрироваться [20] и установить необходимый инструментарий [21].
Пользователи ubuntu выполняют:
$ wget -qO- https://toolbelt.heroku.com/install.sh | sh
Когда установка завершится, нужно будет залогиниться из коммандной строки:
$ heroku login
Теперь наше окружение полностью готов к выкладке на
В файле package.json нашего проекта, нужно указать версии ноды и npm, package.json должен выглядеть так:
{
"name": "application-name",
"version": "0.0.1",
"private": true,
"scripts": {
"start": "node app"
},
"dependencies": {
"express": "3.0.0beta4",
"jade": "*"
},
"engines": {
"node": "0.8.x",
"npm": "1.1.x"
}
}
Теперь в корне проекта создаем файл Procfile:
$ echo 'web: node app.js' > Procfile
Проверяем что все запускается с помощью менеджера процессов:
$ foreman start
Приложение должно быть доступно на http://localhost:5000/ [23]
Добавляем файлы в репозиторий:
$ git add .
$ git ci -m "Added Procfile and engines"
$ git push
Создаем приложение на heroku:
$ heroku create
$ git push heroku master
Набираем:
$ heroku open
и любуемся задеплоеным приложением.
Автор: f0rk
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/javascript/10672
Ссылки в тексте:
[1] ruby.railstutorial.org: http://ruby.railstutorial.org
[2] http://nodejs.org/: http://nodejs.org/
[3] middleware: http://stephensugden.com/middleware_guide/
[4] railstutorial: http://ruby.railstutorial.org/ruby-on-rails-tutorial-book
[5] хостинге: https://www.reg.ru/?rlink=reflink-717
[6] git: http://ru.wikipedia.org/wiki/Git
[7] гитхабе: https://github.com/
[8] http://git-scm.com/book/ch1-4.html: http://git-scm.com/book/ch1-4.html
[9] здесь: https://github.com/joyent/node/wiki/Installation
[10] gmate: https://github.com/gmate/gmate/
[11] express: http://expressjs.com/
[12] migration guide: https://github.com/visionmedia/express/wiki/Migrating-from-2.x-to-3.x
[13] http://localhost:3000/: http://localhost:3000/
[14] Pro Git: http://git-scm.com/book
[15] GitHub: http://github.com/
[16] сделать это: http://github.com/signup/free
[17] разобраться с ssh ключами: https://help.github.com/articles/generating-ssh-keys
[18] Создаем: https://github.com/new
[19] Heroku: http://www.heroku.com/
[20] зарегистрироваться: https://api.heroku.com/signup
[21] инструментарий: https://toolbelt.heroku.com/
[22] документации: https://devcenter.heroku.com/articles/nodejs
[23] http://localhost:5000/: http://localhost:5000/
Нажмите здесь для печати.