Задать вопрос
@Leesandra

Какие существуют варианты frontend для node.js?

Существуют js-фреймворки (angular, backbone и т.д. ) которые общаются с сервером по средствам ajax запросов, получая от сервера json с данными, а затем выводя эти данные в браузере. При этом страница генерируется на стороне клиента непосредственно самом браузере. С этим я вроде разобралась. Но возникло несколько вопросов:
1) Всегда ли сервер ноды передает данные в формате json?
2) Может ли сервер ноды вернуть сгенерированную страницу, как например php сервер?
3) Если это возможно, то где об этом почитать и как это выглядит?
  • Вопрос задан
  • 288 просмотров
Подписаться 3 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 4
Rou1997
@Rou1997
1) Всегда ли сервер ноды передает данные в формате json?

Конечно, нет.

2) Может ли сервер ноды вернуть сгенерированную страницу, как например php сервер?

Вы имеете в виду вообще без AJAX, или с AJAX, но ответ в формате HTML?
Можно и то, и другое.
Ответ написан
Комментировать
k12th
@k12th
console.log(`You're pulling my leg, right?`);
1) Всегда ли сервер ноды передает данные в формате json?
Нет, в чем захотите, в том и передаст.

2) Может ли сервер ноды вернуть сгенерированную страницу, как например php сервер?
Может. html, json, yaml, xml — все, что хотите, все, что нужно.

3) Если это возможно, то где об этом почитать и как это выглядит?
Вкратце, обычно выглядит как-то так: res.render('path/to/view', someData) или res.json(someData) (при использовании express, что, кстати говоря, совершенно необязательно). Почитать можно в любом туториале начального уровня по любому веб-фреймворку (больше всего материалов по express)
Ответ написан
Комментировать
@sergeystepanov1988
В express это делается примерно так:
var express = require('express');
var path = require('path');

var appDir = path.dirname(require.main.filename);
var router = express.Router();

router.get('/', (req, res, next) => {
    var mainView = path.resolve(appDir, 'views', 'index.html');
    if(mainView){
        res.sendFile(mainView);
    } else {
        next();
    }
});

Это если отдавать просто html. Если нужно сначала прогнать через шаблонизатор, то примерно так:
var express = require('express');
var router = express.Router();
var mongoose = require('mongoose');
var Article = mongoose.model('Article');

module.exports = function (app) {
    app.use('/', router);
};

router.get('/', function (req, res, next) {
    Article.find(function (err, articles) {
        if (err) return next(err);
        res.render('index', {
            title: 'Home page',
            articles: articles
        });
    });
});
Ответ написан
Комментировать
@OlegLustenko
Почитать, посмотреть тут: Илья Кантор: Node.js Скринкаст
Нода умеет тоже самое что и php сервер
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы