uz
Feedback
ToCode

ToCode

Kanalga Telegramโ€™da oโ€˜tish

ื˜ื™ืคื™ื ืงืฆืจื™ื ืœืžืชื›ื ืชื™ื ืžืืช ื™ื ื•ืŸ ืคืจืง

Ko'proq ko'rsatish
1 419
Obunachilar
Ma'lumot yo'q24 soatlar
Ma'lumot yo'q7 kunlar
+130 kunlar
Postlar arxiv
ToCode
1 419
# ืฉืœื•ืฉื” ื ื›ืกื™ื ืฉืืชื ื™ื›ื•ืœื™ื ืœื‘ื ื•ืช ืœื‘ื“ ื•ื›ืžืขื˜ ื‘ื—ื™ื ื ืœืžืจื•ืช ืฉืื ื™ ืœื ืื•ื”ื‘ ืืช ื”ืกื’ื ื•ืŸ, ืื™ ืืคืฉืจ ืœื”ืชื•ื•ื›ื— ืขื ื”ืคืชื’ื ื”ื™ืฉืŸ ืฉืื•ืžืจ ืฉืขื“ื™ืฃ ืœืœืžื“ ื‘ืŸ ืื“ื ืœื“ื•ื’ ืžืืฉืจ ืœืชืช ืœื• ื“ื’. ื”ืžื™ื•ืžื ื•ืช ืœื”ืฉื™ื’ ืื•ื›ืœ ืžืืคืฉืจืช ืœื‘ืŸ ืื“ื ืœื”ืžืฉื™ืš ืœื”ืฉืชืžืฉ ื‘ื” ื›ื›ืœ ืฉื™ืจืฆื”. ื‘ืื•ืชื• ืื•ืคืŸ ืื ื—ื ื• ื—ื•ืฉื‘ื™ื ืขืœ ื”ื”ื‘ื“ืœ ื‘ื™ืŸ ื ื›ืกื™ื ืœื‘ื™ืŸ ื›ืกืฃ. ื”ื›ืกืฃ ืžืžืœื ืฆื•ืจืš ืžื™ื™ื“ื™ ื•ื”ื ื›ืก ื™ื›ื•ืœ ืœืขื–ื•ืจ ืœื ื• ืœื”ืจื•ื•ื™ื— ืขื•ื“ ื•ืขื•ื“ ื›ืกืฃ ืœืื•ืจืš ื–ืžืŸ. ื—ืœืง ืžื”ื ื›ืกื™ื ืฉืœ ื”ืขื•ืœื ื”ืžื•ื“ืจื ื™ ื”ื ืงืฉื™ื ืœื”ืฉื’ื” ื•ื™ืงืจื™ื: ื ื“ืœ"ืŸ, ืชื•ืืจ ืืงื“ืžื™ ืื• ืžื•ืชื’ ื—ื–ืง, ื›ื•ืœื ื™ื‘ื™ืื• ืขืจืš ืžืฉืžืขื•ืชื™ ืœื‘ืขืœื™ื ืฉืœื”ื ื•ื›ืœ ืื—ื“ ืžื”ื ื“ื•ืจืฉ ื”ืฉืงืขื” ืžืฉืžืขื•ืชื™ืช ื‘ื›ืกืฃ ื•ื‘ื–ืžืŸ ืœืคื ื™ ืฉืžืชื—ื™ืœื™ื ืœืจืื•ืช ืชื•ืฆืื•ืช. ืื‘ืœ ื”ืื™ื ื˜ืจื ื˜ ื•ื”ื›ืœื›ืœื” ื”ืžื•ื“ืจื ื™ืช ื™ื•ืฆืจื™ื ื’ื ืกื•ื’ ื—ื“ืฉ ืฉืœ ื ื›ืกื™ื, ื ื›ืกื™ื ืฉื“ื•ืจืฉื™ื ืžืขื˜ ืžืื•ื“ ื”ืฉืงืขื” ื›ืกืคื™ืช ื•ืฉื›ืœ ืื—ื“ ื™ื›ื•ืœ ืœื‘ื ื•ืช ืœื’ืžืจื™ ืœื‘ื“ ืžื”ื‘ื™ืช. ื”ื ื” ืฉืœื•ืฉ ื“ื•ื’ืžืื•ืช ืœื ื›ืกื™ื ื›ืืœื” ืฉืื•ืœื™ ืœื ื™ื”ืคื›ื• ืืชื›ื ืœืขืฉื™ืจื™ื ืื‘ืœ ื‘ื”ื—ืœื˜ ื™ืขื–ืจื• ืœื™ื™ืฆืจ ื—ื™ื™ื ื™ื•ืชืจ ื ื•ื—ื™ื: ## ืงืฉืจื™ื ืื—ื“ ื”ื‘ื™ื˜ื•ื™ื™ื ื”ื™ืคื™ื ืฉืฉืžืขืชื™ ื‘ื”ืงืฉืจ ื”ื–ื” ื”ื•ื Connection Economy ืฉื‘ื ืœื”ืกื‘ื™ืจ ืฉืงืฉืจื™ื ืขื ืื ืฉื™ื ืื—ืจื™ื ื”ืคื›ื• ืœื ื›ืก ื›ืœื›ืœื™ ืœื›ืœ ื“ื‘ืจ. ื‘ืขื•ืœื ื”ืื™ื ื˜ืจื ื˜ ืื ื—ื ื• ื™ื›ื•ืœื™ื ืœื™ืฆื•ืจ ืงืฉืจื™ื ืžืงืฆื•ืขื™ื™ื ื‘ืขืœื™ ืžืฉืžืขื•ืช ืขื ื›ืžื•ืช ืขืฆื•ืžื” ืฉืœ ืื ืฉื™ื, ื•ื”ืจื‘ื” ืคืขืžื™ื ืืคื™ืœื• ื‘ืœื™ ืœืคื’ื•ืฉ ืื•ืชื ืคื ื™ื ืืœ ืคื ื™ื. ืคื” ื‘ืืจืฅ ื”ืžืฆื‘ ืืคื™ืœื• ื™ื•ืชืจ ืžื•ืฆืœื— ื›ื™ ื”ืžืจื—ืงื™ื ืงื˜ื ื™ื ื•ื™ืฉ ื”ืจื‘ื” ืงื”ื™ืœื•ืช ื—ื–ืงื•ืช ืฉืžื™ื™ืฆืจื•ืช ืžืคื’ืฉื™ื ืคื™ื–ื™ื™ื ืœื—ื‘ืจื™ื. ืจื•ื‘ ื”ืื ืฉื™ื ืกื‘ื™ื‘ื›ื ืžื•ืงืคื™ื ื›ืœ ื”ื™ื•ื ื‘ืื™ื ืกื•ืฃ ืคื™ืจืกื•ืžื•ืช ื•ื›ื‘ืจ ื ื”ื™ื™ื ื• ืื˜ื•ืžื™ื ืœืจืขืฉ ืฉืœื”ืŸ. ืœืขื•ืžืช ื–ืืช ืจื•ื‘ื ื• ืฉืžื—ื™ื ืœืงื‘ืœ ื”ืžืœืฆื” ืžื—ื‘ืจ ืขืœ ืžื•ืฆืจ ืฉื”ื•ื ืื”ื‘ ืื• ืขืœ ื‘ืขืœ ืžืงืฆื•ืข ืฉืขื–ืจ ืœื•. ืกืคืฆื™ืคื™ืช ื‘ืขื•ืœื ื”ืคื™ืชื•ื—, ื‘ื ื™ื™ืช ืคืจื•ื™ืงื˜-ืฆื“ ืขื ืขื•ื“ ืื ืฉื™ื, ืžืคื’ืฉ ื‘ื›ื ืก ื•ื”ืขื‘ืจืช ื”ืจืฆืื”, ืื• ืืคื™ืœื• ืขื–ืจื” ื‘ืงื‘ื•ืฆืช ืคื™ื™ืกื‘ื•ืง ื™ื›ื•ืœื™ื ืœืขื–ื•ืจ ืœืื ืฉื™ื ืœื”ื›ื™ืจ ืืชื›ื ืžืงืฆื•ืขื™ืช. ื‘ืขืชื™ื“ ื›ืฉื”ื ื™ืฆื˜ืจื›ื• ื‘ืขืœ ืžืงืฆื•ืข ืื• ื™ื—ืคืฉื• ืœื’ื™ื™ืก ืขื•ื‘ื“ ืืชื ืชืงืคืฆื• ื‘ืจืืฉ ื”ืจืฉื™ืžื”. ื”ื“ืจืš ื”ื›ื™ ื˜ื•ื‘ื” ืœืคืชื— ืงืฉืจื™ื ื”ื™ื ืคืฉื•ื˜ ืœืขื–ื•ืจ ืžืงืฆื•ืขื™ืช ืœืื ืฉื™ื ื‘ื›ืœ ื”ื–ื“ืžื ื•ืช ืฉื™ืฉ ืœื›ื, ื•ืœื™ื™ืฆืจ ืขื•ื“ ื•ืขื•ื“ ื”ื–ื“ืžื ื•ื™ื•ืช ื›ืืœื” - ืื ื–ื” ืœืœื›ืช ืœื›ื ืกื™ื, ืœื”ืฆื˜ืจืฃ ืœืคื™ืชื•ื— ืฉืœ ืคืจื•ื™ืงื˜ ืงื•ื“ ืคืชื•ื— ืฉืงืจื•ื‘ ืœืœื‘ื›ื, ืœื”ืงื™ื ืžืขืจื›ืช ื‘ื”ืชื ื“ื‘ื•ืช ืฉืชืคืชื•ืจ ื‘ืขื™ื” ืœืืจื’ื•ืŸ ืฉืงืจื•ื‘ ืœืœื‘ื›ื, ืœืขื–ื•ืจ ื‘ืงื‘ื•ืฆื•ืช ืคื™ื™ืกื‘ื•ืง ื•ื˜ืœื’ืจื, ื‘ืงื™ืฆื•ืจ ืœื—ืคืฉ ื“ืจื›ื™ื ืœืขื‘ื•ื“ื” ืžืงืฆื•ืขื™ืช ืขื ืžืขื’ืœื™ื ืฉื•ื ื™ื ื•ืจื—ื‘ื™ื ืฉืœ ืื ืฉื™ื. ## ืžื™ื•ืžื ื•ืช ื˜ื›ื ื™ืช ืขื•ืœื ื”ืขื‘ื•ื“ื” ื”ื•ืคืš ื ื™ืฉืชื™ ื•ืžืงืฆื•ืขื™ ื™ื•ืชืจ ื•ื™ื•ืชืจ ื›ืœ ืฉื ื” ื•ื”ื“ืจื™ืฉื” ืœืžืคืชื—ื™ื ืžืงืฆื•ืขื™ื™ื ืจืง ื’ื“ืœื”. ื‘ืื•ืชื• ื–ืžืŸ ืื™ืŸ ืžืกืคื™ืง ืื ืฉื™ื ืฉืžื•ื›ื ื™ื ืœื”ืฉืงื™ืข ืžืกืคื™ืง ื‘ืคื™ืชื•ื— ื”ืžื™ื•ืžื ื•ืช ื”ืžืงืฆื•ืขื™ืช ืฉืœื”ื. ื›ืš ื ื•ืฆืจ ืžืฆื‘ ืฉืžืฆื“ ืื—ื“ ื™ืฉ ื”ืžื•ืŸ ื’'ื•ื ื™ื•ืจื™ื ืฉืžื—ืคืฉื™ื ืขื‘ื•ื“ื” ื‘ื”ื™ื™ื˜ืง ื•ืžืฆื“ ืฉื ื™ ื™ืฉ ื”ืžื•ืŸ ืžืฉืจื•ืช ืคื ื•ื™ื•ืช ืฉื—ื‘ืจื•ืช ืœื ืžืฆืœื™ื—ื•ืช ืœืื™ื™ืฉ ื›ื™ "ืื™ืŸ ืื ืฉื™ื ื˜ื•ื‘ื™ื". ืืคืฉืจ ืœื“ืžื™ื™ืŸ ืืช ืขื•ื‘ื“ื™ ื”ื”ื™ื™ื˜ืง ื”ืคื•ื˜ื ืฆื™ืืœื™ื ืžืกื•ื“ืจื™ื ื›ืคื™ืจืžื™ื“ื” ื›ืืฉืจ ื‘ืชื—ืชื™ืช ื”ืคื™ืจืžื™ื“ื” ืื ื—ื ื• ืžื•ืฆืื™ื ื’'ื•ื ื™ื•ืจื™ื ื•ืื ืฉื™ื ืœืœื ื ื™ืกื™ื•ืŸ ื•ื›ื›ืœ ืฉืขื•ืœื™ื ื‘ืจืžืช ื”ืžื™ื•ืžื ื•ืช ื™ืฉ ืคื—ื•ืช ืื ืฉื™ื ืžืชืื™ืžื™ื. ื”ืฉืงืขื” ื‘ืžื™ื•ืžื ื•ืช ื‘ืืžืฆืขื•ืช ืœื™ืžื•ื“ ืงื•ืจืก, ื‘ื™ืฆื•ืข ืคืจื•ื™ืงื˜-ืฆื“ ื‘ื˜ื›ื ื•ืœื•ื’ื™ื” ื—ื“ืฉื”, ื”ืฉืชืชืคื•ืช ื‘ืคืจื•ื™ืงื˜ ืงื•ื“-ืคืชื•ื— ืžืจื›ื–ื™ ื‘ืขื•ืœื ื”ืชื•ื›ืŸ ืฉืœื›ื, ื”ืชืžืงื“ื•ืช ื‘ืขื•ืœื ืชื•ื›ืŸ ืกืคืฆื™ืคื™ ื•ื”ื™ื›ืจื•ืช ืขื ื›ืœ ืžื” ืฉืงื•ืจื” ื‘ื• ืื• ื‘ื›ืœ ื“ืจืš ืื—ืจืช ืชืขื–ื•ืจ ืœื›ื ืœืขืœื•ืช ืฉืœื‘ื™ื ื‘ืคื™ืจืžื™ื“ื”. ืžื™ื•ืžื ื•ืช ื˜ื›ื ื™ืช ื”ื™ื ื ื›ืก, ื›ื™ ื”ื™ื ืชืืคืฉืจ ืœื›ื ืชืžื™ื“ ืœืžืฆื•ื ืขื‘ื•ื“ื” ื‘ืชื ืื™ื ืฉืžืชืื™ืžื™ื ืœื›ื. ## ื‘ื ื™ื™ืช ืคืจื•ื™ืงื˜ SaaS ืžื”ื‘ื™ืช ื ื›ืก ืฉืœื™ืฉื™ ืฉืืชื ื™ื›ื•ืœื™ื ืœื‘ื ื•ืช ืœื’ืžืจื™ ืœื‘ื“ (ืื‘ืœ ืœื“ืขืชื™ ื”ื•ื ื”ืงืฉื” ื‘ื™ื•ืชืจ) ื”ื•ื ืžืขืจื›ืช ืชื•ื›ื ื” ืฉืื ืฉื™ื ืื—ืจื™ื ื™ื”ื™ื• ืžื•ื›ื ื™ื ืœืฉืœื ืขืœื™ื”. ืืชื ืœื ืฆืจื™ื›ื™ื ืœื”ืชื—ืจื•ืช ื‘ื’ื•ื’ืœ ืื• ื‘ืคื™ื™ืกื‘ื•ืง, ืžืกืคื™ืง ืœื‘ื—ื•ืจ ื ื™ืฉื” ืฉืืฃ ื—ื‘ืจืช ืกื˜ืืจื˜-ืืค ืื• ืขื ืงื™ืช ื˜ื›ื ื•ืœื•ื’ื™ื” ืœื ืžืชืขื ื™ื™ื ืช ื‘ื”, ืœืคืชื•ืจ ืœืื ืฉื™ื ื‘ืขื™ื” ืกืคืฆื™ืคื™ืช ื•ืœื”ืฆื™ืข ืžื—ื™ืจ ืื˜ืจืงื˜ื™ื‘ื™. ื”ืกืคืจ Start Small Stay Small ืžืฆื™ืข ืžืกืœื•ืœ ื—ืฉื™ื‘ื” ืžืื•ื“ ื˜ื›ื ื™ ืœืคื™ืชื•ื— ืคืจื•ื™ืงื˜ Saas ืขื‘ื•ืจ ืžืชื›ื ืชื™ื ืฉืจื•ืฆื™ื ืœื”ืฆืœื™ื— ื‘ื›ื•ื—ื•ืช ืขืฆืžื ื•ืื ื™ ืžืื•ื“ ืžืžืœื™ืฅ ืœืงืจื•ื ืื•ืชื• ืื ื–ื” ืžืฉื”ื• ืฉืžื“ื‘ืจ ืืœื™ื›ื. ื‘ืืชืจ Indie Hackers ืืคืฉืจ ืœืžืฆื•ื ืื™ื ืกื•ืฃ ืกื™ืคื•ืจื™ื ืขืœ ืคืจื•ื™ืงื˜ื™ื ืงื˜ื ื™ื ืฉืœื ืžืขื˜ ืžื”ื ืžืืคืฉืจื™ื ืœืžืคืชื—ื™ื ืฉืœื”ื ืœื—ื™ื•ืช ื‘ื›ื‘ื•ื“ ืจืง ืžื”ื”ื›ื ืกื•ืช ืžืื•ืชื• ืคืจื•ื™ืงื˜. ื ื›ืก ืชื•ื›ื ื” ืฉื•ื•ื” ื”ื™ื•ื ืœื ืคื—ื•ืช ืžื›ืœ ื—ื ื•ืช ืคื™ื–ื™ืช, ืื‘ืœ ื”ื‘ื ื™ื” ืฉืœื• ื›ืžืขื˜ ืœื ื“ื•ืจืฉืช ื”ืฉืงืขื” ื›ืกืคื™ืช ื•ื’ื ืื ืฉื™ื ืขื•ื‘ื“ื™ื ื™ื›ื•ืœื™ื ืœื”ืฉืงื™ืข ื‘ื ื›ืก ื›ื–ื” ื‘ืฉืขื•ืช ื”ืคื ืื™. ื™ืฉ ืœื›ื ืจืขื™ื•ื ื•ืช ืœื ื›ืกื™ื ื ื•ืกืคื™ื ืฉืื ื—ื ื• ื™ื›ื•ืœื™ื ืœืคืชื— ืœื‘ื“ ืžื”ื‘ื™ืช? ืžื•ื–ืžื ื™ื ื‘ื—ื•ื ืœืฉืชืฃ ื‘ืชื’ื•ื‘ื•ืช.

