ื“ื™ืื’ืจืžืช ืจืฉืช ื›ืงื•ื“ / ื“ื™ืื’ืจืžืช ืจืฉืช ื›ืงื•ื“

ื‘ืฉื ืชื™ื™ื ื”ืื—ืจื•ื ื•ืช ื”ืชืขืกืงืชื™ ื™ื•ืชืจ ื‘ืชื™ืขื•ื“. ื›ืชื™ื‘ืช ื˜ืงืกื˜ ื”ืกื‘ืจ ืขืœ ืื•ืคืŸ ื”ืคืขื•ืœื” ืฉืœ ืžืขืจื›ืช ื–ื• ืื• ืื—ืจืช ื”ื™ื ื‘ื“ืจืš ื›ืœืœ ื“ื™ ืคืฉื•ื˜ื”. ืฆื™ื•ืจ ื“ื™ืื’ืจืžื” ืฉืชืฆื™ื’ ืืช ื›ืœ ื”ืื•ื‘ื™ื™ืงื˜ื™ื ื”ืžืจื›ื–ื™ื™ื ื•ืืช ื”ืงืฉืจื™ื ื‘ื™ืŸ ื”ืื•ื‘ื™ื™ืงื˜ื™ื ื”ืœืœื• ื”ื•ื ื’ื ื“ื™ ืงืœ.

ืื‘ืœ ื”ื”ื™ื‘ื˜ ื”ื‘ืขื™ื™ืชื™ ื‘ื™ื•ืชืจ ื”ื•ื ืฉืžื™ืจื” ืขืœ ื”ืชื™ืขื•ื“ ื”ื–ื” ืžืขื•ื“ื›ืŸ. ื•ื”ื˜ืงืกื˜ ื™ื”ื™ื” ื‘ืกื“ืจ, ืื‘ืœ ื”ืชืจืฉื™ืžื™ื... ื›ื™... ื›ืœ ื”ืชื™ืขื•ื“ ืžืงื•ื•ืŸ, ื›ืœื•ืžืจ. ื‘ืคื•ืจืžื˜ html, ืื– ื”ื˜ืงืกื˜ ืžืœื•ื•ื” ื‘ืชืžื•ื ื•ืช gif/jpeg/png, ื”ืžืฆื™ื’ื•ืช ืœืžืขืฉื” ืืช ื”ื“ื™ืื’ืจืžื•ืช. ื•ื“ื™ืื’ืจืžื•ืช ืžืฆื•ื™ืจื•ืช ื‘ืชื•ื›ื ื™ื•ืช ืฉื•ื ื•ืช ื›ื’ื•ืŸ Visio ืื• ืฉื™ืจื•ืชื™ื ืžืงื•ื•ื ื™ื a la draw.io. ืœืื—ืจ ืžื›ืŸ ืืชื” ืžื™ื™ืฆื ืืช ื”ืชืจืฉื™ื ืœืคื•ืจืžื˜ ื’ืจืคื™ ื•ืžืฆืจืฃ ืื•ืชื• ืœ-html. ื–ื” ืคืฉื•ื˜.

ืžื” ื”ื‘ืขื™ื”?

ื”ืชื•ื›ื ื™ื•ืช ื‘ื“ืจืš ื›ืœืœ ืคืฉื•ื˜ื•ืช. ืœื™ืชืจ ื“ื™ื•ืง, ืœื ืžืื•ื“ ืžืกื•ื‘ืš. ื›ืŸ, ืžืกืคืจ ื”ืื•ื‘ื™ื™ืงื˜ื™ื ื”ื•ื ืชืจื™ืกืจ ืื• ืฉื ื™ื™ื, ืžืกืคืจ ื”ื—ื™ื‘ื•ืจื™ื ื–ื”ื” ื‘ืขืจืš. ื‘ืชื•ืกืคืช ื—ืชื™ืžื•ืช, ื›ืžื” ื™ื™ืขื•ื“ื™ื. ืืคืฉืจ ืœืชืืจ ืชื•ื›ื ื™ื•ืช ืคืฉื•ื˜ื•ืช ื‘ืžื™ืœื™ื, ืื‘ืœ ืžื•ืจื›ื‘ื•ืช ืžื“ื™, ืื”ืžืž... (ื’) "ื”ื ืœื ื™ื‘ื™ื ื•, ืื“ื•ื ื™." ื™ืฉื ืŸ ืชื•ื›ื ื™ื•ืช ืจื‘ื•ืช, ื™ืฉ ืœื‘ืฆืข ื‘ื”ืŸ ืฉื™ื ื•ื™ื™ื ืžืขืช ืœืขืช, ืืคื™ื–ื•ื“ื™ืช, ื›ืœื•ืžืจ. ื›ืœ ื”ื–ืžืŸ, ื›ื™ ื”ื ืขื•ืงื‘ื™ื ืื—ืจ ื”ืคื™ืชื•ื— ืฉืœ ื”ืžื•ืฆืจื™ื ืฉืœื ื•.

