Иногда очень важно представлять структуру своего кода и держать под контролем целые блоки. Библиотека js2flowchart.js призвана улучшить восприятия для программиста.
Описание плагина
Представьте себе библиотеку, которая берет любой код JS и генерирует из него потоковую диаграмму SVG, работает на клиенте и сервере. Позволяет легко настроить схему стилей для контекста или продемонстрировать логику кода с разных уровней абстракции. Подсветка, разрушение целых блоков, пользовательские модификаторы для ваших нужд и т. д.
Что делает js2flowchart?
js2flowchart принимает код JS и возвращает SVG блок-схему, работает на клиенте / сервере, поддержка ES6.
Основные особенности:
- определенные уровни абстракций для визуализации импорта / экспорта, классов / имен функций, зависимостей функций для изучения / объяснения кода шаг за шагом.
- пользовательские уровни абстракций, создайте свой собственный
- модификатор деструктора для замены блока кода одной фигурой на схеме
- поддержка пользовательских модификаторов дерева потоков
- дерево потока игнорирует фильтр, чтобы полностью опустить некоторые узлы кода, т. е. строки логов
- узел фокуса или вся ветвь логики кода для того чтобы выделить важный раздел на схеме
- определенные стили темы
- поддержка пользовательских тем
- поддержка пользовательских цветов и стилей обеспечивает удобный API для изменения определенных стилей без шаблона
Вариант использования:
- объяснять/документировать код блок-схемы
- изучение кода другого пользователя с помощью визуального понимания
- создайте блок-схемы для любого процесса, просто описанного допустимым синтаксисом JS
Примеры использования
/**
* Доступ к API, когда js2flowchart вводится в HTML-страницу
*/
const {convertCodeToFlowTree, convertFlowTreeToSvg} = window.js2flowchart;
/**
* или импорт из node_modules
*/
import {convertCodeToFlowTree, convertFlowTreeToSvg} from 'js2flowchart';//way 1
import * as js2flowchart from 'js2flowchart';//way 2
По-умолчанию. Вот функция кода для классического случая Бинарного поиска:
const code = `function indexSearch(list, element) {
let currentIndex,
currentElement,
minIndex = 0,
maxIndex = list.length - 1;
while (minIndex <= maxIndex) {
currentIndex = Math.floor(minIndex + maxIndex) / 2;
currentElement = list[currentIndex];
if (currentElement === element) {
return currentIndex;
}
if (currentElement < element) {
minIndex = currentIndex + 1;
}
if (currentElement > element) {
maxIndex = currentIndex - 1;
}
}
return -1;
}`;
Преобразуем его в SVG (самый простой способ):
const svg = js2flowchart.convertCodeToSvg(code);

