Публикации - Node.js

Разработка приложения с помощью простого шаблона проектирования

Рассмотрим небольшой код для создания веб-приложения с помощью простого шаблона проектирования

http = require(‘http’);
fs = require(‘fs’);
var server = http.createServer(function(req,res){
 getData(res);
}).listen(3000);
// функция getData извлекает данные и передает выполнение кода функции getTemp (если ошибок нет) или функции myError (если ошибки есть)
function getData(res){
 fs.readFile(‘data.json’, function(err, data){
   if(err){
     myError(err, res);
   }else{
    getTemp(JSON.parse(data.toString()), res)
   }
 });
}
// функция getTemp получив данные загружает шаблон и передает управление кодом функции formatHtml.
function getTemp(titles, res){
  fs.readFile(‘temp.html’, function(err, data){
    if(err){
      myError(err, res);
    }else{
      formatHtml(titles, data.toString(), res);
    }
  });
}
// функция formatHtml получив данные и шаблон, передает ответ клиенту.
function formatHtml(titles, tmp, res){
 // в файле шаблона находим символы $$, заменяем их на данные из JSON-файла.
 var htmldata = tmp.replace(‘$$’, titles);
 res.writeHead(200, {‘Content-Type’: ‘text/html’});
 res.end(htmldata);
}
function myError(err, res){
  console.log(err);
  res.end(‘server error’)
}

К листингу прилагается два файла: файл шаблона temp.html и файл с данными в JSON-формате data.json. Рассмотрим файл шаблона

// html-код
$$
// html-код

Количество вложений также можно уменьшить, избавившись от блоков if/else.

Перепишем код, применив идиому раннего возврата функции.

// вместо блока if/else функции getData(), вставим следующий код
if(err) return myError (err, res)
 getTemp(…);

// вместо блока if/else функции getTemp(), вставим следующий код
if(err) return myError (err, res)
 formatHtml(…);

Количество комментариев: 0

Для того, чтобы оставить коментарий необходимо зарегистрироваться