ืืชื” ื™ื›ื•ืœ ืœื”ื˜ืžื™ืข ืืช ื”-html ืฉืœ ื”ืฉื™ืจื•ืช. ื ื™ืกื™ืช ืืช ื–ื”?

ื›ืŸ ื‘ื˜ื—. ืœื“ื•ื’ืžื”, ืื ื™ ืื•ื”ื‘ ืืช ื”ื’ืจืคื™ืงื” ืฉืœ gliffy.com. ืื‘ืœ ื›ื“ื™ ืœื‘ืฆืข ืฉื™ื ื•ื™ื™ื, ืืชื” ืฆืจื™ืš ืœืœื›ืช ืœืฉื™ืจื•ืช ืฉืœ ืฆื“ ืฉืœื™ืฉื™ ื•ืœืขืจื•ืš ืฉื. ื•ืงืฉื” ื™ื•ืชืจ ืœื”ืืฆื™ืœ ืชื™ืงื•ื ื™ื ืœืขืžื™ืช.

ืžื” ืœืขืฉื•ืช?

ืœืื—ืจื•ื ื” ื ืชืงืœืชื™ ื‘ืžืื’ืจ ื‘-Github ื‘ื”ืžืœืฆื•ืช github.com/RaoulMeyer/diagram-as-code. ืชืจืฉื™ื ื›ืงื•ื“. ื”ึธื”ึตืŸ. ืื ื• ืžืชืืจื™ื ืืช ื”ืžืขื’ืœ ืฉืื ื• ืฆืจื™ื›ื™ื ื‘-js. ืื ื• ื›ื•ืชื‘ื™ื ืืช ื”-js ื”ื–ื” ื™ืฉื™ืจื•ืช ื‘ืื•ืชื• html ืฉื‘ื• ื ืžืฆื ื˜ืงืกื˜ ื”ืชื™ืขื•ื“ ื”ืื—ืจ.

ืื’ื‘, ืื ื™ ื›ื•ืชื‘ ืชื™ืขื•ื“ ืœื ืœื’ืžืจื™ ื‘-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);

ื›ืžื•ื‘ืŸ, ืœื ื”ืžืฆืืชื™ ืืช ืฆื™ื•ืจ ื”ืžืขื’ืœ ื‘ืขืฆืžื™, ืืœื ื”ืฉืชืžืฉืชื™ ื‘ืกืคืจื™ื™ื” cytoscape.js ื”ื•ื ื›ืœื™ ื”ื“ืžื™ื” ื—ื–ืง ืžืื•ื“. ืื ื™ ืžืฉืชืžืฉ ืจืง ื‘ื—ืœืง ืžื”ืืคืฉืจื•ื™ื•ืช ื‘ืคืชืจื•ืŸ ืฉืœื™. 

ืื•ืงื™ื™, ื–ื• ื“ื•ื’ืžื” ืคืฉื•ื˜ื”. ื”ืื ื–ื” ื™ื›ื•ืœ ืœื”ื™ื•ืช ื™ื•ืชืจ ืžืกื•ื‘ืš?

