Как мне создать файл .js, содержащий все мои шаблоны .html в Express & Node.js? - PullRequest
0 голосов
/ 22 марта 2011

Я использую шаблоны jquery как на стороне сервера, так и на стороне клиента.Я использую модули jqtpl и express в Node.js для сервера, и у меня есть jquery и его плагин шаблона для клиента.

По возможности клиент получает JSON вместо html и создает сам шаблон., используя API истории HTML5, чтобы изменить URL и разрешить навигацию по сеансу.Если это невозможно, сервер вместо этого выполняет шаблонизацию и отправляет html.

И сервер, и клиент имеют одинаковые шаблоны, но сервер имеет их в виде 12 файлов HTML иу клиента они есть в виде объекта в файле .js.

Каждый раз, когда я меняю или добавляю шаблон, я должен изменить файл клиента .js на один и тот же, что немногоболь.

Я хотел бы, чтобы файл .js динамически брал все файлы .html из папки шаблонов и компилировал их в объект.Как только я закончу разработку, этот файл будет кэширован, так как больше не нужно искать изменения.

Ответы [ 2 ]

0 голосов
/ 26 мая 2011

Я искал модуль файловой системы Node:

http://nodejs.org/docs/v0.4.8/api/fs.html

Я использовал fs.readdir, чтобы найти все файлы шаблонов в папке, затем перебрал массивкоторый производит чтение всех содержащих его файлов.

var templates = {};
fs.readdir("./templates", function(err, files) {
    for(var i = 0, len = files.length; i<len; i++) {
        fs.readFile("./templates/" + files[i], function (err, data) {
            if (err) {
                throw err
            }
            templates[files[i]] = data;
        });
    }
}

А затем в экспрессе:

app.get("/templates.js", function(req, res){
    res.header("Content-Type", "text/javascript");
    res.end("var templates = { " + JSON.stringify(templates) + " }; ");
});

Однако я обнаружил, что серверные шаблоны лучше подходили для моих нужд, игде это уместно, теперь я отправляю визуализированный HTML в своих ответах JSON, а не просто данные.

0 голосов
/ 30 марта 2011

Не уверен, что это ответ на ваш вопрос, но если вы заинтересованы в том, чтобы один и тот же шаблонный код и на клиенте, и на сервере, вам стоит взглянуть на weld , который позволит вам использовать один и тот жекод на клиенте и сервере.

Не могли бы вы быть немного более ясным о том, что вы делаете в отношении 12 файлов html против 1 объекта на клиенте?

Примеры кода будут качаться, если это возможно.

...