Как использовать HTML-шаблоны в CouchDB
Я искал везде, пытаясь понять это. Я пытаюсь сгенерировать HTML-страницы из функций couchdb show и list. Я хотел бы использовать шаблонное решение underscore.js. Часть, на которой я застреваю, - это как включить HTML-шаблоны в мои функции показа и списка.
Где я могу их хранить? Как вложения? А затем, как я могу ссылаться на них в моих функциях show и list. Я предполагаю, что макросы! Json и! Code не используются, и я не могу понять, как использовать require() из обычного js для этого.
Любая помощь потрясет!
Спасибо!
Дополнительная информация: я использую Kanso для продвижения своих приложений, а не CouchApp.
2 ответа
Я не знаком с Kanso, но до CouchDB 1.1 функции просмотра / показа и т. Д. В CouchDB не могли ничего включать. (Инструмент CouchApp имел свой собственный !include
обходные пути для решения этой проблемы.) Это больше не нужно. CouchDB 1.1 добавил поддержку CommonJS.
Шаблоны и библиотеки должны быть частью проектной документации. Вы можете получить доступ к необработанным значениям (в виде строки), ссылаясь на this.some_key
; или загрузить их через CommonJS, выполнив require("some_key")
,
Например:
exports.example_view = {
map: function (doc) {
// this must be placed *inside* the map function
var example = require('views/lib/example');
if (doc.num) {
emit(doc._id, example.fn());
}
}
};
( Совместное использование кода между представлениями)
Для рендеринга шаблонов на стороне сервера вам необходимо закодировать их в виде строки и потребовать их так же, как вам нужны другие библиотеки JavaScript. (Для рендеринга на стороне браузера работает вложение через AJAX.)
Вложения CouchDB по определению недоступны в функциях show и list.
Показать и перечислить функции поддерживают CommonJS. Так что вам просто нужно включить любые библиотеки в дизайн документа.
{ "_id": "_design/example"
, "say_hi": "module.exports = function(person) { return 'Hello, ' + person }"
, "shows":
{ "hello": "function(doc, req) { var hi = require('say_hi'); return hi(req.query.me) }"
}
}
Эта точка зрения будет выглядеть так
GET /my_db/_design/example/_show/hello?me=Jason
HTTP/1.1 200 OK
Server: CouchDB/1.2.0 (Erlang OTP/R15B)
Date: Fri, 06 Apr 2012 11:02:33 GMT
Content-Type: text/plain; charset=utf-8
Content-Length: 12
Hello, Jason