ื›ืŸ ื‘ื‘ืงืฉื”. ืœืฆื™ื•ืŸ ืขืžื“ื•ืช ืื ื• ืžืฉืชืžืฉื™ื ื‘ืขืžื“ื•ืช, ืœืฆื™ื•ืŸ ืงื‘ื•ืฆื•ืช ืื ื• ืžืฆื™ื™ื ื™ื ืจืฉื™ืžื” ืฉืœ ืงื‘ื•ืฆื•ืช ื‘ืงื‘ื•ืฆื•ืช, ื•ืœืืœืžื ื˜ื™ื ืขืฆืžื ื™ืฉ ืชื›ื•ื ื” ืงื‘ื•ืฆืชื™ืช.

ื“ื™ืื’ืจืžืช ืจืฉืช ื›ืงื•ื“ / ื“ื™ืื’ืจืžืช ืจืฉืช ื›ืงื•ื“

ื•ื–ื” ื”ืงื•ื“:

<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 ืžืืคืฉืจ ืœืš ืœืžืœื ืืช ื›ืœ ื”ื ืชื•ื ื™ื ื‘ืื ืœื•ื’ื™ื”, ื‘ืžื”ื™ืจื•ืช ื•ืชื•ื›ืœ ืœื”ืขืชื™ืง-ื”ื“ื‘ืง.

ืžื“ื•ืข ืžืžื•ืงืžื™ื ืขืžื“ื•ืช ื‘ื ืคืจื“ ืžืฆืžืชื™ื?

ื–ื” ื™ื•ืชืจ ื ื•ื—. ืจืืฉื™ืช ืื ื• ืžืฆื™ื™ื ื™ื ืฆืžืชื™ื. ืœืื—ืจ ืžื›ืŸ ื ื•ื›ืœ ืœืฆื™ื™ืŸ ื›ืžื” ืงื‘ื•ืฆื•ืช ื•ืœืฆื™ื™ืŸ ืื•ืชืŸ ื‘ืฆืžืชื™ื. ืœืื—ืจ ืžื›ืŸ ืื ื• ืžื™ื™ืขื“ื™ื ืืช ื”ื—ื™ื‘ื•ืจื™ื. ื•ืจืง ืื–, ื›ืืฉืจ ื”ืื•ื‘ื™ื™ืงื˜ื™ื ื”ืขื™ืงืจื™ื™ื ื•ื”ืงืฉืจื™ื ื‘ื™ื ื™ื”ื ื ืžืฆืื™ื ืฉื, ืื ื• ืœื•ืงื—ื™ื ืขืœ ืขืฆืžื ื• ืืช ืžื™ืงื•ืžื ืฉืœ ื”ืื•ื‘ื™ื™ืงื˜ื™ื ื”ืœืœื• ื‘ืชืจืฉื™ื. ืื• ืœื”ืคืš.

ืืคืฉืจ ื‘ืœื™ ืขืžื“ื•ืช?

ืืคืฉืจ ื‘ืœื™ ืขืžื“ื•ืช. ืื‘ืœ ื–ื” ื™ื”ื™ื” ืงืฆืช ืžืงื•ืžื˜; ืืชื” ื™ื›ื•ืœ ืœืจืื•ืช ืืช ื”ืืคืฉืจื•ืช ื”ื–ื• ื‘ื“ื•ื’ืžืื•ืช. ื–ื” ื ื•ื‘ืข ืžื”ืขื•ื‘ื“ื” ืฉื™ืฉ ืืœื’ื•ืจื™ืชื ืœืžื™ืงื•ื ื”ืฆืžืชื™ื ืขื‘ื•ืจ ืฆื™ื˜ื•ืกืงื™ื™ืค fcose, ืฉืœื•ืงื— ื‘ื—ืฉื‘ื•ืŸ ื’ื ื ื•ื›ื—ื•ืช ืฉืœ ืงื‘ื•ืฆื•ืช. ืฆื™ื•ืŸ ืžื™ืงื•ืžื™ื ื”ื•ืคืš ืืช ื”ื“ื™ืื’ืจืžื” ืœื ื™ืชื ืช ืœืฉืœื™ื˜ื”, ืืš ื‘ืฉืœื‘ ื”ื˜ื™ื•ื˜ื” ื”ืจืืฉื•ื ื” ืฉืœ ื”ืชืจืฉื™ื ืืคืฉืจ ืœืœื ืžื™ืงื•ืžื™ื.

