- PVSM.RU - https://www.pvsm.ru -

ivy-wiki — идеальная wiki для разработчика

image

Когда смотришь на обилие CMS систем [1], то кажется, что не существует такой деятельности в сети, для которой не существовало бы сопутствующего Web-приложения. Для некоторых же областей количество приложений просто зашкаливает — для совместного редактирования документов (WIKI) их больше двух десятков [2]. Выбирай и пользуйся. Наверняка что-нибудь хорошее найдешь.

Ну, в общем, у меня не получилось.

Причем запросы то у меня не очень и большие: нормальная история изменений, поддержка сторонних редакторов, простая установка, известный язык разметки, удобная расширяемость, отсутствие (да, именно отсутствие) wysiwyg, эффективный поиск. Конечно, хотелось бы еще возможности добавлять комментарии в коде в такой же разметке и интеграции с существующими системами, но это уже из области фантастики. Но даже мои скромные требования, как оказалось, ни одна из рассмотренных мной CMS не поддерживала. Более-менее хорошо себя показала связка Confluence+FishEye, но какая-то она уж очень монстрообразная для индивидуального использования. Кроме того, в Confluence убрали разметку [3] в четвертой версии, что грустно.

В общем, пришлось браться за работу самому. С самого начала было понятно, что в одиночку разработку большой системы не потянуть, поэтому все надо делать очень просто и по максимуму использовать существующие технологии:

  • Редактировать текст нужно в текстовом редакторе, а не в ущербной textarea в окошке браузера.
  • База не нужна, хранить статьи можно и на файловой системе. Кроме того, открывать статьи в текстовом редакторе так проще.
  • Для ведения истории, пользователей и тому подобного есть системы контроля версий. Например, git.
  • Для дизайна сгодится и bootstrap [4].
  • Файлы к статьям очень просто добавлять переписыванием в соответствующую директорию. Удобно и быстро. На сервер выкладывать push-ем.
  • Искать очень удобно поиском по файлам в Total Commander (даже регулярные выражения поддерживаются).
  • Язык разметки — какой-нибудь известный. Что-то наподобие Confluence/GWiki подойдет.

Что касается деталей реализации, то:

  • Базовая технология — node.js (express.js). Модно, быстро, стильно. Один язык на клиенте и сервере. Кстати, избавляет от необходимости ставить отдельный Web-сервер.
  • Движок разметки [5] можно использовать на сервере и на клиенте (в том числе и минифицированную версию).
  • В движке разметки разделены этапы разбора текста в объектную модель и формирование HTML из объектной модели.
  • Создание плагинов очень простое [6] — не сильно сложнее создания функции.
  • Стабильность функциональности поддерживается тестами (на данный момент 111 штук [7]), для статического анализа используется JSHint.
  • Простой настраиваемый сервер отдающий файлы и конвертирующий разметку в HTML содержит примерно 220 строк [8] (без учета движка разметки).

Я использую чуть более сложный сервер на своем сайте и простой сервер для ведения локальной документации. Локальная документация представляет собой *.ivy файлы, раскиданные по разным директориям.

Простой сервер запускается примерно так:

cd c:pathtoprojectexamples
node simple-server.js --path=c: --plugin=code-plugin.js --plugin=html-plugin.js --template=simple-template.html

В корне диска лежит index.ivy со ссылками на другие проекты. В них все — от рецептов, до проектной документации. На мой взгляд — очень удобно.

Если вы заинтересовались, то исходный код, примеры использования, ответы на вопросы, и инструкцию по установке можно найти в репозитории проекта [5] на GitHub.

P.S. На КПДВ изображен плющ ирландский (Irish ivy [9]). Пока логотипа у проекта нет, его функцию выполняет эта картинка из Википедии, так что в процессе написания статьи ни один копирайт, как я думаю, не пострадал.

Автор: Alex_At_Net

Источник [10]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/javascript/36840

Ссылки в тексте:

[1] CMS систем: http://en.wikipedia.org/wiki/List_of_content_management_systems

[2] больше двух десятков: http://en.wikipedia.org/wiki/Comparison_of_wiki_software

[3] убрали разметку: http://blogs.atlassian.com/2011/11/why-we-removed-wiki-markup-editor-in-confluence-4/

[4] bootstrap: http://twitter.github.io/bootstrap/

[5] Движок разметки: https://github.com/AlexAtNet/ivy-markup

[6] очень простое: https://github.com/AlexAtNet/ivy-markup/blob/master/examples/html-plugin.js

[7] 111 штук: https://github.com/AlexAtNet/ivy-markup/tree/master/test

[8] 220 строк: https://github.com/AlexAtNet/ivy-markup/blob/master/examples/simple-server.js

[9] Irish ivy: http://en.wikipedia.org/wiki/Hedera_hibernica

[10] Источник: http://habrahabr.ru/post/183792/