# Node.JS для решения задач В этом разделе предлагаются задачи по теме AJAX. Конечно же, они требуют взаимодействия с сервером. Мы будем использовать серверную часть, написанную на JavaScript, на Node.JS. [cut] Если вы не использовали Node.JS ранее -- не беспокойтесь. Здесь нашей целью является преимущественно клиентская часть, поэтому прямо сейчас изучать Node.JS не обязательно. Серверные скрипты уже готовы. Нужно только поставить Node.JS и модули, чтобы их запускать. ## Установка Для настройки окружения будет достаточно сделать два шага:
  1. Сначала установите сам сервер Node.JS. Если у вас Unix-система -- рекомендуется собрать последнюю версию из исходников, а также NPM. Вы справитесь. Если Windows -- посетите сайт http://nodejs.org или скачайте установщик (32 или 64-битный) с расширением `.msi` из http://nodejs.org/dist/latest/.
  2. Выберите директорию, в которой будете решать задачи. Запустите в ней: ``` npm install node-static ``` Это установит в текущую директорию модуль [node-static](https://github.com/cloudhead/node-static), который станет автоматически доступным для скриптов из поддиректорий. **Если у вас Windows и команда не сработала, то скорее всего дело в том, что "не подхватились" новые пути. Перезапустите ваш файловый менеджер или консоль.**
## Проверка Проверьте инсталяцию. Для этого:
  1. Создайте какую-нибудь поддиректорию и в ней файл `server.js` с таким содержимым: ```js var http = require('http'); var static = require('node-static'); var file = new static.Server('.'); http.createServer(function(req, res) { file.serve(req, res); }).listen(8080); console.log('Server running on port 8080'); ```
  2. Запустите его: `node server.js`. Должно вывести: ``` Server running on port 8080 ``` [warn header="Нельзя запустить больше одного сервера одновременно!"] При попытке запуска двух серверов (например, в разных консолях) -- будет конфликт портов и ошибка. [/warn]
  3. Откройте в браузере http://127.0.0.1:8080/server.js. Должно вывести код файла `server.js`.
Если всё работает -- отлично, теперь вы готовы решать задачи. ## Примеры В примерах, за редким исключением, для краткости будет приводиться не полный скрипт на Node.JS, а только код обработки запроса. Например, вместо: ```js var http = require('http'); var url = require('url'); var querystring = require('querystring'); function accept(req, res) { res.writeHead(200, { 'Content-Type': 'text/plain', 'Cache-Control': 'no-cache' }); res.end("OK"); } http.createServer(accept).listen(8080); ``` ...Будет только функция `accept`, или даже только её содержимое: ```js res.writeHead(200, { 'Content-Type': 'text/plain', 'Cache-Control': 'no-cache' }); ``` ## Основные методы В функции `accept` используются два объекта: ## Демо Кроме просмотра кода, можно будет попробовать и скачать различные демки. Вот пример демо, можете попробовать нажать на кнопку -- она работает. [iframe src="example" border="1" height=80 zip samedomain] Если хотите посмотреть пример поближе и поиграть с ним -- скачайте полный код, он будет работать и на вашем Node.JS. ## Больше о Node.JS Больше о сервере Node.JS можно узнать в [скринкасте по Node.JS](/nodejs-screencast).