ืืฉื ืชืืื ืืืืจืื ืืช ืืชืขืกืงืชื ืืืชืจ ืืชืืขืื. ืืชืืืช ืืงืกื ืืกืืจ ืขื ืืืคื ืืคืขืืื ืฉื ืืขืจืืช ืื ืื ืืืจืช ืืื ืืืจื ืืื ืื ืคืฉืืื. ืฆืืืจ ืืืืืจืื ืฉืชืฆืื ืืช ืื ืืืืืืืงืืื ืืืจืืืืื ืืืช ืืงืฉืจืื ืืื ืืืืืืืงืืื ืืืื ืืื ืื ืื ืงื.
ืืื ืืืืื ืืืขืืืชื ืืืืชืจ ืืื ืฉืืืจื ืขื ืืชืืขืื ืืื ืืขืืืื. ืืืืงืกื ืืืื ืืกืืจ, ืืื ืืชืจืฉืืืื... ืื... ืื ืืชืืขืื ืืงืืื, ืืืืืจ. ืืคืืจืื html, ืื ืืืงืกื ืืืืื ืืชืืื ืืช gif/jpeg/png, ืืืฆืืืืช ืืืขืฉื ืืช ืืืืืืจืืืช. ืืืืืืจืืืช ืืฆืืืจืืช ืืชืืื ืืืช ืฉืื ืืช ืืืื Visio ืื ืฉืืจืืชืื ืืงืืื ืื a la draw.io. ืืืืจ ืืื ืืชื ืืืืฆื ืืช ืืชืจืฉืื ืืคืืจืื ืืจืคื ืืืฆืจืฃ ืืืชื ื-html. ืื ืคืฉืื.
ืื ืืืขืื?
ืืชืืื ืืืช ืืืจื ืืื ืคืฉืืืืช. ืืืชืจ ืืืืง, ืื ืืืื ืืกืืื. ืื, ืืกืคืจ ืืืืืืืงืืื ืืื ืชืจืืกืจ ืื ืฉื ืืื, ืืกืคืจ ืืืืืืจืื ืืื ืืขืจื. ืืชืืกืคืช ืืชืืืืช, ืืื ืืืขืืืื. ืืคืฉืจ ืืชืืจ ืชืืื ืืืช ืคืฉืืืืช ืืืืืื, ืืื ืืืจืืืืช ืืื, ืืืื... (ื) "ืื ืื ืืืื ื, ืืืื ื." ืืฉื ื ืชืืื ืืืช ืจืืืช, ืืฉ ืืืฆืข ืืื ืฉืื ืืืื ืืขืช ืืขืช, ืืคืืืืืืช, ืืืืืจ. ืื ืืืื, ืื ืื ืขืืงืืื ืืืจ ืืคืืชืื ืฉื ืืืืฆืจืื ืฉืื ื.
ืืชื ืืืื ืืืืืืข ืืช ื-html ืฉื ืืฉืืจืืช. ื ืืกืืช ืืช ืื?
ืื ืืื. ืืืืืื, ืื ื ืืืื ืืช ืืืจืคืืงื ืฉื gliffy.com. ืืื ืืื ืืืฆืข ืฉืื ืืืื, ืืชื ืฆืจืื ืืืืช ืืฉืืจืืช ืฉื ืฆื ืฉืืืฉื ืืืขืจืื ืฉื. ืืงืฉื ืืืชืจ ืืืืฆืื ืชืืงืื ืื ืืขืืืช.
ืื ืืขืฉืืช?
ืืืืจืื ื ื ืชืงืืชื ืืืืืจ ื-Github ืืืืืฆืืช
ืืื, ืื ื ืืืชื ืชืืขืื ืื ืืืืจื ื-html. ืืืจื ืืื, ืชืืขืื ืืื ืงืืืฆื ืฉื ืงืืฆืื ืขื ืืงืกื ืกืืืื, ืืฉืจ ืืืืจ ืืืืจ ืืื ืืืชืจ ืชืืขืื ืืื ืขื ืืื ืื ืืข ืืืฉืื, โโืืืฉื Wintersmith. ืื ืืขืจืืช ืืืงื.
ืื ืืืฆื ืืืื ื ืื: ืืชืื ื ืืช ืืืงืกื, ืืื ืชื ืืกืงืจืืคื ื ืคืชื ืืืชืืืจ ืื ืงืื JS ืฉื ืืกืืื.
ืื ืื ืืกืืจ ืฉืื?
ืืืืชื ืืช ืืืืืจ ืืื, ืืื ืื ืื ืืืืืื ืืืืืื ืฉืื ืืฆืืืจืื ืืืืืจืื ืืืืฆืขืืช ืงืื ืื ืืืฆืื ืืงืกื. (ืืกืืฃ ืืืืืจ ืืืื ืงืืฉืืจืื ืืคืจืืืงืืื ืืืืืจืื ืฉืืืงืชื ืืืืื ืขื โโืืืืืจืืช ืื ืืฉื ืืงืื).
ืืื ื ืื ืืืืื ืฉืขืืจื ืืช ืืชืืขืื. ืืคืขืืื ืื ืขืืืชืื ืชืืจืืื - ืืชืงื ืืืื, ืืฉื ืืช ืชืืืืจ, ืืืื ืืก ืชืืื ืืช ืืืฉืืช.
ืืื, ืืืืชื ืจืืฆื ืืจืืืช ืืช ืืชืจืฉืื ืืคืืจืื ืืงืกื ืงืจืื ืืืืื ืฉืื ืืืจืืฉ ืขืงืืืช ืืืืื ืืจืืื. ืืืืงืืืืช ืืกืืืืื ืืชื ืืืื ืืคืืื ืคืฉืื ืืืขืชืืง-ืืืืง ืืื ืืืจื ืืืกืคืช ืืขืื ืืืฉ.
ืืขืืืช ืืืจ ืฆืืื ืฉืงืื ืืื, ืืืืื, ืืื, ืืื ืื ืืชื ืืฉืชืืฉ ืืืื ื, ืืื ืืืื ืืืืืช ืืืื ืงืคืื ื ืืืงืกืคืจืกืืื.
ืืื, ื ืืกืืชื ืืืืืื ืืช ืืืืืืจืื ืืงืืืฆื ืฉื ืืกืคืจ ืืขืจืืื ืงืื ืื ืืืชืืจืื ืฆืืชืื, ืืืืืจืื, ืงืืืฆืืช ืฉื ืฆืืชืื, ืืื ืื ืืช ืืืงืืื ืฉื ืฆืืชืื. ืืฆื, ืืขื ืืืช ืืขืชื, ืื ื ืื, ืื ืื, ืืืืื, ืืืขื ืืืฆืืข...
ืืื ืื ืชืจืฉืื ืืืขืจื?
- ืื ืฆืืืช ืืชืืืจ ืขื ืืื ืืืื ืฉืืืื ืืช ืืฆืืืช ืืืืคื ืืืืืื.
- ื ืืชื ืื ืืืืกืืฃ ืกืื ืืฆืืืช ืืืืืกืืฃ ืืืชืื.
- ืืชื ืืืื ืืฆืืื ืงืฉืจ ืืื ืฉื ื ืฆืืชืื.
- ืืชืงืฉืืจืช ืืชืจืฉืื, ืืชื ืืืื ืืืืืืจ ืืช ืืฆืืข ืืืืืชืื.
- ืืืืื ืืชืงืฉืืจืช ืืืืืจ ืืืงืืจ ืืืขื. ืืืืงืืจ ืืืืืจื ืืกืืื ืื ืขื ืืื ืืืื ืฆืืืช.
- ื ืืชื ืืืืกืืฃ ืฆืืชืื ืืื ืื ืืืชืจ ืืงืืืฆื.
- ื ืืชื ืื ืืฆืืื ืืช ืืงืฉืจ ืื ืืืงืืืฆื ืืื ืืงืืืฆื.
ืืืืฆืขืืช ืืืืืื ืืคืฉืืืื ืืืื, ืื ื ืืงืืืื ืืช ืืืืืืจืื ืืืื. ืจึทืง? ืึทื.
ืืื ืืชืืืจ ืขื ืืื ืงืื js ืืื. ืืขืืงืจ ืืื ืืื ืืืืืืงื ืืืืื ืืื. ืืื ืืฆืืื ืื ืฆืืชืื - ืฆืืชืื, ืงืฆืืืช - ืืืืืจืื.
const elements = {
nodes: [ // ะพะฟะธััะฒะฐะตะผ ัะทะปั
{ id: 'client', type: 'smartphone', label: 'Mobile App'},
{ id: 'server', type: 'server', label: 'Main Server'},
{ id: 'db1', type: 'database', label: 'DB 1'},
{ id: 'db2', type: 'database', label: 'DB 2'},
],
edges: [ // ัะบะฐะทัะฒะฐะตะผ ัะฒัะทะธ
{ source: 'client', target: 'server', label: 'request' },
{ source: 'server', target: 'db1', label: 'request' },
{ source: 'server', target: 'db2', label: 'request' },
],
};
Diagram('scheme1', elements);
ืืืืื, ืื ืืืฆืืชื ืืช ืฆืืืจ ืืืขืื ืืขืฆืื, ืืื ืืฉืชืืฉืชื ืืกืคืจืืื
ืืืงืื, ืื ืืืืื ืคืฉืืื. ืืื ืื ืืืื ืืืืืช ืืืชืจ ืืกืืื?
ืื ืืืงืฉื. ืืฆืืื ืขืืืืช ืื ื ืืฉืชืืฉืื ืืขืืืืช, ืืฆืืื ืงืืืฆืืช ืื ื ืืฆืืื ืื ืจืฉืืื ืฉื ืงืืืฆืืช ืืงืืืฆืืช, ืืืืืื ืืื ืขืฆืื ืืฉ ืชืืื ื ืงืืืฆืชืืช.
ืืื ืืงืื:
<div id="scheme5" style="height:500px;width:800px;"></div>
<script>
const elements5 = {
groups: [
{ id: 'g1', label: 'ะััะฟะฟะฐ ัะตัะฒะธัะพะฒ 1'},
{ id: 'g2', label: 'ะััะฟะฟะฐ ัะตัะฒะธัะพะฒ 2'},
],
nodes: [
{ id: 'man1', type: 'person', label: 'ะงะตะปะพะฒะตะบ'},
{ id: 'client', type: 'smartphone', label: 'ะกะผะฐัััะพะฝ'},
{ id: 'agent-backend', type: 'server', group: 'g1', label: 'agent-backend'},
{ id: 'web', type: 'server', group: 'g1', label: 'ะัะธะปะพะถะตะฝะธะต admin'},
{ id: 'www', type: 'server', group: 'g1', label: 'ัััะฐะฝะธัะฐ ะทะฐะณััะทะบะธ'},
{ id: 'mongodb1', type: 'database', group: 'g1', label: 'Mongo DB 1'},
{ id: 'mongodb2', type: 'database', group: 'g1', label: 'Mongo DB 2'},
{ id: 'runner-integration1', type: 'worker', group: 'g1', label: 'ะพัะฟัะฐะฒะบะฐ'},
{ id: 'runner-integration2', type: 'worker', group: 'g1', label: 'ะพัะฟัะฐะฒะบะฐ'},
{ id: 'api', type: 'server', group: 'g1', label: 'API'},
{ id: 'server2', type: 'server', group:'g2', label: 'ัะตัะฒะตั'},
{ id: 'otherServer', type: 'server', group:'g2', label: 'ัะตัะฒะตั'},
{ id: 'firebase', type: 'cloud', label: 'Google Firebase'},
],
edges: [
{ source: 'client', target: 'agent-backend', label: 'json', color: 'red' },
{ source: 'agent-backend', target: 'mongodb1', color: 'red' },
{ source: 'agent-backend', target: 'mongodb2', color: 'red' },
{ source: 'mongodb1', target: 'runner-integration1', label: 'ะดะฐะฝะฝัะต' },
{ source: 'mongodb2', target: 'runner-integration2', label: 'ะดะฐะฝะฝัะต' },
{ source: 'mongodb1', target: 'web', label: 'ะดะฐะฝะฝัะต ะดะปั ะพัะพะฑัะฐะถะตะฝะธั' },
{ source: 'runner-integration1', target: 'server2', label: 'ะดะฐะฝะฝัะต' },
{ source: 'runner-integration2', target: 'otherServer', label: 'ะดะฐะฝะฝัะต' },
{ source: 'api', target: 'firebase', label: 'ะทะฐะฟัะพัั', color: 'blue', },
{ source: 'firebase', target: 'client', label: 'push', color: 'blue'},
{ source: 'server2', target: 'api', label: 'ัะฒะตะดะพะผะปะตะฝะธั', color: 'blue'},
{ source: 'man1', target: 'client', },
],
positions: [
{ id: 'client', row: 2, col: 1,},
{ id: 'agent-backend', row: 2, col: 3,},
{ id: 'web', row: 6, col: 3,},
{ id: 'www', row: 1, col: 3,},
{ id: 'mongodb1', row: 1, col: 4,},
{ id: 'mongodb2', row: 2, col: 5,},
{ id: 'runner-integration1', row: 3, col: 3,},
{ id: 'runner-integration2', row: 4, col: 3,},
{ id: 'api', row: 5, col: 3,},
{ id: 'server2', row: 6, col: 7,},
{ id: 'otherServer', row: 4, col: 7,},
{ id: 'firebase', row: 5, col: 1,},
{ id: 'logger', row: 2, col: 7,},
{ id: 'crm', row: 5, col: 8,},
],
};
Diagram('scheme5', elements5, {layout: 'grid'});
</script>
ืืฆื ืืื, ืกืืื ืืื ืืื ืืืขื ืืื ืืกืื ืงืื ืืืืฉื ื ืืื, ืืฆื ืฉื ื, ืืืื ื a la json ืืืคืฉืจ ืื ืืืื ืืช ืื ืื ืชืื ืื ืืื ืืืืื, ืืืืืจืืช ืืชืืื ืืืขืชืืง-ืืืืง.
ืืืืข ืืืืงืืื ืขืืืืช ืื ืคืจื ืืฆืืชืื?
ืื ืืืชืจ ื ืื. ืจืืฉืืช ืื ื ืืฆืืื ืื ืฆืืชืื. ืืืืจ ืืื ื ืืื ืืฆืืื ืืื ืงืืืฆืืช ืืืฆืืื ืืืชื ืืฆืืชืื. ืืืืจ ืืื ืื ื ืืืืขืืื ืืช ืืืืืืจืื. ืืจืง ืื, ืืืฉืจ ืืืืืืืงืืื ืืขืืงืจืืื ืืืงืฉืจืื ืืื ืืื ื ืืฆืืื ืฉื, ืื ื ืืืงืืื ืขื ืขืฆืื ื ืืช ืืืงืืื ืฉื ืืืืืืืงืืื ืืืื ืืชืจืฉืื. ืื ืืืคื.
ืืคืฉืจ ืืื ืขืืืืช?
ืืคืฉืจ ืืื ืขืืืืช. ืืื ืื ืืืื ืงืฆืช ืืงืืื; ืืชื ืืืื ืืจืืืช ืืช ืืืคืฉืจืืช ืืื ืืืืืืืืช. ืื ื ืืืข ืืืขืืืื ืฉืืฉ ืืืืืจืืชื ืืืืงืื ืืฆืืชืื ืขืืืจ ืฆืืืืกืงืืืค
ื ืืชื ืืฆืืื ืืืงืืืื ืื ืืกืื ืื ืกืคืื ืช ืืงืจื. ืึธืึตื. ืฆืืืช ืืื ืืืืงื ื-a1, ืืืฉื ื ื-d5. ืื ืขืืืจ ืืืืืื ืฉืฆืืืืกืงืืืค ืืืคื ืืช ืืืืืืืงืืื ืขื ืืื ืื ืืืืื, ืืืืืจ. ืื ืื ื ืืืืืื ืืืืื ืืืชื, ืืจืืืช ืืคืฉืจืืืืช ืคืจืืกื ืฉืื ืืช, ืืื ืืชืงื ืืช ืกืืืืจ ืืืืื ืืื ืฉืื ืื ื ืืืืืื ืืงืื.
ืืืืคื ืืืื, ืื ืืืื. ืืคืฉืจ ืื ืื ืกืืช?
ืืืืื, ืืื ืืืฆืืจ ืืืืืจืืช ืืขืืืื, ืขืฉืืชื ืืขืฆืื ืงืื
ื ืืกืืช ืืช ืื? ืืขืช ืชืืื ืืืืกืืฃ ืืืชื ืืืฃ ืฉืื.
ืืื ืฉืื:
1. ืืืืืจ ืืชืกืจืื
<script src="https://unpkg.com/@antirek/[email protected]/dist/code-full.min.js"></script>
2. ืืืกืฃ ืงืื ื-html
<div id="scheme1" style="height:300px;width:800px;"></div>
<script>
const elements = {
nodes: [
{ id: 'client', type: 'smartphone', label: 'Mobile App'},
{ id: 'server', type: 'server', label: 'Main Server'},
{ id: 'db1', type: 'database', label: 'DB 1'},
{ id: 'db2', type: 'database', label: 'DB 2'},
],
edges: [
{ source: 'client', target: 'server', label: 'request' },
{ source: 'server', target: 'db1', label: 'request' },
{ source: 'server', target: 'db2', label: 'request' },
],
};
Diagram('scheme1', elements);
</script>
3. ืื ืื ื ืขืืจืืื ืืช ืืงืื ืืชืจืฉืื ืฉืื ืื ื ืฆืจืืืื (ืื ื ืืืฉื ืฉืื ืงื ืืืชืจ ืืืฉืจ ืืฆืืืจ ืื ืฉืืฃ :)
ืคืจืืื ื ืืกืคืื ื
ืืชืืฆืื?
ืืฉืืชื ืืช ืืืืจืืช ืฉืื - ืืืืกืืฃ ืืืืืจืืืช ืืืืืขืืช ืืชืืขืื, ืืคืืจืื ืื ืคืฉืื ืืืืื. ืื ืื ืืชืืื ืืืขืืื ืขื, ืืื ืืืขืืืื ืงืื ืื ืฉืืกืืืจืื ืืช ืืื ื ืืืืืืจืื ืื ืืกืืจ ืืืืจ. ืืชื ืชืืื ืืืื ืืฆืืื ืืืฉื ืืช ืืฉืื ืืืืืจืืช ืืืืจื ืืื. ืื, ืืขืืืชืื ืืืืืื ืืชืงื ืืฉืื ืืจืฆืืฃ ืืขืฆืื, ืืคืืืช ืืืชืืืื ืืืคืฆืื, ืืื ืืืฉืจื ืืืืืืช))
ืื ื ืืชื ืืฉืคืจ?
ืืฉ ืืื, ืืืืื, ืืจืื ืืคืฉืจืืืืช. ืืืกืฃ ืืืืงืื ืื ื ืืกืคืื (ืื ืืงืืืืื ืืชืืืกืคืื ืืฉืืจื ืืกืงืจืืคื). ืืืจ ืงืืืฆื ืืงืกืคืจืกืืืืช ืืืชืจ ืฉื ืกืืืื. ืืคืฉืจ ืืฆืืื ืืช ืกืื ืื ืงื ืืืืืืจ. ืืืกืฃ ืชืืื ืช ืจืงืข.
ืื ืืชื ืืืฉื?
ืืฉ ืื ืืืจ ืืื ืจืขืืื ืืช ืืืืฉืื ืื ืืฉืืื, ืืชื ืืืื ืื ืืืืกืืฃ ืืช ืฉืื ืืชืืืืืช.
ืืคืชืจืื ืฉืื ืืืืื ืืฉืื ืืืืื ืฆืจ ืฉื ืืขืืืช, ืืืืื ืชืืฆื ืืื ื ืื ืืืชืจ ืืฆืืืจ ืืืืืจืืืช ืขื ืืื ืงืืืื ืคืฉืื - ืืื ืฉืืืืจืื 'ืืจืื ืื ืืช ืืืืืืจืื ืฉืื ืืงืื'
ืืืืจ ืืื ืฉืืจืืช ื ืืืจ (9 ืกืืืื ืฉื ืขืืจื ืชืจืฉืืืื ืืงืืื ืื)ืืืืื, mermaid.js - ืืื ืืชื ืืืื ืืืืืจืืืช ืกืืคืจ ืืคืืจืืืช ืืืืจืืืืช, ืื ืืชื ืืืืื ืชืชืคืขื ืืืคืจืืืงื ืืื:
go.drawthe.net
ืืงืืจ: www.habr.com