Node.js: как встроить Node.js в HTML? - PullRequest
15 голосов
/ 19 мая 2011

В php-файле я могу сделать:

<p><?php echo "hello!";?></p>

Есть ли способ сделать это в узле, если да, какова логика для этого?

У меня есть идея, как это можно сделать:

  • Использовать разметку идентификатора для узла в файле HTML, например: <node>code</node>

  • Загрузить и проанализировать HTML-файл в узле

  • Извлечь разметку узла из HTML-файла и запустить ее

Но яне уверен, что это лучший способ или даже если он работает:)

Обратите внимание, что я хочу выучить node.js, так что express и другие библиотеки и модули не являются ответами для меня, потому что я хочу знать,логика процесса.

Ответы [ 3 ]

18 голосов
/ 19 мая 2011

Что вы описываете / запрашиваете для препроцессора node.js. Он существует , но считается вредным.

Лучшим решением было бы использование представлений, используемых в экспрессе. Посмотрите на скринкасты .

Если вы должны делать все с нуля, тогда вы можете написать движок микро-шаблонов.

function render(_view, data) {
    var view = render.views[view];
    for (var key in data) {
        var value = data[key];
        view.replace("{{" + key + "}}", value);
    }
    return view;
}

render.views = {
    "someView": "<p>{{foo}}</p>"
};

http.createServer(function(req, res) {
    res.end(render("someView", {
        "foo": "bar" 
    }));
});

Существуют веские причины, по которым смешивать код php / asp / js напрямую с HTML плохо. Это не способствует разделению проблем и приводит к созданию кода для спагетти. В наши дни стандартным методом является создание шаблонов двигателей, подобных приведенному выше.

Хотите узнать больше о микро-шаблонах? Прочтите статью Дж. Резига .

4 голосов
/ 12 декабря 2012

Вы можете попробовать использовать JooDee, веб-сервер узла, который позволяет встраивать серверный javascript в ваши веб-страницы.Если вы знакомы с Node и PHP / ASP, создание страниц очень просто.Вот пример того, как выглядит страница ниже:

<!DOCTYPE html>
<html>
<:  //server side code in here
    var os = require('os');
    var hostname = os.hostname();
:>
<body>
    <div>Your hostname is <::hostname:></div>
</body>
</html>

Использование JooDee также позволяет без особых усилий предоставлять клиенту переменные javascript сервера, прикрепляя атрибуты к стороне сервера объекта «Клиент» и получая доступсгенерированный объект «Клиент» в вашем клиентском JavaScript.

https://github.com/BigIroh/JooDee

1 голос
/ 07 июня 2011

Используйте шаблонизатор.С терминала

npm install ejs

В коде:

var ejs = require('ejs');

var options = {
  locals: {
    foo: function() { return "bar"; }
  }
};

var template = "<p><%= foo() %></p>";
console.log(ejs.render(template, options));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...