- PVSM.RU - https://www.pvsm.ru -
Продолжаем разговор о CMS, которая написана на Javascript, полностью работает в браузере и сохраняет в облако. Теория была в предыдущей статье [1], а теперь — практика. Cделаем самую простую систему для статических сайтов — всего три кнопки и сотня строк на JS.
ТЗ:
Интерфейс:
Единственная проблема, которая стоит у нас на пути — это доступ к хранилищу Selectel из браузера через XmlHttpRequest в обход same-origin policy.
Само хранилище Selectel поддерживает CORS, но вот точка авторизации auth.selcdn.ru этим похвастаться не может. Засада! Нужно проксировать запрос через какой-нибудь сервер. На помощь приходит гениальная и недооцененная поделка Yahoo Tables [4], которая позволяет делать несложные JSONP-сервисы на смеси XML-разметки и Javascript. Наша «таблица» будет отправлять запрос авторизации через сервер Yahoo и в случае успеха возвращать ключ к хранилищу.
Выражаясь словами Yahoo Query Language (YQL), все элементарно:
USE 'http://cms.svsite.com/auth.selectel.xml' AS auth; /* подключили таблицу */
SELECT * FROM auth WHERE url='https://auth.selcdn.ru' AND user='пользователь' AND key='пароль';
Трафик идет по https, поэтому сойдет за безопасную авторизацию. Я доверяю Мариссе и NSA.
Код CMS может жить где угодно — например, в виде букмарклета или как расширение браузера. Я поселил его в том же Selectel. Теперь, чтобы «установить» CMS на сайт, достаточно загрузить на него html-страницу со ссылкой на наш 100-строчный Javascript. Чем не SaaS?
Итак, подведем итоги.
Наш технологический стек скушен до безобразия: HTML и jQuery на фронтэнде, хранилище Selectel и Yahoo Tables — бэкенд. Если auth.selcdn.ru начнет поддерживать CORS, то от последнего можно избавиться.
Интерфейс: три кнопки главного меню и CKEditor. Жить можно.
Код CMS доступен по адресу: cms.svsite.com/sv.js [5]
Демо: demo.svsite.com/admin.html [6] 3341_democms/VdmXrmKpZe
Важно! Кто последний сохранил — того и тапки. Обновления не всегда видно сразу (кеш CDN). В демо доступны все функции, поэтому будет работать пока кто-нибудь не сломает.
PS.
1. Это proof of concept.
2. Код открыт — send a patch or shut up.
3. Спасибо yuhenobi [7] за рассказ про Selectel Storage.
Автор: surething
Источник [8]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/javascript/39504
Ссылки в тексте:
[1] предыдущей статье: http://habrahabr.ru/post/186342/
[2] Хостинг: https://www.reg.ru/?rlink=reflink-717
[3] Selectel: http://storage.selectel.ru/
[4] Yahoo Tables: http://developer.yahoo.com/yql/
[5] cms.svsite.com/sv.js: http://cms.svsite.com/sv.js
[6] demo.svsite.com/admin.html: http://demo.svsite.com/admin.html
[7] yuhenobi: http://habrahabr.ru/users/yuhenobi/
[8] Источник: http://habrahabr.ru/post/187862/
Нажмите здесь для печати.