ื ื™ืชืŸ ืœืฆื™ื™ืŸ ืžื™ืงื•ืžื™ื ื’ื ื‘ืกื’ื ื•ืŸ ืกืคื™ื ืช ื”ืงืจื‘. ื”ึธื”ึตืŸ. ืฆื•ืžืช ืื—ื“ ืžืžื•ืงื ื‘-a1, ื•ื”ืฉื ื™ ื‘-d5. ื–ื” ืขื•ื–ืจ ื‘ืžื™ื•ื—ื“ ืฉืฆื™ื˜ื•ืกืงื™ื™ืค ื”ื•ืคืš ืืช ื”ืื•ื‘ื™ื™ืงื˜ื™ื ืขืœ ื”ื‘ื“ ืœื ื™ื™ื“ื™ื, ื›ืœื•ืžืจ. ืื ื—ื ื• ื™ื›ื•ืœื™ื ืœื”ื–ื™ื– ืื•ืชื, ืœืจืื•ืช ืืคืฉืจื•ื™ื•ืช ืคืจื™ืกื” ืฉื•ื ื•ืช, ื•ืื– ืœืชืงืŸ ืืช ืกื™ื“ื•ืจ ื”ืืœืžื ื˜ื™ื ืฉืื ื—ื ื• ืื•ื”ื‘ื™ื ื‘ืงื•ื“.

ื‘ืื•ืคืŸ ื›ืœืœื™, ื–ื” ืžื•ื‘ืŸ. ืืคืฉืจ ื’ื ืœื ืกื•ืช?
 
ื›ืžื•ื‘ืŸ, ื›ื“ื™ ืœื™ืฆื•ืจ ื‘ืžื”ื™ืจื•ืช ืžืขื’ืœื™ื, ืขืฉื™ืชื™ ืœืขืฆืžื™ ืงื˜ืŸ ั€ะตะดะฐะบั‚ะพั€, ืฉื‘ืขืฆืžื• ืžืขื“ื›ืŸ ืืช ื”ืกื›ื™ืžื” ื•ืžืื—ืกืŸ ืืช ื”ื’ืจืกื” ื”ืขื“ื›ื ื™ืช ื‘ื™ื•ืชืจ ื‘ื“ืคื“ืคืŸ (ื‘-localStorage).

ื ื™ืกื™ืช ืืช ื–ื”? ื›ืขืช ืชื•ื›ืœ ืœื”ื•ืกื™ืฃ ืื•ืชื• ืœื“ืฃ ืฉืœืš.

ื•ืื– ืฉื•ื‘:

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. ืื ื—ื ื• ืขื•ืจื›ื™ื ืืช ื”ืงื•ื“ ืœืชืจืฉื™ื ืฉืื ื—ื ื• ืฆืจื™ื›ื™ื (ืื ื™ ื—ื•ืฉื‘ ืฉื–ื” ืงืœ ื™ื•ืชืจ ืžืืฉืจ ืœืฆื™ื™ืจ ื™ื ืฉื•ืฃ :)

ืคืจื˜ื™ื ื ื•ืกืคื™ื ื‘ ืขืžื•ื“ ื”ืคืจื•ื™ืงื˜ ื‘-github.

ื”ืชื•ืฆืื”?