ToCode
1 419
    const newTreeData = await loadChildren(treeData, key, children);
    setTreeData(newTreeData);
  };


  return (
    <Tree loadData={onLoadData} treeData={treeData} />
  );
}
## ืื™ืคื” ืœืœืžื•ื“ ืขื•ื“ ืœืขืฅ ืฉืœ antd ื™ืฉ ืขื•ื“ ื”ืžื•ืŸ ื™ื›ื•ืœื•ืช ื•ืืคืฉืจ ืœืงืจื•ื ืขืœื™ื”ืŸ ืขื ื“ื•ื’ืžืื•ืช ื‘ื“ืฃ ื”ืชื™ืขื•ื“ ืฉืœ ื”ืขืฅ ื›ืืŸ: https://ant.design/components/tree/ ื•ื”ื—ืœืง ื”ื™ื•ืชืจ ืžืขื ื™ื™ืŸ ื‘ื“ืฃ ื”ื•ื ืจืฉื™ืžืช ื”ืงื•ืžืคื•ื ื ื˜ื•ืช ื‘ืฆื“ ืฉืžืืœ. ืคืฉื•ื˜ ืชืœื—ืฆื• ืขืœ ื›ืœ ืงื•ืžืคื•ื ื ื˜ื” ืžื”ืจืฉื™ืžื” ื›ื“ื™ ืœืจืื•ืช ืžื” ื”ื™ื ืขื•ืฉื” ื•ืื™ืš ืœื”ืฉืชืžืฉ ื‘ื”.

ToCode
1 419
# ืžืฉื—ืงื™ื ืขื Antd - ืงื•ืžืคื•ื ื ื˜ืช ืขืฅ ืืกื™ื ื›ืจื•ื ื™ืช ืกืคืจื™ื™ืช antd ื”ื™ื ืื—ืช ืžืกืคืจื™ื•ืช ื” UI ื”ืคื•ืคื•ืœืจื™ื•ืช ื‘ืจื™ืืงื˜ ื•ืื ื™ ืœื’ืžืจื™ ืžื‘ื™ืŸ ืœืžื”. ื” API ืžืื•ื“ ืคืฉื•ื˜, ื™ืฉ ื”ืจื‘ื” ืงื•ืžืคื•ื ื ื˜ื•ืช ืฉื ืจืื•ืช ื˜ื•ื‘ ื•ืืคืฉืจ ืœื”ืจื—ื™ื‘ ืื•ืชื” ื™ื—ืกื™ืช ื‘ืงืœื•ืช. ื”ื ื” ื“ื•ื’ืžื” ืœืงื•ืžืคื•ื ื ื˜ื” ืฉืœ ื”ืขืฅ ืฉืœื”ื ื•ืœืฉื™ืžื•ืฉ ืืกื™ื ื›ืจื•ื ื™ ื‘ื• ื›ื“ื™ ืœื™ื™ืฆื’ ืžื™ื“ืข ืฉื ื˜ืขืŸ ืžืฉืจืช. ## ืžื” ืื ื—ื ื• ื‘ื•ื ื™ื ื”ื“ื•ื’ืžื” ืฉืœ ื”ื™ื•ื ืชืฉืชืžืฉ ื‘ืงื•ืžืคื•ื ื ื˜ืช Tree ืฉืœ antd ื›ื“ื™ ืœื”ืจืื•ืช ืขืฅ ืฉืžืฆื™ื’ ืืช ื›ืœ ื”ืกืจื˜ื™ื ืฉืœ ืžืœื—ืžืช ื”ื›ื•ื›ื‘ื™ื, ื•ื›ืฉืœื•ื—ืฆื™ื ืขืœ ืกืจื˜ ื”ื•ื ื™ื˜ืขืŸ ืืช ืฉืžื•ืช ื›ืœ ื”ื“ืžื•ื™ื•ืช ื‘ืื•ืชื• ืกืจื˜ ื•ื™ืฆื™ื’ ืื•ืชื ื‘ืชื•ืจ ื™ืœื“ื™ื ื‘ืขืฅ. ื›ื›ื” ื–ื” ื ืจืื” ื•ืขื•ื‘ื“ ื‘ืงื•ื“ืกื ื“ื‘ื•ืงืก: <iframe src="https://codesandbox.io/embed/fervent-robinson-bse0b?fontsize=14&hidenavigation=1&module=%2Fsrc%2FApp.js&theme=light" style="width:100%; height:500px; border:0; border-radius: 4px; overflow:hidden;" title="fervent-robinson-bse0b" allow="accelerometer; ambient-light-sensor; camera; encrypted-media; geolocation; gyroscope; hid; microphone; midi; payment; usb; vr; xr-spatial-tracking" sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"></iframe> ## ืื™ืš ื‘ื ื•ื™ ืขืฅ ื‘ืฉื‘ื™ืœ ืœื”ืฆื™ื’ ืขืฅ ืขื ืงื•ืžืคื•ื ื ื˜ืช ืขืฅ ืฉืœ antd ืื ื—ื ื• ืฆืจื™ื›ื™ื ืžื‘ื ื” ื ืชื•ื ื™ื ืฉืžื›ื™ืœ ืžืขืจืš ืฉืœ ืื•ื‘ื™ืงื˜ื™ื, ื›ืืฉืจ ืœื›ืœ ืื•ื‘ื™ืงื˜ ื™ืฉ ืžืืคื™ื™ืŸ key ื™ื™ื—ื•ื“ื™, ืžืืคื™ื™ืŸ title ืื•ืคืฆื™ื•ื ืืœื™ ืฉืžื›ื™ืœ ืืช ื”ื˜ืงืกื˜ ืฉืœ ื”ืื•ื‘ื™ืงื˜ ื•ืžืืคื™ื™ืŸ children ืื•ืคืฆื™ื•ื ืืœื™ ืฉืžื›ื™ืœ ืืช ื›ืœ ื”ื™ืœื“ื™ื. ืื ืืชื ื™ื•ื“ืขื™ื ืฉืœื ื™ื”ื™ื• ื™ืœื“ื™ื ืœืฆื•ืžืช ืžืกื•ื™ื ืืคืฉืจ ืœื”ื•ืกื™ืฃ ืžืืคื™ื™ืŸ isLeaf ืขื ื”ืขืจืš true. ื”ืื•ื‘ื™ืงื˜ ื”ื‘ื ืžื™ื™ืฆื’ ืขืฅ ืœื“ื•ื’ืžื”:
[
    { key: 'a', title: 'A', children: [] },
    { key: 'b', title: 'B', children: [
        { key: 'bb', title: 'B-1', isLeaf: true },
        { key: 'bc', title: 'B-2', isLeaf: true },
    }}
];
ื‘ื ื™ืกื•ื™ ืฉืœื™ ืจืฆื™ืชื™ ืœื”ืจืื•ืช ืขืฅ ืฉืœ ืกืจื˜ื™ื ื›ืš ืฉื‘ืจืžื” ื”ื—ื™ืฆื•ื ื™ืช ื‘ื™ื•ืชืจ ืชื”ื™ื” ืจืฉื™ืžื” ืฉืœ ืกืจื˜ื™ื ื•ืœื›ืœ ืกืจื˜ ื”ื™ืœื“ื™ื ื™ื”ื™ื• ื”ื“ืžื•ื™ื•ืช ืฉืžื•ืคื™ืขื•ืช ื‘ืื•ืชื• ืกืจื˜. ื‘ืฉื‘ื™ืœ ืœื‘ื ื•ืช ืืช ื”ืขืฅ ืื ื™ ืžืชื—ื™ืœ ืขื ืจืฉื™ืžืช ื”ืกืจื˜ื™ื ืฉื ืžืฆืืช ื‘ืงื™ืฉื•ืจ https://swapi.py4e.com/api/films/, ื•ืื– ืžืคืขื™ืœ ืืช ื”ืคื•ื ืงืฆื™ื” ื”ื‘ืื” ื›ื“ื™ ืœื”ืคื•ืš ืืช ื”ืจืฉื™ืžื” ืœืขืฅ:
function initTree(films) {
  return films.map((film) => ({
    key: `film-${film.episode_id}`,
    title: film.title,
    children: film.characters.map((url) => ({
      key: url,
      isLeaf: true,
    })),
  }));
}
## ืžื” ืงื•ืจื” ื›ืฉืžืฉืชืžืฉ ืœื•ื—ืฅ ืขืœ ืกืจื˜ ืขื›ืฉื™ื• ืฉื™ืฉ ืœื ื• ืืช ื”ืจืžื” ืฉืœ ื”ืกืจื˜ื™ื ืืคืฉืจ ืœื”ืžืฉื™ืš ื•ืœืจืื•ืช ืžื” ืงื•ืจื” ื›ืฉืžืฉืชืžืฉ ืœื•ื—ืฅ ืขืœ ืกืจื˜. ื”ืชืฉื•ื‘ื” ื”ื™ื ืฉืื ื—ื ื• ืฆืจื™ื›ื™ื ืœื™ืฆื•ืจ ืืช ื›ืœ ื ืชื•ื ื™ ื”ืขืฅ ืžื—ื“ืฉ ืขื ื”ืขืฅ ื”ืžืขื•ื“ื›ืŸ. ื‘ืขื‘ื•ื“ื” ืขื ืžื‘ื ื™ ื ืชื•ื ื™ื ืžื•ืจื›ื‘ื™ื ืฉืฆืจื™ื›ื™ื ืœื”ื™ืฉืžืจ ื‘ืกื˜ื™ื™ื˜ ืื ื™ ืื•ื”ื‘ ืœื”ืฉืชืžืฉ ื‘ืกืคืจื™ื” immer ืฉื ื•ืชื ืช ืœื™ ืœื’ืฉืช ืœืžื‘ื ื” ื”ื ืชื•ื ื™ื ื›ืžื• ืฉื”ื™ื™ืชื™ ื›ื•ืชื‘ JavaScript ืจื’ื™ืœ ื•ื”ื•ืคื›ืช ืืช ื”ืงื•ื“ ืœื’ื™ืฉื” Immutable, ื›ืœื•ืžืจ ืžื—ื–ื™ืจื” ืžื‘ื ื” ื ืชื•ื ื™ื ื—ื“ืฉ ืจืง ืขื ื”ืฉื™ื ื•ื™ื™ื ืฉื‘ื™ืฆืขืชื™. ื‘ืขื–ืจืช immer ื›ืชื‘ืชื™ ืืช ืฉืชื™ ื”ืคื•ื ืงืฆื™ื•ืช ื”ื‘ืื•ืช ืฉืœื•ืงื—ื•ืช ืขืฅ ื•ืžืคืชื— ืฉืœ ืกืจื˜ ื•ืžืžืœืื•ืช ืืช ื”ื™ืœื“ื™ื ืฉืœ ื”ืกืจื˜ ื‘ื ืชื•ื ื™ ื”ื“ืžื•ื™ื•ืช ื”ืืžื™ืชื™ื•ืช ืžืื•ืชื• ื”ืกืจื˜:

async function loadCharacter(node) {
  const res = await fetch(node.key);
  const data = await res.json();
  return { key: node.key, title: data.name, isLeaf: true };
}

