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

в 2:40, , рубрики: diy или сделай сам, javascript, markup, node.js, wiki, метки: , , ,

image

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

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

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

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

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

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

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

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

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

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

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

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

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

Автор: Alex_At_Net

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js