CouchDB — есть ли альтернативы CouchApp?

Недавно я читал о CouchDB, и он мне ОЧЕНЬ нравится. Это кажется таким простым, но гибким, и я ЛЮБЛЮ интерфейс RESTful. Но давайте посмотрим правде в глаза — если вы не создаете SAP, вам нужно, чтобы ваше приложение обслуживало статический HTML с оптимизированными для SEO URL-адресами, а не постоянными HTTP-запросами. На самом деле я еще не использовал CouchDB ни в одном проекте, но очень хочу изучить его в ближайшем будущем.

Вопрос в том, как я могу использовать его для создания статического HTML-сайта, например, блога? Я хотел бы хранить все свои сообщения в блоге в CouchDB, а затем отображать их в формате HTML на основе категорий, тегов и даты. Если я правильно понимаю, я бы просто определил набор показов в своих проектных документах. Так, например, в дизайн-документе для всех сообщений в категории "Работа" я бы также добавил отдельную функцию для шаблона show. Однако у меня есть небольшая проблема с сохранением моего HTML внутри функции JavaScript внутри файла JSON! Это звучит супер-болезненно для поддержания. Я быстро просмотрел CouchApp, и, похоже, он решает эту проблему, но, похоже, он не находится в активной разработке, поэтому у меня вопрос о других возможных решениях.

Я хочу иметь возможность структурировать свой HTML/CSS/JS, как обычно, но использовать преимущества CouchDB, если это возможно, без какого-либо внешнего бэкенда. Или, что еще лучше, я бы ХОЧУ определить мои базы данных как файлы JSON, мои функции map как обычные файлы .js и поддерживать классическую структуру каталогов для всего остального, например :

db/data — содержит CouchDB

db/maps - здесь хранятся мои функции карты

public/ — содержит все остальное, включая JS, CSS и HTML, например:

public/css
public/js
public/categories.html
public/posts.html
public/index.html

и Т. Д.

Любые мысли о том, как я могу достичь этого? Или если это вообще возможно?

Дополнительный вопрос: не мог бы кто-нибудь объяснить, что такое функции reduce? Являются ли они SQL-эквивалентом функций sum и count? Когда бы я на самом деле использовал функцию сокращения? И когда мне нужно будет написать собственный?

Спасибо!


person goodpixels    schedule 26.07.2015    source источник


Ответы (3)


CouchDB — это БД, предназначенная для Интернета, это RESTful API из коробки, и именно поэтому CouchApps такие простые, быстрые в разработке и не нуждаются в бэкэнде, потому что CouchDB — это на самом деле ваш бэкенд.

Я знаю, что сложно поддерживать HTML, загруженный из CouchDB, это также дорого, поэтому способ, которым я создаю CouchApps, — это создание внешнего приложения с Backbone, управление всеми моими маршрутами (удобными URL-адресами), использование шаблонов (любая структура шаблонов, я использую простой requirejs !text), и разработайте приложение как обычный HTML/CSS/JS, делая Ajax-вызовы CouchDB Views (преобразовывая данные с помощью списков, поэтому просто возвращайте чистый JSON), и если я хочу, чтобы конкретный документ делал то же самое, только с Показывает, и я снова получаю данные JSON.

Итак, в конце концов, веб-приложение работает с RESTful API и интерпретирует эти данные, чтобы отображать их так, как вы хотите.

Затем вы отправили это приложение в CouchDB (теперь это приложение-коуч), поэтому CouchDB фактически обслуживает ваше приложение для конечного пользователя и API для вашего приложения.

Reduce: это мощный алгоритм, как вы говорите, он эквивалентен SQL sum и count, у вас есть такие же сокращения в CouchDB (_sum, _count, _stats). Я рекомендую вам прочитать эту ссылку, чтобы понять сокращение и повторное сокращение.

http://www.ramblingincode.com/building-a-couchdb-reduce-function/

person 7ictor    schedule 25.09.2015
comment
Спасибо за этот ответ. Я огляделся, и, похоже, нет хорошего объяснения внутренней работы CouchApp. У вас есть ссылки? Из того, что я понял (по частям), вы можете обслуживать страницу index.html из Couch, которая хранится как вложение. На этой странице вы можете делать AJAX-запросы к Couch views/lists/shows/etc?, а затем использовать их на этой единственной странице index.html. Это довольно мощно. Другие вопросы. Как сделать URL вложения более привлекательным? Как Couch обрабатывает дополнительные файлы и т.д. и т.п. - person Zach Smith; 23.03.2016

Также есть инструмент на основе nodejs, также называемый couchapp, который я предпочитаю. здесь. Он стабилен и закален в боях.

Поскольку, в конце концов, с помощью этого инструмента вы экспортируете модуль, который является дизайн-документом, вы можете создать любую структуру, которая вам нравится.

С небольшой умной настройкой со сценариями npm, включающими webpack и couchapp, вы можете написать свои представления в ES6 со стрелочными функциями, константами и прочим, транспилировать их в ES5, который понимает Greasemonky в CouchDB, и развернуть их в выбранной вами БД за один раз. -liner npm-script (очевидно, вы можете стать еще интереснее...)

person Radagast the Brown    schedule 09.08.2018