async function loadChildren(treeData, filmKey, children) {
  return produce(treeData, async (draft) => {
    const node = draft.find((n) => n.key === filmKey);
    node.children = await Promise.all(children.map(loadCharacter));
  });
}
ื–ื” ืขื•ื‘ื“ ื›ื™ ืฉืžืจื ื• ื›ื‘ืจ ืงื•ื“ื ื‘ children ืฉืœ ื›ืœ ืกืจื˜ ืจืฉื™ืžื” ืฉืœ ื™ืœื“ื™ื ืฉื”ืžืคืชื— ืฉืœ ื›ืœ ืื—ื“ ื”ื•ื ื‘ื“ื™ื•ืง ื” URL ืฉืœ ื”ื“ืžื•ืช. ืื ื™ ืžืฉืชืžืฉ ื›ืืŸ ื‘ Promise.all ื•ืœื ื‘ืœื•ืœืื” ื›ื“ื™ ืฉื›ืœ ื‘ืงืฉื•ืช ื”ืจืฉืช ื™ื™ืฉืœื—ื• ื‘ืžืงื‘ื™ืœ ื•ืœื ืื—ืช ืื—ืจื™ ื”ืฉื ื™ื”. ื”ื—ืœืง ื”ืื—ืจื•ืŸ ืฉื ืฉืืจ ื‘ืงื•ื“ ื”ื•ื ื”ืงื•ืžืคื•ื ื ื˜ื” ืขืฆืžื” ืฉืžื“ื‘ื™ืงื” ืืช ื›ืœ ื”ืคื•ื ืงืฆื™ื•ืช ืฉื›ืชื‘ื ื• ื•ื”ื™ื ื ืจืื™ืช ื›ืš:
import React, { useState, useEffect } from 'react';
import produce from "immer"
import { Tree } from 'antd';

import 'antd/dist/antd.css';

