- PVSM.RU - https://www.pvsm.ru -
BaasCMS — это JavaScript CMS, использующая в качестве бэкенда популярных провайдеров BaaS [1]. На данный момент поддерживается только Parse.com [2].
Исходный код BaasCMS [3] доступен на GitHub.
BaasCMS Demo на GitHub Pages [4]
Тоже самое BaasCMS Demo на Tumblr [5]
Можно посмотреть Админ-панель [6] для этого демо (изменения/добавление запрещены). В соответвующую форму на главной странице админки нужно вставить следующие ключи:
Для начала работы с BaasCMS нужно пройти следующие шаги:
После сохранения ключей можно начать работать с админкой.
В BaasCMS вводятся сущности категория, паттерн и айтем. Каждой категории можно присвоить заранее созданный паттерн. Если категория имеет паттерн, то в рамках этой категории можно создавать айтемы с полями, которые определенны в паттерне.
Например, вы можете создать паттерн под названием Article с полями name типа text, photo типа google drive image и body типа textarea, а затем создать категорию под названием Блог и в соответвующем select выбрать паттерн Article. Теперь в эту категорию можно добавлять айтемы с полями name, photo и body.
Для начала кастомизации фронтфейса вашего приложения воспользуйтесь болванкой baascms.parse.html [10]:
Parse.initialize('YOUR-APPLICATION-ID-HERE', 'YOUR-JAVASCRIPT-KEY-HERE');
и впишите туда свои ключи.Если у вас нету своего
Tumblr в качестве
HTML-шаблоны в BaasCMS выглядят примерно так:
<script id="template-baascms-categories-wrap" type="text/template"> <ul> <%= htmlElements %> </ul> </script>
В качестве шаблонизатора используется Underscore.js-функция template [16].
Правила, по которым именуются id шаблонов, покажу на примере. Для категорий по умолчанию используются шаблоны со следующими id:
Для айтемов по умолчанию используются id:
Если вам нужно создать особенные шаблоны для айтемов определенного паттерна, например Article, то создайте шаблоны со следующими ниже id и CMS автоматом их подхватит:
Для доступа к данным и рендеринга используются виджеты. Существует шесть виджетов на данный момент:
Все виджеты, кроме Main, наследуют от класса BaasCMS.Widget, у которого есть следующие опции:
{ elementSelector: '', // jquery селектор для контейнера куда рендерить template: '', // шаблон для одиночных элементов, например "template-baascms-items-element" или "template-baascms-item" templateWrap: '', // шаблон для окружающего элементы html, например "template-baascms-items-wrap" autoLoad: true, // если true, то автоматически делает ajax-запрос и рендерит в контейнер cache: 'yes', // кешировать запрос к серверу или нет соответсвенно select: null, // массив с полями, которые нужно запросить where: {}, // условия запроса beforeQuery: function() {}, // соответствующие коллбэки afterQuery: function() {}, beforeRender: function() {}, afterRender: function() {} }
Например, нам нужно вывести все айтемы паттерна Product, у которых поле sale равно yes:
<div id="sale"></div> <script> new BaasCMS.widgets.Items({ elementSelector: '#sale', template: 'template-product-sale-element', templateWrap: 'template-product-sale-wrap', patternName: 'Product', cache: 'yes', select: ['name', 'category_id', 'cost', 'preview'], where: { sale: 'yes' } }); </script>
Виджет Main выводит данные в зависимости от hash URL, используя библиотеку PathJS [17]. В виджет вшиты два роута: '#/baascms/category/:cid(/page/:page)(/sort/:sort)'
и '#/baascms/category/:cid/item/:iid'
. Первый для подробного вывода одной категории или списка айтемов, второй для подробного вывода айтема. В зависимости от роута, виджет Main подключает соответствующий виджет из списка выше.
В исходном коде BaasCMS Demo [18] можно посмотреть примеры использования виджетов.
Так же исходный код js-приложения Админ-панели [19] может послужить хорошим примером, как работать с виджетами и не мешать js-код с html.
Адаптер — это класс-прослойка для работы с провайдером BaaS. Все запросы к серверу происходят опосредовано через инстанс этого класса (исходный код адаптера для Parse.com [20]). Таким образом можно написать адаптер для любого сервиса или даже для своего бэкенда. Название адаптера передается в параметрах инициализации CMS:
BaasCMS.init({ baas: 'Parse' });
Еще предстоит написать тесты и толковую документацию, но уже сейчас можно посмотреть что да как, оценить перспективы. Если вас заинтересовал проект, можете поучавствовать в его развитии на GitHub [3]. Баги и вопросы можно отправлять на baascms@gmail.com.
Автор: Artod
Источник [21]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/javascript/68235
Ссылки в тексте:
[1] BaaS: http://en.wikipedia.org/wiki/Backend_as_a_service
[2] Parse.com: https://parse.com/
[3] Исходный код BaasCMS: https://github.com/Artod/baascms
[4] BaasCMS Demo на GitHub Pages: https://artod.github.io/baascms/demo/#/
[5] BaasCMS Demo на Tumblr: http://baascms.tumblr.com/#/
[6] Админ-панель: https://artod.github.io/baascms/admin/parse/#/
[7] Parse.com: https://www.parse.com/#signup
[8] новое приложение: https://www.parse.com/apps/new
[9] Админ-панели BaasCMS: https://artod.github.io/baascms/admin/parse/#
[10] baascms.parse.html: https://github.com/Artod/baascms/blob/master/baascms.parse.html
[11] хостинг: https://www.reg.ru/?rlink=reflink-717
[12] GitHub Pages: https://pages.github.com/
[13] Tumblr: https://www.tumblr.com/dashboard
[14] Tumblr: https://www.tumblr.com/register
[15] создайте новый блог: https://www.tumblr.com/new/blog
[16] template: http://underscorejs.org/#template
[17] PathJS: http://mtrpcic.github.io/pathjs/
[18] исходном коде BaasCMS Demo: https://github.com/Artod/artod.github.io/blob/master/baascms/demo/index.html
[19] исходный код js-приложения Админ-панели: https://github.com/Artod/artod.github.io/blob/master/baascms/admin/baascms-admin.js
[20] исходный код адаптера для Parse.com: https://github.com/Artod/baascms/blob/master/src/baascms-adapter-parse.js
[21] Источник: http://habrahabr.ru/post/234409/
Нажмите здесь для печати.