Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 20.02.2013, 11:48
Аспирант
Отправить личное сообщение для Voronar Посмотреть профиль Найти все сообщения от Voronar
 
Регистрация: 15.02.2013
Сообщений: 55

Недопонимание философии Node.js
Здравствуйте. Возникла необходимость реализовать небольшой веб-сервис, в задачи которого входит: отображение динамических данных в реальном времени, данных из бд, визуализация данных из бд и кое-что по мелочи.
Серверную часть этого сервиса хочу попробовать реализовать с помощью Node.js, чтобы все программирование происходило в основном на JavaScript.
При попытки этой реализации у меня возникают вопросы.
Хотел бы кое-что прояснить для себя.

Как я понимаю, Node.js, это в первую очередь средство для серверного программирования.
Я, например, хочу наполнит свой сервер html-страницами, в которых я визуализирую(таблицы, графики, диаграммы) данные(асинхронно - query.ajax).
Как это сделать грамотно в соответствии с философией и эстетикой Node.js?
Можно ли это сделать так(грубый пример)?
var http = require("http");
var fs = require('fs');

function onRequest(request, response)
{
    fs.readFile('index.html',
    function (err, data)
    {
        response.writeHead(200, {'Content-Type': 'text/html','Content-Length':data.length});
        response.write(data);
        response.end();
    });

}

http.createServer(onRequest).listen(8080);


Ещё я не пойму, как мне добавлять данные, полученные из бд(mysql, например) c помощью специального модуля для Node.js в мои html-страницы? Открывать файл *.html для чтения и записывать в него данные в соответствии с html-разметкой в рамках JS-скрипта?
Ответить с цитированием
  #2 (permalink)  
Старый 20.02.2013, 13:04
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от Voronar
философией и эстетикой Node.js?
  1. сделать действие (чтение файла, ответ на запрос , et cetera)
  2. вызвать callback (мы же не блокируем поток, да)
  3. ????????????
  4. PROFIT
Ответить с цитированием
  #3 (permalink)  
Старый 20.02.2013, 15:06
Аспирант
Отправить личное сообщение для Voronar Посмотреть профиль Найти все сообщения от Voronar
 
Регистрация: 15.02.2013
Сообщений: 55

melky,
Спасибо, конечно, за отзыв, но получилось не очень исчерпывающе.
Ответить с цитированием
  #4 (permalink)  
Старый 20.02.2013, 18:14
Аватар для deivan
Профессор
Отправить личное сообщение для deivan Посмотреть профиль Найти все сообщения от deivan
 
Регистрация: 02.08.2012
Сообщений: 293

файлы слеует использовать только в крайнем случае. работа с файловой системой напрямую весьма тормозит процесс обработки.
для начала, на понимание процесса - отдавайте страницу прямо в теле запроса, например:
function onRequest(request, response)
{
        response.writeHead(200, {'Content-Type': 'text/html'});
        response.write("<html><body>"+
                       "<h1>Hello world!</h1></body></html>");
        response.end();

}
Ответить с цитированием
  #5 (permalink)  
Старый 20.02.2013, 19:03
Аспирант
Отправить личное сообщение для Voronar Посмотреть профиль Найти все сообщения от Voronar
 
Регистрация: 15.02.2013
Сообщений: 55

Понимаю. А если у меня получается большой код, на несколько html- файлов? То как быть? Разбивать весь код на блоки? Но ведь ответ от сервера все равно посылается с помощью response и получается, что моя callback-функция onRequest будет забита всем этим кодом? Вот это меня смущает.
Ответить с цитированием
  #6 (permalink)  
Старый 21.02.2013, 00:52
Аспирант
Отправить личное сообщение для Voronar Посмотреть профиль Найти все сообщения от Voronar
 
Регистрация: 15.02.2013
Сообщений: 55

Дзен-трансгуманист,
Спасибо за разъяснение. Мысль понял.
Вот только все бы это увидеть на живом примере. Хотя бы что-то похожее найти. В Вашей практики что-нибудь подобное встречалось?
Ответить с цитированием
  #7 (permalink)  
Старый 21.02.2013, 00:56
Аспирант
Отправить личное сообщение для Voronar Посмотреть профиль Найти все сообщения от Voronar
 
Регистрация: 15.02.2013
Сообщений: 55

Поймите меня правильно, я не прошу получить готовую реализацию своей задачи, я хочу за что-нибудь зацепиться, за что-нибудь в виде рабочего кода.)
Ответить с цитированием
  #8 (permalink)  
Старый 21.02.2013, 11:52
Аватар для keen
Профессор
Отправить личное сообщение для keen Посмотреть профиль Найти все сообщения от keen
 
Регистрация: 28.03.2012
Сообщений: 376

вы что, про шаблонизаторы не слышали??

куда удобнее всё сделать в таком виде:
app.get('/', function (req, res) {
    res.render('index', { data: somedata, list: somelist });
});

а сам шаблон -
<html>
...
<body>
{% if data == 'somevalue' %}
    <ul>
    {% for x in list %}
        <li>x.field</li>
    {% endfor %}
    </ul>
{% else %}
    <p>nothing to display</p>
{% endif %}
...
</body>
</html>
Ответить с цитированием
  #9 (permalink)  
Старый 21.02.2013, 18:39
Аспирант
Отправить личное сообщение для Voronar Посмотреть профиль Найти все сообщения от Voronar
 
Регистрация: 15.02.2013
Сообщений: 55

keen,
Спасибо, попробую в этом разобраться.
Ответить с цитированием
  #10 (permalink)  
Старый 21.02.2013, 18:45
Аватар для keen
Профессор
Отправить личное сообщение для keen Посмотреть профиль Найти все сообщения от keen
 
Регистрация: 28.03.2012
Сообщений: 376

Voronar,
удачи. ты спрашивай, если что.
пушто "вручную" fs'ом читать файл, заполнять http-заголовки и как-то пытаться редактировать на лету - это такой жуткий отстой, как.. как фильмы с адамом сэндлером
кстати, шаблон страницы, который я привёл выше, написан по синтаксису swig'а (https://github.com/paularmstrong/swig)
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
загрузка файлов node.js или php? faraday Общие вопросы Javascript 4 21.12.2013 23:09
Востребованность разработчиков на Node.js danik.js AJAX и COMET 7 08.12.2012 22:49
Разработчик Node.js в США (Сиэтл) Akvelon Работа 0 29.08.2012 10:47
Javascript-разработчик (ExtJS, node.js), 50 000 - 80 000, СПб IrinaS Работа 0 03.04.2012 20:40
Node.js Kolyaj Серверные языки и технологии 49 24.05.2010 22:29