ื”ืฉื’ืชื™ ืืช ื”ืžื˜ืจื•ืช ืฉืœื™ - ืœื”ื•ืกื™ืฃ ื“ื™ืื’ืจืžื•ืช ืžื•ื˜ื‘ืขื•ืช ืœืชื™ืขื•ื“, ื”ืคื•ืจืžื˜ ื“ื™ ืคืฉื•ื˜ ื•ืžื•ื‘ืŸ. ื–ื” ืœื ืžืชืื™ื ืœืžืขื’ืœื™ ืขืœ, ืื‘ืœ ืœืžืขื’ืœื™ื ืงื˜ื ื™ื ืฉืžืกื‘ื™ืจื™ื ืืช ืžื‘ื ื” ื”ื—ื™ื‘ื•ืจื™ื ื–ื” ื‘ืกื“ืจ ื’ืžื•ืจ. ืืชื” ืชืžื™ื“ ื™ื›ื•ืœ ืœืฆื‘ื•ื˜ ื•ืœืฉื ื•ืช ืžืฉื”ื• ื‘ืžื”ื™ืจื•ืช ืœืื•ืจืš ื–ืžืŸ. ื›ืŸ, ื•ืขืžื™ืชื™ื ื™ื›ื•ืœื™ื ืœืชืงืŸ ืžืฉื”ื• ื‘ืจืฆื™ืฃ ื‘ืขืฆืžื, ืœืคื—ื•ืช ื›ื™ืชื•ื‘ื™ื ืœื—ืคืฆื™ื, ืœืœื ื”ื›ืฉืจื” ืžื™ื•ื—ื“ืช))

ืžื” ื ื™ืชืŸ ืœืฉืคืจ?

ื™ืฉ ื›ืืŸ, ื›ืžื•ื‘ืŸ, ื”ืจื‘ื” ืืคืฉืจื•ื™ื•ืช. ื”ื•ืกืฃ ืื™ื™ืงื•ื ื™ื ื ื•ืกืคื™ื (ื›ืœ ื”ืงื™ื™ืžื™ื ืžืชื•ื•ืกืคื™ื ื‘ืฉื•ืจื” ืœืกืงืจื™ืคื˜). ื‘ื—ืจ ืงื‘ื•ืฆื” ืืงืกืคืจืกื™ื‘ื™ืช ื™ื•ืชืจ ืฉืœ ืกืžืœื™ื. ืืคืฉืจ ืœืฆื™ื™ืŸ ืืช ืกื’ื ื•ืŸ ืงื• ื”ื—ื™ื‘ื•ืจ. ื”ื•ืกืฃ ืชืžื•ื ืช ืจืงืข.

ืžื” ืืชื” ื—ื•ืฉื‘?
 
ื™ืฉ ืœื™ ื›ื‘ืจ ื›ืžื” ืจืขื™ื•ื ื•ืช ืœื™ื™ืฉื•ื ื‘ื ื•ืฉืื™ื, ืืชื” ื™ื›ื•ืœ ื’ื ืœื”ื•ืกื™ืฃ ืืช ืฉืœืš ื‘ืชื’ื•ื‘ื•ืช.

ื”ืคืชืจื•ืŸ ืฉืœื™ ื‘ื”ื—ืœื˜ ื™ืฉื™ื ื‘ื˜ื•ื•ื— ืฆืจ ืฉืœ ื‘ืขื™ื•ืช, ื•ืื•ืœื™ ืชืžืฆื ื›ืœื™ ื ื•ื— ื™ื•ืชืจ ืœืฆื™ื•ืจ ื“ื™ืื’ืจืžื•ืช ืขืœ ื™ื“ื™ ืงื™ื“ื•ื“ ืคืฉื•ื˜ - ื›ืžื• ืฉืื•ืžืจื™ื 'ื”ืจืื” ืœื™ ืืช ื”ื“ื™ืื’ืจืžื” ืฉืœืš ื›ืงื•ื“'

  1. ืžื‘ื—ืจ ื˜ื•ื‘
  2. ืฉื™ืจื•ืช ื ื”ื“ืจ (9 ืกื•ื’ื™ื ืฉืœ ืขื•ืจืš ืชืจืฉื™ืžื™ื ืžืงื•ื•ื ื™ื)
  3. ื›ืžื•ื‘ืŸ, mermaid.js
  4. ื•ืื ืืชื” ืื•ื”ื‘ ื“ื™ืื’ืจืžื•ืช ืกื•ืคืจ ืžืคื•ืจื˜ื•ืช ื•ืžื•ืจื›ื‘ื•ืช, ืื– ืืชื” ื‘ื”ื—ืœื˜ ืชืชืคืขืœ ืžื”ืคืจื•ื™ืงื˜ ื”ื–ื”: go.drawthe.net

ืžืงื•ืจ: www.habr.com

ื”ื•ืกืคืช ืชื’ื•ื‘ื”