export default function Demo() {
  const [treeData, setTreeData] = useState(initTreeData);

  useEffect(() => {
    async function flow() {
      const res = await fetch('https://swapi.py4e.com/api/films/');
      const data = await res.json();
      setTreeData(initTree(data.results));
    };
    flow();
  }, []);

  const onLoadData = async ({ key, children }) => {

ToCode
1 419
npm ERR! this command with --force, or --legacy-peer-deps
npm ERR! to accept an incorrect (and potentially broken) dependency resolution.
npm ERR!
npm ERR! See /Users/ynonp/.npm/eresolve-report.txt for a full report.

npm ERR! A complete log of this run can be found in:
npm ERR!     /Users/ynonp/.npm/_logs/2021-12-16T20_16_00_413Z-debug.log
ืจื•ืื™ื ืžื” ื”ื‘ืขื™ื” ื›ืืŸ? ื ื›ื•ืŸ ืฉ npm install ื ื›ืฉืœ, ืื‘ืœ ื”ื•ื ื’ื ืžืฆื™ืข ืฉื ื™ ืคื™ืชืจื•ื ื•ืช ืฉืืช ืฉื ื™ื”ื ืื ืฉื™ื ื ื•ื˜ื™ื ืœื”ืคืขื™ืœ ื›ืžืขื˜ ื‘ืœื™ ืœื—ืฉื•ื‘. ื›ืœื•ืžืจ ืื—ืจื™ ืฉืžื™ืฉื”ื• ืฉืจื•ืฆื” ืœื”ืฉืชืžืฉ ื‘ืกืคืจื™ื” ืฉืœื›ื ืจื•ืื” ื”ื•ื“ืขื” ื›ื–ืืช ื”ืื™ื ืกื˜ื™ื ืงื˜ ื”ืจืืฉื•ืŸ ื”ื•ื ืœื ืกื•ืช ืœื”ืคืขื™ืœ:
$ npm install --force
ืฉื›ืžื•ื‘ืŸ ืขื•ื‘ื“ ืขื Warnings, ื•ืžืชืงื™ืŸ ืืช ื’ื™ืจืกื” 16.8.1 ืฉืœ ืจื™ืืงื˜ ื‘ืชื™ืงื™ื™ืช node_modules ื”ืจืืฉื™ืช ื•ืœื ืžืชืงื™ืŸ ื›ืœืœ ืืช ื’ื™ืจืกื” 17:
$ npm ls react

myapp@1.0.0 /Users/ynonp/tmp/mynpm/myapp
โ”œโ”€โ”ฌ mylib@1.0.2
โ”‚ โ””โ”€โ”€ react@16.8.1 deduped invalid: "^17.0.2" from node_modules/mylib
โ””โ”€โ”€ react@16.8.1 invalid: "^17.0.2" from node_modules/mylib

npm ERR! code ELSPROBLEMS
npm ERR! invalid: react@16.8.1 /Users/ynonp/tmp/mynpm/myapp/node_modules/react

npm ERR! A complete log of this run can be found in:
npm ERR!     /Users/ynonp/.npm/_logs/2021-12-16T20_18_56_638Z-debug.log
ืื– ื ื›ื•ืŸ ืื™ ืืคืฉืจ ืœื”ื›ืจื™ื— ืžื™ืฉื”ื• ืœื”ืฉืชืžืฉ ื‘ื’ื™ืจืกื” ืฉืœืš ืฉืœ ืกืคืจื™ื”, ืื‘ืœ ื›ืŸ ื™ืฉ ื›ืœื™ื ื˜ื•ื‘ื™ื ื›ื“ื™ ืœื’ืœื•ืช ืื ืžื™ืฉื”ื• ื”ืชืงื™ืŸ ื’ื™ืจืกื” ืฉืœื ื”ืžืœืฆืช ืขืœื™ื” ื•ื‘ื’ืœืœ ื–ื” ื”ืงื•ื“ ืœื ืขื•ื‘ื“. ื”ื ื” ืžื” ืฉื—ืฉื•ื‘ ืœื–ื›ื•ืจ: 1. ื”ื’ื“ื™ืจื• ืืช ื”ื“ื‘ืจื™ื ืฉืืชื ืจื•ืฆื™ื ืฉืื—ืจื™ื ื™ืชืงื™ื ื• ื‘ืชื•ืจ Peer Dependencies. 2. ืื ืงื•ื“ ืœืงื•ื— ืฉืžืฉืชืžืฉ ื‘ืกืคืจื™ื” ืœื ืขื•ื‘ื“, ื”ืฉืชืžืฉื• ื‘ npm ls ื›ื“ื™ ืœื•ื•ื“ื ืฉื”ืชืœื•ื™ื•ืช ืฉืจืฆื™ืชื ื‘ืืžืช ืžื•ืชืงื ื•ืช ื›ืžื• ืฉืฆืจื™ืš. 3. ืชืงื ื• ืืช ื”ืชืœื•ื™ื•ืช ื•ืืœ ืชืฉืชืžืฉื• ื‘ --force, ืืคื™ืœื• ืฉื–ื” ืขื•ื‘ื“.

ToCode
1 419
# ื”ื™ื•ื ืœืžื“ืชื™: ืื™ ืืคืฉืจ ืœื”ื›ืจื™ื— ืœืงื•ื— ืœื”ืชืงื™ืŸ ืกืคืจื™ื•ืช Node.JS (ืื‘ืœ ืืคืฉืจ ืœื”ืชืงืจื‘ ืœื–ื”) ื‘ืื’ ืฉื‘ื–ื‘ื– ืœื™ ื™ื•ืชืจ ืžื“ื™ ื–ืžืŸ ื‘ื™ื•ืžื™ื™ื ื”ืื—ืจื•ื ื™ื ืœื™ืžื“ ืื•ืชื™ ืœืงื— ื—ืฉื•ื‘ ืขืœ npm ื•ื‘ืขื™ืงืจ ืขืœ ืžืชื›ื ืชื™ื ืื– ืื ื™ ื›ื•ืชื‘ ื›ืืŸ ื›ื“ื™ ืœื ืœืฉื›ื•ื— ื•ื‘ืชืงื•ื•ื” ืื•ืœื™ ืœื—ืกื•ืš ืœื›ื ืคืื“ื™ื—ื•ืช ื“ื•ืžื•ืช. ื”ืกื™ืคื•ืจ ื”ื•ื ืคืฉื•ื˜ - ืื ืืชื ื›ื•ืชื‘ื™ื ื—ื‘ื™ืœืช Node.JS ืื– ืืชื ื™ื›ื•ืœื™ื ืœืฆื™ื™ืŸ 3 ืจืฉื™ืžื•ืช ืฉืœ ืชืœื•ื™ื•ืช ื‘ package.json ืฉืœื›ื: 1. ืจืฉื™ืžืช dependencies ืžื’ื“ื™ืจื” ืจืฉื™ืžื” ืฉืœ ืกืคืจื™ื•ืช ืฉืืชื ื“ื•ืจืฉื™ื ืฉื”ืœืงื•ื— ื™ืชืงื™ืŸ ืกืคืฆื™ืคื™ืช ืขื‘ื•ืจื›ื ื›ืฉื”ื•ื ืžืชืงื™ืŸ ืืช ื”ืกืคืจื™ื” ืฉืœื›ื. 2. ืจืฉื™ืžืช peerDependencies ืžื’ื“ื™ืจื” ืจืฉื™ืžื” ืฉืœ ืกืคืจื™ื•ืช ืฉืืชื ื“ื•ืจืฉื™ื ืฉ"ื™ื”ื™ื• ืฉื" ื›ืฉืœืงื•ื— ืžืชืงื™ืŸ ืืช ื”ืกืคืจื™ื” ืฉืœื›ื, ื›ืœื•ืžืจ ืกืคืจื™ื•ืช ืฉื’ื ืืชื ืžืฉืชืžืฉื™ื ื‘ื”ืŸ ื•ื’ื ืงื•ื“ ื”ืœืงื•ื— ืžืฉืชืžืฉ ื‘ื”ืŸ. 3. ืจืฉื™ืžืช devDependencies ืžื’ื“ื™ืจื” ืจืฉื™ืžื” ืฉืœ ืชืœื•ื™ื•ืช ืฉืจืง ืืชื ืžืชืงื™ื ื™ื ื‘ืžืฆื‘ ืคื™ืชื•ื—. ืื– ืขื›ืฉื™ื• ื‘ื•ืื• ื ื‘ื“ื•ืง ืžื” ืงื•ืจื” ืœื“ื•ื’ืžื” ื›ืฉืื ื™ ื‘ื•ื ื” ืกืคืจื™ื” ืฉืžืฉืชืžืฉืช ื‘ืจื™ืืงื˜ 17 ื•ืฆืจื™ื›ื” ืฉื”ืœืงื•ื— ื™ืชืงื™ืŸ ืืช ืจื™ืืงื˜ 17 ื›ื“ื™ ืœืขื‘ื•ื“ ืื™ืชื”. ## ืฉื™ืžื•ืฉ ื‘ devDependencies ืื ืื ื™ ืžื’ื“ื™ืจ ืืช ืจื™ืืงื˜ ื‘ืชื•ืจ devDependency ื‘ืืžืฆืขื•ืช ื”ื‘ืœื•ืง ื”ื‘ื ื‘ืงื•ื‘ืฅ package.json ื‘ืกืคืจื™ื” ืฉืœื™:
"devDependencies": {
  "react": "^17.0.2"
}
ืื– ื›ืฉืื ื™ ืืขืœื” ืืช ื”ืกืคืจื™ื” ืœ npm ื•ืžื™ืฉื”ื• ืื—ืจ ื™ืคืขื™ืœ npm install ืขืœื™ื”, ืื•ืชื• ืžื™ืฉื”ื• ืื—ืจ ืœื ื™ืงื‘ืœ ืืช react ื‘ื›ืœืœ. ืจื™ืืงื˜ ื”ื™ืชื” ื‘ืฉื™ืžื•ืฉ ืจืง ื‘ื–ืžืŸ ืฉืคื™ืชื—ืชื™ ืืช ื”ืกืคืจื™ื” ื•ืœื ื‘ื–ืžืŸ ื”ืฉื™ืžื•ืฉ ื‘ื”. ## ืฉื™ืžื•ืฉ ื‘ dependencies ืื ืื ื™ ืžื’ื“ื™ืจ ืืช ืจื™ืืงื˜ ื‘ืชื•ืจ dependency ื‘ืืžืฆืขื•ืช ื”ื‘ืœื•ืง ื”ื‘ื ื‘ืงื•ื‘ืฅ package.json ื‘ืกืคืจื™ื” ืฉืœื™:
"dependencies": {
  "react": "^17.0.2"
}
ืื– ื”ืœืงื•ื— ืฉืžืชืงื™ืŸ ืืช ื”ืกืคืจื™ื” ืฉืœื™ ื™ืงื‘ืœ ื‘ืชื™ืงื™ื™ืช node_modules ืฉืœื• ืืช ื”ืกืคืจื™ื•ืช ื”ื‘ืื•ืช:
node_modules
โ”œโ”€โ”€ js-tokens
โ”œโ”€โ”€ loose-envify
โ”œโ”€โ”€ mylib
โ”œโ”€โ”€ object-assign
โ””โ”€โ”€ react
ื•ื–ื” ื›ื‘ืจ ื ืจืื” ื˜ื•ื‘! ื›ืœื•ืžืจ ื”ืœืงื•ื— ืงื™ื‘ืœ ื’ื ืืช ืจื™ืืงื˜ ื•ื’ื ืืช ื›ืœ ื”ืกืคืจื™ื•ืช ืฉืจื™ืืงื˜ ืชืœื•ื™ื” ื‘ื”ืŸ. ืื‘ืœ ื›ื“ืื™ ืœืฆื ืŸ ืืช ื”ื”ืชืœื”ื‘ื•ืช. ื–ื” ืขื•ื‘ื“ ืจืง ื‘ื’ืœืœ ืฉื”ืœืงื•ื— ืชืœื•ื™ ืจืง ื‘ืกืคืจื™ื” ืฉืœื™. ืื ื”ื•ื ื™ื•ืกื™ืฃ ืชืœื•ืช ื‘ืกืคืจื™ื” ืฉืฆืจื™ื›ื” ื’ื™ืจืกื” ื™ืฉื ื” ื™ื•ืชืจ ืฉืœ ืจื™ืืงื˜, ืื• ืืคื™ืœื• ืชืœื•ืช ืกืคืฆื™ืคื™ืช ื‘ื’ื™ืจืกื” ื™ืฉื ื” ื™ื•ืชืจ ืฉืœ ืจื™ืืงื˜ ื”ื—ื™ื™ื ื”ื•ืœื›ื™ื ืœื”ืกืชื‘ืš. ื ื ื™ื— ืฉืงื•ื“ ื”ืœืงื•ื— ืฉืœื™ ื›ื•ืœืœ ืืช ื”ื‘ืœื•ืง ื”ื‘ื ื‘ืงื•ื‘ืฅ package.json ืฉืœื•:
  "dependencies": {
    "mylib": "file:../mylib/mylib-1.0.1.tgz",
    "react": "16.8.1"
  }
ืื– ืขื›ืฉื™ื• ื‘ื”ืคืขืœื” ืฉืœ npm install ื”ื•ื ื™ืงื‘ืœ ื‘ืชื™ืงื™ื™ืช node_modules ืืช:
node_modules
โ”œโ”€โ”€ js-tokens
โ”œโ”€โ”€ loose-envify
โ”œโ”€โ”€ mylib
โ”œโ”€โ”€ object-assign
โ”œโ”€โ”€ prop-types
โ”œโ”€โ”€ react
โ”œโ”€โ”€ react-is
โ””โ”€โ”€ scheduler
ืฉื–ื” ื ืจืื” ื›ืื™ืœื• ื–ื” ื˜ื•ื‘ ื›ื™ ื”ื•ื ื”ืชืงื™ืŸ ืืช ืจื™ืืงื˜ ืื‘ืœ ื”ืืžืช ืฉื”ื•ื ื”ืชืงื™ืŸ ืฉืชื™ ื’ื™ืจืกืื•ืช ืฉืœ ืจื™ืืงื˜:
$ npm ls react
myapp@1.0.0 /Users/ynonp/tmp/mynpm/myapp
โ”œโ”€โ”ฌ mylib@1.0.1
โ”‚ โ””โ”€โ”€ react@17.0.2
โ””โ”€โ”€ react@16.8.1
ื•ื‘ืืžืช ื‘ืชื•ืš ืชื™ืงื™ื™ืช node_modules/mylib ืื ื™ ืืžืฆื ืชื™ืงื™ื™ืช node_modules ื ื•ืกืคืช ืฉื‘ืชื•ื›ื” ื™ืฉ ืืช ืจื™ืืงื˜ ื‘ื’ื™ืจืกื” 17.0.2, ื•ื‘ืชื™ืงื™ื™ืช node_modules ื”ืจืืฉื™ืช ืื ื™ ืžื•ืฆื ืืช ืจื™ืืงื˜ ื‘ื’ื™ืจืกื” 16.8.1. ืœื›ืŸ ื”ื’ื“ืจืช dependencies ืœื ื‘ืืžืช ืžืืคืฉืจืช ืœื™ "ืœื”ื›ืจื™ื—" ืœืงื•ื— ืœื”ืชืงื™ืŸ ืกืคืจื™ื” ื‘ื’ื™ืจืกื” ืžืกื•ื™ืžืช. ืื ืกืคืจื™ื” ืื—ืจืช ืฉื”ื•ื ืชืœื•ื™ ื‘ื”, ืื• ื”ื•ื ืขืฆืžื•, ืžื‘ืงืฉื™ื ื’ื™ืจืกื” ืื—ืจืช ืื– ื–ื• ืชืงื‘ืœ ืขื“ื™ืคื•ืช ื•ื”ื’ื™ืจืกื” ืฉืื ื™ ืชืœื•ื™ ื‘ื” ืชื•ืชืงืŸ ื‘ืฆื•ืจื” ืคืจื˜ื™ืช ื‘ node_modules ืฉืœ ื”ืกืคืจื™ื” ืฉืœื™. ## ืฉื™ืžื•ืฉ ื‘ peerDependencies ืื•ืคืฆื™ื™ืช peerDependencies ื”ื™ืชื” ืฆืจื™ื›ื” ืœื”ื™ื•ืช ื”ืจืืฉื•ื ื” ื‘ื ื™ืกื•ื™ ื›ื™ ืœืคื™ ื”ืชื™ืขื•ื“ ื”ื™ื ืขื•ืฉื” ื‘ื“ื™ื•ืง ืืช ืžื” ืฉืื ื—ื ื• ืžื—ืคืฉื™ื. ื”ื™ื ืžื’ื“ื™ืจื” ืฉืื ื™ ืชืœื•ื™ ื‘ืกืคืจื™ื” ืื—ืจืช ืื‘ืœ ืชืœื•ืช ืฆื™ื‘ื•ืจื™ืช, ื›ืœื•ืžืจ ืฉืื ื™ ื“ื•ืจืฉ ืฉื”ืกืคืจื™ื” ื”ืื—ืจืช ืชื”ื™ื” ื‘ืคืจื•ื™ืงื˜ ื‘ื’ื™ืจืกื” ืฉืื ื™ ืจื•ืฆื”. ื•ื‘ืืžืช ื”ื”ืชื ื”ื’ื•ืช ืฉืœ peerDependencies ื”ื™ื ื”ืคืขื ืžืžืฉ ืžื•ืฆืœื—ืช. ืื ื™ืฉ ืœื™ ื‘ package.json ืฉืœ ื”ืกืคืจื™ื” ืฉืœื™ ืืช ื”ื‘ืœื•ืง ื”ื‘ื:
"peerDependencies": {
  "react": "^17.0.2"
}
ื•ื”ืœืงื•ื— ืฉืœื™ ืžื—ื–ื™ืง ืงื•ื‘ืฅ package.json ืขื ื‘ืœื•ืง ื›ื–ื”:
"dependencies": {
  "mylib": "file:../mylib/mylib-1.0.1.tgz",
  "react": "16.8.1"
}
ืื– ื›ืฉื”ื•ื ื™ื ืกื” ืœื”ืชืงื™ืŸ ื”ื•ื ื™ืงื‘ืœ ืืช ื”ื”ื•ื“ืขื”:
$ npm install
npm ERR! code ERESOLVE
npm ERR! ERESOLVE unable to resolve dependency tree
npm ERR!
npm ERR! While resolving: myapp@1.0.0
npm ERR! Found: react@16.8.1
npm ERR! node_modules/react
npm ERR!   react@"16.8.1" from the root project
npm ERR!
npm ERR! Could not resolve dependency:
npm ERR! peer react@"^17.0.2" from mylib@1.0.2
npm ERR! node_modules/mylib
npm ERR!   mylib@"file:../mylib/mylib-1.0.2.tgz" from the root project
npm ERR!
npm ERR! Fix the upstream dependency conflict, or retry

ToCode
1 419
        next_child = next(child for child in doc if '/'+child["key"] == pos+'/'+path[0])
    except StopIteration:
        doc.append({ "type": "d", 'key': key, 'title': path[-1], 'children': [] })
        next_child = doc[-1]

    return add_node(next_child["children"], path[1:], key, pos+'/'+path[0])
    

doc = []

for root, dirs, files in os.walk('.'):
    key = root[1:].split('/')[1:]
    node = add_node(doc, key, '/'.join(key))
    prefix = '/'.join(key) + '/' if len(key) > 0 else ''
    node.extend([{ "type": "f", "title": f, "key": f"{prefix}{f}", "children": [] } for i, f in enumerate(files)])

print(json.dumps(doc))
ื ืชื—ื™ืœ ืžื”ื—ืœืง ื”ืฉื ื™ - ื”ืคื•ื ืงืฆื™ื” os.walk: 1. ืžืคืขื™ืœื™ื ืืช os.walk ื‘ืชื•ืš for ื›ื“ื™ ืœืจื•ืฅ ืขืœ ื›ืœ ื”ืงื‘ืฆื™ื ื•ื”ืชื™ืงื™ื•ืช ื‘ืฆื•ืจื” ืจืงื•ืจื‘ื™ืกื™ืช ื‘ืขืฅ ื”ืชื™ืงื™ื•ืช. 2. ื›ืœ ื›ื ื™ืกื” ืœื’ื•ืฃ ื”ืœื•ืœืื” ืื•ืžืจืช ืฉื ื›ื ืกืชื™ ืœืชื™ืงื™ื” ื—ื“ืฉื”. ืื ื™ ืžืคืขื™ืœ ืืช ื”ืคื•ื ืงืฆื™ื” add_node ื›ื“ื™ ืœื”ื•ืกื™ืฃ ืฆื•ืžืช ื—ื“ืฉ ื‘ืขืฅ ื‘ื“ื™ื•ืง ื‘ืžืงื•ื ืฉืžืชืื™ื ืœืื•ืชื” ืชื™ืงื™ื”. ืคื•ื ืงืฆื™ื™ืช add_node ืžื—ื–ื™ืจื” ืืช ืžืขืจืš ื”ื™ืœื“ื™ื ืฉืœ ื”ืชื™ืงื™ื” ืฉื”ื™ื ื”ืจื’ืข ื”ื•ืกื™ืคื”. 3. ืื—ืจื™ ื–ื” ืื ื™ ืžืฉืชืžืฉ ื‘ืžืฉืชื ื” files ืฉื—ื•ื–ืจ ืžืื•ืชื• ืื™ื˜ืจื˜ื•ืจ ื›ื“ื™ ืœื”ื•ืกื™ืฃ ื’ื ืืช ื›ืœ ื”ืงื‘ืฆื™ื ื•ืœืžืœื ื‘ืืžืฆืขื•ืชื ืืช ืžืขืจืš ื”ื™ืœื“ื™ื. ื”ืคื•ื ืงืฆื™ื” add_node ืžื˜ื™ื™ืœืช ื‘ืฆื•ืจื” ืจืงื•ืจื‘ื™ืกื™ืช ื‘ Dictionary ืœืคื™ ื”ืžื‘ื ื” ืฉืœ ืžื™ืœื•ืŸ ื”ืงื‘ืฆื™ื ื•ืžื•ืกื™ืคื” ืชื™ืงื™ื” ื—ื“ืฉื” ืœืžืงื•ื ื”ื ื›ื•ืŸ. ื”ื™ื ืžืฉืชืžืฉืช ื‘ key ืฉืœ ื›ืœ ืื•ื‘ื™ืงื˜ ื›ื“ื™ ืœื“ืขืช ืœืื™ื–ื” ื ืชื™ื‘ื™ื ืœื ื•ื•ื˜ ื‘ืชื•ืš ื” Dictionary.

ToCode
1 419
# ืขื•ื“ ื“ื•ื’ืžื” ืœ os.walk ื‘ Python ื”ืคื•ื ืงืฆื™ื” os.walk ืžืกืคืงืช ื“ืจืš ืงืœื” ืœืขื‘ื•ืจ ืขืœ ื›ืœ ืขืฅ ื”ืงื‘ืฆื™ื ื•ื”ืชื™ืงื™ื•ืช ื”ื—ืœ ืžื ืงื•ื“ืช ื”ืชื—ืœื” ืžืกื•ื™ืžืช. ื‘ื“ื•ื’ืžื” ื‘ืคื•ืกื˜ ื”ื™ื•ื ืืฉืชืžืฉ ื‘ื” ื›ื“ื™ ืœื‘ื ื•ืช ืื•ื‘ื™ืงื˜ JSON ืฉืžืชืื™ื ืœืขืฅ ืงื‘ืฆื™ื ื•ืชื™ืงื™ื•ืช ื‘ืคื•ืจืžื˜ ืžืกื•ื™ื. ## ืžื” ืื ื—ื ื• ื‘ื•ื ื™ื ื ืชื•ืŸ ืขืฅ ืงื‘ืฆื™ื ื•ืชื™ืงื™ื•ืช ืฉื ืจืื” ื›ืš:
.
โ”œโ”€โ”€ a
โ”‚   โ”œโ”€โ”€ b
โ”‚   โ”‚   โ”œโ”€โ”€ 00
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ 11
โ”‚   โ”‚   โ”‚       โ”œโ”€โ”€ 22
โ”‚   โ”‚   โ”‚       โ”œโ”€โ”€ 33
โ”‚   โ”‚   โ”‚       โ””โ”€โ”€ 44
โ”‚   โ”‚   โ”œโ”€โ”€ c
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ c1.txt
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ c2.txt
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ d
โ”‚   โ”‚   โ””โ”€โ”€ ff
โ”‚   โ”‚       โ””โ”€โ”€ gg
โ”‚   โ”œโ”€โ”€ f1.txt
โ”‚   โ””โ”€โ”€ f2.txt
โ””โ”€โ”€ build_json.py
ื•ืื ื™ ืจื•ืฆื” ืœื”ืคื•ืš ืื•ืชื• ืœืื•ื‘ื™ืงื˜ JSON ืฉื ืจืื” ื›ืš:
[
  {
    "type": "f",
    "title": "build_json.py",
    "key": "build_json.py",
    "children": []
  },
  {
    "type": "d",
    "key": "a",
    "title": "a",
    "children": [
      {
        "type": "f",
        "title": "f1.txt",
        "key": "a/f1.txt",
        "children": []
      },
      {
        "type": "f",
        "title": "f2.txt",
        "key": "a/f2.txt",
        "children": []
      },
      {
        "type": "d",
        "key": "a/b",
        "title": "b",
        "children": [
          {
            "type": "d",
            "key": "a/b/00",
            "title": "00",
            "children": [
              {
                "type": "d",
                "key": "a/b/00/11",
                "title": "11",
                "children": [
                  {
                    "type": "d",
                    "key": "a/b/00/11/33",
                    "title": "33",
                    "children": []
                  },
                  {
                    "type": "d",
                    "key": "a/b/00/11/44",
                    "title": "44",
                    "children": []
                  },
                  {
                    "type": "d",
                    "key": "a/b/00/11/22",
                    "title": "22",
                    "children": []
                  }
                ]
              }
            ]
          },
          {
            "type": "d",
            "key": "a/b/ff",
            "title": "ff",
            "children": [
              {
                "type": "d",
                "key": "a/b/ff/gg",
                "title": "gg",
                "children": []
              }
            ]
          },
          {
            "type": "d",
            "key": "a/b/c",
            "title": "c",
            "children": [
              {
                "type": "f",
                "title": "c1.txt",
                "key": "a/b/c/c1.txt",
                "children": []
              },
              {
                "type": "f",
                "title": "c2.txt",
                "key": "a/b/c/c2.txt",
                "children": []
              },
              {
                "type": "d",
                "key": "a/b/c/d",
                "title": "d",
                "children": []
              }
            ]
          }
        ]
      }
    ]
  }
]
ื›ื“ื™ ืฉื™ืชืื™ื ืœืงื•ืžืคื•ื ื ื˜ื” ืฉืžืฆื™ื’ื” ืขืฅ ื‘ืฆื•ืจื” ื’ืจืคื™ืช ืขืœ ื”ืžืกืš. ื”ืžื‘ื ื” ื”ื•ืœืš ื›ื›ื”: 1. ื”ืื•ื‘ื™ืงื˜ ื”ืจืืฉื™ ื”ื•ื ืžืขืจืš ืฉืœ ืื•ื‘ื™ืงื˜ื™ื 2. ื›ืœ ืื•ื‘ื™ืงื˜ ื‘ืžืขืจืš ืžื›ื™ืœ 4 ืฉื“ื•ืช: ืฉื“ื” type ืฉื™ื›ื•ืœ ืœื”ื™ื•ืช d ืื• f ื›ื“ื™ ืœืฆื™ื™ืŸ ืื ื–ื” ืชื™ืงื™ื” ืื• ืงื•ื‘ืฅ; ืฉื“ื” key ืฉืžื›ื™ืœ ืืช ื”ื ืชื™ื‘ ื”ืžืœื ืœื“ื‘ืจ (ื•ื”ื•ื ื™ื™ื—ื•ื“ื™ ื‘ื›ืœ ื”ืขืฅ); ืฉื“ื” title ืฉืžื›ื™ืœ ืืช ืฉื ื”ื“ื‘ืจ ื•ืฉื“ื” ื‘ืฉื children ืฉืžื›ื™ืœ ืžืขืจืš ืฉืœ ืื•ื‘ื™ืงื˜ื™ื ื‘ืื•ืชื• ืžื‘ื ื” ื‘ื“ื™ื•ืง. 3. ืื ื”ืื•ื‘ื™ืงื˜ ื”ื•ื ืงื•ื‘ืฅ ืื– ืžืขืจืš ื”ื™ืœื“ื™ื ืฉืœื• ืจื™ืง. 4. ืื ื”ืื•ื‘ื™ืงื˜ ื”ื•ื ืชื™ืงื™ื” ืื– ืžืขืจืš ื”ื™ืœื“ื™ื ืฉืœื• ืžื™ื™ืฆื’ ืืช ื”ืงื‘ืฆื™ื ื•ื”ืชื™ืงื™ื•ืช ืฉื ืžืฆืื™ื ื‘ืชื•ืš ื”ืชื™ืงื™ื”. ืžื•ื–ืžื ื™ื ืœื ืกื•ืช ืœื‘ื ื•ืช ืืช ื”ืžื ื’ื ื•ืŸ ื•ืื—ืจื™ ื–ื” ืœื”ืžืฉื™ืš ืœืงื•ื“ ื”ื“ื•ื’ืžื” ืฉืœื™. ## ื”ืชื•ื›ื ื™ืช ืขื os.walk ืื ื—ื ื• ื™ื›ื•ืœื™ื ืœื›ืชื•ื‘ ื›ืœ ืชื•ื›ื ื™ืช ืฉืขื•ื‘ืจืช ืขืœ ืขืฅ ื”ืงื‘ืฆื™ื ื‘ืฆื•ืจื” ืคืฉื•ื˜ื” ื•ื‘ืœื™ ืœืœื›ืช ืœืื™ื‘ื•ื“ ื‘ื™ืขืจ. ื”ืคื•ื ืงืฆื™ื” ืžื—ื–ื™ืจื” ืื™ื˜ืจื˜ื•ืจ ืฉื‘ื›ืœ ืื™ื˜ืจืฆื™ื” ื‘ื•ื—ืจ ืชื™ืงื™ื” ืื—ืจืช ื•ืžื—ื–ื™ืจ ืืช ืจืฉื™ืžืช ื”ืงื‘ืฆื™ื ื•ื”ืชื™ืงื™ื•ืช ื‘ืื•ืชื” ืชื™ืงื™ื” ืฉื”ื•ื ื‘ื—ืจ. ื”ืื™ื˜ืจืฆื™ื” ื”ื™ื ืœืคื™ ื”ืกื“ืจ ื”ืืžื™ืชื™ ืฉืœ ื”ืงื‘ืฆื™ื ื•ื”ืชื™ืงื™ื•ืช ื•ืœื›ืŸ ื ื•ื— ืœื”ืฉืชืžืฉ ื‘ื” ื›ื“ื™ ืœื‘ื ื•ืช ืืช ืื•ื‘ื™ืงื˜ ื” JSON. ื–ื” ื”ื™ื” ื”ืคื™ืชืจื•ืŸ ืฉืœื™:
import os, json

def add_node(doc, path, key, pos=''):
    if len(path) == 0:
        return doc

    try:

ToCode
1 419
# ื”ืื•ืžื ื•ืช ืฉืœ ืœื”ืฉื™ื’ ื“ื‘ืจื™ื ื‘ืœืชื™ ืืคืฉืจื™ื™ื ื™ืฉ ื™ืžื™ื ืฉืื ื™ ื™ื›ื•ืœ ืœืจืื•ืช ื‘ื‘ื™ืจื•ืจ ืืช ื”ื“ืจืš ืžืคื” ืœืฉื, ืืคื™ืœื• ืื "ืฉื" ื–ื” ืžืงื•ื ืžืื•ื“ ืจื—ื•ืง ืžืื™ืคื” ืฉืื ื™ ื ืžืฆื. ืื ื™ ื‘ื˜ื•ื— ืฉื’ื ืœื›ื ื™ืฉ ื ืงื•ื“ื•ืช ื”ืืจื” ื›ืืœื” ืฉืคืชืื•ื ืจื•ืื™ื ื‘ืžื›ื” ืื—ืช ืกื™ื“ืจื” ืฉืœ ืฆืขื“ื™ื ืฉืื ืจืง ืืฆืœื™ื— ื‘ื”ื ืื’ื™ืข ืœื“ื‘ืจ ื”ื–ื” ืฉื ืจืื” ื›ืจื’ืข ืžืื•ื“ ืจื—ื•ืง ื•ื‘ืœืชื™ ืืคืฉืจื™. ื•ื™ืฉ ื™ืžื™ื ืฉื‘ื”ื ืื ื™ ืœื ืจื•ืื” ืืช ื”ื“ืจืš ื›ื•ืœื”. ืฉื”ื‘ื”ื™ืจื•ืช ื ืขืœืžืช ื•ื”ืžืจื—ืง ื ืจืื” ื‘ืœืชื™ ื ื™ืชืŸ ืœื’ื™ืฉื•ืจ. ื”ืืžืช ืฉืจื•ื‘ ื”ื™ืžื™ื ื”ื ื›ืืœื” - ื•ื‘ื’ืœืœ ื–ื” ื“ื‘ืจื™ื ืžืกื•ื‘ื›ื™ื ื ืจืื™ื ื”ืจื‘ื” ืคืขืžื™ื ื‘ืœืชื™ ืืคืฉืจื™ื™ื. ื”ื“ืจืš ืœืฆืืช ืžื”ืคืจื“ื•ืงืก ื›ืฉืจื•ืฆื™ื ืœื”ืฉื™ื’ ื“ื‘ืจ ื‘ืœืชื™ ืืคืฉืจื™ ื”ื™ื ืงื•ื“ื ื›ืœ ืœื”ื‘ื™ืŸ ืฉื”ื“ื‘ืจ ื”ื–ื” ื”ื•ื ื›ืŸ ืืคืฉืจื™ - ืคืฉื•ื˜ ืžืกื•ื‘ืš. ื•ืœื”ืฉื™ื’ ื“ื‘ืจื™ื ืžืกื•ื‘ื›ื™ื ื–ื” ื”ืจื‘ื” ื™ื•ืชืจ ืงืœ ืžืœื”ืฉื™ื’ ื“ื‘ืจื™ื ื‘ืœืชื™ ืืคืฉืจื™ื™ื. ื•ื’ื ื“ื™ ืงืœ ืœื”ื‘ื™ืŸ ืฉืžืฉื”ื• ื”ื•ื ืืคืฉืจื™ ืคืฉื•ื˜ ืžืกื•ื‘ืš, ืคืฉื•ื˜ ืžืกืชื›ืœื™ื ืขืœ ืื ืฉื™ื ืื—ืจื™ื ืฉื”ืฆืœื™ื—ื• ืื•ืชื• ืื• ืขืœ ื”ื”ื™ืกื˜ื•ืจื™ื” ืฉืœื›ื ื‘ื” ื”ืฆืœื—ืชื ื“ื‘ืจื™ื ื“ื•ืžื™ื. ืื ื™ ื™ื•ื“ืข, ืื ื—ื ื• ืจื’ื™ืœื™ื ืœื—ืฉื•ื‘ ืฉืžืฉื”ื• ื”ื•ื ืืคืฉืจื™ ืจืง ืื ืื ื—ื ื• ืจื•ืื™ื ืืช ื”ื“ืจืš ื”ืžืœืื” ืžื›ืืŸ ืœืฉื. ืื‘ืœ ื–ืืช ืคืจื™ื•ื•ื™ืœื’ื™ื” ืฉืื ืฉื™ื ืฉืœื•ืžื“ื™ื ืœื‘ื“ ืœื ื™ื›ื•ืœื™ื ืœืกืžื•ืš ืขืœื™ื”. ื”ืฆืขื“ ื”ืฉื ื™ ื”ื•ื ืœื”ื‘ื™ืŸ ืฉื”ื“ืจืš ืœื”ืฉื™ื’ ื“ื‘ืจื™ื ืžืกื•ื‘ื›ื™ื ื”ื™ื ืงืฉื”, ืืจื•ื›ื” ื•ืžืกื•ื‘ื›ืช (ื ื•, ืื—ืจืช ืœื ื”ื™ื™ื ื• ืฆืจื™ื›ื™ื ืคื•ืกื˜ ืขืœ ื–ื”), ื•ืจื•ื‘ ื”ื–ืžืŸ ืฉื ื‘ืœื” ื‘ื” ื™ื”ื™ื” ื‘ื™ืžื™ื ืฉืœ ืขืจืคืœ, ื‘ื™ืžื™ื ื‘ื”ื ืื™ ืืคืฉืจ ืœื“ืžื™ื™ืŸ ืืคื™ืœื• ืืช ื”ื“ืจืš ืžื›ืืŸ ืœืฉื. ื‘ื™ืžื™ื ื‘ื”ื ืœื ื ืจืื” ืฉื™ืฉ ืงืฉืจ ื‘ื™ืŸ ื”ืžืฉื™ืžื” ืฉืืชื” ืขื•ืฉื” ืขื›ืฉื™ื• ืœื‘ื™ืŸ ื”ื“ื‘ืจ ื”ื‘ืœืชื™ ืืคืฉืจื™ ืฉืืชื” ืจื•ืฆื” ืœื”ืฉื™ื’. ื”ื“ืจืš ืœืœืžื•ื“ ืžื™ื•ืžื ื•ืช ื—ื“ืฉื” ื”ื™ื ื›ืžื• ื ืกื™ืขื” ืขืœ ื›ื‘ื™ืฉ ื—ืฉื•ืš ื•ืขืจืคื™ืœื™. ืืคืฉืจ ืœืจืื•ืช ื›ืžื” ืžื˜ืจื™ื ืงื“ื™ืžื” - ื–ืืช ื”ืžืฉื™ืžื” ื”ืœื™ืžื•ื“ื™ืช ื”ื ื•ื›ื—ื™ืช ืฉืืชื” ืขื•ื‘ื“ ืขืœื™ื” - ืื‘ืœ ืงืฉื” ืžืื•ื“ ืœืจืื•ืช ืื™ืš ืื•ืชื” ืžืฉื™ืžื” ืžื‘ื™ืื” ื‘ืกื•ืฃ ื”ืชื”ืœื™ืš ืœืชื•ืฆืื” ื”ืจืฆื•ื™ื”. ื•ื‘ื’ืœืœ ื–ื” ื›ืœ ื›ืš ืงืฉื” ืœื”ืชืžื™ื“ ื‘ืžืฉื™ืžื” ื”ื ื•ื›ื—ื™ืช, ื•ื‘ืžื™ื•ื—ื“ ืื ื”ื™ื ืžืฉืขืžืžืช, ืงืฉื”, ืžืชืกื›ืœืช, ืžื›ืขื™ืกื” ืื• ื™ื•ืฆืจืช ืจื’ืฉื•ืช ืฉืœื™ืœื™ื™ื ืื—ืจื™ื ืžื›ืœ ืกื•ื’. ื•ื›ืŸ ืžืฉื™ืžื•ืช ืงืฉื•ืช ื ื•ื˜ื•ืช ืœืขืฉื•ืช ืืช ื–ื”. ืœื›ืŸ ื”ืื•ืžื ื•ืช ืฉืœ ืœื”ืฉื™ื’ ื“ื‘ืจื™ื ื‘ืœืชื™ ืืคืฉืจื™ื™ื ื™ื›ื•ืœื” ืœื”ืกืชื›ื ื‘ืฉืชื™ ื ืงื•ื“ื•ืช: 1. ื›ืฉื™ืฉ ืจื’ืข ืฉืœ ื‘ื”ื™ืจื•ืช, ืื• ืื ื™ืฉ ื—ื‘ืจ ืฉื›ื‘ืจ ื›ืชื‘ ืชื•ื›ื ื™ืช ืฉืืชื ื™ื›ื•ืœื™ื ืœืงื—ืช - ืชื‘ื ื• ืœื›ื ืชื•ื›ื ื™ืช ืขื‘ื•ื“ื” ืžืกื•ื“ืจืช, ืžืคื•ืจื˜ืช ื•ื›ืชื•ื‘ื”. ื”ื™ื ื—ื™ื™ื‘ืช ืœื”ื™ื•ืช ื›ืชื•ื‘ื” ื›ื™ ืžื”ืจืืฉ ื”ื™ื ืชื™ืžื—ืง ืœื›ื ืžื”ืจ ืžืื•ื“. 2. ื‘ื›ืœ ืฉืืจ ื”ื–ืžืŸ ืชืขื‘ื“ื• ืชืžื™ื“ ืขืœ ื”ืžืฉื™ืžื” ื”ื‘ืื” ื‘ืชื•ื›ื ื™ืช ืขื‘ื•ื“ื”. ืžื•ืชืจ ืœื”ื—ืœื™ืฃ ืชื•ื›ื ื™ืช ืขื‘ื•ื“ื” ืจืง ื‘ืจื’ืข ืฉืœ ื‘ื”ื™ืจื•ืช ืื• ืื ืกื™ื™ืžืชื ืืช ื›ืœ ื”ืžืฉื™ืžื•ืช ืฉื‘ื”. ืฉื™ืขื•ืจ ืื—ืจื™ ืฉื™ืขื•ืจ, ืžืฉื™ืžื” ืื—ืจื™ ืžืฉื™ืžื” ื•ืฆืขื“ ืื—ืจื™ ืฆืขื“ ื”ื ื”ื“ืจืš ืฉืœื ื• ืœื”ืฉื™ื’ ื’ื ืืช ื”ื“ื‘ืจื™ื ืฉื ืจืื™ื ื”ื™ื•ื ื‘ืœืชื™ ืืคืฉืจื™ื™ื.

ToCode
1 419
1. ืคื•ื“ ื”ื•ื ืงื•ื ื˜ื™ื™ื ืจ. ืื• ืœืคื—ื•ืช ืœืชืงื•ืคื” ื”ืงืจื•ื‘ื” ื™ื”ื™ื” ืœื ื• ื ื•ื— ืžืื•ื“ ืœื—ืฉื•ื‘ ืขืœื™ื• ื‘ืชื•ืจ ืงื•ื ื˜ื™ื™ื ืจ. ืคื•ื“ ื–ื” ืžืฉื”ื• ืฉืจืฅ ืขืœ ืฉืจืช ืžืชื•ืš ืื™ืžื’', ื•ืงื•ื‘ืจื ื˜ื™ืก ื™ื•ื•ื“ื ืฉืื•ืชื• ืคื•ื“ ื™ืžืฉื™ืš ืœืจื•ืฅ ื›ืœ ืขื•ื“ ืฆืจื™ืš ืื•ืชื• ื•ืื ื”ื•ื ืžืชืจืกืง ืงื•ื‘ืจื ื˜ืก ื™ืจื™ื ืื—ื“ ื—ื“ืฉ ื‘ืžืงื•ืžื•. 2. ื“ื™ืคืœื•ื™ืžื ื˜ ื–ื” ืžื” ืฉื™ื•ืฆืจ ืืช ื”ืคื•ื“ื™ื, ื›ืœื•ืžืจ ื–ืืช ื”ืชืงื ื” ืฉืœ ืชื•ื›ื ื”. ืžืจื’ืข ืฉืฉืœื—ืชื Deployment ืœืงื•ื‘ืจื ื˜ื™ืก ื”ื•ื (ื”ื™ื?) ื™ื ืกื” ืœื™ืฆื•ืจ ืงื•ื ื˜ื™ื™ื ืจื™ื (ืคื•ื“ื™ื) ืžืชื•ืš ื”ืชื™ืื•ืจ ืฉืžื•ืคื™ืข ื‘ Deployment. 3. ืกืจื‘ื™ืก ื–ืืช ื”ื“ืจืš ืฉืœื ื• ืœื”ืชื—ื‘ืจ ืœืคื•ื“. ืชื–ื›ืจื• ืฉืœืงื•ื‘ืจื ื˜ื™ืก ื™ืฉ ืงืœืืกื˜ืจ ืฉืœื ืฉืœ ืฉืจืชื™ื ืขืœื™ื• ื”ื•ื ื™ื›ื•ืœ ืœื”ืจื™ืฅ ืืช ื”ืคื•ื“ ืฉืœื›ื, ื•ื’ื ืื ื™ืฉืขืžื ืœื• ืื• ืื ืื—ื“ ื”ืฉืจืชื™ื ื™ื”ื™ื” ืขืžื•ืก ืงื•ื‘ืจื ื˜ื™ืก ื™ื•ื›ืœ ืœื”ื–ื™ื– ืืช ื”ืคื•ื“ ืžืฉืจืช ืœืฉืจืช. ืกืจื‘ื™ืก ื–ื” ืกื•ื’ ืฉืœ ืžื™ืคื•ื™ ืคื•ืจื˜ื™ื ืฉืื•ืžืจ ืฉื›ืฉืžืชื—ื‘ืจื™ื ืœืคื•ืจื˜ ืžืกื•ื™ื ื‘ IP ื”ืฆื™ื‘ื•ืจื™ ืฉืœ ื”ืงืœืืกื˜ืจ ืื– ืงื•ื‘ืจื ื˜ื™ืก ืฆืจื™ืš ืœื—ื‘ืจ ืืชื›ื ืœืคื•ื“ ื”ืžืชืื™ื, ืื™ืคื” ืฉื”ื•ื ืœื ืจืฅ ื›ืจื’ืข. ื›ืœ ืื—ื“ ืžื”ืฉืœื•ืฉื” ื™ื›ื•ืœ ืœื”ื™ื•ืช ืžื™ื•ืฆื’ ืขืœ ื™ื“ื™ ืงื•ื‘ืฅ YAML ืฉืžืชืืจ ืืช ื”ืžืืคื™ื™ื ื™ื ืฉืœื•. ืจืื™ื ื• ื›ื‘ืจ ืงื•ื‘ืฅ YAML ืขื‘ื•ืจ Deployment, ื•ืื ืืชื ืกืงืจื ื™ื ืื– ื”ื ื” ืงื•ื‘ืฅ YAML ืคืฉื•ื˜ ืขื‘ื•ืจ ืกืจื‘ื™ืก:
apiVersion: v1
kind: Service
metadata:
  annotations:
    kompose.cmd: kompose convert
    kompose.version: 1.25.0 (a70f80cc)
  creationTimestamp: null
  labels:
    io.kompose.service: nginx
  name: nginx
spec:
  type: NodePort
  ports:
    - name: "80"
      port: 80
      targetPort: 80
  selector:
    io.kompose.service: nginx
status:
  loadBalancer: {}
ื”ืงื•ื‘ืฅ ืžืชืืจ ืกืจื‘ื™ืก ืฉืžืชื—ื‘ืจ ืœ Deployment ืฉืœ ื” nginx ืฉื™ืฆืจื ื• ืงื•ื“ื. ื”ืžืคืชื— ืœื”ื‘ื™ืŸ ืืช ื”ืงื•ื‘ืฅ ื”ื•ื ื”ื‘ืœื•ืง ืฉืžืชื—ื™ืœ ื‘ืžื™ืœื” selector, ืฉืงื•ื‘ืข ืœืื™ื–ื” ืชื•ื›ื ื™ืช ื”ืกืจื‘ื™ืก ื”ื–ื” ืฆืจื™ืš ืœื—ื‘ืจ ืื•ืชื ื•, ื• port ืฉืงื•ื‘ืข ืœืื™ื–ื” ืคื•ืจื˜ ืฆืจื™ืš ืœื”ืชื—ื‘ืจ ืฉื. # ืงื•ื‘ืจื ื˜ื™ืก ื•ื”ืขื ืŸ: ื”ืชืงื ื™ ืงืœื˜ ื•ืคืœื˜ ืขื“ ืœืคื” ืจืื™ื ื• ืฉืงื•ื‘ืจื ื˜ื™ืก ื”ื™ื (ื”ื•ื?) ืžืขืจื›ืช ื”ืคืขืœื” ืœืงืœืืกื˜ืจื™ื. ืจืื™ื ื• ืฉื”ืชืคืงื™ื“ ืฉืœื” ื”ื•ื ืœื”ืคืขื™ืœ ืชื•ื›ื ื™ื•ืช, ื›ืœื•ืžืจ ืื™ืžื’'ื™ื, ื•ืœื™ื™ืฆืจ ืžื”ื ืงื•ื ื˜ื™ื™ื ืจื™ื ื•ืœื•ื•ื“ื ืฉืื•ืชื ืงื•ื ื˜ื™ื™ื ืจื™ื ืžืžืฉื™ื›ื™ื ืœืจื•ืฅ ื•ืžืงื‘ืœื™ื ืืช ืžืฉืื‘ื™ ื”ืฉืจืช ืฉื”ื ืฆืจื™ื›ื™ื. ื”ื™ื‘ื˜ ื ื•ืกืฃ ื‘ื• ืื ืœื•ื’ื™ื™ืช ืžืขืจื›ืช ื”ื”ืคืขืœื” ืชืขื–ื•ืจ ืœื ื• ืœื”ื‘ื™ืŸ ืืช ืงื•ื‘ืจื ื˜ื™ืก ื”ื•ื ื”ื’ื™ืฉื” ืœื”ืชืงื ื™ ืงืœื˜ ื•ืคืœื˜. ืžืขืจื›ืช ื”ืคืขืœื” ื›ื–ื›ื•ืจ ืœื›ื ืžื—ื‘ืจืช ืืช ื”ืชื•ื›ื ื™ื•ืช ืฉืจืฆื•ืช ืขืœ ื”ืžื—ืฉื‘ ืขื ื”ื—ื•ืžืจื” ืฉืœ ื”ืžื—ืฉื‘ ื‘ืืžืฆืขื•ืช ื“ืจื™ื™ื‘ืจื™ื. ืชื•ื›ื ื™ืช ืœื ื›ื•ืชื‘ืช ื™ืฉื™ืจื•ืช ืœื“ื™ืกืง ืืœื ื‘ืชื™ื•ื•ืš ืžืขืจื›ืช ื”ื”ืคืขืœื”. ืชื•ื›ื ื™ืช ืœื ืงื•ืจืืช ื™ืฉื™ืจื•ืช ืžื”ืžืงืœื“ืช ืืœื ื‘ืชื™ื•ื•ืš ืžืขืจื›ืช ื”ื”ืคืขืœื”. ื‘ืื•ืชื• ื”ืื•ืคืŸ ืงื•ื‘ืจื ื˜ื™ืก ืžืชื•ื•ืš ืืช ื”ื’ื™ืฉื” ืฉืœ ื”ืงื•ื ื˜ื™ื™ื ืจื™ื ืœืžืฉืื‘ื™ื ื—ื™ืฆื•ื ื™ื™ื ืฉื ืฉืžืจื™ื ื‘ืขื ืŸ. ืœื“ื•ื’ืžื”: 1. ืžืขืจื›ืช ื”ืงื‘ืฆื™ื ืฉืœ ืงื•ื ื˜ื™ื™ื ืจ ืœื ืฉื•ืจื“ืช ื›ืฉื”ืงื•ื ื˜ื™ื™ื ืจ ื ืกื’ืจ. ื‘ืชื™ื•ื•ืš ืงื•ื‘ืจื ื˜ื™ืก ื”ืงื•ื ื˜ื™ื™ื ืจ ื™ื›ื•ืœ ืœืงื‘ืœ Volume ืฉื–ื” ืžืงื•ื ืขืœ ื”ื“ื™ืกืง ืฉืืคืฉืจ ืœื›ืชื•ื‘ ืืœื™ื• ื•ื”ืžื™ื“ืข ื™ื™ืฉืžืจ ื’ื ื›ืฉื”ืงื•ื ื˜ื™ื™ื ืจ ื™ื™ืกื’ืจ. 2. ืงื•ื ื˜ื™ื™ื ืจ ื™ื›ื•ืœ ืœืงื‘ืœ ืžื™ื“ืข ืกื•ื“ื™ ื‘ืืžืฆืขื•ืช ืžื ื’ื ื•ืŸ Secrets ืฉืœ ืงื•ื‘ืจื ื˜ื™ืก. 3. ืงื•ื ื˜ื™ื™ื ืจ ื™ื›ื•ืœ ืœืงื‘ืœ ืžืฉืชื ื™ ืกื‘ื™ื‘ื” ืฉืžื•ืขื‘ืจื™ื ืืœื™ื• ืžืชื•ืš ืงื•ื‘ืจื ื˜ื™ืก. ืงืœืืกื˜ืจื™ื ืฉื•ื ื™ื ื™ื›ื•ืœื™ื ืœืžืžืฉ ืืช ื”ื”ืชืงื ื™ื ื”ื—ื™ืฆื•ื ื™ื™ื ื‘ื“ืจื›ื™ื ืฉื•ื ื•ืช: ืœื“ื•ื’ืžื” ืงืœืืกื˜ืจ ืงื•ื‘ืจื ื˜ื™ืก ืฉืจืฅ ืขืœ ืขื ืŸ ืฉืœ Azure ื™ื›ื•ืœ ืœื—ื‘ืจ Volume ืœื›ื•ื ืŸ ืื—ืกื•ืŸ ื‘ืขื ืŸ ืฉืœ ืื–ื•ืจ, ื•ืงืœืืกื˜ืจ ืื—ืจ ืฉืจืฅ ืขืœ ืืžื–ื•ืŸ ื™ื—ื‘ืจ ืืช ื” Volume ืœื›ื•ื ืŸ ืื—ืกื•ืŸ ื‘ืขื ืŸ ืฉืœ ืืžื–ื•ืŸ. ืžื‘ื—ื™ื ืช ื”ืชื•ื›ื ื™ืช ืฉืœื ื• ืฉืจืฆื” ื‘ืชื•ืš ื”ืงืœืืกื˜ืจ ื”ื’ื™ืฉื” ื”ื™ื ื–ื”ื” ื‘ืฉื ื™ ื”ืžืงืจื™ื. ืื ื—ื ื• ืžืงื‘ืœื™ื Volume ื•ืงื•ื‘ืจื ื˜ื™ืก ืื—ืจืื™ ืขืœ ืžื™ืคื•ื™ ืื•ืชื• Volume ืœื”ืชืงืŸ ื”ืื™ื—ืกื•ืŸ ื”ื—ื™ืฆื•ื ื™. ## ืื™ืš ืžืžืฉื™ื›ื™ื ืžื›ืืŸ ื•ืื ื”ื”ืงื“ืžื” ื”ื–ืืช ืขืฉืชื” ืœื›ื ื—ืฉืง ืœื”ืžืฉื™ืš ื•ืœืœืžื•ื“ ืงื•ื‘ืจื ื˜ื™ืก ืชืฉืžื—ื• ืœืฉืžื•ืข ืฉื™ืฉ ืื™ื ืกื•ืฃ ืžื“ืจื™ื›ื™ื ื˜ื•ื‘ื™ื ื‘ืจืฉืช ื›ื•ืœืœ ื›ืืœื” ืฉื™ืชื ื• ืœื›ื ืœืชืจื’ืœ ื‘ืฆื•ืจื” ืื™ื ื˜ืจืงื˜ื™ื‘ื™ืช. ืื ื™ ืžืžืœื™ืฅ ืœื”ืชื—ื™ืœ ืžื”ืงื™ืฉื•ืจ ื”ื–ื”: https://kubernetes.io/docs/tutorials/kubernetes-basics/ ืฉื›ื•ืœืœ ืกื™ื“ืจื” ืฉืœ 6 ื˜ื•ื˜ื•ืจื™ืืœืก ืื™ื ื˜ืจืงื˜ื™ื‘ื™ื™ื ืœืขื‘ื•ื“ื” ืขื ืงื•ื‘ืจื ื˜ื™ืก ื•ื”ืชืงื ืช ื™ื™ืฉื•ืžื™ื ื‘ืืžืฆืขื•ืชื•. ืขืžื•ื“ ื”ืชื™ืขื•ื“ ื”ืจืืฉื™ ืฉืœ ืงื•ื‘ืจื ื˜ืก ื”ื•ื ื’ื ืžืงื•ื ืœื™ืžื•ื“ ืžืฆื•ื™ืŸ ืื ืืชื ืื•ื”ื‘ื™ื ืœืงืจื•ื ืžื’ื™ืœื•ืช ืฉืœ ื˜ืงืกื˜ (ื ื• ืืœ ืชื“ืื’ื• ื™ืฉ ื’ื ืชืžื•ื ื•ืช). ืงื™ืฉื•ืจ: https://kubernetes.io/docs/concepts/

ToCode
1 419
# ืžื•ืฉื’ื™ื ื‘ืกื™ืกื™ื™ื ื‘ืงื•ื‘ืจื ื˜ื™ืก ืฉืžืขืชื ืขืœ ืงื•ื‘ืจื ื˜ื™ืก ืื‘ืœ ืœื ื‘ื˜ื•ื—ื™ื ืžื” ื–ื”? ืจื•ืฆื™ื ืœืœืžื•ื“ ื•ืœื ื™ื•ื“ืขื™ื ืืคื™ืœื• ืื™ืคื” ืœื”ืชื—ื™ืœ? ื”ืคื•ืกื˜ ื”ื–ื” ื‘ืฉื‘ื™ืœื›ื ื•ืื ื™ ืžืงื•ื•ื” ืฉืืฆืœื™ื— ืœืขืฉื•ืช ืงืฆืช ืกื“ืจ ื‘ืื•ืงื™ื™ื ื•ืก ืฉื ืงืจื ืงื•ื‘ืจื ื˜ื™ืก, ืœืคื—ื•ืช ื‘ื”ืชื—ืœื” ืฉืœื•. ## ืงื•ื‘ืจื ื˜ื™ืก ื”ื™ื ืžืขืจื›ืช ื”ืคืขืœื” ืœืงืœืืกื˜ืจื™ื ืืชื ื™ื•ื“ืขื™ื ื›ื‘ืจ ืฉืœืžื—ืฉื‘ื™ื ื™ืฉ ืžืขืจื›ื•ืช ื”ืคืขืœื”: ื™ืฉ Windows, Linux ื• OS/X; ืœื˜ืœืคื•ื ื™ื ื™ืฉ ืืช Android ื• iOS ื•ืขื•ื“ ื›ืžื” ื•ื’ื ืžื›ืฉื™ืจื™ IOT ื”ืจื‘ื” ืคืขืžื™ื ืžื’ื™ืขื™ื ืขื ืื™ื–ื•ืฉื”ื™ ืžืขืจื›ืช ื”ืคืขืœื” ืžื‘ื•ืกืกืช ืœื™ื ื•ืงืก. ืžื” ืฉืœื ื›ืœ ื›ืš ืื™ื ื˜ื•ืื™ื˜ื™ื‘ื™ ื”ื•ื ื”ืžื—ืฉื‘ื” ืฉืืคืฉืจ ืœื™ื™ืฆืจ ืžืขืจื›ืช ื”ืคืขืœื” ื’ื ืœืžืฉื”ื• ืฉื”ื•ื ืœื ืžื—ืฉื‘. ืœืžืฉื”ื• ื’ื“ื•ืœ ื™ื•ืชืจ ืžืžื—ืฉื‘. ื‘ืžืงืจื” ืฉืœื ื• ืœืื•ืกืฃ ืฉืœ ืฉืจืชื™ื. ืื•ืกืฃ ืฉืœ ืฉืจืชื™ื ื ืงืจื Cluster ื•ืงื•ื‘ืจื ื˜ื™ืก ื”ื•ื (ื”ื™ื?) ืžืขืจื›ืช ื”ืคืขืœื” ืœืงืœืืกื˜ืจื™ื. ืžืขืจื›ืช ื”ืคืขืœื” ืจื’ื™ืœื” ืฉืœ ืžื—ืฉื‘ ืื—ืจืื™ืช ืขืœ ื”ืคืขืœืช ืชื•ื›ื ื™ื•ืช ื•ื ื™ื”ื•ืœ ื•ื—ืœื•ืงืช ืžืฉืื‘ื™ ื”ืžืขืจื›ืช ืœืชื•ื›ื ื™ื•ืช ืฉืจืฆื•ืช. ื”ื™ื ื’ื ื“ื•ืื’ืช ืฉืชื•ื›ื ื™ื•ืช ืœื ื™ื“ืจืกื• ืื—ืช ืืช ื”ืฉื ื™ื”, ื•ืžืกืคืงืช ืœืชื•ื›ื ื™ื•ืช ื’ื™ืฉื” ืงืœื” ื•ืื—ื™ื“ื” ืœื”ืชืงื ื™ ื”ืงืœื˜ ืคืœื˜ ืฉืœ ื”ืžื—ืฉื‘. ื›ืœื•ืžืจ ืื ื™ืฉ ืœื™ ืชื•ื›ื ื™ืช ืฉื›ืชื•ื‘ื” ืœืžืขืจื›ืช ื”ืคืขืœื” Windows, ืื– ื–ื” ืœื ืžืฉื ื” ืœื” ืื™ื–ื” ืกื•ื’ ืžืงืœื“ืช ืžื—ื•ื‘ืจืช ืœืžื—ืฉื‘ ืื• ืืคื™ืœื• ืื ื–ื• ืžืงืœื“ืช ืืœื—ื•ื˜ื™ืช. ื”ืชื•ื›ื ื™ืช ืžืงื‘ืœืช ืืช ื”ืงืœื˜ ื‘ืืžืฆืขื•ืช ื”ืชื™ื•ื•ืš ืฉืœ ืžืขืจื›ืช ื”ื”ืคืขืœื” ื•ื™ื›ื•ืœื” ืœืขื‘ื•ื“ ื‘ืื•ืชื” ืฆื•ืจื” ืขื ื›ืœ ื”ืžืงืœื“ื•ืช. ืžืขืจื›ืช ื”ืคืขืœื” ืฉืœ ืงืœืืกื˜ืจ ืœื•ืงื—ืช ืงื•ื ืกืคื˜ ื“ื•ืžื”, ื•ืžืืคืฉืจืช ืœื ื• ืœื›ืชื•ื‘ "ืชื•ื›ื ื™ื•ืช" ืฉืจืฆื•ืช ืขืœ ื”ืงืœืืกื˜ืจ. ืชื•ื›ื ื™ืช ืฉืจืฆื” ืขืœ ืงืœืืกื˜ืจ ืชื”ื™ื” ื‘ื“ืจืš ื›ืœืœ ืกื•ื’ ืฉืœ ืกืจื‘ื™ืก ืฉืžืงื‘ืœ ื‘ืงืฉื•ืช ื•ืฉื•ืœื— ืชืฉื•ื‘ื•ืช - ื›ืžื• Web Application ืื• ื‘ืกื™ืก ื ืชื•ื ื™ื. ืงื•ื‘ืจื ื˜ื™ืก ืชืคืขื™ืœ ืืช ื”ื™ื™ืฉื•ืžื™ื ื”ืืœื”, ืชื“ืื’ ืœื—ืœืง ืœื”ื ืืช ืžืฉืื‘ื™ ื”ืงืœืืกื˜ืจ - ื›ืœื•ืžืจ ืชื—ืœื™ื˜ ืžื™ ื™ืจื•ืฅ ืขืœ ืื™ื–ื” ืฉืจืช ื•ืื™ื–ื” ื—ืœืง ืžื”ืฉืจืช ื”ื•ื ื™ืงื‘ืœ - ื•ืชื“ืื’ ืœื”ืฉืื™ืจ ืื•ืชื ื‘ื—ื™ื™ื ื•ืœื”ืคืขื™ืœ ืื•ืชื ืžื—ื“ืฉ ืื ืื—ื“ ืžื”ื ืžืชืจืกืง. ื•ื›ืžื• ืฉืชื•ื›ื ื™ืช ืจื’ื™ืœื” ืœื ืฆืจื™ื›ื” ืœื”ื›ื™ืจ ืืช ื”ื—ื•ืžืจื” ืขืฆืžื” ืขืœื™ื” ื”ื™ื ืจืฆื”, ื›ื™ ื”ื™ื ืชืžื™ื“ ืขื•ื‘ื“ืช ื‘ืชื™ื•ื•ืš ืžืขืจื›ืช ื”ื”ืคืขืœื”, ื›ืš ืชื•ื›ื ื™ืช ืฉืจืฆื” ื‘ืชื•ืš ืงื•ื‘ืจื ื˜ื™ืก ืœื ื—ื™ื™ื‘ืช ืœื”ื›ื™ืจ ืืช ื”ืฉืจืชื™ื ืขืฆืžื ืขืœื™ื”ื ื”ื™ื ืจืฆื”, ื•ื™ื›ื•ืœื” ืœื”ื ื™ื— ืฉื”ื ืžืชื ื”ื’ื™ื ื‘ืฆื•ืจื” ืžืกื•ื™ืžืช - ืœืคื™ ื”ืžืžืฉืง ืฉื”ืชื•ื›ื ื™ืช ืžืงื‘ืœืช ืžืงื•ื‘ืจื ื˜ื™ืก, ื›ืœื•ืžืจ ืžืžืขืจื›ืช ื”ื”ืคืขืœื”. ## ืชื•ื›ื ื™ื•ืช ื”ืŸ ืื™ืžื’'ื™ื, ืชื”ืœื™ื›ื™ื ื”ื ืงื•ื ื˜ื™ื™ื ืจื™ื ื›ืžื• ืฉืžืขืจื›ืช ื”ืคืขืœื” ืฉืœ ืžื—ืฉื‘ื™ื ื™ื•ื“ืขืช ืœืงื—ืช ืงื‘ืฆื™ ื”ืคืขืœื” - ืœื“ื•ื’ืžื” ื‘ Windows ืงื‘ืฆื™ EXE - ื•ืœื”ืคืขื™ืœ ืื•ืชื, ื›ืœื•ืžืจ ืœื™ืฆื•ืจ ืžื”ื ืชื”ืœื™ื›ื™ื ืขืœ ื”ืžื—ืฉื‘, ื›ืš ืงื•ื‘ืจื ื˜ื™ืก ื™ื•ื“ืขืช ืœืงื—ืช ืงื‘ืฆื™ ื”ืคืขืœื” ืฉื”ื OCI Images ื•ืœื™ืฆื•ืจ ืžื”ื ืชื”ืœื™ื›ื™ื ืฉื”ื Containers. ืื™ืžื’' ื”ื•ื ื›ืœ ืžื” ืฉืืชื ืžื›ื™ืจื™ื ืžืขื‘ื•ื“ื” ืขื Docker ืื• Podman. ื–ื” ืžื™ื“ืข ื‘ื™ื ืืจื™ ืฉืžืชืืจ ืืคืœื™ืงืฆื™ื” ืžืกื•ื™ืžืช ื•ืืช ื›ืœ ื”ืชืœื•ื™ื•ืช ืฉืœ ืื•ืชื” ืืคืœื™ืงืฆื™ื”. ืื™ืžื’'ื™ื ืžืื•ื—ืกื ื™ื ื‘ Registries ื•ื’ื ืœืคื ื™ ืงื•ื‘ืจื ื˜ื™ืก ื™ื“ืขื ื• ืœื”ืคืขื™ืœ ืงื•ื ื˜ื™ื™ื ืจ ืžืชื•ืš ืื™ืžื’' ืขื ื“ื•ืงืจ ืœื“ื•ื’ืžื” ื‘ืืžืฆืขื•ืช ื”ืคืขืœืช:
$ docker run hello-world
ืงื•ื‘ืจื ื˜ื™ืก ื‘ืชื•ืจ ืžืขืจื›ืช ื”ืคืขืœื” ื™ื•ื“ืข (ื™ื•ื“ืขืช?) ืœืงื—ืช ืื™ืžื’'ื™ื ื›ืžื• ื” hello-world ืฉืœื ื• ื•ืœื”ืจื™ืฅ ืื•ืชื ืขืœ ื”ืงืœืืกื˜ืจ, ื›ืœื•ืžืจ ืœื‘ื ื•ืช ืžื”ื ืงื•ื ื˜ื™ื™ื ืจ ื•ืœืชืช ืœืื—ืช ื”ืžื›ื•ื ื•ืช ื‘ืงืœืืกื˜ืจ ืœื”ืจื™ืฅ ืืช ื”ืงื•ื ื˜ื™ื™ื ืจ ื”ื–ื”. ืงื•ื‘ืจื ื˜ื™ืก ื’ื ืชืฉื™ื ืœื‘ ืื ื”ืงื•ื ื˜ื™ื™ื ืจ ืžืชืจืกืง ื•ืชื“ืข ืœื”ืคืขื™ืœ ืงื•ื ื˜ื™ื™ื ืจ ื—ื“ืฉ ืžืื•ืชื• ืื™ืžื’'. ื‘ืžืขืจื›ืช ื”ืคืขืœื” ืจื’ื™ืœื” ืื ื—ื ื• ืžืฉืชืžืฉื™ื ื‘ืชื•ื›ื ืช Installer ื›ื“ื™ ืœื”ืชืงื™ืŸ ืืช ื”ืชื•ื›ื ื™ื•ืช ืฉืœื ื•. ื–ื” ืœื ื ื“ื™ืจ ืœื”ื•ืจื™ื“ ืžื”ืจืฉืช ืงื•ื‘ืฅ ื‘ืกื™ื•ืžืช msi, ืœื”ืจื™ืฅ ืื•ืชื• ื•ื›ืš ืœืงื‘ืœ ืชื•ื›ื ื” ื›ื–ืืช ืื• ืื—ืจืช ื–ืžื™ื ื” ืœื ื• ืขืœ ื”ืžื—ืฉื‘. ื‘ืงื•ื‘ืจื ื˜ื™ืก ื”ื”ืชืงื ื” ืžืชื‘ืฆืขืช ื‘ืืžืฆืขื•ืช ืงื‘ืฆื™ ื˜ืงืกื˜ ื‘ืคื•ืจืžื˜ YAML ืฉืžืชืืจื™ื ืœืงืœืืกื˜ืจ ืžื” ื”ืื™ืžื’' ืฉืื ื—ื ื• ืจื•ืฆื™ื ืœื”ืชืงื™ืŸ ื•ืžื” ื“ืจื™ืฉื•ืช ื”ืžืขืจื›ืช ืฉื”ื•ื ืฆืจื™ืš. ืœื“ื•ื’ืžื” ื”ืงื•ื‘ืฅ ื”ื‘ื ื”ื•ื YAML ืฉืžื’ื“ื™ืจ Deployment (ืฉื–ื• ื”ืชืงื ื”) ืฉืœ ืื™ืžื’' ืฉืœ ืฉืจืช ื”ื•ื•ื‘ nginx:
apiVersion: apps/v1
kind: Deployment
metadata:
  annotations:
    kompose.cmd: kompose convert
    kompose.version: 1.25.0 (a70f80cc)
  creationTimestamp: null
  labels:
    io.kompose.service: nginx
  name: nginx
spec:
  replicas: 1
  selector:
    matchLabels:
      io.kompose.service: nginx
  strategy: {}
  template:
    metadata:
      annotations:
        kompose.cmd: kompose convert
        kompose.version: 1.25.0 (a70f80cc)
      creationTimestamp: null
      labels:
        io.kompose.service: nginx
    spec:
      containers:
        - image: nginx
          name: nginx
          ports:
            - containerPort: 80
          resources: {}
      restartPolicy: Always
status: {}
## ืคื•ื“ื™ื, ื“ื™ืคืœื•ืžื ื˜ืก ื•ืกืจื‘ื™ืกื™ื ืฉืœื•ืฉื” ืžื•ืฉื’ื™ื ืฉื›ื“ืื™ ืœื”ื›ื™ืจ ื›ื‘ืจ ืžืชื—ื™ืœืช ื”ืขื‘ื•ื“ื” ืฉืœื›ื ืขื ืงื•ื‘ืจื ื˜ืก ื”ื Pod, Deployment ื• Service (ื™ืฉ ืขื•ื“ ื”ืจื‘ื”, ืื‘ืœ ืืช ืฉืœื•ืฉืช ืืœื” ื ืฆื˜ืจืš ืžืžืฉ ืžื”ืฉื ื™ื” ื”ืจืืฉื•ื ื”):

ToCode
1 419
ื”ื™ ื”ืงื™ืฉื•ืจ ืœืงืจื™ืื” ืžื”ืืชืจ ืœื ืขื‘ื“ ื˜ื•ื‘ ื”ื™ื•ื ื–ื” ื”ืงื™ืฉื•ืจ https://www.tocode.co.il/blog/2021-12-css-sticky-overflow

ToCode
1 419
# ื”ื™ื•ื ืœืžื“ืชื™: CSS Sticky ื• overflow ืœื ื”ื•ืœื›ื™ื ื˜ื•ื‘ ื™ื—ื“ ืžืืคื™ื™ืŸ CSS Sticky ื”ื•ื ื”ื“ืจืš ื”ื›ื™ ืงืœื” ื”ื™ื•ื ืœื”ื’ื“ื™ืจ ืฉืคืก ืขืœื™ื•ืŸ ืžื”ืขืžื•ื“ ื™ืžืฉื™ืš ืœืœื•ื•ืช ืื•ืชื ื• ื›ืฉืื ื—ื ื• ื’ื•ืœืœื™ื ืœืžื˜ื”, ื•ื‘ืขืฆื "ื™ื™ื“ื‘ืง" ืœืจืืฉ ื”ืขืžื•ื“. ื”ื•ื ื ื•ื— ื‘ืžื™ื•ื—ื“ ื›ืฉื™ืฉ ืœื›ื ื˜ื‘ืœื” ื•ืืชื ืจื•ืฆื™ื ืฉืฉื•ืจืช ื”ื›ื•ืชืจืช ืชืžืฉื™ืš ืœืœื•ื•ืช ืืช ื”ื’ื•ืœืฉ ื’ื ืื ื”ื•ื ื’ื•ืœืœ ืœืžื˜ื” ืืช ื”ืฉื•ืจื•ืช ืขืฆืžืŸ. ืžื” ืฉืžื™ื•ื—ื“ ื‘ sticky ื‘ื ื™ื’ื•ื“ ืœื”ื’ื“ืจืช overflow: scroll ืขืœ ื”ื˜ื‘ืœื” ื–ื” ืฉืื ื—ื ื• ืœื ืžื™ื™ืฆืจื™ื ืฉื ื™ ืคืกื™ ื’ืœื™ืœื” (ืื—ื“ ื—ื™ืฆื•ื ื™ ืœืขืžื•ื“ ื•ื”ืฉื ื™ ืคื ื™ืžื™ ืœื˜ื‘ืœื”) ืืœื ืžืฉืชืžืฉ ื’ื•ืœืœ ื‘ืคืก ื”ื’ืœื™ืœื” ื”ืจื’ื™ืœ ื”ื—ื™ืฆื•ื ื™ ืฉืœ ื”ืขืžื•ื“ ื•ื›ืฉืฉื•ืจืช ื”ื›ื•ืชืจืช ืฉืœ ื”ื˜ื‘ืœื” ืžื’ื™ืขื” ืœื—ืœืง ื”ืขืœื™ื•ืŸ ืฉืœ ื”ืขืžื•ื“ ื”ื™ื ืคืฉื•ื˜ ื ื“ื‘ืงืช ืœืฉื. ื‘ืงื™ืฆื•ืจ ื”ื•ืกืคืชื™ ืืช ื”ื”ื’ื“ืจื•ืช ื”ืžืชืื™ืžื•ืช ืœ position: sticky ื‘ื“ื™ื•ืง ื›ืžื• ื‘ืชื™ืขื•ื“ ื•ืฆืคื™ืชื™ ื‘ืื™ืžื” ื›ืฉืฉื•ื ื“ื‘ืจ ืœื ืขื‘ื“. ื”ื ื” ื”ืงื•ื“, ืชื—ื™ืœื” ื” HTML ื•ืื—ืจื™ื• ื” CSS (ื“ืžื™ื™ื ื• ืืช ื–ื” ืขื ืžืื•ืช ืฉื•ืจื•ืช):
<div class="root">
<table>
  <thead>
    <tr>
    <th>name</th>
    <th>hair color</th>
    <th>city</th>
    <th>gender</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>bob</td>
      <td>blue</td>
      <td>foo</td>
      <td>agender</td>
    </tr>
    <tr>
      <td>bob</td>
      <td>blue</td>
      <td>foo</td>
      <td>agender</td>
    </tr>
</tbody>
<table>
</div>
.root {
  overflow: hidden;
}
thead th {
  position: sticky;
  top: 0;
  background: #d2d2d2;  
  padding: 2px 5px 2px 0;
  
}

table {
  border-collapse: collapse;
}
ื•ื‘ืงื•ื“ืคืŸ: <iframe height="300" style="width: 100%;" scrolling="no" title="Untitled" src="https://codepen.io/ynonp/embed/qBPqXNQ?default-tab=html%2Cresult" frameborder="no" loading="lazy" allowtransparency="true" allowfullscreen="true"> See the Pen <a href="https://codepen.io/ynonp/pen/qBPqXNQ"> Untitled</a> by Ynon Perek (<a href="https://codepen.io/ynonp">@ynonp</a>) on <a href="https://codepen.io">CodePen</a>. </iframe> ื•ืงืœ ืœืจืื•ืช ืฉื’ืœื™ืœื” ืฉืœ ื”ืžืกืš ืœื ื‘ืืžืช ืžืฉืื™ืจื” ืืช ืฉื•ืจืช ื”ื›ื•ืชืจืช "ื“ื‘ื•ืงื”" ืœืจืืฉ ื”ืขืžื•ื“. ืžื” ืงื•ืจื” ืคื”? ื”ืชืฉื•ื‘ื” ืžืกืชืชืจืช ื‘ืžืฉืคื˜ ื”ื‘ื ืžืชื•ืš MDN: > Note that a sticky element "sticks" to its nearest ancestor that has a "scrolling mechanism" (created when overflow is hidden, scroll, auto, or overlay) ืื• ื‘ืขื‘ืจื™ืช - ื‘ื’ืœืœ ืฉืžืขืœ ื”ื˜ื‘ืœื” ื™ืฉ ืœื™ div ืขื ืžืืคื™ื™ืŸ overflow: hidden, ืœืžืจื•ืช ืฉืœ div ื”ื–ื” ืื™ืŸ ื”ื’ื‘ืœืช ื’ื•ื‘ื” ื•ื”ื•ื ืœื ืžื™ื™ืฆืจ ื’ืœื™ืœื” ืคื ื™ืžื™ืช, ื” sticky ืฉืœ ื”ื˜ื‘ืœื” ื™ื”ื™ื” ื“ื‘ื™ืง ื‘ื™ื—ืก ืืœื™ื• ื•ืœื ื‘ื™ื—ืก ืœ body. ื‘ืžื™ืœื™ื ืื—ืจื•ืช ืฉื•ืจืช ื”ื›ื•ืชืจืช ืฉืœ ื”ื˜ื‘ืœื” ืื›ืŸ ื ื“ื‘ืงืช ืœื—ืœืง ื”ืขืœื™ื•ืŸ, ืคืฉื•ื˜ ืœื—ืœืง ื”ืขืœื™ื•ืŸ ืฉืœ ื” div ืฉืขื•ื˜ืฃ ืื•ืชื”, ื•ื”ื•ื ื–ื– ืœืžืขืœื” ืžื—ื•ืฅ ืœื—ืœืง ืฉืื ื—ื ื• ืจื•ืื™ื. ื”ืคื™ืชืจื•ืŸ? ื›ืžื• ืชืžื™ื“ ืคืฉื•ื˜ ื›ืฉื™ื•ื“ืขื™ื. ื›ืœ ืคืขื ืฉืจื•ืฆื™ื ืœื”ืฉืชืžืฉ ื‘ position: sticky ื™ืฉ ืœื•ื•ื“ื ืฉืื™ืŸ ืžืขืœื™ื›ื ืืœืžื ื˜ ืขื overflow. ื”ื ื” ื”ืงื•ื“ืคืŸ ื”ืžืชื•ืงืŸ: <iframe height="300" style="width: 100%;" scrolling="no" title="Untitled" src="https://codepen.io/ynonp/embed/gOGLxrO?default-tab=html%2Cresult" frameborder="no" loading="lazy" allowtransparency="true" allowfullscreen="true"> See the Pen <a href="https://codepen.io/ynonp/pen/gOGLxrO"> Untitled</a> by Ynon Perek (<a href="https://codepen.io/ynonp">@ynonp</a>) on <a href="https://codepen.io">CodePen</a>. </iframe>

ToCode
1 419
# ืžืชื™ ืžืชื—ื™ืœื™ื ื•ืื™ืคื” ืžื•ืฆืื™ื ื–ืžืŸ? ืืœื” ืฉืชื™ ืฉืืœื•ืช ืฉื•ื ื•ืช. ืืœ ืชื ืกื• ืœื—ื‘ืจ ื‘ื™ื ื™ื”ืŸ. ื”ืจื‘ื” ืคืขืžื™ื ืื ื—ื ื• ื—ื•ืฉื‘ื™ื ืขืœ ืžืฉื™ืžื” ืœื™ืžื•ื“ื™ืช ื•ืžื‘ื™ื ื™ื ื›ืžื” ื”ืฉืงืขื” ืฆืจื™ืš ื‘ืฉื‘ื™ืœ ืœื‘ืฆืข ืื•ืชื”, ื•ืžื‘ื™ื ื™ื ืฉืื™ืŸ ืœื ื• ืขื›ืฉื™ื• ืืช ื”ืžืฉืื‘ื™ื ื•ื”ื–ืžืŸ ืœืขืฉื•ืช ืืช ื–ื”, ื•ืื– ื“ื•ื—ื™ื ืืช ื”ื”ืชื—ืœื”. ื ื›ื•ืŸ, ืื ื™ ืื•ืžืจ ืœืขืฆืžื™, ืื ื™ ื™ื›ื•ืœ ืœืžืฆื•ื ืฉืขื” ื‘ืฉื‘ื•ืข ืœืœืžื•ื“ CSS, ืื‘ืœ ืื ื™ ื’ื ื™ื•ื“ืข ืฉืฉืขื” ื‘ืฉื‘ื•ืข ืœื ืชืกืคื™ืง ื‘ืฉื‘ื™ืœ ืœื”ื’ื™ืข ืœื”ื™ืฉื’ ืžืฉืžืขื•ืชื™ ืื– ืขื“ื™ืฃ ืœื”ืฉืงื™ืข ืืช ื”ืฉืขื” ื”ืคื ื•ื™ื” ืฉืœื™ ื‘ืฉื‘ื•ืข ื‘ืžืฉื”ื• ืื—ืจ. ื”ืชื•ืฆืื” ืฉืœ ื–ื” ื”ื™ื ื“ื—ื™ื” ืื™ื ืกื•ืคื™ืช ืฉืœ ื“ื‘ืจื™ื ืฉืื ื—ื ื• ืจื•ืฆื™ื ืœืขืฉื•ืช ื›ื™ ืืฃ ืคืขื ืื™ ืืคืฉืจ ืœืžืฆื•ื ืขืฉืจ ืฉืขื•ืช ื‘ืฉื‘ื•ืข ืœื”ืฉืงื™ืข ื‘ืœื™ืžื•ื“ CSS. ืžื™ ืฉื™ื“ืคื“ืฃ ืžืกืคื™ืง ืื—ื•ืจื” ื‘ื‘ืœื•ื’ ืคื” ื™ื’ืœื” ืฉืœืคื ื™ ืฉื›ืชื‘ืชื™ ื›ืœ ื™ื•ื ื›ืชื‘ืชื™ ืคืขืžื™ื™ื ื‘ืฉื‘ื•ืข, ื•ืœืคื ื™ ื–ื” ื›ืชื‘ืชื™ ืคืขื ื‘ืฉื‘ื•ืข. ื”ื”ื—ืœื˜ื” ืœื”ืชื—ื™ืœ ืœื›ืชื•ื‘ ื‘ืœื•ื’ ืœื ื”ื™ืชื” ืžืชืืคืฉืจืช ืื ืžืจืืฉ ื”ื™ื™ืชื™ ื—ื•ืฉื‘ ืฉืฆืจื™ืš ืœื›ืชื•ื‘ ืคื•ืกื˜ ื›ืœ ื™ื•ื. ื‘ืื•ืชื” ื ืงื•ื“ื” ืฉืจืง ื”ืชื—ืœืชื™, ื›ืชื™ื‘ื” ื›ืœ ื™ื•ื ื ืจืืชื” ืœื™ ื›ืžื• ื”ืฉืงืขื” ืžื˜ื•ืจืคืช. ืคืขื ื‘ืฉื‘ื•ืข ื”ื™ื” ืžืฉื”ื• ื”ืจื‘ื” ื™ื•ืชืจ ืกื‘ื™ืจ. ื”ื“ืขื” ืฉืœื ื• ืœื’ื‘ื™ ื ื•ืฉืื™ื, ื—ืœื•ืงืช ื–ืžื ื™ื ื•ื”ื™ื›ื•ืœืช ืœืžืฆื•ื ื–ืžืŸ ืœื“ื‘ืจื™ื ืžืฉืชื ื” ืขื ื”ื–ืžืŸ. ื›ื›ืœ ืฉืื ื—ื ื• ืขืžื•ืง ื™ื•ืชืจ ื‘ืชื•ืš ืคืจื•ื™ืงื˜ ื›ืš ืงืœ ื™ื•ืชืจ ืœื”ืžืฉื™ืš ื•ืœืžืฆื•ื ื™ื•ืชืจ ื–ืžืŸ ืขื‘ื•ืจื•. ื”ืชื—ืœื” ื“ื•ืจืฉืช ื”ืจื‘ื” ื™ื•ืชืจ ืื ืจื’ื™ื” ืžื”ื”ืžืฉืš ื•ืฉืขื” ื‘ืชื—ื™ืœืช ื”ืคืจื•ื™ืงื˜ ื”ื™ื ื”ืจื‘ื” ื™ื•ืชืจ "ืงืฉื”" ืžืฉืขื” ื‘ืืžืฆืข ืฉืœื•. ืื ื™ืฉ ืœื›ื ื”ื™ื•ื ืฉืขื” ื‘ื™ื•ื ืœืœืžื•ื“ CSS ื–ื” ืžื”ืžื. ืื‘ืœ ืื ืืชื ืจื•ืฆื™ื ืœื“ืขืช CSS ื˜ื•ื‘ ื™ื•ืชืจ ื•ื™ืฉ ืœื›ื ืจืง ืฉืขื” ื‘ืฉื‘ื•ืข ื‘ืฉื‘ื™ืœ ื–ื” - ืืœ ืชื—ื›ื•. ื›ื›ืœ ืฉืชืชืงื“ืžื• ืขื ื”ืœื™ืžื•ื“ ืชืจืื• ืฉืฉืขื” ื‘ืฉื‘ื•ืข ื”ื•ืคื›ืช ืœืฉืขืชื™ื™ื, ืฉืขืชื™ื™ื ืœืืจื‘ืข ื•ื‘ืกื•ืฃ ืžื’ื™ืขื™ื ืœืฉืขื” ื‘ื™ื•ื ื‘ืงืœื•ืช. ืžืชื—ื™ืœื™ื ื”ื™ื•ื. ืืช ื”ื–ืžืŸ ืืคืฉืจ ืœืžืฆื•ื ื‘ื”ืžืฉืš.