From dad9431499f10197ff66b1f5ac2e29f269351dfd Mon Sep 17 00:00:00 2001 From: illright Date: Mon, 7 Oct 2024 18:27:00 +0000 Subject: [PATCH] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20feature-?= =?UTF-8?q?sliced/documentation@60c93463b7aff7672f35e15f58d4e2a3f13965e9?= =?UTF-8?q?=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 404.html | 4 +- ...9e362.44db6fdb.js => 0499e362.7940ce3b.js} | 2 +- ...221cc.7e1896da.js => 066221cc.06ec80c9.js} | 2 +- ...ee302.9b62bc0a.js => 0a4ee302.baca1795.js} | 2 +- ...64a0f.2f7836d4.js => 2f764a0f.1c1ea022.js} | 2 +- ...1f8ae.e4c5f70f.js => 3121f8ae.dd317339.js} | 2 +- ...d1c3d.877f4062.js => 350d1c3d.57df0615.js} | 2 +- ...f8845.cb4fa0be.js => 370f8845.5ca6fe62.js} | 2 +- ...652fb.a1c2eb86.js => 3d2652fb.5b5cf927.js} | 2 +- ...5053a.c16f46f1.js => 3ef5053a.abadadea.js} | 4 +- ...E.txt => 3ef5053a.abadadea.js.LICENSE.txt} | 0 ...abe1d.ce9d795c.js => 40babe1d.b3927de2.js} | 2 +- ...f28a3.322b62ec.js => 480f28a3.e3e8c8f9.js} | 2 +- ...b6464.26897d6a.js => 488b6464.0f8dcdf2.js} | 2 +- ...61156.6affe7f6.js => 49161156.6e8fe50c.js} | 2 +- ...7bed2.e44189dd.js => 5187bed2.354aa3a6.js} | 2 +- ...8e831.36b1647b.js => 53f8e831.565a6c32.js} | 4 +- ...E.txt => 53f8e831.565a6c32.js.LICENSE.txt} | 0 ...0769a.c6add365.js => 55b0769a.54426547.js} | 2 +- ...bebd6.3b453fe2.js => 55fbebd6.4462abfa.js} | 2 +- ...d98cc.e141b15c.js => 590d98cc.e4f8ef01.js} | 2 +- ...61d3b.bb3f7579.js => 5bd61d3b.000b744a.js} | 2 +- ...e5f34.7992d430.js => 5f7e5f34.114f20ee.js} | 2 +- ...6c8dc.742b6c2e.js => 6636c8dc.643611ba.js} | 2 +- ...a648d.45230f5b.js => 664a648d.6f104f28.js} | 2 +- ...3db7c.d32ccfa2.js => 66d3db7c.8104d873.js} | 2 +- assets/js/7313bf7a.6074efbc.js | 1 - assets/js/7313bf7a.62dbeef4.js | 1 + ...90ed0.72e8eb4a.js => 7a790ed0.70f2e52a.js} | 2 +- ...0dbae.458e0966.js => 84a0dbae.1a081c9c.js} | 2 +- ...ae1bf.50506894.js => 857ae1bf.5ed9dd9a.js} | 2 +- ...5c187.e7b86eb1.js => 87e5c187.51198970.js} | 2 +- ...a42c3.99413a71.js => 8b5a42c3.d37b8df8.js} | 2 +- ...3e59a.a1040703.js => 8b93e59a.c8469578.js} | 2 +- ...e6152.ac52de38.js => 8c1e6152.47e22a6f.js} | 2 +- ...83ff6.57d62a9f.js => 8ce83ff6.7ac5dab4.js} | 2 +- ...3d7f4.828eb6e2.js => 9b83d7f4.b8a982bd.js} | 2 +- ...dcbb0.2eb41639.js => 9f1dcbb0.16886885.js} | 2 +- ...21a63.88f13bb5.js => a1521a63.cd08cdc5.js} | 2 +- ...6f730.af4bf0fb.js => a386f730.e0c9a4c0.js} | 2 +- ...c55ce.020c90ec.js => a61c55ce.275776b6.js} | 4 +- ...E.txt => a61c55ce.275776b6.js.LICENSE.txt} | 0 ...f5b8a.14d96582.js => acaf5b8a.bbea271e.js} | 2 +- ...bb0f7.46ab3b93.js => ba8bb0f7.7f4ffb53.js} | 2 +- ...6474c.3aeeafe1.js => c0c6474c.856ecca8.js} | 2 +- ...0faae.93afbcca.js => c4d0faae.582f7b45.js} | 2 +- ...66f39.b861f146.js => c5666f39.2d3b80ab.js} | 4 +- ...E.txt => c5666f39.2d3b80ab.js.LICENSE.txt} | 0 ...88a7b.019a1bff.js => cb388a7b.8d249fba.js} | 2 +- ...cbfb8.412df8d8.js => d13cbfb8.12b3a893.js} | 4 +- ...E.txt => d13cbfb8.12b3a893.js.LICENSE.txt} | 0 ...aea7e.d7300d38.js => d7baea7e.6cb4bfff.js} | 4 +- ...E.txt => d7baea7e.6cb4bfff.js.LICENSE.txt} | 0 ...9437a.f17f2b4e.js => d999437a.d42ae5cd.js} | 2 +- ...5ecdf.258fc5a2.js => dfe5ecdf.b32c4b90.js} | 2 +- ...c2047.99284e69.js => e01c2047.3cf0ebe9.js} | 2 +- ...03eab.bd9d33c6.js => e1003eab.f5d1a251.js} | 2 +- ...0d304.32288a2f.js => e1c0d304.213c7d23.js} | 2 +- ...f8eb6.ecf70ec8.js => e6bf8eb6.0dcef120.js} | 2 +- ...dcfcb.c7c67d46.js => ed3dcfcb.d5a51c16.js} | 2 +- ...67325.f285b311.js => f2567325.922e1979.js} | 2 +- ...174dc.c0f4bd80.js => f2c174dc.47aef1c8.js} | 2 +- ...29f8e.9edff5bf.js => fe129f8e.9d3467f9.js} | 2 +- .../js/{main.e2ab5a51.js => main.360a9d35.js} | 4 +- ...CENSE.txt => main.360a9d35.js.LICENSE.txt} | 0 ...n.06c92bf3.js => runtime~main.29fb6ef5.js} | 2 +- blog.html | 4 +- blog/archive.html | 4 +- blog/international-community.html | 4 +- blog/rebranding-stable.html | 4 +- blog/tags.html | 4 +- blog/tags/brand.html | 4 +- blog/tags/community.html | 4 +- blog/tags/discord.html | 4 +- blog/tags/promo.html | 4 +- community.html | 6 +- community/team.html | 6 +- docs.html | 6 +- docs/about.html | 6 +- docs/about/alternatives.html | 6 +- docs/about/mission.html | 6 +- docs/about/motivation.html | 6 +- docs/about/promote/for-company.html | 6 +- docs/about/promote/for-team.html | 6 +- docs/about/promote/integration.html | 6 +- docs/about/promote/partial-application.html | 6 +- docs/about/understanding/abstractions.html | 6 +- docs/about/understanding/architecture.html | 6 +- docs/about/understanding/knowledge-types.html | 6 +- docs/about/understanding/naming.html | 6 +- docs/about/understanding/needs-driven.html | 6 +- docs/about/understanding/signals.html | 6 +- docs/branding.html | 6 +- docs/get-started.html | 6 +- docs/get-started/cheatsheet.html | 6 +- docs/get-started/faq.html | 6 +- docs/get-started/overview.html | 6 +- docs/get-started/tutorial.html | 6 +- docs/guides.html | 6 +- docs/guides/examples.html | 6 +- docs/guides/examples/auth.html | 6 +- docs/guides/examples/autocompleted.html | 6 +- docs/guides/examples/browser-api.html | 6 +- docs/guides/examples/cms.html | 6 +- docs/guides/examples/feedback.html | 6 +- docs/guides/examples/i18n.html | 6 +- docs/guides/examples/metric.html | 6 +- docs/guides/examples/monorepo.html | 6 +- docs/guides/examples/page-layout.html | 6 +- docs/guides/examples/platforms.html | 6 +- docs/guides/examples/ssr.html | 6 +- docs/guides/examples/theme.html | 6 +- docs/guides/examples/types.html | 6 +- docs/guides/examples/white-labels.html | 6 +- docs/guides/issues/cross-imports.html | 6 +- docs/guides/issues/desegmented.html | 6 +- docs/guides/issues/routes.html | 6 +- docs/guides/migration/from-custom.html | 6 +- docs/guides/migration/from-v1.html | 6 +- docs/guides/tech/with-nextjs.html | 6 +- docs/guides/tech/with-nuxtjs.html | 6 +- docs/guides/tech/with-react-query.html | 6 +- docs/guides/tech/with-sveltekit.html | 6 +- docs/reference.html | 6 +- docs/reference/isolation.html | 6 +- .../isolation/coupling-cohesion.html | 6 +- .../isolation/decouple-entities.html | 6 +- docs/reference/layers.html | 6 +- docs/reference/public-api.html | 6 +- docs/reference/slices-segments.html | 6 +- examples.html | 4 +- index.html | 4 +- ja/404.html | 4 +- ...f76d8.0d26c4d6.js => 012f76d8.dda6753c.js} | 2 +- ...8f121.c0d3057f.js => 0288f121.9ff7ad0a.js} | 2 +- ...9c23f.78005ed1.js => 0289c23f.bf82634d.js} | 2 +- ...ea7a5.0075ee40.js => 05cea7a5.2123c32d.js} | 2 +- ...94aee.161a7678.js => 06894aee.4fc234ba.js} | 2 +- ...85d97.72948b33.js => 0d985d97.9dfc44db.js} | 2 +- ...5f65b.9289c53a.js => 0fe5f65b.44b30890.js} | 2 +- ...72d65.8afa1d33.js => 12472d65.b965a988.js} | 2 +- ...84f15.602d033f.js => 13884f15.ccb96ee5.js} | 2 +- ...a9db9.966d9fb2.js => 165a9db9.204c30d2.js} | 2 +- ...fe0e3.23e3aaf9.js => 179fe0e3.a3bb1d3d.js} | 2 +- ...93b0e.a0a8141b.js => 1ef93b0e.168c9b4b.js} | 2 +- ...49514.af726dcb.js => 2b049514.f02ded29.js} | 2 +- ...45827.0a305c07.js => 32d45827.c43baede.js} | 2 +- ...f90b7.8478e974.js => 384f90b7.c8d702d1.js} | 2 +- ...15635.383c5b29.js => 40b15635.55157806.js} | 2 +- ...904cc.751756fe.js => 419904cc.665903d5.js} | 2 +- ...81703.fa5355bf.js => 43481703.7a66fd45.js} | 2 +- ...43890.26a031cf.js => 44843890.74a3b667.js} | 2 +- ...d4bf3.af1ba6d7.js => 45dd4bf3.945c3c38.js} | 2 +- ...33c6a.66806be8.js => 5c333c6a.09e3fd94.js} | 2 +- ...32e33.deec39b3.js => 5cc32e33.0a914d85.js} | 4 +- ...E.txt => 5cc32e33.0a914d85.js.LICENSE.txt} | 0 ...ef7cc.cd116cc4.js => 623ef7cc.5c0aeb4b.js} | 2 +- ...9ea9f.b3b1052a.js => 6f39ea9f.408d6831.js} | 2 +- ja/assets/js/7313bf7a.2783f0d6.js | 1 - ja/assets/js/7313bf7a.aa694090.js | 1 + ...4a3b7.e76f082d.js => 7c24a3b7.2dae2f17.js} | 4 +- ...E.txt => 7c24a3b7.2dae2f17.js.LICENSE.txt} | 0 ...4bcbb.e092aba8.js => 8704bcbb.da8405ad.js} | 2 +- ...e0ed2.5ea76ad1.js => 871e0ed2.5448d475.js} | 2 +- ...aebe4.69e142d4.js => 88daebe4.2d024c1f.js} | 2 +- ...fa326.07a4bbad.js => 89dfa326.90f435d2.js} | 2 +- ...9ed98.4fd314fa.js => 8eb9ed98.bc2f1ace.js} | 2 +- ...7a9ba.b4915c4f.js => 92d7a9ba.f51c720a.js} | 2 +- ...4fbea.1943749c.js => 9654fbea.d9987991.js} | 2 +- ...19485.30414878.js => a3319485.3d5b3126.js} | 2 +- ...c55ce.6feb55a0.js => a61c55ce.74f2f5f7.js} | 4 +- ...E.txt => a61c55ce.74f2f5f7.js.LICENSE.txt} | 0 ...3103f.da985167.js => a6e3103f.9f8767d0.js} | 2 +- ...da6d7.530dabc1.js => adada6d7.2f22319c.js} | 2 +- ...7b4dd.3e3855e7.js => b4a7b4dd.7a761edd.js} | 2 +- ...59612.96af0e6f.js => b5a59612.78f88b85.js} | 4 +- ...E.txt => b5a59612.78f88b85.js.LICENSE.txt} | 0 ...6588c.69114980.js => b816588c.8b2c511f.js} | 2 +- ...630e6.670211c1.js => ba5630e6.1eca766d.js} | 2 +- ...1bcd3.2893f66d.js => bc21bcd3.b4d28c9b.js} | 2 +- ...83990.8e3ece82.js => bd483990.fe12195e.js} | 2 +- ...37d41.5f41d6b0.js => c2a37d41.64189f3d.js} | 2 +- ...4bc17.cfe0d34f.js => cef4bc17.bdb283c7.js} | 2 +- ...aad29.449abcfa.js => cf4aad29.367918e9.js} | 2 +- ...da8fa.d22253b6.js => e35da8fa.f638e274.js} | 2 +- ...45454.2e5250f5.js => e3945454.c3538be4.js} | 4 +- ...E.txt => e3945454.c3538be4.js.LICENSE.txt} | 0 ...8a63e.3601c37c.js => e878a63e.839ada31.js} | 2 +- ...5643e.712ef6d7.js => e8e5643e.993c13a9.js} | 4 +- ...E.txt => e8e5643e.993c13a9.js.LICENSE.txt} | 0 ...661a9.f342b68a.js => ebe661a9.93c32722.js} | 2 +- ...71f4c.e1df3a01.js => f2e71f4c.610f827c.js} | 2 +- ...2d530.225ede72.js => f382d530.d42ad8d0.js} | 2 +- ...48f11.d6bf426d.js => faa48f11.12ef5c53.js} | 2 +- ...07d4c.d1440c72.js => fc907d4c.2ff6403f.js} | 2 +- .../js/{main.cdd867c6.js => main.29fd47b7.js} | 4 +- ...CENSE.txt => main.29fd47b7.js.LICENSE.txt} | 0 ...n.ac5b7a06.js => runtime~main.37f69f93.js} | 2 +- ja/blog.html | 4 +- ja/blog/archive.html | 4 +- ja/blog/international-community.html | 4 +- ja/blog/rebranding-stable.html | 4 +- ja/blog/tags.html | 4 +- ja/blog/tags/brand.html | 4 +- ja/blog/tags/community.html | 4 +- ja/blog/tags/discord.html | 4 +- ja/blog/tags/promo.html | 4 +- ja/community.html | 6 +- ja/community/team.html | 6 +- ja/docs.html | 6 +- ja/docs/about.html | 6 +- ja/docs/about/alternatives.html | 6 +- ja/docs/about/mission.html | 6 +- ja/docs/about/motivation.html | 6 +- ja/docs/about/promote/for-company.html | 6 +- ja/docs/about/promote/for-team.html | 6 +- ja/docs/about/promote/integration.html | 6 +- .../about/promote/partial-application.html | 6 +- ja/docs/about/understanding/abstractions.html | 6 +- ja/docs/about/understanding/architecture.html | 6 +- .../about/understanding/knowledge-types.html | 6 +- ja/docs/about/understanding/naming.html | 6 +- ja/docs/about/understanding/needs-driven.html | 6 +- ja/docs/about/understanding/signals.html | 6 +- ja/docs/branding.html | 6 +- ja/docs/get-started.html | 6 +- ja/docs/get-started/cheatsheet.html | 6 +- ja/docs/get-started/faq.html | 6 +- ja/docs/get-started/overview.html | 6 +- ja/docs/get-started/tutorial.html | 6 +- ja/docs/guides.html | 6 +- ja/docs/guides/examples.html | 6 +- ja/docs/guides/examples/auth.html | 6 +- ja/docs/guides/examples/autocompleted.html | 6 +- ja/docs/guides/examples/browser-api.html | 6 +- ja/docs/guides/examples/cms.html | 6 +- ja/docs/guides/examples/feedback.html | 6 +- ja/docs/guides/examples/i18n.html | 6 +- ja/docs/guides/examples/metric.html | 6 +- ja/docs/guides/examples/monorepo.html | 6 +- ja/docs/guides/examples/page-layout.html | 6 +- ja/docs/guides/examples/platforms.html | 6 +- ja/docs/guides/examples/ssr.html | 6 +- ja/docs/guides/examples/theme.html | 6 +- ja/docs/guides/examples/types.html | 6 +- ja/docs/guides/examples/white-labels.html | 6 +- ja/docs/guides/issues/cross-imports.html | 6 +- ja/docs/guides/issues/desegmented.html | 6 +- ja/docs/guides/issues/routes.html | 6 +- ja/docs/guides/migration/from-custom.html | 6 +- ja/docs/guides/migration/from-v1.html | 6 +- ja/docs/guides/tech/with-nextjs.html | 6 +- ja/docs/guides/tech/with-nuxtjs.html | 6 +- ja/docs/guides/tech/with-react-query.html | 6 +- ja/docs/guides/tech/with-sveltekit.html | 6 +- ja/docs/reference.html | 6 +- ja/docs/reference/isolation.html | 6 +- .../isolation/coupling-cohesion.html | 6 +- .../isolation/decouple-entities.html | 6 +- ja/docs/reference/layers.html | 6 +- ja/docs/reference/public-api.html | 6 +- ja/docs/reference/slices-segments.html | 6 +- ja/examples.html | 4 +- ja/index.html | 4 +- ja/nav.html | 4 +- ja/search.html | 4 +- ja/versions.html | 4 +- kr/404.html | 4 +- ...9e362.68be805a.js => 0499e362.163bbdd5.js} | 2 +- ...ee302.c524f746.js => 0a4ee302.a425794b.js} | 2 +- kr/assets/js/2104cbf7.c39707b8.js | 1 + ...64a0f.1c0d6422.js => 2f764a0f.3c8a626c.js} | 2 +- kr/assets/js/302360db.5fbe1185.js | 1 + kr/assets/js/302360db.9919ad0e.js | 1 - ...1f8ae.6fd0c861.js => 3121f8ae.be07d895.js} | 2 +- ...d1c3d.98412e78.js => 350d1c3d.ba24b719.js} | 2 +- ...f8845.7f658ba2.js => 370f8845.0856ea0a.js} | 2 +- ...652fb.1887bded.js => 3d2652fb.970eff8d.js} | 2 +- ...5053a.4d47c108.js => 3ef5053a.6be47c71.js} | 4 +- ...E.txt => 3ef5053a.6be47c71.js.LICENSE.txt} | 0 ...abe1d.993ee577.js => 40babe1d.dbfa43b5.js} | 2 +- kr/assets/js/4498315b.245b192e.js | 1 + ...f28a3.abe81105.js => 480f28a3.5865169c.js} | 2 +- ...b6464.76d1cae8.js => 488b6464.77d81216.js} | 2 +- ...61156.936aa929.js => 49161156.4043620d.js} | 2 +- ...7bed2.4697bfb7.js => 5187bed2.01d06184.js} | 2 +- ...8e831.4310bad5.js => 53f8e831.a05205ed.js} | 4 +- ...E.txt => 53f8e831.a05205ed.js.LICENSE.txt} | 0 ...0769a.a79305c3.js => 55b0769a.f90d99cb.js} | 2 +- ...bebd6.31a244cb.js => 55fbebd6.2b9be27f.js} | 2 +- ...d98cc.987eb95b.js => 590d98cc.81125e8c.js} | 2 +- ...61d3b.2d1ab5ab.js => 5bd61d3b.bea111aa.js} | 2 +- ...e5f34.bf18fcfc.js => 5f7e5f34.06150c91.js} | 2 +- ...6c8dc.d4b8e645.js => 6636c8dc.f9c7a26a.js} | 2 +- ...a648d.08c8f551.js => 664a648d.fbf8157e.js} | 2 +- ...3db7c.75692bdf.js => 66d3db7c.597a0c93.js} | 2 +- ...2487b.f6b40a77.js => 7052487b.f7b6b691.js} | 4 +- ...E.txt => 7052487b.f7b6b691.js.LICENSE.txt} | 0 kr/assets/js/7313bf7a.258507e0.js | 1 - kr/assets/js/7313bf7a.90312f91.js | 1 + ...90ed0.37af84b3.js => 7a790ed0.d61bf617.js} | 2 +- ...0dbae.e3d9c822.js => 84a0dbae.d07d3836.js} | 2 +- kr/assets/js/857ae1bf.91a15148.js | 1 - ...5c187.6b6236af.js => 87e5c187.7f2c5811.js} | 2 +- ...a42c3.c7c9739b.js => 8b5a42c3.f51bfec3.js} | 2 +- ...3e59a.e66aa81a.js => 8b93e59a.af1810d8.js} | 2 +- ...e6152.f1e8a22b.js => 8c1e6152.f6e12db3.js} | 2 +- ...83ff6.a857b6a8.js => 8ce83ff6.ca059c34.js} | 2 +- ...3d7f4.63476ef2.js => 9b83d7f4.13d292d7.js} | 2 +- ...dcbb0.d3f7b5f6.js => 9f1dcbb0.9a05b37a.js} | 2 +- ...21a63.a720c8db.js => a1521a63.e4c3c87f.js} | 2 +- ...6f730.0baee023.js => a386f730.309b585d.js} | 2 +- ...c55ce.beb260c3.js => a61c55ce.6debd31c.js} | 4 +- ...E.txt => a61c55ce.6debd31c.js.LICENSE.txt} | 0 ...f5b8a.7fa61525.js => acaf5b8a.c84d69a3.js} | 2 +- kr/assets/js/ba8bb0f7.d326caca.js | 1 - ...6474c.08d7609f.js => c0c6474c.4a9a7641.js} | 2 +- ...0faae.cd5fde3a.js => c4d0faae.2f8fbe53.js} | 2 +- ...66f39.fadc5cd1.js => c5666f39.8ccb6d94.js} | 4 +- ...E.txt => c5666f39.8ccb6d94.js.LICENSE.txt} | 0 ...88a7b.b797e95e.js => cb388a7b.f71f6902.js} | 2 +- ...cbfb8.7862b397.js => d13cbfb8.97e3bb8d.js} | 4 +- ...E.txt => d13cbfb8.97e3bb8d.js.LICENSE.txt} | 0 ...9437a.91687529.js => d999437a.0fbe7e3d.js} | 2 +- ...5ecdf.bf0d525a.js => dfe5ecdf.926d0ad6.js} | 2 +- ...c2047.ffc8dc25.js => e01c2047.a85c5b5b.js} | 2 +- ...03eab.3bb0ff00.js => e1003eab.81da9868.js} | 2 +- ...0d304.cd698f00.js => e1c0d304.c2b4ef10.js} | 2 +- kr/assets/js/e325b37e.fa3acbe3.js | 1 + kr/assets/js/e325b37e.feb952fc.js | 1 - ...f8eb6.34f1ec06.js => e6bf8eb6.47148bb6.js} | 2 +- ...dcfcb.1e543691.js => ed3dcfcb.aa196250.js} | 2 +- ...67325.f121079d.js => f2567325.a1cf8d43.js} | 2 +- ...174dc.5268bd91.js => f2c174dc.aeff108a.js} | 2 +- ...29f8e.cdebf93b.js => fe129f8e.906c651e.js} | 2 +- kr/assets/js/main.6d627ed0.js | 2 - kr/assets/js/main.ea09754c.js | 2 + ...CENSE.txt => main.ea09754c.js.LICENSE.txt} | 0 kr/assets/js/runtime~main.747d66f0.js | 1 - kr/assets/js/runtime~main.c4f81ee2.js | 1 + kr/blog.html | 4 +- kr/blog/archive.html | 4 +- kr/blog/international-community.html | 4 +- kr/blog/rebranding-stable.html | 4 +- kr/blog/tags.html | 4 +- kr/blog/tags/brand.html | 4 +- kr/blog/tags/community.html | 4 +- kr/blog/tags/discord.html | 4 +- kr/blog/tags/promo.html | 4 +- kr/community.html | 6 +- kr/community/team.html | 6 +- kr/docs.html | 6 +- kr/docs/about.html | 6 +- kr/docs/about/alternatives.html | 6 +- kr/docs/about/mission.html | 6 +- kr/docs/about/motivation.html | 6 +- kr/docs/about/promote/for-company.html | 6 +- kr/docs/about/promote/for-team.html | 6 +- kr/docs/about/promote/integration.html | 6 +- .../about/promote/partial-application.html | 6 +- kr/docs/about/understanding/abstractions.html | 6 +- kr/docs/about/understanding/architecture.html | 6 +- .../about/understanding/knowledge-types.html | 6 +- kr/docs/about/understanding/naming.html | 6 +- kr/docs/about/understanding/needs-driven.html | 6 +- kr/docs/about/understanding/signals.html | 6 +- kr/docs/branding.html | 6 +- kr/docs/get-started.html | 8 +- kr/docs/get-started/cheatsheet.html | 8 +- kr/docs/get-started/faq.html | 56 +-- kr/docs/get-started/overview.html | 12 +- kr/docs/get-started/tutorial.html | 338 +++++++++--------- kr/docs/guides.html | 6 +- kr/docs/guides/examples.html | 6 +- kr/docs/guides/examples/auth.html | 6 +- kr/docs/guides/examples/autocompleted.html | 6 +- kr/docs/guides/examples/browser-api.html | 6 +- kr/docs/guides/examples/cms.html | 6 +- kr/docs/guides/examples/feedback.html | 6 +- kr/docs/guides/examples/i18n.html | 6 +- kr/docs/guides/examples/metric.html | 6 +- kr/docs/guides/examples/monorepo.html | 6 +- kr/docs/guides/examples/page-layout.html | 6 +- kr/docs/guides/examples/platforms.html | 6 +- kr/docs/guides/examples/ssr.html | 6 +- kr/docs/guides/examples/theme.html | 6 +- kr/docs/guides/examples/types.html | 6 +- kr/docs/guides/examples/white-labels.html | 6 +- kr/docs/guides/issues/cross-imports.html | 6 +- kr/docs/guides/issues/desegmented.html | 6 +- kr/docs/guides/issues/routes.html | 6 +- kr/docs/guides/migration/from-custom.html | 6 +- kr/docs/guides/migration/from-v1.html | 6 +- kr/docs/guides/tech/with-nextjs.html | 6 +- kr/docs/guides/tech/with-nuxtjs.html | 6 +- kr/docs/guides/tech/with-react-query.html | 6 +- kr/docs/guides/tech/with-sveltekit.html | 6 +- kr/docs/reference.html | 6 +- kr/docs/reference/isolation.html | 6 +- .../isolation/coupling-cohesion.html | 6 +- .../isolation/decouple-entities.html | 6 +- kr/docs/reference/layers.html | 6 +- kr/docs/reference/public-api.html | 6 +- kr/docs/reference/slices-segments.html | 6 +- kr/examples.html | 4 +- kr/index.html | 6 +- kr/nav.html | 4 +- kr/search.html | 4 +- kr/versions.html | 4 +- nav.html | 4 +- ru/404.html | 4 +- ...1b9d4.62bd2c3f.js => 04b1b9d4.d35f4177.js} | 2 +- ...eeff8.51cdbf80.js => 07deeff8.825ba05c.js} | 4 +- ...E.txt => 07deeff8.825ba05c.js.LICENSE.txt} | 0 ...2fa31.51692b42.js => 1232fa31.3a8fb5ed.js} | 4 +- ...E.txt => 1232fa31.3a8fb5ed.js.LICENSE.txt} | 0 ...650ce.2b5267fc.js => 17f650ce.9d654aa8.js} | 2 +- ...a16b8.be690b3d.js => 1c0a16b8.1f95eaa9.js} | 2 +- ...222b5.e2418e16.js => 1d3222b5.1f850dda.js} | 2 +- ...5a0f6.dbcf86c4.js => 20c5a0f6.4d7a1a0b.js} | 2 +- ...07bfd.af57590b.js => 2bd07bfd.29f3f253.js} | 4 +- ...E.txt => 2bd07bfd.29f3f253.js.LICENSE.txt} | 0 ...bcbef.dcdf5dcc.js => 352bcbef.b3926fe6.js} | 2 +- ...5367b.ed09fd79.js => 35c5367b.1b719cdf.js} | 2 +- ...4669e.8e1500cf.js => 3b64669e.0c0aa088.js} | 2 +- ...75544.c34d2da9.js => 44775544.9baa7621.js} | 2 +- ...d5840.b0edcac0.js => 457d5840.bb98f460.js} | 2 +- ...a1952.a012775a.js => 4eea1952.76ec5d8f.js} | 2 +- ...64b99.ceda65a2.js => 58b64b99.7a2c20a7.js} | 2 +- ...42e37.6b46c782.js => 62f42e37.e70b6e8f.js} | 2 +- ...5b372.efc3df60.js => 6545b372.63345411.js} | 4 +- ...E.txt => 6545b372.63345411.js.LICENSE.txt} | 0 ...340e2.47b50646.js => 670340e2.f3b95fbf.js} | 2 +- ...cfc1a.17b08d2f.js => 6becfc1a.b428ca91.js} | 2 +- ...557b2.0a7aaf36.js => 6ee557b2.44b4116c.js} | 2 +- ...20f43.48185897.js => 71d20f43.3ae6b808.js} | 2 +- ru/assets/js/7313bf7a.8b640161.js | 1 + ru/assets/js/7313bf7a.a32a0dfe.js | 1 - ...9802f.34da0f3f.js => 7759802f.77148186.js} | 2 +- ...1d677.f9308af0.js => 7b31d677.bbc3bd3d.js} | 2 +- ...aa0e6.f2e7b441.js => 808aa0e6.e3cf08c1.js} | 2 +- ...b5b69.f6c43b85.js => 81cb5b69.7c38eedd.js} | 2 +- ...c10e1.df720cb1.js => 8edc10e1.06c454b2.js} | 2 +- ...52043.45f58b8c.js => 90c52043.39c01627.js} | 2 +- ...dbc63.10f77668.js => 9b6dbc63.16561f6d.js} | 4 +- ...E.txt => 9b6dbc63.16561f6d.js.LICENSE.txt} | 0 ...8add1.f6dbad72.js => 9fc8add1.3adf94c0.js} | 2 +- ...ebdbc.d9cf30b9.js => a01ebdbc.fd711d89.js} | 2 +- ...378e3.e6284e14.js => a41378e3.4de46e44.js} | 2 +- ...c55ce.9c7f5d30.js => a61c55ce.6a925e29.js} | 4 +- ...E.txt => a61c55ce.6a925e29.js.LICENSE.txt} | 0 ...7d4fc.cfcb092e.js => a657d4fc.20d78aad.js} | 2 +- ...b2b9f.10944df0.js => a6bb2b9f.40b4145b.js} | 2 +- ...f4ecc.10100931.js => a97f4ecc.464ab23e.js} | 2 +- ...c393c.3af7ae06.js => b79c393c.0b7410b2.js} | 2 +- ...2a7aa.1e615c0d.js => b9d2a7aa.10ff0f4c.js} | 2 +- ...03a1b.ba3b4b6f.js => bce03a1b.3887e9f0.js} | 2 +- ...4bf5d.7379ae24.js => c0c4bf5d.fc679494.js} | 2 +- ...f052d.37a3fe4c.js => ce6f052d.9165050e.js} | 2 +- ...99f5e.925b3e3f.js => cf699f5e.5f7993d4.js} | 2 +- ...8dcf5.d1e989cf.js => d178dcf5.1765458a.js} | 2 +- ...19b62.97153798.js => d1f19b62.57c55822.js} | 2 +- ...5dc26.151b7d06.js => d595dc26.a8f82a70.js} | 2 +- ...fd790.032e147b.js => dd4fd790.c09bfd66.js} | 2 +- ...a3126.a4e92772.js => e38a3126.871afbc9.js} | 2 +- ...e2184.c5c8511c.js => e71e2184.a75f052b.js} | 2 +- ...c891f.495e7915.js => e9dc891f.8c6febdc.js} | 2 +- ...bed87.31115718.js => eb8bed87.bc6d1def.js} | 2 +- ...b339c.8629c7a7.js => f22b339c.c035fbc2.js} | 2 +- ...d466e.b2a318f0.js => f39d466e.589bb8f3.js} | 2 +- ...88823.f26b499c.js => fcc88823.acd1ca66.js} | 2 +- ...408fa.823c32ef.js => fee408fa.58d0dbd3.js} | 2 +- ...50de1.162fb84e.js => ffe50de1.96b7e3e5.js} | 2 +- .../js/{main.d5dbc580.js => main.ba59251d.js} | 4 +- ...CENSE.txt => main.ba59251d.js.LICENSE.txt} | 0 ...n.d88d86db.js => runtime~main.83a61e56.js} | 2 +- ru/blog.html | 4 +- ru/blog/archive.html | 4 +- ru/blog/international-community.html | 4 +- ru/blog/rebranding-stable.html | 4 +- ru/blog/tags.html | 4 +- ru/blog/tags/brand.html | 4 +- ru/blog/tags/community.html | 4 +- ru/blog/tags/discord.html | 4 +- ru/blog/tags/promo.html | 4 +- ru/community.html | 6 +- ru/community/team.html | 6 +- ru/docs.html | 6 +- ru/docs/about.html | 6 +- ru/docs/about/alternatives.html | 6 +- ru/docs/about/mission.html | 6 +- ru/docs/about/motivation.html | 6 +- ru/docs/about/promote/for-company.html | 6 +- ru/docs/about/promote/for-team.html | 6 +- ru/docs/about/promote/integration.html | 6 +- .../about/promote/partial-application.html | 6 +- ru/docs/about/understanding/abstractions.html | 6 +- ru/docs/about/understanding/architecture.html | 6 +- .../about/understanding/knowledge-types.html | 6 +- ru/docs/about/understanding/naming.html | 6 +- ru/docs/about/understanding/needs-driven.html | 6 +- ru/docs/about/understanding/signals.html | 6 +- ru/docs/branding.html | 6 +- ru/docs/get-started.html | 6 +- ru/docs/get-started/cheatsheet.html | 6 +- ru/docs/get-started/faq.html | 6 +- ru/docs/get-started/overview.html | 6 +- ru/docs/get-started/tutorial.html | 6 +- ru/docs/guides.html | 6 +- ru/docs/guides/examples.html | 6 +- ru/docs/guides/examples/auth.html | 6 +- ru/docs/guides/examples/autocompleted.html | 6 +- ru/docs/guides/examples/browser-api.html | 6 +- ru/docs/guides/examples/cms.html | 6 +- ru/docs/guides/examples/feedback.html | 6 +- ru/docs/guides/examples/i18n.html | 6 +- ru/docs/guides/examples/metric.html | 6 +- ru/docs/guides/examples/monorepo.html | 6 +- ru/docs/guides/examples/page-layout.html | 6 +- ru/docs/guides/examples/platforms.html | 6 +- ru/docs/guides/examples/ssr.html | 6 +- ru/docs/guides/examples/theme.html | 6 +- ru/docs/guides/examples/types.html | 6 +- ru/docs/guides/examples/white-labels.html | 6 +- ru/docs/guides/issues/cross-imports.html | 6 +- ru/docs/guides/issues/desegmented.html | 6 +- ru/docs/guides/issues/routes.html | 6 +- ru/docs/guides/migration/from-custom.html | 6 +- ru/docs/guides/migration/from-v1.html | 6 +- ru/docs/guides/tech/with-nextjs.html | 6 +- ru/docs/guides/tech/with-nuxtjs.html | 6 +- ru/docs/guides/tech/with-react-query.html | 6 +- ru/docs/guides/tech/with-sveltekit.html | 6 +- ru/docs/reference.html | 6 +- ru/docs/reference/isolation.html | 6 +- .../isolation/coupling-cohesion.html | 6 +- .../isolation/decouple-entities.html | 6 +- ru/docs/reference/layers.html | 6 +- ru/docs/reference/public-api.html | 6 +- ru/docs/reference/slices-segments.html | 6 +- ru/examples.html | 4 +- ru/index.html | 4 +- ru/nav.html | 4 +- ru/search.html | 4 +- ru/versions.html | 4 +- search.html | 4 +- uz/404.html | 4 +- ...a3ac7.ad4cacab.js => 022a3ac7.83e1f395.js} | 4 +- ...E.txt => 022a3ac7.83e1f395.js.LICENSE.txt} | 0 ...9e362.73fb0383.js => 0499e362.12e093af.js} | 2 +- ...221cc.71a2ab79.js => 066221cc.84e17c5f.js} | 2 +- ...ee302.d33b4f03.js => 0a4ee302.dc42dfbb.js} | 2 +- ...64a0f.6f4a9237.js => 2f764a0f.7e4b0937.js} | 2 +- ...1f8ae.a3f7fb1b.js => 3121f8ae.b4f4a5e4.js} | 2 +- ...d1c3d.f3a39c04.js => 350d1c3d.d3870da7.js} | 2 +- ...f8845.b5f6ec0f.js => 370f8845.96639f72.js} | 2 +- ...652fb.02ae8c39.js => 3d2652fb.10dc0a29.js} | 2 +- ...4d4ea.14b9b7c2.js => 4044d4ea.ce610255.js} | 2 +- ...f28a3.22c7908e.js => 480f28a3.88ad57ae.js} | 2 +- ...b6464.9b46068d.js => 488b6464.3de89d08.js} | 2 +- ...61156.df00022c.js => 49161156.2e7c70be.js} | 2 +- ...7bed2.49b5c072.js => 5187bed2.eabbc829.js} | 2 +- ...8e831.1735c9f8.js => 53f8e831.4b4983e2.js} | 4 +- ...E.txt => 53f8e831.4b4983e2.js.LICENSE.txt} | 0 ...0769a.1f4d98f5.js => 55b0769a.48fd81fd.js} | 2 +- ...d98cc.f6cb0142.js => 590d98cc.01ccb2ef.js} | 2 +- ...61d3b.7d17a70b.js => 5bd61d3b.eb1aed45.js} | 2 +- ...e5f34.5339c6fc.js => 5f7e5f34.94a86491.js} | 2 +- ...6c8dc.6186197e.js => 6636c8dc.a7c7b845.js} | 2 +- ...a648d.1511c618.js => 664a648d.85f82e4c.js} | 2 +- ...3db7c.9d217177.js => 66d3db7c.3b1ad8f2.js} | 2 +- uz/assets/js/7313bf7a.70a9af1d.js | 1 + uz/assets/js/7313bf7a.fc2094fb.js | 1 - ...90ed0.73f7ad1c.js => 7a790ed0.a824e762.js} | 2 +- ...0dbae.6e142b73.js => 84a0dbae.8ae8fa4b.js} | 2 +- ...ae1bf.2e68d5f3.js => 857ae1bf.40d72e5b.js} | 2 +- ...1fb1e.dc4c7115.js => 8651fb1e.3fd24d62.js} | 2 +- ...5c187.e7f927d9.js => 87e5c187.1ab41db9.js} | 2 +- ...a42c3.91c00e92.js => 8b5a42c3.eb52aa5d.js} | 2 +- ...3e59a.e82e9dd9.js => 8b93e59a.0c26b843.js} | 2 +- ...e6152.fcce3de2.js => 8c1e6152.ee0d5298.js} | 2 +- ...83ff6.8cc8f521.js => 8ce83ff6.bb687c48.js} | 2 +- ...3d7f4.d86d9673.js => 9b83d7f4.cdb6b642.js} | 2 +- ...21a63.5ece9b65.js => a1521a63.c7c64816.js} | 2 +- ...6f730.2936ede0.js => a386f730.2d8446ab.js} | 2 +- ...c55ce.38ef8e5c.js => a61c55ce.40ef7f63.js} | 4 +- ...E.txt => a61c55ce.40ef7f63.js.LICENSE.txt} | 0 ...f5b8a.7ee7061a.js => acaf5b8a.e76787b7.js} | 2 +- ...bb0f7.8111f9d8.js => ba8bb0f7.df9c18d8.js} | 2 +- ...6474c.6a6b25d1.js => c0c6474c.69356088.js} | 2 +- ...0faae.50153733.js => c4d0faae.68d43b7e.js} | 2 +- ...66f39.77b2d559.js => c5666f39.b6dea57c.js} | 4 +- ...E.txt => c5666f39.b6dea57c.js.LICENSE.txt} | 0 ...88a7b.30332c99.js => cb388a7b.34f03135.js} | 2 +- ...cbfb8.eada72eb.js => d13cbfb8.5d6516bb.js} | 4 +- ...E.txt => d13cbfb8.5d6516bb.js.LICENSE.txt} | 0 ...aea7e.73fa66c9.js => d7baea7e.c50c2f40.js} | 4 +- ...E.txt => d7baea7e.c50c2f40.js.LICENSE.txt} | 0 ...9437a.68bc4aeb.js => d999437a.396e9869.js} | 2 +- ...5ecdf.9524dec2.js => dfe5ecdf.fa6a02f5.js} | 2 +- ...c2047.27093293.js => e01c2047.dacc89e2.js} | 2 +- ...03eab.01c9737e.js => e1003eab.5819ec7d.js} | 2 +- ...0d304.c0e39259.js => e1c0d304.648e4c85.js} | 2 +- ...09638.9cd142cc.js => e3309638.db32984a.js} | 2 +- ...f8eb6.c12ce56f.js => e6bf8eb6.3e49af40.js} | 2 +- ...dcfcb.9707b8a9.js => ed3dcfcb.a59bd261.js} | 2 +- ...67325.8e9beaae.js => f2567325.68ff21f9.js} | 2 +- ...174dc.ec3571c4.js => f2c174dc.d9ce33ca.js} | 2 +- ...29f8e.f1eace81.js => fe129f8e.4a58ea5c.js} | 2 +- .../js/{main.ef087bb6.js => main.b67529a2.js} | 4 +- ...CENSE.txt => main.b67529a2.js.LICENSE.txt} | 0 ...n.a1b42f8f.js => runtime~main.d90f1c87.js} | 2 +- uz/blog.html | 4 +- uz/blog/archive.html | 4 +- uz/blog/international-community.html | 4 +- uz/blog/rebranding-stable.html | 4 +- uz/blog/tags.html | 4 +- uz/blog/tags/brand.html | 4 +- uz/blog/tags/community.html | 4 +- uz/blog/tags/discord.html | 4 +- uz/blog/tags/promo.html | 4 +- uz/community.html | 6 +- uz/community/team.html | 6 +- uz/docs.html | 6 +- uz/docs/about.html | 6 +- uz/docs/about/alternatives.html | 6 +- uz/docs/about/mission.html | 6 +- uz/docs/about/motivation.html | 6 +- uz/docs/about/promote/for-company.html | 6 +- uz/docs/about/promote/for-team.html | 6 +- uz/docs/about/promote/integration.html | 6 +- .../about/promote/partial-application.html | 6 +- uz/docs/about/understanding/abstractions.html | 6 +- uz/docs/about/understanding/architecture.html | 6 +- .../about/understanding/knowledge-types.html | 6 +- uz/docs/about/understanding/naming.html | 6 +- uz/docs/about/understanding/needs-driven.html | 6 +- uz/docs/about/understanding/signals.html | 6 +- uz/docs/branding.html | 6 +- uz/docs/get-started.html | 6 +- uz/docs/get-started/cheatsheet.html | 6 +- uz/docs/get-started/faq.html | 6 +- uz/docs/get-started/overview.html | 6 +- uz/docs/get-started/tutorial.html | 6 +- uz/docs/guides.html | 6 +- uz/docs/guides/examples.html | 6 +- uz/docs/guides/examples/auth.html | 6 +- uz/docs/guides/examples/autocompleted.html | 6 +- uz/docs/guides/examples/browser-api.html | 6 +- uz/docs/guides/examples/cms.html | 6 +- uz/docs/guides/examples/feedback.html | 6 +- uz/docs/guides/examples/i18n.html | 6 +- uz/docs/guides/examples/metric.html | 6 +- uz/docs/guides/examples/monorepo.html | 6 +- uz/docs/guides/examples/page-layout.html | 6 +- uz/docs/guides/examples/platforms.html | 6 +- uz/docs/guides/examples/ssr.html | 6 +- uz/docs/guides/examples/theme.html | 6 +- uz/docs/guides/examples/types.html | 6 +- uz/docs/guides/examples/white-labels.html | 6 +- uz/docs/guides/issues/cross-imports.html | 6 +- uz/docs/guides/issues/desegmented.html | 6 +- uz/docs/guides/issues/routes.html | 6 +- uz/docs/guides/migration/from-custom.html | 6 +- uz/docs/guides/migration/from-v1.html | 6 +- uz/docs/guides/tech/with-nextjs.html | 6 +- uz/docs/guides/tech/with-nuxtjs.html | 6 +- uz/docs/guides/tech/with-react-query.html | 6 +- uz/docs/guides/tech/with-sveltekit.html | 6 +- uz/docs/reference.html | 6 +- uz/docs/reference/isolation.html | 6 +- .../isolation/coupling-cohesion.html | 6 +- .../isolation/decouple-entities.html | 6 +- uz/docs/reference/layers.html | 6 +- uz/docs/reference/public-api.html | 6 +- uz/docs/reference/slices-segments.html | 6 +- uz/examples.html | 4 +- uz/index.html | 4 +- uz/nav.html | 4 +- uz/search.html | 4 +- uz/versions.html | 4 +- versions.html | 4 +- 682 files changed, 1493 insertions(+), 1493 deletions(-) rename assets/js/{0499e362.44db6fdb.js => 0499e362.7940ce3b.js} (98%) rename assets/js/{066221cc.7e1896da.js => 066221cc.06ec80c9.js} (99%) rename assets/js/{0a4ee302.9b62bc0a.js => 0a4ee302.baca1795.js} (98%) rename assets/js/{2f764a0f.2f7836d4.js => 2f764a0f.1c1ea022.js} (99%) rename assets/js/{3121f8ae.e4c5f70f.js => 3121f8ae.dd317339.js} (98%) rename assets/js/{350d1c3d.877f4062.js => 350d1c3d.57df0615.js} (99%) rename assets/js/{370f8845.cb4fa0be.js => 370f8845.5ca6fe62.js} (99%) rename assets/js/{3d2652fb.a1c2eb86.js => 3d2652fb.5b5cf927.js} (99%) rename assets/js/{3ef5053a.c16f46f1.js => 3ef5053a.abadadea.js} (98%) rename assets/js/{3ef5053a.c16f46f1.js.LICENSE.txt => 3ef5053a.abadadea.js.LICENSE.txt} (100%) rename assets/js/{40babe1d.ce9d795c.js => 40babe1d.b3927de2.js} (99%) rename assets/js/{480f28a3.322b62ec.js => 480f28a3.e3e8c8f9.js} (98%) rename assets/js/{488b6464.26897d6a.js => 488b6464.0f8dcdf2.js} (99%) rename assets/js/{49161156.6affe7f6.js => 49161156.6e8fe50c.js} (98%) rename assets/js/{5187bed2.e44189dd.js => 5187bed2.354aa3a6.js} (99%) rename assets/js/{53f8e831.36b1647b.js => 53f8e831.565a6c32.js} (97%) rename assets/js/{53f8e831.36b1647b.js.LICENSE.txt => 53f8e831.565a6c32.js.LICENSE.txt} (100%) rename assets/js/{55b0769a.c6add365.js => 55b0769a.54426547.js} (98%) rename assets/js/{55fbebd6.3b453fe2.js => 55fbebd6.4462abfa.js} (99%) rename assets/js/{590d98cc.e141b15c.js => 590d98cc.e4f8ef01.js} (98%) rename assets/js/{5bd61d3b.bb3f7579.js => 5bd61d3b.000b744a.js} (98%) rename assets/js/{5f7e5f34.7992d430.js => 5f7e5f34.114f20ee.js} (99%) rename assets/js/{6636c8dc.742b6c2e.js => 6636c8dc.643611ba.js} (97%) rename assets/js/{664a648d.45230f5b.js => 664a648d.6f104f28.js} (98%) rename assets/js/{66d3db7c.d32ccfa2.js => 66d3db7c.8104d873.js} (99%) delete mode 100644 assets/js/7313bf7a.6074efbc.js create mode 100644 assets/js/7313bf7a.62dbeef4.js rename assets/js/{7a790ed0.72e8eb4a.js => 7a790ed0.70f2e52a.js} (99%) rename assets/js/{84a0dbae.458e0966.js => 84a0dbae.1a081c9c.js} (99%) rename assets/js/{857ae1bf.50506894.js => 857ae1bf.5ed9dd9a.js} (99%) rename assets/js/{87e5c187.e7b86eb1.js => 87e5c187.51198970.js} (98%) rename assets/js/{8b5a42c3.99413a71.js => 8b5a42c3.d37b8df8.js} (98%) rename assets/js/{8b93e59a.a1040703.js => 8b93e59a.c8469578.js} (99%) rename assets/js/{8c1e6152.ac52de38.js => 8c1e6152.47e22a6f.js} (99%) rename assets/js/{8ce83ff6.57d62a9f.js => 8ce83ff6.7ac5dab4.js} (98%) rename assets/js/{9b83d7f4.828eb6e2.js => 9b83d7f4.b8a982bd.js} (98%) rename assets/js/{9f1dcbb0.2eb41639.js => 9f1dcbb0.16886885.js} (99%) rename assets/js/{a1521a63.88f13bb5.js => a1521a63.cd08cdc5.js} (98%) rename assets/js/{a386f730.af4bf0fb.js => a386f730.e0c9a4c0.js} (99%) rename assets/js/{a61c55ce.020c90ec.js => a61c55ce.275776b6.js} (63%) rename assets/js/{a61c55ce.020c90ec.js.LICENSE.txt => a61c55ce.275776b6.js.LICENSE.txt} (100%) rename assets/js/{acaf5b8a.14d96582.js => acaf5b8a.bbea271e.js} (98%) rename assets/js/{ba8bb0f7.46ab3b93.js => ba8bb0f7.7f4ffb53.js} (99%) rename assets/js/{c0c6474c.3aeeafe1.js => c0c6474c.856ecca8.js} (98%) rename assets/js/{c4d0faae.93afbcca.js => c4d0faae.582f7b45.js} (98%) rename assets/js/{c5666f39.b861f146.js => c5666f39.2d3b80ab.js} (98%) rename assets/js/{c5666f39.b861f146.js.LICENSE.txt => c5666f39.2d3b80ab.js.LICENSE.txt} (100%) rename assets/js/{cb388a7b.019a1bff.js => cb388a7b.8d249fba.js} (99%) rename assets/js/{d13cbfb8.412df8d8.js => d13cbfb8.12b3a893.js} (97%) rename assets/js/{d13cbfb8.412df8d8.js.LICENSE.txt => d13cbfb8.12b3a893.js.LICENSE.txt} (100%) rename assets/js/{d7baea7e.d7300d38.js => d7baea7e.6cb4bfff.js} (98%) rename assets/js/{d7baea7e.d7300d38.js.LICENSE.txt => d7baea7e.6cb4bfff.js.LICENSE.txt} (100%) rename assets/js/{d999437a.f17f2b4e.js => d999437a.d42ae5cd.js} (98%) rename assets/js/{dfe5ecdf.258fc5a2.js => dfe5ecdf.b32c4b90.js} (98%) rename assets/js/{e01c2047.99284e69.js => e01c2047.3cf0ebe9.js} (98%) rename assets/js/{e1003eab.bd9d33c6.js => e1003eab.f5d1a251.js} (97%) rename assets/js/{e1c0d304.32288a2f.js => e1c0d304.213c7d23.js} (98%) rename assets/js/{e6bf8eb6.ecf70ec8.js => e6bf8eb6.0dcef120.js} (99%) rename assets/js/{ed3dcfcb.c7c67d46.js => ed3dcfcb.d5a51c16.js} (98%) rename assets/js/{f2567325.f285b311.js => f2567325.922e1979.js} (98%) rename assets/js/{f2c174dc.c0f4bd80.js => f2c174dc.47aef1c8.js} (99%) rename assets/js/{fe129f8e.9edff5bf.js => fe129f8e.9d3467f9.js} (96%) rename assets/js/{main.e2ab5a51.js => main.360a9d35.js} (98%) rename assets/js/{main.e2ab5a51.js.LICENSE.txt => main.360a9d35.js.LICENSE.txt} (100%) rename assets/js/{runtime~main.06c92bf3.js => runtime~main.29fb6ef5.js} (59%) rename ja/assets/js/{012f76d8.0d26c4d6.js => 012f76d8.dda6753c.js} (98%) rename ja/assets/js/{0288f121.c0d3057f.js => 0288f121.9ff7ad0a.js} (99%) rename ja/assets/js/{0289c23f.78005ed1.js => 0289c23f.bf82634d.js} (97%) rename ja/assets/js/{05cea7a5.0075ee40.js => 05cea7a5.2123c32d.js} (98%) rename ja/assets/js/{06894aee.161a7678.js => 06894aee.4fc234ba.js} (98%) rename ja/assets/js/{0d985d97.72948b33.js => 0d985d97.9dfc44db.js} (99%) rename ja/assets/js/{0fe5f65b.9289c53a.js => 0fe5f65b.44b30890.js} (95%) rename ja/assets/js/{12472d65.8afa1d33.js => 12472d65.b965a988.js} (99%) rename ja/assets/js/{13884f15.602d033f.js => 13884f15.ccb96ee5.js} (98%) rename ja/assets/js/{165a9db9.966d9fb2.js => 165a9db9.204c30d2.js} (99%) rename ja/assets/js/{179fe0e3.23e3aaf9.js => 179fe0e3.a3bb1d3d.js} (98%) rename ja/assets/js/{1ef93b0e.a0a8141b.js => 1ef93b0e.168c9b4b.js} (98%) rename ja/assets/js/{2b049514.af726dcb.js => 2b049514.f02ded29.js} (98%) rename ja/assets/js/{32d45827.0a305c07.js => 32d45827.c43baede.js} (99%) rename ja/assets/js/{384f90b7.8478e974.js => 384f90b7.c8d702d1.js} (98%) rename ja/assets/js/{40b15635.383c5b29.js => 40b15635.55157806.js} (99%) rename ja/assets/js/{419904cc.751756fe.js => 419904cc.665903d5.js} (99%) rename ja/assets/js/{43481703.fa5355bf.js => 43481703.7a66fd45.js} (98%) rename ja/assets/js/{44843890.26a031cf.js => 44843890.74a3b667.js} (97%) rename ja/assets/js/{45dd4bf3.af1ba6d7.js => 45dd4bf3.945c3c38.js} (99%) rename ja/assets/js/{5c333c6a.66806be8.js => 5c333c6a.09e3fd94.js} (99%) rename ja/assets/js/{5cc32e33.deec39b3.js => 5cc32e33.0a914d85.js} (98%) rename ja/assets/js/{5cc32e33.deec39b3.js.LICENSE.txt => 5cc32e33.0a914d85.js.LICENSE.txt} (100%) rename ja/assets/js/{623ef7cc.cd116cc4.js => 623ef7cc.5c0aeb4b.js} (99%) rename ja/assets/js/{6f39ea9f.b3b1052a.js => 6f39ea9f.408d6831.js} (97%) delete mode 100644 ja/assets/js/7313bf7a.2783f0d6.js create mode 100644 ja/assets/js/7313bf7a.aa694090.js rename ja/assets/js/{7c24a3b7.e76f082d.js => 7c24a3b7.2dae2f17.js} (98%) rename ja/assets/js/{7c24a3b7.e76f082d.js.LICENSE.txt => 7c24a3b7.2dae2f17.js.LICENSE.txt} (100%) rename ja/assets/js/{8704bcbb.e092aba8.js => 8704bcbb.da8405ad.js} (98%) rename ja/assets/js/{871e0ed2.5ea76ad1.js => 871e0ed2.5448d475.js} (99%) rename ja/assets/js/{88daebe4.69e142d4.js => 88daebe4.2d024c1f.js} (99%) rename ja/assets/js/{89dfa326.07a4bbad.js => 89dfa326.90f435d2.js} (97%) rename ja/assets/js/{8eb9ed98.4fd314fa.js => 8eb9ed98.bc2f1ace.js} (95%) rename ja/assets/js/{92d7a9ba.b4915c4f.js => 92d7a9ba.f51c720a.js} (99%) rename ja/assets/js/{9654fbea.1943749c.js => 9654fbea.d9987991.js} (99%) rename ja/assets/js/{a3319485.30414878.js => a3319485.3d5b3126.js} (98%) rename ja/assets/js/{a61c55ce.6feb55a0.js => a61c55ce.74f2f5f7.js} (63%) rename ja/assets/js/{a61c55ce.6feb55a0.js.LICENSE.txt => a61c55ce.74f2f5f7.js.LICENSE.txt} (100%) rename ja/assets/js/{a6e3103f.da985167.js => a6e3103f.9f8767d0.js} (99%) rename ja/assets/js/{adada6d7.530dabc1.js => adada6d7.2f22319c.js} (97%) rename ja/assets/js/{b4a7b4dd.3e3855e7.js => b4a7b4dd.7a761edd.js} (98%) rename ja/assets/js/{b5a59612.96af0e6f.js => b5a59612.78f88b85.js} (98%) rename ja/assets/js/{b5a59612.96af0e6f.js.LICENSE.txt => b5a59612.78f88b85.js.LICENSE.txt} (100%) rename ja/assets/js/{b816588c.69114980.js => b816588c.8b2c511f.js} (98%) rename ja/assets/js/{ba5630e6.670211c1.js => ba5630e6.1eca766d.js} (99%) rename ja/assets/js/{bc21bcd3.2893f66d.js => bc21bcd3.b4d28c9b.js} (99%) rename ja/assets/js/{bd483990.8e3ece82.js => bd483990.fe12195e.js} (99%) rename ja/assets/js/{c2a37d41.5f41d6b0.js => c2a37d41.64189f3d.js} (97%) rename ja/assets/js/{cef4bc17.cfe0d34f.js => cef4bc17.bdb283c7.js} (99%) rename ja/assets/js/{cf4aad29.449abcfa.js => cf4aad29.367918e9.js} (99%) rename ja/assets/js/{e35da8fa.d22253b6.js => e35da8fa.f638e274.js} (99%) rename ja/assets/js/{e3945454.2e5250f5.js => e3945454.c3538be4.js} (98%) rename ja/assets/js/{e3945454.2e5250f5.js.LICENSE.txt => e3945454.c3538be4.js.LICENSE.txt} (100%) rename ja/assets/js/{e878a63e.3601c37c.js => e878a63e.839ada31.js} (99%) rename ja/assets/js/{e8e5643e.712ef6d7.js => e8e5643e.993c13a9.js} (98%) rename ja/assets/js/{e8e5643e.712ef6d7.js.LICENSE.txt => e8e5643e.993c13a9.js.LICENSE.txt} (100%) rename ja/assets/js/{ebe661a9.f342b68a.js => ebe661a9.93c32722.js} (99%) rename ja/assets/js/{f2e71f4c.e1df3a01.js => f2e71f4c.610f827c.js} (99%) rename ja/assets/js/{f382d530.225ede72.js => f382d530.d42ad8d0.js} (97%) rename ja/assets/js/{faa48f11.d6bf426d.js => faa48f11.12ef5c53.js} (95%) rename ja/assets/js/{fc907d4c.d1440c72.js => fc907d4c.2ff6403f.js} (99%) rename ja/assets/js/{main.cdd867c6.js => main.29fd47b7.js} (98%) rename ja/assets/js/{main.cdd867c6.js.LICENSE.txt => main.29fd47b7.js.LICENSE.txt} (100%) rename ja/assets/js/{runtime~main.ac5b7a06.js => runtime~main.37f69f93.js} (52%) rename kr/assets/js/{0499e362.68be805a.js => 0499e362.163bbdd5.js} (98%) rename kr/assets/js/{0a4ee302.c524f746.js => 0a4ee302.a425794b.js} (99%) create mode 100644 kr/assets/js/2104cbf7.c39707b8.js rename kr/assets/js/{2f764a0f.1c0d6422.js => 2f764a0f.3c8a626c.js} (99%) create mode 100644 kr/assets/js/302360db.5fbe1185.js delete mode 100644 kr/assets/js/302360db.9919ad0e.js rename kr/assets/js/{3121f8ae.6fd0c861.js => 3121f8ae.be07d895.js} (98%) rename kr/assets/js/{350d1c3d.98412e78.js => 350d1c3d.ba24b719.js} (99%) rename kr/assets/js/{370f8845.7f658ba2.js => 370f8845.0856ea0a.js} (99%) rename kr/assets/js/{3d2652fb.1887bded.js => 3d2652fb.970eff8d.js} (99%) rename kr/assets/js/{3ef5053a.4d47c108.js => 3ef5053a.6be47c71.js} (98%) rename kr/assets/js/{3ef5053a.4d47c108.js.LICENSE.txt => 3ef5053a.6be47c71.js.LICENSE.txt} (100%) rename kr/assets/js/{40babe1d.993ee577.js => 40babe1d.dbfa43b5.js} (99%) create mode 100644 kr/assets/js/4498315b.245b192e.js rename kr/assets/js/{480f28a3.abe81105.js => 480f28a3.5865169c.js} (98%) rename kr/assets/js/{488b6464.76d1cae8.js => 488b6464.77d81216.js} (99%) rename kr/assets/js/{49161156.936aa929.js => 49161156.4043620d.js} (98%) rename kr/assets/js/{5187bed2.4697bfb7.js => 5187bed2.01d06184.js} (99%) rename kr/assets/js/{53f8e831.4310bad5.js => 53f8e831.a05205ed.js} (97%) rename kr/assets/js/{53f8e831.4310bad5.js.LICENSE.txt => 53f8e831.a05205ed.js.LICENSE.txt} (100%) rename kr/assets/js/{55b0769a.a79305c3.js => 55b0769a.f90d99cb.js} (99%) rename kr/assets/js/{55fbebd6.31a244cb.js => 55fbebd6.2b9be27f.js} (99%) rename kr/assets/js/{590d98cc.987eb95b.js => 590d98cc.81125e8c.js} (98%) rename kr/assets/js/{5bd61d3b.2d1ab5ab.js => 5bd61d3b.bea111aa.js} (98%) rename kr/assets/js/{5f7e5f34.bf18fcfc.js => 5f7e5f34.06150c91.js} (99%) rename kr/assets/js/{6636c8dc.d4b8e645.js => 6636c8dc.f9c7a26a.js} (97%) rename kr/assets/js/{664a648d.08c8f551.js => 664a648d.fbf8157e.js} (98%) rename kr/assets/js/{66d3db7c.75692bdf.js => 66d3db7c.597a0c93.js} (99%) rename kr/assets/js/{7052487b.f6b40a77.js => 7052487b.f7b6b691.js} (98%) rename kr/assets/js/{7052487b.f6b40a77.js.LICENSE.txt => 7052487b.f7b6b691.js.LICENSE.txt} (100%) delete mode 100644 kr/assets/js/7313bf7a.258507e0.js create mode 100644 kr/assets/js/7313bf7a.90312f91.js rename kr/assets/js/{7a790ed0.37af84b3.js => 7a790ed0.d61bf617.js} (99%) rename kr/assets/js/{84a0dbae.e3d9c822.js => 84a0dbae.d07d3836.js} (99%) delete mode 100644 kr/assets/js/857ae1bf.91a15148.js rename kr/assets/js/{87e5c187.6b6236af.js => 87e5c187.7f2c5811.js} (98%) rename kr/assets/js/{8b5a42c3.c7c9739b.js => 8b5a42c3.f51bfec3.js} (98%) rename kr/assets/js/{8b93e59a.e66aa81a.js => 8b93e59a.af1810d8.js} (99%) rename kr/assets/js/{8c1e6152.f1e8a22b.js => 8c1e6152.f6e12db3.js} (99%) rename kr/assets/js/{8ce83ff6.a857b6a8.js => 8ce83ff6.ca059c34.js} (98%) rename kr/assets/js/{9b83d7f4.63476ef2.js => 9b83d7f4.13d292d7.js} (98%) rename kr/assets/js/{9f1dcbb0.d3f7b5f6.js => 9f1dcbb0.9a05b37a.js} (99%) rename kr/assets/js/{a1521a63.a720c8db.js => a1521a63.e4c3c87f.js} (98%) rename kr/assets/js/{a386f730.0baee023.js => a386f730.309b585d.js} (99%) rename kr/assets/js/{a61c55ce.beb260c3.js => a61c55ce.6debd31c.js} (63%) rename kr/assets/js/{a61c55ce.beb260c3.js.LICENSE.txt => a61c55ce.6debd31c.js.LICENSE.txt} (100%) rename kr/assets/js/{acaf5b8a.7fa61525.js => acaf5b8a.c84d69a3.js} (96%) delete mode 100644 kr/assets/js/ba8bb0f7.d326caca.js rename kr/assets/js/{c0c6474c.08d7609f.js => c0c6474c.4a9a7641.js} (98%) rename kr/assets/js/{c4d0faae.cd5fde3a.js => c4d0faae.2f8fbe53.js} (98%) rename kr/assets/js/{c5666f39.fadc5cd1.js => c5666f39.8ccb6d94.js} (98%) rename kr/assets/js/{c5666f39.fadc5cd1.js.LICENSE.txt => c5666f39.8ccb6d94.js.LICENSE.txt} (100%) rename kr/assets/js/{cb388a7b.b797e95e.js => cb388a7b.f71f6902.js} (99%) rename kr/assets/js/{d13cbfb8.7862b397.js => d13cbfb8.97e3bb8d.js} (97%) rename kr/assets/js/{d13cbfb8.7862b397.js.LICENSE.txt => d13cbfb8.97e3bb8d.js.LICENSE.txt} (100%) rename kr/assets/js/{d999437a.91687529.js => d999437a.0fbe7e3d.js} (98%) rename kr/assets/js/{dfe5ecdf.bf0d525a.js => dfe5ecdf.926d0ad6.js} (98%) rename kr/assets/js/{e01c2047.ffc8dc25.js => e01c2047.a85c5b5b.js} (98%) rename kr/assets/js/{e1003eab.3bb0ff00.js => e1003eab.81da9868.js} (98%) rename kr/assets/js/{e1c0d304.cd698f00.js => e1c0d304.c2b4ef10.js} (98%) create mode 100644 kr/assets/js/e325b37e.fa3acbe3.js delete mode 100644 kr/assets/js/e325b37e.feb952fc.js rename kr/assets/js/{e6bf8eb6.34f1ec06.js => e6bf8eb6.47148bb6.js} (99%) rename kr/assets/js/{ed3dcfcb.1e543691.js => ed3dcfcb.aa196250.js} (98%) rename kr/assets/js/{f2567325.f121079d.js => f2567325.a1cf8d43.js} (98%) rename kr/assets/js/{f2c174dc.5268bd91.js => f2c174dc.aeff108a.js} (99%) rename kr/assets/js/{fe129f8e.cdebf93b.js => fe129f8e.906c651e.js} (96%) delete mode 100644 kr/assets/js/main.6d627ed0.js create mode 100644 kr/assets/js/main.ea09754c.js rename kr/assets/js/{main.6d627ed0.js.LICENSE.txt => main.ea09754c.js.LICENSE.txt} (100%) delete mode 100644 kr/assets/js/runtime~main.747d66f0.js create mode 100644 kr/assets/js/runtime~main.c4f81ee2.js rename ru/assets/js/{04b1b9d4.62bd2c3f.js => 04b1b9d4.d35f4177.js} (99%) rename ru/assets/js/{07deeff8.51cdbf80.js => 07deeff8.825ba05c.js} (98%) rename ru/assets/js/{07deeff8.51cdbf80.js.LICENSE.txt => 07deeff8.825ba05c.js.LICENSE.txt} (100%) rename ru/assets/js/{1232fa31.51692b42.js => 1232fa31.3a8fb5ed.js} (97%) rename ru/assets/js/{1232fa31.51692b42.js.LICENSE.txt => 1232fa31.3a8fb5ed.js.LICENSE.txt} (100%) rename ru/assets/js/{17f650ce.2b5267fc.js => 17f650ce.9d654aa8.js} (98%) rename ru/assets/js/{1c0a16b8.be690b3d.js => 1c0a16b8.1f95eaa9.js} (98%) rename ru/assets/js/{1d3222b5.e2418e16.js => 1d3222b5.1f850dda.js} (98%) rename ru/assets/js/{20c5a0f6.dbcf86c4.js => 20c5a0f6.4d7a1a0b.js} (98%) rename ru/assets/js/{2bd07bfd.af57590b.js => 2bd07bfd.29f3f253.js} (98%) rename ru/assets/js/{2bd07bfd.af57590b.js.LICENSE.txt => 2bd07bfd.29f3f253.js.LICENSE.txt} (100%) rename ru/assets/js/{352bcbef.dcdf5dcc.js => 352bcbef.b3926fe6.js} (99%) rename ru/assets/js/{35c5367b.ed09fd79.js => 35c5367b.1b719cdf.js} (99%) rename ru/assets/js/{3b64669e.8e1500cf.js => 3b64669e.0c0aa088.js} (99%) rename ru/assets/js/{44775544.c34d2da9.js => 44775544.9baa7621.js} (99%) rename ru/assets/js/{457d5840.b0edcac0.js => 457d5840.bb98f460.js} (99%) rename ru/assets/js/{4eea1952.a012775a.js => 4eea1952.76ec5d8f.js} (98%) rename ru/assets/js/{58b64b99.ceda65a2.js => 58b64b99.7a2c20a7.js} (99%) rename ru/assets/js/{62f42e37.6b46c782.js => 62f42e37.e70b6e8f.js} (99%) rename ru/assets/js/{6545b372.efc3df60.js => 6545b372.63345411.js} (98%) rename ru/assets/js/{6545b372.efc3df60.js.LICENSE.txt => 6545b372.63345411.js.LICENSE.txt} (100%) rename ru/assets/js/{670340e2.47b50646.js => 670340e2.f3b95fbf.js} (99%) rename ru/assets/js/{6becfc1a.17b08d2f.js => 6becfc1a.b428ca91.js} (98%) rename ru/assets/js/{6ee557b2.0a7aaf36.js => 6ee557b2.44b4116c.js} (98%) rename ru/assets/js/{71d20f43.48185897.js => 71d20f43.3ae6b808.js} (99%) create mode 100644 ru/assets/js/7313bf7a.8b640161.js delete mode 100644 ru/assets/js/7313bf7a.a32a0dfe.js rename ru/assets/js/{7759802f.34da0f3f.js => 7759802f.77148186.js} (99%) rename ru/assets/js/{7b31d677.f9308af0.js => 7b31d677.bbc3bd3d.js} (99%) rename ru/assets/js/{808aa0e6.f2e7b441.js => 808aa0e6.e3cf08c1.js} (99%) rename ru/assets/js/{81cb5b69.f6c43b85.js => 81cb5b69.7c38eedd.js} (99%) rename ru/assets/js/{8edc10e1.df720cb1.js => 8edc10e1.06c454b2.js} (98%) rename ru/assets/js/{90c52043.45f58b8c.js => 90c52043.39c01627.js} (99%) rename ru/assets/js/{9b6dbc63.10f77668.js => 9b6dbc63.16561f6d.js} (98%) rename ru/assets/js/{9b6dbc63.10f77668.js.LICENSE.txt => 9b6dbc63.16561f6d.js.LICENSE.txt} (100%) rename ru/assets/js/{9fc8add1.f6dbad72.js => 9fc8add1.3adf94c0.js} (99%) rename ru/assets/js/{a01ebdbc.d9cf30b9.js => a01ebdbc.fd711d89.js} (99%) rename ru/assets/js/{a41378e3.e6284e14.js => a41378e3.4de46e44.js} (99%) rename ru/assets/js/{a61c55ce.9c7f5d30.js => a61c55ce.6a925e29.js} (63%) rename ru/assets/js/{a61c55ce.9c7f5d30.js.LICENSE.txt => a61c55ce.6a925e29.js.LICENSE.txt} (100%) rename ru/assets/js/{a657d4fc.cfcb092e.js => a657d4fc.20d78aad.js} (98%) rename ru/assets/js/{a6bb2b9f.10944df0.js => a6bb2b9f.40b4145b.js} (98%) rename ru/assets/js/{a97f4ecc.10100931.js => a97f4ecc.464ab23e.js} (99%) rename ru/assets/js/{b79c393c.3af7ae06.js => b79c393c.0b7410b2.js} (99%) rename ru/assets/js/{b9d2a7aa.1e615c0d.js => b9d2a7aa.10ff0f4c.js} (99%) rename ru/assets/js/{bce03a1b.ba3b4b6f.js => bce03a1b.3887e9f0.js} (99%) rename ru/assets/js/{c0c4bf5d.7379ae24.js => c0c4bf5d.fc679494.js} (98%) rename ru/assets/js/{ce6f052d.37a3fe4c.js => ce6f052d.9165050e.js} (99%) rename ru/assets/js/{cf699f5e.925b3e3f.js => cf699f5e.5f7993d4.js} (99%) rename ru/assets/js/{d178dcf5.d1e989cf.js => d178dcf5.1765458a.js} (98%) rename ru/assets/js/{d1f19b62.97153798.js => d1f19b62.57c55822.js} (98%) rename ru/assets/js/{d595dc26.151b7d06.js => d595dc26.a8f82a70.js} (99%) rename ru/assets/js/{dd4fd790.032e147b.js => dd4fd790.c09bfd66.js} (98%) rename ru/assets/js/{e38a3126.a4e92772.js => e38a3126.871afbc9.js} (99%) rename ru/assets/js/{e71e2184.c5c8511c.js => e71e2184.a75f052b.js} (99%) rename ru/assets/js/{e9dc891f.495e7915.js => e9dc891f.8c6febdc.js} (98%) rename ru/assets/js/{eb8bed87.31115718.js => eb8bed87.bc6d1def.js} (98%) rename ru/assets/js/{f22b339c.8629c7a7.js => f22b339c.c035fbc2.js} (99%) rename ru/assets/js/{f39d466e.b2a318f0.js => f39d466e.589bb8f3.js} (98%) rename ru/assets/js/{fcc88823.f26b499c.js => fcc88823.acd1ca66.js} (99%) rename ru/assets/js/{fee408fa.823c32ef.js => fee408fa.58d0dbd3.js} (99%) rename ru/assets/js/{ffe50de1.162fb84e.js => ffe50de1.96b7e3e5.js} (99%) rename ru/assets/js/{main.d5dbc580.js => main.ba59251d.js} (98%) rename ru/assets/js/{main.d5dbc580.js.LICENSE.txt => main.ba59251d.js.LICENSE.txt} (100%) rename ru/assets/js/{runtime~main.d88d86db.js => runtime~main.83a61e56.js} (79%) rename uz/assets/js/{022a3ac7.ad4cacab.js => 022a3ac7.83e1f395.js} (98%) rename uz/assets/js/{022a3ac7.ad4cacab.js.LICENSE.txt => 022a3ac7.83e1f395.js.LICENSE.txt} (100%) rename uz/assets/js/{0499e362.73fb0383.js => 0499e362.12e093af.js} (98%) rename uz/assets/js/{066221cc.71a2ab79.js => 066221cc.84e17c5f.js} (99%) rename uz/assets/js/{0a4ee302.d33b4f03.js => 0a4ee302.dc42dfbb.js} (99%) rename uz/assets/js/{2f764a0f.6f4a9237.js => 2f764a0f.7e4b0937.js} (99%) rename uz/assets/js/{3121f8ae.a3f7fb1b.js => 3121f8ae.b4f4a5e4.js} (98%) rename uz/assets/js/{350d1c3d.f3a39c04.js => 350d1c3d.d3870da7.js} (99%) rename uz/assets/js/{370f8845.b5f6ec0f.js => 370f8845.96639f72.js} (99%) rename uz/assets/js/{3d2652fb.02ae8c39.js => 3d2652fb.10dc0a29.js} (99%) rename uz/assets/js/{4044d4ea.14b9b7c2.js => 4044d4ea.ce610255.js} (99%) rename uz/assets/js/{480f28a3.22c7908e.js => 480f28a3.88ad57ae.js} (98%) rename uz/assets/js/{488b6464.9b46068d.js => 488b6464.3de89d08.js} (99%) rename uz/assets/js/{49161156.df00022c.js => 49161156.2e7c70be.js} (98%) rename uz/assets/js/{5187bed2.49b5c072.js => 5187bed2.eabbc829.js} (99%) rename uz/assets/js/{53f8e831.1735c9f8.js => 53f8e831.4b4983e2.js} (97%) rename uz/assets/js/{53f8e831.1735c9f8.js.LICENSE.txt => 53f8e831.4b4983e2.js.LICENSE.txt} (100%) rename uz/assets/js/{55b0769a.1f4d98f5.js => 55b0769a.48fd81fd.js} (99%) rename uz/assets/js/{590d98cc.f6cb0142.js => 590d98cc.01ccb2ef.js} (98%) rename uz/assets/js/{5bd61d3b.7d17a70b.js => 5bd61d3b.eb1aed45.js} (98%) rename uz/assets/js/{5f7e5f34.5339c6fc.js => 5f7e5f34.94a86491.js} (99%) rename uz/assets/js/{6636c8dc.6186197e.js => 6636c8dc.a7c7b845.js} (97%) rename uz/assets/js/{664a648d.1511c618.js => 664a648d.85f82e4c.js} (98%) rename uz/assets/js/{66d3db7c.9d217177.js => 66d3db7c.3b1ad8f2.js} (99%) create mode 100644 uz/assets/js/7313bf7a.70a9af1d.js delete mode 100644 uz/assets/js/7313bf7a.fc2094fb.js rename uz/assets/js/{7a790ed0.73f7ad1c.js => 7a790ed0.a824e762.js} (99%) rename uz/assets/js/{84a0dbae.6e142b73.js => 84a0dbae.8ae8fa4b.js} (99%) rename uz/assets/js/{857ae1bf.2e68d5f3.js => 857ae1bf.40d72e5b.js} (99%) rename uz/assets/js/{8651fb1e.dc4c7115.js => 8651fb1e.3fd24d62.js} (99%) rename uz/assets/js/{87e5c187.e7f927d9.js => 87e5c187.1ab41db9.js} (98%) rename uz/assets/js/{8b5a42c3.91c00e92.js => 8b5a42c3.eb52aa5d.js} (98%) rename uz/assets/js/{8b93e59a.e82e9dd9.js => 8b93e59a.0c26b843.js} (99%) rename uz/assets/js/{8c1e6152.fcce3de2.js => 8c1e6152.ee0d5298.js} (99%) rename uz/assets/js/{8ce83ff6.8cc8f521.js => 8ce83ff6.bb687c48.js} (98%) rename uz/assets/js/{9b83d7f4.d86d9673.js => 9b83d7f4.cdb6b642.js} (98%) rename uz/assets/js/{a1521a63.5ece9b65.js => a1521a63.c7c64816.js} (98%) rename uz/assets/js/{a386f730.2936ede0.js => a386f730.2d8446ab.js} (99%) rename uz/assets/js/{a61c55ce.38ef8e5c.js => a61c55ce.40ef7f63.js} (63%) rename uz/assets/js/{a61c55ce.38ef8e5c.js.LICENSE.txt => a61c55ce.40ef7f63.js.LICENSE.txt} (100%) rename uz/assets/js/{acaf5b8a.7ee7061a.js => acaf5b8a.e76787b7.js} (96%) rename uz/assets/js/{ba8bb0f7.8111f9d8.js => ba8bb0f7.df9c18d8.js} (99%) rename uz/assets/js/{c0c6474c.6a6b25d1.js => c0c6474c.69356088.js} (98%) rename uz/assets/js/{c4d0faae.50153733.js => c4d0faae.68d43b7e.js} (98%) rename uz/assets/js/{c5666f39.77b2d559.js => c5666f39.b6dea57c.js} (98%) rename uz/assets/js/{c5666f39.77b2d559.js.LICENSE.txt => c5666f39.b6dea57c.js.LICENSE.txt} (100%) rename uz/assets/js/{cb388a7b.30332c99.js => cb388a7b.34f03135.js} (99%) rename uz/assets/js/{d13cbfb8.eada72eb.js => d13cbfb8.5d6516bb.js} (97%) rename uz/assets/js/{d13cbfb8.eada72eb.js.LICENSE.txt => d13cbfb8.5d6516bb.js.LICENSE.txt} (100%) rename uz/assets/js/{d7baea7e.73fa66c9.js => d7baea7e.c50c2f40.js} (98%) rename uz/assets/js/{d7baea7e.73fa66c9.js.LICENSE.txt => d7baea7e.c50c2f40.js.LICENSE.txt} (100%) rename uz/assets/js/{d999437a.68bc4aeb.js => d999437a.396e9869.js} (98%) rename uz/assets/js/{dfe5ecdf.9524dec2.js => dfe5ecdf.fa6a02f5.js} (98%) rename uz/assets/js/{e01c2047.27093293.js => e01c2047.dacc89e2.js} (98%) rename uz/assets/js/{e1003eab.01c9737e.js => e1003eab.5819ec7d.js} (98%) rename uz/assets/js/{e1c0d304.c0e39259.js => e1c0d304.648e4c85.js} (98%) rename uz/assets/js/{e3309638.9cd142cc.js => e3309638.db32984a.js} (99%) rename uz/assets/js/{e6bf8eb6.c12ce56f.js => e6bf8eb6.3e49af40.js} (99%) rename uz/assets/js/{ed3dcfcb.9707b8a9.js => ed3dcfcb.a59bd261.js} (98%) rename uz/assets/js/{f2567325.8e9beaae.js => f2567325.68ff21f9.js} (98%) rename uz/assets/js/{f2c174dc.ec3571c4.js => f2c174dc.d9ce33ca.js} (99%) rename uz/assets/js/{fe129f8e.f1eace81.js => fe129f8e.4a58ea5c.js} (96%) rename uz/assets/js/{main.ef087bb6.js => main.b67529a2.js} (98%) rename uz/assets/js/{main.ef087bb6.js.LICENSE.txt => main.b67529a2.js.LICENSE.txt} (100%) rename uz/assets/js/{runtime~main.a1b42f8f.js => runtime~main.d90f1c87.js} (78%) diff --git a/404.html b/404.html index 7c6f0457e0..45c794dc3a 100644 --- a/404.html +++ b/404.html @@ -9,8 +9,8 @@ - - + +
Skip to main content

Page Not Found

We could not find what you were looking for.

Please contact the owner of the site that linked you to the original URL and let them know their link is broken.

diff --git a/assets/js/0499e362.44db6fdb.js b/assets/js/0499e362.7940ce3b.js similarity index 98% rename from assets/js/0499e362.44db6fdb.js rename to assets/js/0499e362.7940ce3b.js index f85a9dc51e..22bf760efe 100644 --- a/assets/js/0499e362.44db6fdb.js +++ b/assets/js/0499e362.7940ce3b.js @@ -1 +1 @@ -"use strict";(self.webpackChunk_feature_sliced_documentation=self.webpackChunk_feature_sliced_documentation||[]).push([[4005],{1539:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>c,contentTitle:()=>r,default:()=>h,frontMatter:()=>o,metadata:()=>a,toc:()=>d});var i=s(6070),n=s(1100);const o={unlisted:!0},r="Decomposition cheatsheet",a={id:"get-started/cheatsheet",title:"Decomposition cheatsheet",description:"Use this as a quick reference when you're deciding how to decompose your UI. PDF versions are also available below, so you can print it out and keep one under your pillow.",source:"@site/i18n/en/docusaurus-plugin-content-docs/current/get-started/cheatsheet.mdx",sourceDirName:"get-started",slug:"/get-started/cheatsheet",permalink:"/docs/get-started/cheatsheet",draft:!1,unlisted:!0,editUrl:"https://github.com/feature-sliced/documentation/edit/master/i18n/en/docusaurus-plugin-content-docs/current/get-started/cheatsheet.mdx",tags:[],version:"current",lastUpdatedAt:1727607766e3,frontMatter:{unlisted:!0},sidebar:"getstartedSidebar"},c={},d=[{value:"Choosing a layer",id:"choosing-a-layer",level:2},{value:"Examples",id:"examples",level:2},{value:"Tweet",id:"tweet",level:3},{value:"GitHub",id:"github",level:3},{value:"See also",id:"see-also",level:2}];function l(e){const t={a:"a",h1:"h1",h2:"h2",h3:"h3",header:"header",img:"img",li:"li",p:"p",ul:"ul",...(0,n.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(t.header,{children:(0,i.jsx)(t.h1,{id:"decomposition-cheatsheet",children:"Decomposition cheatsheet"})}),"\n",(0,i.jsx)(t.p,{children:"Use this as a quick reference when you're deciding how to decompose your UI. PDF versions are also available below, so you can print it out and keep one under your pillow."}),"\n",(0,i.jsx)(t.h2,{id:"choosing-a-layer",children:"Choosing a layer"}),"\n",(0,i.jsx)(t.p,{children:(0,i.jsx)(t.a,{target:"_blank","data-noBrokenLinkCheck":!0,href:s(9603).A+"",children:"Download PDF"})}),"\n",(0,i.jsx)(t.p,{children:(0,i.jsx)(t.img,{alt:"Definitions of all layers and self-check questions",src:s(4603).A+"",width:"1684",height:"1190"})}),"\n",(0,i.jsx)(t.h2,{id:"examples",children:"Examples"}),"\n",(0,i.jsx)(t.h3,{id:"tweet",children:"Tweet"}),"\n",(0,i.jsx)(t.p,{children:(0,i.jsx)(t.img,{alt:"decomposed-tweet-bordered-bgLight",src:s(8898).A+"",width:"1200",height:"2364"})}),"\n",(0,i.jsx)(t.h3,{id:"github",children:"GitHub"}),"\n",(0,i.jsx)(t.p,{children:(0,i.jsx)(t.img,{alt:"decomposed-github-bordered",src:s(8142).A+"",width:"2291",height:"1080"})}),"\n",(0,i.jsx)(t.h2,{id:"see-also",children:"See also"}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsx)(t.li,{children:(0,i.jsx)(t.a,{href:"https://t.me/feature_sliced/4262",children:"(Thread) General logic for features and entities"})}),"\n",(0,i.jsx)(t.li,{children:(0,i.jsx)(t.a,{href:"https://t.me/feature_sliced/4210",children:"(Thread) Decomposition of swollen logic"})}),"\n",(0,i.jsx)(t.li,{children:(0,i.jsx)(t.a,{href:"https://t.me/feature_sliced/4088",children:"(Thread) About understanding the areas of responsibility during decomposition"})}),"\n",(0,i.jsx)(t.li,{children:(0,i.jsx)(t.a,{href:"https://t.me/feature_sliced/3828",children:"(Thread) Decomposition of the Product List widget"})}),"\n",(0,i.jsx)(t.li,{children:(0,i.jsx)(t.a,{href:"https://www.pluralsight.com/guides/how-to-organize-your-react-+-redux-codebase",children:"(Article) Different approaches to the decomposition of logic"})}),"\n",(0,i.jsx)(t.li,{children:(0,i.jsx)(t.a,{href:"https://t.me/feature_sliced/3776",children:"(Thread) About the difference between features and entities"})}),"\n",(0,i.jsx)(t.li,{children:(0,i.jsx)(t.a,{href:"https://t.me/feature_sliced/3248",children:"(Thread) About the difference between things and entities (2)"})}),"\n",(0,i.jsx)(t.li,{children:(0,i.jsx)(t.a,{href:"https://t.me/feature_sliced/3833",children:"(Thread) About the application of criteria for decomposition"})}),"\n"]})]})}function h(e={}){const{wrapper:t}={...(0,n.R)(),...e.components};return t?(0,i.jsx)(t,{...e,children:(0,i.jsx)(l,{...e})}):l(e)}},9603:(e,t,s)=>{s.d(t,{A:()=>i});const i=s.p+"assets/files/choosing-a-layer-en-12fdf3265c8fc4f6b58687352b81fce7.pdf"},4603:(e,t,s)=>{s.d(t,{A:()=>i});const i=s.p+"assets/images/choosing-a-layer-en-5b67f20bb921ba17d78a56c0dc7654a9.jpg"},8142:(e,t,s)=>{s.d(t,{A:()=>i});const i=s.p+"assets/images/decompose-github-a0eeb839a4b5ef5c480a73726a4451b0.jpg"},8898:(e,t,s)=>{s.d(t,{A:()=>i});const i=s.p+"assets/images/decompose-twitter-7b9a50f879d763c49305b3bf0751ee35.png"},1100:(e,t,s)=>{s.d(t,{R:()=>r,x:()=>a});var i=s(758);const n={},o=i.createContext(n);function r(e){const t=i.useContext(o);return i.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:r(e.components),i.createElement(o.Provider,{value:t},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunk_feature_sliced_documentation=self.webpackChunk_feature_sliced_documentation||[]).push([[4005],{1539:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>c,contentTitle:()=>r,default:()=>h,frontMatter:()=>o,metadata:()=>a,toc:()=>d});var i=s(6070),n=s(1100);const o={unlisted:!0},r="Decomposition cheatsheet",a={id:"get-started/cheatsheet",title:"Decomposition cheatsheet",description:"Use this as a quick reference when you're deciding how to decompose your UI. PDF versions are also available below, so you can print it out and keep one under your pillow.",source:"@site/i18n/en/docusaurus-plugin-content-docs/current/get-started/cheatsheet.mdx",sourceDirName:"get-started",slug:"/get-started/cheatsheet",permalink:"/docs/get-started/cheatsheet",draft:!1,unlisted:!0,editUrl:"https://github.com/feature-sliced/documentation/edit/master/i18n/en/docusaurus-plugin-content-docs/current/get-started/cheatsheet.mdx",tags:[],version:"current",lastUpdatedAt:1728325386e3,frontMatter:{unlisted:!0},sidebar:"getstartedSidebar"},c={},d=[{value:"Choosing a layer",id:"choosing-a-layer",level:2},{value:"Examples",id:"examples",level:2},{value:"Tweet",id:"tweet",level:3},{value:"GitHub",id:"github",level:3},{value:"See also",id:"see-also",level:2}];function l(e){const t={a:"a",h1:"h1",h2:"h2",h3:"h3",header:"header",img:"img",li:"li",p:"p",ul:"ul",...(0,n.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(t.header,{children:(0,i.jsx)(t.h1,{id:"decomposition-cheatsheet",children:"Decomposition cheatsheet"})}),"\n",(0,i.jsx)(t.p,{children:"Use this as a quick reference when you're deciding how to decompose your UI. PDF versions are also available below, so you can print it out and keep one under your pillow."}),"\n",(0,i.jsx)(t.h2,{id:"choosing-a-layer",children:"Choosing a layer"}),"\n",(0,i.jsx)(t.p,{children:(0,i.jsx)(t.a,{target:"_blank","data-noBrokenLinkCheck":!0,href:s(9603).A+"",children:"Download PDF"})}),"\n",(0,i.jsx)(t.p,{children:(0,i.jsx)(t.img,{alt:"Definitions of all layers and self-check questions",src:s(4603).A+"",width:"1684",height:"1190"})}),"\n",(0,i.jsx)(t.h2,{id:"examples",children:"Examples"}),"\n",(0,i.jsx)(t.h3,{id:"tweet",children:"Tweet"}),"\n",(0,i.jsx)(t.p,{children:(0,i.jsx)(t.img,{alt:"decomposed-tweet-bordered-bgLight",src:s(8898).A+"",width:"1200",height:"2364"})}),"\n",(0,i.jsx)(t.h3,{id:"github",children:"GitHub"}),"\n",(0,i.jsx)(t.p,{children:(0,i.jsx)(t.img,{alt:"decomposed-github-bordered",src:s(8142).A+"",width:"2291",height:"1080"})}),"\n",(0,i.jsx)(t.h2,{id:"see-also",children:"See also"}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsx)(t.li,{children:(0,i.jsx)(t.a,{href:"https://t.me/feature_sliced/4262",children:"(Thread) General logic for features and entities"})}),"\n",(0,i.jsx)(t.li,{children:(0,i.jsx)(t.a,{href:"https://t.me/feature_sliced/4210",children:"(Thread) Decomposition of swollen logic"})}),"\n",(0,i.jsx)(t.li,{children:(0,i.jsx)(t.a,{href:"https://t.me/feature_sliced/4088",children:"(Thread) About understanding the areas of responsibility during decomposition"})}),"\n",(0,i.jsx)(t.li,{children:(0,i.jsx)(t.a,{href:"https://t.me/feature_sliced/3828",children:"(Thread) Decomposition of the Product List widget"})}),"\n",(0,i.jsx)(t.li,{children:(0,i.jsx)(t.a,{href:"https://www.pluralsight.com/guides/how-to-organize-your-react-+-redux-codebase",children:"(Article) Different approaches to the decomposition of logic"})}),"\n",(0,i.jsx)(t.li,{children:(0,i.jsx)(t.a,{href:"https://t.me/feature_sliced/3776",children:"(Thread) About the difference between features and entities"})}),"\n",(0,i.jsx)(t.li,{children:(0,i.jsx)(t.a,{href:"https://t.me/feature_sliced/3248",children:"(Thread) About the difference between things and entities (2)"})}),"\n",(0,i.jsx)(t.li,{children:(0,i.jsx)(t.a,{href:"https://t.me/feature_sliced/3833",children:"(Thread) About the application of criteria for decomposition"})}),"\n"]})]})}function h(e={}){const{wrapper:t}={...(0,n.R)(),...e.components};return t?(0,i.jsx)(t,{...e,children:(0,i.jsx)(l,{...e})}):l(e)}},9603:(e,t,s)=>{s.d(t,{A:()=>i});const i=s.p+"assets/files/choosing-a-layer-en-12fdf3265c8fc4f6b58687352b81fce7.pdf"},4603:(e,t,s)=>{s.d(t,{A:()=>i});const i=s.p+"assets/images/choosing-a-layer-en-5b67f20bb921ba17d78a56c0dc7654a9.jpg"},8142:(e,t,s)=>{s.d(t,{A:()=>i});const i=s.p+"assets/images/decompose-github-a0eeb839a4b5ef5c480a73726a4451b0.jpg"},8898:(e,t,s)=>{s.d(t,{A:()=>i});const i=s.p+"assets/images/decompose-twitter-7b9a50f879d763c49305b3bf0751ee35.png"},1100:(e,t,s)=>{s.d(t,{R:()=>r,x:()=>a});var i=s(758);const n={},o=i.createContext(n);function r(e){const t=i.useContext(o);return i.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:r(e.components),i.createElement(o.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/066221cc.7e1896da.js b/assets/js/066221cc.06ec80c9.js similarity index 99% rename from assets/js/066221cc.7e1896da.js rename to assets/js/066221cc.06ec80c9.js index c9f0ffa187..2f4f5e6c06 100644 --- a/assets/js/066221cc.7e1896da.js +++ b/assets/js/066221cc.06ec80c9.js @@ -1 +1 @@ -"use strict";(self.webpackChunk_feature_sliced_documentation=self.webpackChunk_feature_sliced_documentation||[]).push([[3120],{3760:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>l,contentTitle:()=>o,default:()=>h,frontMatter:()=>r,metadata:()=>a,toc:()=>d});var i=s(6070),t=s(1100);const r={sidebar_position:1},o="Overview",a={id:"get-started/overview",title:"Overview",description:"Feature-Sliced Design (FSD) is an architectural methodology for scaffolding front-end applications. Simply put, it's a compilation of rules and conventions on organizing code. The main purpose of this methodology is to make the project more understandable and stable in the face of ever-changing business requirements.",source:"@site/i18n/en/docusaurus-plugin-content-docs/current/get-started/overview.mdx",sourceDirName:"get-started",slug:"/get-started/overview",permalink:"/docs/get-started/overview",draft:!1,unlisted:!1,editUrl:"https://github.com/feature-sliced/documentation/edit/master/i18n/en/docusaurus-plugin-content-docs/current/get-started/overview.mdx",tags:[],version:"current",lastUpdatedAt:1727607766e3,sidebarPosition:1,frontMatter:{sidebar_position:1},sidebar:"getstartedSidebar",previous:{title:"\ud83d\ude80 Get Started",permalink:"/docs/get-started/"},next:{title:"Tutorial",permalink:"/docs/get-started/tutorial"}},l={},d=[{value:"Is it right for me?",id:"is-it-right-for-me",level:2},{value:"Basic example",id:"basic-example",level:2},{value:"Concepts",id:"concepts",level:2},{value:"Layers",id:"layers",level:3},{value:"Slices",id:"slices",level:3},{value:"Segments",id:"segments",level:3},{value:"Advantages",id:"advantages",level:2},{value:"Incremental adoption",id:"incremental-adoption",level:2},{value:"Next steps",id:"next-steps",level:2}];function c(e){const n={a:"a",br:"br",code:"code",em:"em",h1:"h1",h2:"h2",h3:"h3",header:"header",img:"img",li:"li",ol:"ol",p:"p",strong:"strong",ul:"ul",...(0,t.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.header,{children:(0,i.jsx)(n.h1,{id:"overview",children:"Overview"})}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Feature-Sliced Design"})," (FSD) is an architectural methodology for scaffolding front-end applications. Simply put, it's a compilation of rules and conventions on organizing code. The main purpose of this methodology is to make the project more understandable and stable in the face of ever-changing business requirements."]}),"\n",(0,i.jsxs)(n.p,{children:["Apart from a set of conventions, FSD is also a toolchain. We have a ",(0,i.jsx)(n.a,{href:"https://github.com/feature-sliced/steiger",children:"linter"})," to check your project's architecture, ",(0,i.jsx)(n.a,{href:"https://github.com/feature-sliced/awesome?tab=readme-ov-file#tools",children:"folder generators"})," through a CLI or IDEs, as well as a rich library of ",(0,i.jsx)(n.a,{href:"/examples",children:"examples"}),"."]}),"\n",(0,i.jsx)(n.h2,{id:"is-it-right-for-me",children:"Is it right for me?"}),"\n",(0,i.jsx)(n.p,{children:"FSD can be implemented in projects and teams of any size. It is right for your project if:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["You're doing ",(0,i.jsx)(n.strong,{children:"frontend"})," (UI on web, mobile, desktop, etc.)"]}),"\n",(0,i.jsxs)(n.li,{children:["You're building an ",(0,i.jsx)(n.strong,{children:"application"}),", not a library"]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"And that's it! There are no restrictions on what programming language, UI framework, or state manager you use. You can also adopt FSD incrementally, use it in monorepos, and scale to great lengths by breaking your app into packages and implementing FSD individually within them."}),"\n",(0,i.jsxs)(n.p,{children:["If you already have an architecture and you're considering a switch to FSD, make sure that the current architecture is ",(0,i.jsx)(n.strong,{children:"causing trouble"})," in your team. For example, if your project has grown too large and inter-connected to efficiently implement new features, or if you're expecting a lot of new members to join the team. If the current architecture works, maybe it's not worth changing. But if you do decide to migrate, see the ",(0,i.jsx)(n.a,{href:"/docs/guides/migration/from-custom",children:"Migration"})," section for guidance."]}),"\n",(0,i.jsx)(n.h2,{id:"basic-example",children:"Basic example"}),"\n",(0,i.jsx)(n.p,{children:"Here is a simple project that implements FSD:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"\ud83d\udcc1 app"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"\ud83d\udcc1 pages"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"\ud83d\udcc1 shared"})}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["These top-level folders are called ",(0,i.jsx)(n.em,{children:"layers"}),". Let's look deeper:"]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"\ud83d\udcc2 app"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"\ud83d\udcc1 routes"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"\ud83d\udcc1 analytics"})}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"\ud83d\udcc2 pages"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"\ud83d\udcc1 home"})}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"\ud83d\udcc2 article-reader"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"\ud83d\udcc1 ui"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"\ud83d\udcc1 api"})}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"\ud83d\udcc1 settings"})}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"\ud83d\udcc2 shared"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"\ud83d\udcc1 ui"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"\ud83d\udcc1 api"})}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["Folders inside ",(0,i.jsx)(n.code,{children:"\ud83d\udcc2 pages"})," are called ",(0,i.jsx)(n.em,{children:"slices"}),". They divide the layer by domain (in this case, by pages)."]}),"\n",(0,i.jsxs)(n.p,{children:["Folders inside ",(0,i.jsx)(n.code,{children:"\ud83d\udcc2 app"}),", ",(0,i.jsx)(n.code,{children:"\ud83d\udcc2 shared"}),", and ",(0,i.jsx)(n.code,{children:"\ud83d\udcc2 pages/article-reader"})," are called ",(0,i.jsx)(n.em,{children:"segments"}),", and they divide slices (or layers) by technical purpose, i.e. what the code is for."]}),"\n",(0,i.jsx)(n.h2,{id:"concepts",children:"Concepts"}),"\n",(0,i.jsx)(n.p,{children:"Layers, slices, and segments form a hierarchy like this:"}),"\n",(0,i.jsxs)("figure",{children:[(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"Hierarchy of FSD concepts, described below",src:s(9273).A+"",width:"1355",height:"754"})}),(0,i.jsxs)("figcaption",{style:{fontStyle:"italic",fontSize:"0.9em"},children:[(0,i.jsx)("p",{children:'Pictured above: three pillars, labeled left to right as "Layers", "Slices", and "Segments" respectively.'}),(0,i.jsx)("p",{children:'The "Layers" pillar contains seven divisions arranged top to bottom and labeled "app", "processes", "pages", "widgets", "features", "entities", and "shared". The "processes" division is crossed out. The "entities" division is connected to the second pillar "Slices" in a way that conveys that the second pillar is the content of "entities".'}),(0,i.jsx)("p",{children:'The "Slices" pillar contains three divisions arranged top to bottom and labeled "user", "post", and "comment". The "post" division is connected to the third pillar "Segments" in the same way such that it\'s the content of "post".'}),(0,i.jsx)("p",{children:'The "Segments" pillar contains three divisions, arranged top to bottom and labeled "ui", "model", and "api".'})]})]}),"\n",(0,i.jsx)(n.h3,{id:"layers",children:"Layers"}),"\n",(0,i.jsx)(n.p,{children:"Layers are standardized across all FSD projects. You don't have to use all of the layers, but their names are important. There are currently seven of them (from top to bottom):"}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsx)(n.li,{children:"App* \u2014 everything that makes the app run \u2014 routing, entrypoints, global styles, providers."}),"\n",(0,i.jsx)(n.li,{children:"Processes (deprecated) \u2014 complex inter-page scenarios."}),"\n",(0,i.jsx)(n.li,{children:"Pages \u2014 full pages or large parts of a page in nested routing."}),"\n",(0,i.jsx)(n.li,{children:"Widgets \u2014 large self-contained chunks of functionality or UI, usually delivering an entire use case."}),"\n",(0,i.jsxs)(n.li,{children:["Features \u2014 ",(0,i.jsx)(n.em,{children:"reused"})," implementations of entire product features, i.e. actions that bring business value to the user."]}),"\n",(0,i.jsxs)(n.li,{children:["Entities \u2014 business entities that the project works with, like ",(0,i.jsx)(n.code,{children:"user"})," or ",(0,i.jsx)(n.code,{children:"product"}),"."]}),"\n",(0,i.jsx)(n.li,{children:"Shared* \u2014 reusable functionality, especially when it's detached from the specifics of the project/business, though not necessarily."}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.em,{children:"* \u2014 these layers, App and Shared, unlike the other layers, don't have slices, and are made up of segments directly."})}),"\n",(0,i.jsx)(n.p,{children:"The trick with layers is that modules on one layer can only know about and import from modules from the layers strictly below."}),"\n",(0,i.jsx)(n.h3,{id:"slices",children:"Slices"}),"\n",(0,i.jsx)(n.p,{children:"Next up are slices, which partition the code by business domain. You're free to choose any names for them, and create as many as you wish. Slices make your codebase easier to navigate by keeping logically related modules close together."}),"\n",(0,i.jsx)(n.p,{children:"Slices cannot use other slices on the same layer, and that helps with high cohesion and low coupling."}),"\n",(0,i.jsx)(n.h3,{id:"segments",children:"Segments"}),"\n",(0,i.jsx)(n.p,{children:"Slices, as well as layers App and Shared, consist of segments, and segments group your code by its purpose. Segment names are not constrained by the standard, but there are several conventional names for the most common purposes:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"ui"})," \u2014 everything related to UI display: UI components, date formatters, styles, etc."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"api"})," \u2014 backend interactions: request functions, data types, mappers, etc."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"model"})," \u2014 the data model: schemas, interfaces, stores, and business logic."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"lib"})," \u2014 library code that other modules on this slice need."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"config"})," \u2014 configuration files and feature flags."]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"Usually these segments are enough for most layers, you would only create your own segments in Shared or App, but this is not a rule."}),"\n",(0,i.jsx)(n.h2,{id:"advantages",children:"Advantages"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Uniformity"}),(0,i.jsx)(n.br,{}),"\n","Since the structure is standardized, projects become more uniform, which makes onboarding new members easier for the team."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Stability in face of changes and refactoring"}),(0,i.jsx)(n.br,{}),"\n","A module on one layer cannot use other modules on the same layer, or the layers above.",(0,i.jsx)(n.br,{}),"\n","This allows you to make isolated modifications without unforeseen consequences to the rest of the app."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Controlled reuse of logic"}),(0,i.jsx)(n.br,{}),"\n","Depending on the layer, you can make code very reusable or very local.",(0,i.jsx)(n.br,{}),"\n","This keeps a balance between following the ",(0,i.jsx)(n.strong,{children:"DRY"})," principle and practicality."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Orientation to business and users needs"}),(0,i.jsx)(n.br,{}),"\n","The app is split into business domains and usage of the business language is encouraged in naming, so that you can do useful product work without fully understanding all other unrelated parts of the project."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"incremental-adoption",children:"Incremental adoption"}),"\n",(0,i.jsx)(n.p,{children:"If you have an existing codebase that you want to migrate to FSD, we suggest the following strategy. We found it useful in our own migration experience."}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.p,{children:"Start by slowly shaping up the App and Shared layers module-by-module to create a foundation."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.p,{children:"Distribute all of the existing UI across Widgets and Pages using broad strokes, even if they have dependencies that violate the rules of FSD."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.p,{children:"Start gradually resolving import violations and also extracting Entities and possibly even Features."}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"It's advised to refrain from adding new large entities while refactoring or refactoring only certain parts of the project."}),"\n",(0,i.jsx)(n.h2,{id:"next-steps",children:"Next steps"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Want to get a good grasp of how to think in FSD?"})," Check out the ",(0,i.jsx)(n.a,{href:"/docs/get-started/tutorial",children:"Tutorial"}),"."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Prefer to learn from examples?"})," We have a lot in the ",(0,i.jsx)(n.a,{href:"/examples",children:"Examples"})," section."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Have questions?"})," Drop by our ",(0,i.jsx)(n.a,{href:"https://t.me/feature_sliced",children:"Telegram chat"})," and get help from the community."]}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(c,{...e})}):c(e)}},9273:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/visual_schema-e826067f573946613dcdc76e3f585082.jpg"},1100:(e,n,s)=>{s.d(n,{R:()=>o,x:()=>a});var i=s(758);const t={},r=i.createContext(t);function o(e){const n=i.useContext(r);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:o(e.components),i.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunk_feature_sliced_documentation=self.webpackChunk_feature_sliced_documentation||[]).push([[3120],{3760:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>l,contentTitle:()=>o,default:()=>h,frontMatter:()=>r,metadata:()=>a,toc:()=>d});var i=s(6070),t=s(1100);const r={sidebar_position:1},o="Overview",a={id:"get-started/overview",title:"Overview",description:"Feature-Sliced Design (FSD) is an architectural methodology for scaffolding front-end applications. Simply put, it's a compilation of rules and conventions on organizing code. The main purpose of this methodology is to make the project more understandable and stable in the face of ever-changing business requirements.",source:"@site/i18n/en/docusaurus-plugin-content-docs/current/get-started/overview.mdx",sourceDirName:"get-started",slug:"/get-started/overview",permalink:"/docs/get-started/overview",draft:!1,unlisted:!1,editUrl:"https://github.com/feature-sliced/documentation/edit/master/i18n/en/docusaurus-plugin-content-docs/current/get-started/overview.mdx",tags:[],version:"current",lastUpdatedAt:1728325386e3,sidebarPosition:1,frontMatter:{sidebar_position:1},sidebar:"getstartedSidebar",previous:{title:"\ud83d\ude80 Get Started",permalink:"/docs/get-started/"},next:{title:"Tutorial",permalink:"/docs/get-started/tutorial"}},l={},d=[{value:"Is it right for me?",id:"is-it-right-for-me",level:2},{value:"Basic example",id:"basic-example",level:2},{value:"Concepts",id:"concepts",level:2},{value:"Layers",id:"layers",level:3},{value:"Slices",id:"slices",level:3},{value:"Segments",id:"segments",level:3},{value:"Advantages",id:"advantages",level:2},{value:"Incremental adoption",id:"incremental-adoption",level:2},{value:"Next steps",id:"next-steps",level:2}];function c(e){const n={a:"a",br:"br",code:"code",em:"em",h1:"h1",h2:"h2",h3:"h3",header:"header",img:"img",li:"li",ol:"ol",p:"p",strong:"strong",ul:"ul",...(0,t.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.header,{children:(0,i.jsx)(n.h1,{id:"overview",children:"Overview"})}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Feature-Sliced Design"})," (FSD) is an architectural methodology for scaffolding front-end applications. Simply put, it's a compilation of rules and conventions on organizing code. The main purpose of this methodology is to make the project more understandable and stable in the face of ever-changing business requirements."]}),"\n",(0,i.jsxs)(n.p,{children:["Apart from a set of conventions, FSD is also a toolchain. We have a ",(0,i.jsx)(n.a,{href:"https://github.com/feature-sliced/steiger",children:"linter"})," to check your project's architecture, ",(0,i.jsx)(n.a,{href:"https://github.com/feature-sliced/awesome?tab=readme-ov-file#tools",children:"folder generators"})," through a CLI or IDEs, as well as a rich library of ",(0,i.jsx)(n.a,{href:"/examples",children:"examples"}),"."]}),"\n",(0,i.jsx)(n.h2,{id:"is-it-right-for-me",children:"Is it right for me?"}),"\n",(0,i.jsx)(n.p,{children:"FSD can be implemented in projects and teams of any size. It is right for your project if:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["You're doing ",(0,i.jsx)(n.strong,{children:"frontend"})," (UI on web, mobile, desktop, etc.)"]}),"\n",(0,i.jsxs)(n.li,{children:["You're building an ",(0,i.jsx)(n.strong,{children:"application"}),", not a library"]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"And that's it! There are no restrictions on what programming language, UI framework, or state manager you use. You can also adopt FSD incrementally, use it in monorepos, and scale to great lengths by breaking your app into packages and implementing FSD individually within them."}),"\n",(0,i.jsxs)(n.p,{children:["If you already have an architecture and you're considering a switch to FSD, make sure that the current architecture is ",(0,i.jsx)(n.strong,{children:"causing trouble"})," in your team. For example, if your project has grown too large and inter-connected to efficiently implement new features, or if you're expecting a lot of new members to join the team. If the current architecture works, maybe it's not worth changing. But if you do decide to migrate, see the ",(0,i.jsx)(n.a,{href:"/docs/guides/migration/from-custom",children:"Migration"})," section for guidance."]}),"\n",(0,i.jsx)(n.h2,{id:"basic-example",children:"Basic example"}),"\n",(0,i.jsx)(n.p,{children:"Here is a simple project that implements FSD:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"\ud83d\udcc1 app"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"\ud83d\udcc1 pages"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"\ud83d\udcc1 shared"})}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["These top-level folders are called ",(0,i.jsx)(n.em,{children:"layers"}),". Let's look deeper:"]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"\ud83d\udcc2 app"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"\ud83d\udcc1 routes"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"\ud83d\udcc1 analytics"})}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"\ud83d\udcc2 pages"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"\ud83d\udcc1 home"})}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"\ud83d\udcc2 article-reader"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"\ud83d\udcc1 ui"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"\ud83d\udcc1 api"})}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"\ud83d\udcc1 settings"})}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"\ud83d\udcc2 shared"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"\ud83d\udcc1 ui"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"\ud83d\udcc1 api"})}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["Folders inside ",(0,i.jsx)(n.code,{children:"\ud83d\udcc2 pages"})," are called ",(0,i.jsx)(n.em,{children:"slices"}),". They divide the layer by domain (in this case, by pages)."]}),"\n",(0,i.jsxs)(n.p,{children:["Folders inside ",(0,i.jsx)(n.code,{children:"\ud83d\udcc2 app"}),", ",(0,i.jsx)(n.code,{children:"\ud83d\udcc2 shared"}),", and ",(0,i.jsx)(n.code,{children:"\ud83d\udcc2 pages/article-reader"})," are called ",(0,i.jsx)(n.em,{children:"segments"}),", and they divide slices (or layers) by technical purpose, i.e. what the code is for."]}),"\n",(0,i.jsx)(n.h2,{id:"concepts",children:"Concepts"}),"\n",(0,i.jsx)(n.p,{children:"Layers, slices, and segments form a hierarchy like this:"}),"\n",(0,i.jsxs)("figure",{children:[(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"Hierarchy of FSD concepts, described below",src:s(9273).A+"",width:"1355",height:"754"})}),(0,i.jsxs)("figcaption",{style:{fontStyle:"italic",fontSize:"0.9em"},children:[(0,i.jsx)("p",{children:'Pictured above: three pillars, labeled left to right as "Layers", "Slices", and "Segments" respectively.'}),(0,i.jsx)("p",{children:'The "Layers" pillar contains seven divisions arranged top to bottom and labeled "app", "processes", "pages", "widgets", "features", "entities", and "shared". The "processes" division is crossed out. The "entities" division is connected to the second pillar "Slices" in a way that conveys that the second pillar is the content of "entities".'}),(0,i.jsx)("p",{children:'The "Slices" pillar contains three divisions arranged top to bottom and labeled "user", "post", and "comment". The "post" division is connected to the third pillar "Segments" in the same way such that it\'s the content of "post".'}),(0,i.jsx)("p",{children:'The "Segments" pillar contains three divisions, arranged top to bottom and labeled "ui", "model", and "api".'})]})]}),"\n",(0,i.jsx)(n.h3,{id:"layers",children:"Layers"}),"\n",(0,i.jsx)(n.p,{children:"Layers are standardized across all FSD projects. You don't have to use all of the layers, but their names are important. There are currently seven of them (from top to bottom):"}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsx)(n.li,{children:"App* \u2014 everything that makes the app run \u2014 routing, entrypoints, global styles, providers."}),"\n",(0,i.jsx)(n.li,{children:"Processes (deprecated) \u2014 complex inter-page scenarios."}),"\n",(0,i.jsx)(n.li,{children:"Pages \u2014 full pages or large parts of a page in nested routing."}),"\n",(0,i.jsx)(n.li,{children:"Widgets \u2014 large self-contained chunks of functionality or UI, usually delivering an entire use case."}),"\n",(0,i.jsxs)(n.li,{children:["Features \u2014 ",(0,i.jsx)(n.em,{children:"reused"})," implementations of entire product features, i.e. actions that bring business value to the user."]}),"\n",(0,i.jsxs)(n.li,{children:["Entities \u2014 business entities that the project works with, like ",(0,i.jsx)(n.code,{children:"user"})," or ",(0,i.jsx)(n.code,{children:"product"}),"."]}),"\n",(0,i.jsx)(n.li,{children:"Shared* \u2014 reusable functionality, especially when it's detached from the specifics of the project/business, though not necessarily."}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.em,{children:"* \u2014 these layers, App and Shared, unlike the other layers, don't have slices, and are made up of segments directly."})}),"\n",(0,i.jsx)(n.p,{children:"The trick with layers is that modules on one layer can only know about and import from modules from the layers strictly below."}),"\n",(0,i.jsx)(n.h3,{id:"slices",children:"Slices"}),"\n",(0,i.jsx)(n.p,{children:"Next up are slices, which partition the code by business domain. You're free to choose any names for them, and create as many as you wish. Slices make your codebase easier to navigate by keeping logically related modules close together."}),"\n",(0,i.jsx)(n.p,{children:"Slices cannot use other slices on the same layer, and that helps with high cohesion and low coupling."}),"\n",(0,i.jsx)(n.h3,{id:"segments",children:"Segments"}),"\n",(0,i.jsx)(n.p,{children:"Slices, as well as layers App and Shared, consist of segments, and segments group your code by its purpose. Segment names are not constrained by the standard, but there are several conventional names for the most common purposes:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"ui"})," \u2014 everything related to UI display: UI components, date formatters, styles, etc."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"api"})," \u2014 backend interactions: request functions, data types, mappers, etc."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"model"})," \u2014 the data model: schemas, interfaces, stores, and business logic."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"lib"})," \u2014 library code that other modules on this slice need."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"config"})," \u2014 configuration files and feature flags."]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"Usually these segments are enough for most layers, you would only create your own segments in Shared or App, but this is not a rule."}),"\n",(0,i.jsx)(n.h2,{id:"advantages",children:"Advantages"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Uniformity"}),(0,i.jsx)(n.br,{}),"\n","Since the structure is standardized, projects become more uniform, which makes onboarding new members easier for the team."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Stability in face of changes and refactoring"}),(0,i.jsx)(n.br,{}),"\n","A module on one layer cannot use other modules on the same layer, or the layers above.",(0,i.jsx)(n.br,{}),"\n","This allows you to make isolated modifications without unforeseen consequences to the rest of the app."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Controlled reuse of logic"}),(0,i.jsx)(n.br,{}),"\n","Depending on the layer, you can make code very reusable or very local.",(0,i.jsx)(n.br,{}),"\n","This keeps a balance between following the ",(0,i.jsx)(n.strong,{children:"DRY"})," principle and practicality."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Orientation to business and users needs"}),(0,i.jsx)(n.br,{}),"\n","The app is split into business domains and usage of the business language is encouraged in naming, so that you can do useful product work without fully understanding all other unrelated parts of the project."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"incremental-adoption",children:"Incremental adoption"}),"\n",(0,i.jsx)(n.p,{children:"If you have an existing codebase that you want to migrate to FSD, we suggest the following strategy. We found it useful in our own migration experience."}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.p,{children:"Start by slowly shaping up the App and Shared layers module-by-module to create a foundation."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.p,{children:"Distribute all of the existing UI across Widgets and Pages using broad strokes, even if they have dependencies that violate the rules of FSD."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.p,{children:"Start gradually resolving import violations and also extracting Entities and possibly even Features."}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"It's advised to refrain from adding new large entities while refactoring or refactoring only certain parts of the project."}),"\n",(0,i.jsx)(n.h2,{id:"next-steps",children:"Next steps"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Want to get a good grasp of how to think in FSD?"})," Check out the ",(0,i.jsx)(n.a,{href:"/docs/get-started/tutorial",children:"Tutorial"}),"."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Prefer to learn from examples?"})," We have a lot in the ",(0,i.jsx)(n.a,{href:"/examples",children:"Examples"})," section."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Have questions?"})," Drop by our ",(0,i.jsx)(n.a,{href:"https://t.me/feature_sliced",children:"Telegram chat"})," and get help from the community."]}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(c,{...e})}):c(e)}},9273:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/visual_schema-e826067f573946613dcdc76e3f585082.jpg"},1100:(e,n,s)=>{s.d(n,{R:()=>o,x:()=>a});var i=s(758);const t={},r=i.createContext(t);function o(e){const n=i.useContext(r);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:o(e.components),i.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/0a4ee302.9b62bc0a.js b/assets/js/0a4ee302.baca1795.js similarity index 98% rename from assets/js/0a4ee302.9b62bc0a.js rename to assets/js/0a4ee302.baca1795.js index d30fc6b3d8..030d291a7f 100644 --- a/assets/js/0a4ee302.9b62bc0a.js +++ b/assets/js/0a4ee302.baca1795.js @@ -1 +1 @@ -"use strict";(self.webpackChunk_feature_sliced_documentation=self.webpackChunk_feature_sliced_documentation||[]).push([[5977],{1540:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>a,contentTitle:()=>r,default:()=>u,frontMatter:()=>o,metadata:()=>c,toc:()=>d});var s=t(6070),i=t(1100);const o={sidebar_position:10},r="Usage with NuxtJS",c={id:"guides/tech/with-nuxtjs",title:"Usage with NuxtJS",description:"It is possible to implement FSD in a NuxtJS project, but conflicts arise due to the differences between NuxtJS project structure requirements and FSD principles:",source:"@site/i18n/en/docusaurus-plugin-content-docs/current/guides/tech/with-nuxtjs.mdx",sourceDirName:"guides/tech",slug:"/guides/tech/with-nuxtjs",permalink:"/docs/guides/tech/with-nuxtjs",draft:!1,unlisted:!1,editUrl:"https://github.com/feature-sliced/documentation/edit/master/i18n/en/docusaurus-plugin-content-docs/current/guides/tech/with-nuxtjs.mdx",tags:[],version:"current",lastUpdatedAt:1727607766e3,sidebarPosition:10,frontMatter:{sidebar_position:10},sidebar:"guidesSidebar",previous:{title:"Usage with NextJS",permalink:"/docs/guides/tech/with-nextjs"},next:{title:"Usage with React Query",permalink:"/docs/guides/tech/with-react-query"}},a={},d=[{value:"Adding an alias for the src directory",id:"adding-an-alias-for-the-src-directory",level:2},{value:"Choose how to configure the router",id:"choose-how-to-configure-the-router",level:2},{value:"Routing using config",id:"routing-using-config",level:3},{value:"File Routing",id:"file-routing",level:3},{value:"What to do with layouts?",id:"what-to-do-with-layouts",level:2},{value:"See also",id:"see-also",level:2}];function l(e){const n={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",p:"p",pre:"pre",ul:"ul",...(0,i.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.header,{children:(0,s.jsx)(n.h1,{id:"usage-with-nuxtjs",children:"Usage with NuxtJS"})}),"\n",(0,s.jsx)(n.p,{children:"It is possible to implement FSD in a NuxtJS project, but conflicts arise due to the differences between NuxtJS project structure requirements and FSD principles:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["Initially, NuxtJS offers a project file structure without a ",(0,s.jsx)(n.code,{children:"src"})," folder, i.e. in the root of the project."]}),"\n",(0,s.jsxs)(n.li,{children:["The file routing is in the ",(0,s.jsx)(n.code,{children:"pages"})," folder, while in FSD this folder is reserved for the flat slice structure."]}),"\n"]}),"\n",(0,s.jsxs)(n.h2,{id:"adding-an-alias-for-the-src-directory",children:["Adding an alias for the ",(0,s.jsx)(n.code,{children:"src"})," directory"]}),"\n",(0,s.jsxs)(n.p,{children:["Add an ",(0,s.jsx)(n.code,{children:"alias"})," object to your config:"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-ts",metastring:'title="nuxt.config.ts"',children:"export default defineNuxtConfig({\n devtools: { enabled: true }, // Not FSD related, enabled at project startup\n alias: {\n \"@\": '../src'\n },\n})\n"})}),"\n",(0,s.jsx)(n.h2,{id:"choose-how-to-configure-the-router",children:"Choose how to configure the router"}),"\n",(0,s.jsxs)(n.p,{children:["In NuxtJS, there are two ways to customize the routing - using a config and using a file structure.\nIn the case of file-based routing, you will create index.vue files in folders inside the app/routes directory, and in the case of configure, you will configure the routers in the ",(0,s.jsx)(n.code,{children:"router.options.ts"})," file."]}),"\n",(0,s.jsx)(n.h3,{id:"routing-using-config",children:"Routing using config"}),"\n",(0,s.jsxs)(n.p,{children:["In the ",(0,s.jsx)(n.code,{children:"app"})," layer, create a ",(0,s.jsx)(n.code,{children:"router.options.ts"})," file, and export a config object from it:"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-ts",metastring:'title="app/router.options.ts"',children:"import type { RouterConfig } from '@nuxt/schema';\n\nexport default {\n routes: (_routes) => [],\n};\n\n"})}),"\n",(0,s.jsxs)(n.p,{children:["To add a ",(0,s.jsx)(n.code,{children:"Home"})," page to your project, you need to do the following steps:"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["Add a page slice inside the ",(0,s.jsx)(n.code,{children:"pages"})," layer"]}),"\n",(0,s.jsxs)(n.li,{children:["Add the appropriate route to the ",(0,s.jsx)(n.code,{children:"app/router.config.ts"})," config"]}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["To create a page slice, let's use the ",(0,s.jsx)(n.a,{href:"https://github.com/feature-sliced/cli",children:"CLI"}),":"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-shell",children:"fsd pages home\n"})}),"\n",(0,s.jsxs)(n.p,{children:["Create a ",(0,s.jsx)(n.code,{children:"home-page.vue"})," file inside the ui segment, access it using the Public API"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-ts",metastring:'title="src/pages/home/index.ts"',children:"export { default as HomePage } from './ui/home-page';\n"})}),"\n",(0,s.jsx)(n.p,{children:"Thus, the file structure will look like this:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-sh",children:"|\u2500\u2500 src\n\u2502 \u251c\u2500\u2500 app\n\u2502 \u2502 \u251c\u2500\u2500 router.config.ts\n\u2502 \u251c\u2500\u2500 pages\n\u2502 \u2502 \u251c\u2500\u2500 home\n\u2502 \u2502 \u2502 \u251c\u2500\u2500 ui\n\u2502 \u2502 \u2502 \u2502 \u251c\u2500\u2500 home-page.vue\n\u2502 \u2502 \u2502 \u251c\u2500\u2500 index.ts\n"})}),"\n",(0,s.jsx)(n.p,{children:"Finally, let's add a root to the config:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-ts",metastring:'title="app/router.config.ts"',children:"import type { RouterConfig } from '@nuxt/schema'\n\nexport default {\n routes: (_routes) => [\n {\n name: 'home',\n path: '/',\n component: () => import('@/pages/home.vue').then(r => r.default || r)\n }\n ],\n}\n"})}),"\n",(0,s.jsx)(n.h3,{id:"file-routing",children:"File Routing"}),"\n",(0,s.jsxs)(n.p,{children:["First of all, create a ",(0,s.jsx)(n.code,{children:"src"})," directory in the root of your project, and create app and pages layers inside this directory and a routes folder inside the app layer.\nThus, your file structure should look like this:"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-sh",children:"\u251c\u2500\u2500 src\n\u2502 \u251c\u2500\u2500 app\n\u2502 \u2502 \u251c\u2500\u2500 routes\n\u2502 \u251c\u2500\u2500 pages # Pages folder, related to FSD\n"})}),"\n",(0,s.jsxs)(n.p,{children:["In order for NuxtJS to use the routes folder inside the ",(0,s.jsx)(n.code,{children:"app"})," layer for file routing, you need to modify ",(0,s.jsx)(n.code,{children:"nuxt.config.ts"})," as follows:"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-ts",metastring:'title="nuxt.config.ts"',children:"export default defineNuxtConfig({\n devtools: { enabled: true }, // Not FSD related, enabled at project startup\n alias: {\n \"@\": '../src'\n },\n dir: {\n pages: './src/app/routes'\n }\n})\n"})}),"\n",(0,s.jsxs)(n.p,{children:["Now, you can create routes for pages within ",(0,s.jsx)(n.code,{children:"app"})," and connect pages from ",(0,s.jsx)(n.code,{children:"pages"})," to them."]}),"\n",(0,s.jsxs)(n.p,{children:["For example, to add a ",(0,s.jsx)(n.code,{children:"Home"})," page to your project, you need to do the following steps:"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["Add a page slice inside the ",(0,s.jsx)(n.code,{children:"pages"})," layer"]}),"\n",(0,s.jsxs)(n.li,{children:["Add the corresponding root inside the ",(0,s.jsx)(n.code,{children:"app"})," layer"]}),"\n",(0,s.jsx)(n.li,{children:"Align the page from the slice with the root"}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["To create a page slice, let's use the ",(0,s.jsx)(n.a,{href:"https://github.com/feature-sliced/cli",children:"CLI"}),":"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-shell",children:"fsd pages home\n"})}),"\n",(0,s.jsxs)(n.p,{children:["Create a ",(0,s.jsx)(n.code,{children:"home-page.vue"})," file inside the ui segment, access it using the Public API"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-ts",metastring:'title="src/pages/home/index.ts"',children:"export { default as HomePage } from './ui/home-page';\n"})}),"\n",(0,s.jsxs)(n.p,{children:["Create a root for this page inside the ",(0,s.jsx)(n.code,{children:"app"})," layer:"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-sh",children:"\n\u251c\u2500\u2500 src\n\u2502 \u251c\u2500\u2500 app\n\u2502 \u2502 \u251c\u2500\u2500 routes\n\u2502 \u2502 \u2502 \u251c\u2500\u2500 index.vue\n\u2502 \u251c\u2500\u2500 pages\n\u2502 \u2502 \u251c\u2500\u2500 home\n\u2502 \u2502 \u2502 \u251c\u2500\u2500 ui\n\u2502 \u2502 \u2502 \u2502 \u251c\u2500\u2500 home-page.vue\n\u2502 \u2502 \u2502 \u251c\u2500\u2500 index.ts\n"})}),"\n",(0,s.jsxs)(n.p,{children:["Add your page component inside the ",(0,s.jsx)(n.code,{children:"index.vue"})," file:"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-html",metastring:'title="src/app/routes/index.vue"',children:" - + +
Skip to main content

🌎 FSD international community

· 2 min read
Anton Medvedev
FSD core-team member
post-cover
diff --git a/blog/archive.html b/blog/archive.html index 7eb158cd93..7dd9fa1c9e 100644 --- a/blog/archive.html +++ b/blog/archive.html @@ -9,8 +9,8 @@ - - + + diff --git a/blog/international-community.html b/blog/international-community.html index 5c35619f47..b915163ef9 100644 --- a/blog/international-community.html +++ b/blog/international-community.html @@ -9,8 +9,8 @@ - - + +

🌎 FSD international community

· 2 min read
Anton Medvedev
FSD core-team member
post-cover
diff --git a/blog/rebranding-stable.html b/blog/rebranding-stable.html index ce46575e33..7923b9a010 100644 --- a/blog/rebranding-stable.html +++ b/blog/rebranding-stable.html @@ -9,8 +9,8 @@ - - + +

💥 FSD rebranding!

· 2 min read
Ilya Azin
FSD core-team member
logo-primary
diff --git a/blog/tags.html b/blog/tags.html index 2af01b6cd9..09ccff24f4 100644 --- a/blog/tags.html +++ b/blog/tags.html @@ -9,8 +9,8 @@ - - + + diff --git a/blog/tags/brand.html b/blog/tags/brand.html index 4ed4d4885d..8b4b94db03 100644 --- a/blog/tags/brand.html +++ b/blog/tags/brand.html @@ -9,8 +9,8 @@ - - + +

One post tagged with "brand"

View All Tags

💥 FSD rebranding!

· 2 min read
Ilya Azin
FSD core-team member
logo-primary
diff --git a/blog/tags/community.html b/blog/tags/community.html index b03ad1b406..4b55b627f2 100644 --- a/blog/tags/community.html +++ b/blog/tags/community.html @@ -9,8 +9,8 @@ - - + +

One post tagged with "community"

View All Tags

🌎 FSD international community

· 2 min read
Anton Medvedev
FSD core-team member
post-cover
diff --git a/blog/tags/discord.html b/blog/tags/discord.html index 72793b160d..a1b8042179 100644 --- a/blog/tags/discord.html +++ b/blog/tags/discord.html @@ -9,8 +9,8 @@ - - + +

One post tagged with "discord"

View All Tags

🌎 FSD international community

· 2 min read
Anton Medvedev
FSD core-team member
post-cover
diff --git a/blog/tags/promo.html b/blog/tags/promo.html index d0eb1eadbd..060b45806f 100644 --- a/blog/tags/promo.html +++ b/blog/tags/promo.html @@ -9,8 +9,8 @@ - - + +

2 posts tagged with "promo"

View All Tags

🌎 FSD international community

· 2 min read
Anton Medvedev
FSD core-team member
post-cover
diff --git a/community.html b/community.html index 0c8d47638d..4c7dbe5130 100644 --- a/community.html +++ b/community.html @@ -9,8 +9,8 @@ - - + + +
Contributing

HowTo, Workflow, Support

\ No newline at end of file diff --git a/community/team.html b/community/team.html index b21e7df3af..7108a1de25 100644 --- a/community/team.html +++ b/community/team.html @@ -9,8 +9,8 @@ - - + + +

Companies

\ No newline at end of file diff --git a/docs.html b/docs.html index 38ed7fe185..1acb52f828 100644 --- a/docs.html +++ b/docs.html @@ -9,8 +9,8 @@ - - + + +
🛠 Examples

Projects built with Feature-Sliced Design

\ No newline at end of file diff --git a/docs/about.html b/docs/about.html index 16fe52a6fd..688d82c5ba 100644 --- a/docs/about.html +++ b/docs/about.html @@ -9,8 +9,8 @@ - - + + +
Promote

About promotion and integration FSD at companies

Integration • Promoting in team • Promoting in company
\ No newline at end of file diff --git a/docs/about/alternatives.html b/docs/about/alternatives.html index 398425c246..4a3a84a4e0 100644 --- a/docs/about/alternatives.html +++ b/docs/about/alternatives.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/docs/about/mission.html b/docs/about/mission.html index b9790f39e7..dc2bc108e2 100644 --- a/docs/about/mission.html +++ b/docs/about/mission.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/docs/about/motivation.html b/docs/about/motivation.html index f5dce08dd4..307736c07b 100644 --- a/docs/about/motivation.html +++ b/docs/about/motivation.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/docs/about/promote/for-company.html b/docs/about/promote/for-company.html index e4bee5cf9c..af1a40ae06 100644 --- a/docs/about/promote/for-company.html +++ b/docs/about/promote/for-company.html @@ -9,8 +9,8 @@ - - + + +

How to prepare and justify a plan to move to the methodology?

\ No newline at end of file diff --git a/docs/about/promote/for-team.html b/docs/about/promote/for-team.html index dbbca78606..2f5d60b5fb 100644 --- a/docs/about/promote/for-team.html +++ b/docs/about/promote/for-team.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/docs/about/promote/integration.html b/docs/about/promote/integration.html index 0fba8cffec..190623e309 100644 --- a/docs/about/promote/integration.html +++ b/docs/about/promote/integration.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/docs/about/promote/partial-application.html b/docs/about/promote/partial-application.html index a7a9a5d9bb..565882a636 100644 --- a/docs/about/promote/partial-application.html +++ b/docs/about/promote/partial-application.html @@ -9,14 +9,14 @@ - - + +
Skip to main content
+ \ No newline at end of file diff --git a/docs/about/understanding/abstractions.html b/docs/about/understanding/abstractions.html index fe1f2b3e03..317afc50a9 100644 --- a/docs/about/understanding/abstractions.html +++ b/docs/about/understanding/abstractions.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/docs/about/understanding/architecture.html b/docs/about/understanding/architecture.html index 594cd64648..27c746d7ec 100644 --- a/docs/about/understanding/architecture.html +++ b/docs/about/understanding/architecture.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/docs/about/understanding/knowledge-types.html b/docs/about/understanding/knowledge-types.html index 84d42b452c..d06e8de607 100644 --- a/docs/about/understanding/knowledge-types.html +++ b/docs/about/understanding/knowledge-types.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/docs/about/understanding/naming.html b/docs/about/understanding/naming.html index b816b6677e..13cc41309b 100644 --- a/docs/about/understanding/naming.html +++ b/docs/about/understanding/naming.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/docs/about/understanding/needs-driven.html b/docs/about/understanding/needs-driven.html index 3b49f1c6d4..9bc47132b2 100644 --- a/docs/about/understanding/needs-driven.html +++ b/docs/about/understanding/needs-driven.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/docs/about/understanding/signals.html b/docs/about/understanding/signals.html index 8e2a5c0c62..a53781ac65 100644 --- a/docs/about/understanding/signals.html +++ b/docs/about/understanding/signals.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/docs/branding.html b/docs/branding.html index b4b1ded6d8..e477c8f74b 100644 --- a/docs/branding.html +++ b/docs/branding.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/docs/get-started.html b/docs/get-started.html index d9305148a4..a17f65b83f 100644 --- a/docs/get-started.html +++ b/docs/get-started.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/docs/get-started/cheatsheet.html b/docs/get-started/cheatsheet.html index a7349fa5b3..67414432dc 100644 --- a/docs/get-started/cheatsheet.html +++ b/docs/get-started/cheatsheet.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/docs/get-started/faq.html b/docs/get-started/faq.html index aa0e6fbfcf..1b96a63d81 100644 --- a/docs/get-started/faq.html +++ b/docs/get-started/faq.html @@ -9,8 +9,8 @@ - - + + +

Answered here

\ No newline at end of file diff --git a/docs/get-started/overview.html b/docs/get-started/overview.html index 4ec9426b86..f61e2916ab 100644 --- a/docs/get-started/overview.html +++ b/docs/get-started/overview.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/docs/get-started/tutorial.html b/docs/get-started/tutorial.html index d031570bee..3545dfcf36 100644 --- a/docs/get-started/tutorial.html +++ b/docs/get-started/tutorial.html @@ -9,8 +9,8 @@ - - + +
Skip to main content

Tutorial

@@ -272,6 +272,6 @@

Article edito
app/routes/editor._index.tsx, app/routes/editor.$slug.tsx (same content)
import { ArticleEditPage } from "pages/article-edit";

export { loader, action } from "pages/article-edit";

export default ArticleEditPage;

We’re done now! Log in and try creating a new article. Or “forget” to write the article and see the validation kick in.

The Conduit article editor, with the title field saying “New article” and the rest of the fields empty. Above the form there are two errors: “Describe what this article is about” and “Write the article itself”.

The Conduit article editor, with the title field saying “New article” and the rest of the fields empty. Above the form there are two errors: “Describe what this article is about” and “Write the article itself”.
-

The profile and settings pages are very similar to the article reader and editor, they are left as an exercise for the reader, that’s you :)

+

The profile and settings pages are very similar to the article reader and editor, they are left as an exercise for the reader, that’s you :)

\ No newline at end of file diff --git a/docs/guides.html b/docs/guides.html index 82f2ea7883..615f6adc40 100644 --- a/docs/guides.html +++ b/docs/guides.html @@ -9,8 +9,8 @@ - - + + +
Code Issues (Smells)

General architecture issues for legacy code

Desegmented • Routing • Cross-imports
\ No newline at end of file diff --git a/docs/guides/examples.html b/docs/guides/examples.html index f1122693bb..109aa908b5 100644 --- a/docs/guides/examples.html +++ b/docs/guides/examples.html @@ -9,8 +9,8 @@ - - + + +
Page layouts

Main cases with layouts

Where to store them • Using widgets in layouts
\ No newline at end of file diff --git a/docs/guides/examples/auth.html b/docs/guides/examples/auth.html index e4d4f01d56..0ce2cf55a5 100644 --- a/docs/guides/examples/auth.html +++ b/docs/guides/examples/auth.html @@ -9,8 +9,8 @@ - - + +
Skip to main content

Authentication

@@ -164,6 +164,6 @@

Automatic logout

-

Don't forget to build failsafes for when a request to log out fails, or a request to refresh a login token fails. In both of these cases, you should clear the token store. If you keep your token in Entities, this code can be placed in the model segment as it is pure business logic. If you keep your token in Shared, placing this logic in shared/api might bloat the segment and dilute its purpose. If you're noticing that your API segment contains two several unrelated things, consider splitting out the token management logic into another segment, for example, shared/auth.

+

Don't forget to build failsafes for when a request to log out fails, or a request to refresh a login token fails. In both of these cases, you should clear the token store. If you keep your token in Entities, this code can be placed in the model segment as it is pure business logic. If you keep your token in Shared, placing this logic in shared/api might bloat the segment and dilute its purpose. If you're noticing that your API segment contains two several unrelated things, consider splitting out the token management logic into another segment, for example, shared/auth.

\ No newline at end of file diff --git a/docs/guides/examples/autocompleted.html b/docs/guides/examples/autocompleted.html index 1301052730..8b0db2cb71 100644 --- a/docs/guides/examples/autocompleted.html +++ b/docs/guides/examples/autocompleted.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/docs/guides/examples/browser-api.html b/docs/guides/examples/browser-api.html index f592c7e502..fb6d91e632 100644 --- a/docs/guides/examples/browser-api.html +++ b/docs/guides/examples/browser-api.html @@ -9,8 +9,8 @@ - - + +
Skip to main content
Unlisted page
This page is unlisted. Search engines will not index it, and only users having a direct link can access it.

Browser API

@@ -18,6 +18,6 @@

About working with the Browser API: localStorage, audio Api, bluetooth API, etc.

You can ask about the idea in more detail @alex_novi

-
+ \ No newline at end of file diff --git a/docs/guides/examples/cms.html b/docs/guides/examples/cms.html index 3842a091f4..f9ea8c2565 100644 --- a/docs/guides/examples/cms.html +++ b/docs/guides/examples/cms.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/docs/guides/examples/feedback.html b/docs/guides/examples/feedback.html index d761723a95..f4fc87b132 100644 --- a/docs/guides/examples/feedback.html +++ b/docs/guides/examples/feedback.html @@ -9,14 +9,14 @@ - - + +
Skip to main content
Unlisted page
This page is unlisted. Search engines will not index it, and only users having a direct link can access it.
+ \ No newline at end of file diff --git a/docs/guides/examples/i18n.html b/docs/guides/examples/i18n.html index 9369786c82..59f1f261ad 100644 --- a/docs/guides/examples/i18n.html +++ b/docs/guides/examples/i18n.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/docs/guides/examples/metric.html b/docs/guides/examples/metric.html index ceba40ff46..5935fa0a53 100644 --- a/docs/guides/examples/metric.html +++ b/docs/guides/examples/metric.html @@ -9,14 +9,14 @@ - - + +
Skip to main content
Unlisted page
This page is unlisted. Search engines will not index it, and only users having a direct link can access it.
+ \ No newline at end of file diff --git a/docs/guides/examples/monorepo.html b/docs/guides/examples/monorepo.html index e84b3ba664..8ccc0cd4e9 100644 --- a/docs/guides/examples/monorepo.html +++ b/docs/guides/examples/monorepo.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/docs/guides/examples/page-layout.html b/docs/guides/examples/page-layout.html index 3d3f4b2ece..946c7dc2bf 100644 --- a/docs/guides/examples/page-layout.html +++ b/docs/guides/examples/page-layout.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/docs/guides/examples/platforms.html b/docs/guides/examples/platforms.html index daa34a2d82..24b0737013 100644 --- a/docs/guides/examples/platforms.html +++ b/docs/guides/examples/platforms.html @@ -9,14 +9,14 @@ - - + +
Skip to main content
Unlisted page
This page is unlisted. Search engines will not index it, and only users having a direct link can access it.
+ \ No newline at end of file diff --git a/docs/guides/examples/ssr.html b/docs/guides/examples/ssr.html index 5fb67143d4..0e78897113 100644 --- a/docs/guides/examples/ssr.html +++ b/docs/guides/examples/ssr.html @@ -9,14 +9,14 @@ - - + +
Skip to main content
Unlisted page
This page is unlisted. Search engines will not index it, and only users having a direct link can access it.
+ \ No newline at end of file diff --git a/docs/guides/examples/theme.html b/docs/guides/examples/theme.html index d1e8db1b8f..ef3070a13e 100644 --- a/docs/guides/examples/theme.html +++ b/docs/guides/examples/theme.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/docs/guides/examples/types.html b/docs/guides/examples/types.html index e56d69ff19..404d7ab7f9 100644 --- a/docs/guides/examples/types.html +++ b/docs/guides/examples/types.html @@ -9,8 +9,8 @@ - - + +
Skip to main content

Types

@@ -142,6 +142,6 @@

shared/lib/untyped-packages/use-react-screenshot.d.ts
// This library doesn't have typings, and we didn't want to bother writing our own.
declare module "use-react-screenshot";

Auto-generation of types

-

It's common to generate types from external sources, for example, generating backend types from an OpenAPI schema. In this case, create a dedicated place in your codebase for these types, like shared/api/openapi. Ideally, you should also include a README in that folder that describes what these files are, how to regenerate them, etc.

+

It's common to generate types from external sources, for example, generating backend types from an OpenAPI schema. In this case, create a dedicated place in your codebase for these types, like shared/api/openapi. Ideally, you should also include a README in that folder that describes what these files are, how to regenerate them, etc.

\ No newline at end of file diff --git a/docs/guides/examples/white-labels.html b/docs/guides/examples/white-labels.html index 4a056320c2..d2e48d616e 100644 --- a/docs/guides/examples/white-labels.html +++ b/docs/guides/examples/white-labels.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/docs/guides/issues/cross-imports.html b/docs/guides/issues/cross-imports.html index 913e0a9ba5..278e45ff6d 100644 --- a/docs/guides/issues/cross-imports.html +++ b/docs/guides/issues/cross-imports.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/docs/guides/issues/desegmented.html b/docs/guides/issues/desegmented.html index 1420fedefb..ec29f7ae8f 100644 --- a/docs/guides/issues/desegmented.html +++ b/docs/guides/issues/desegmented.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/docs/guides/issues/routes.html b/docs/guides/issues/routes.html index 1b0dece00c..02c27ecb38 100644 --- a/docs/guides/issues/routes.html +++ b/docs/guides/issues/routes.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/docs/guides/migration/from-custom.html b/docs/guides/migration/from-custom.html index c33e3fc132..efd80ac55b 100644 --- a/docs/guides/migration/from-custom.html +++ b/docs/guides/migration/from-custom.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/docs/guides/migration/from-v1.html b/docs/guides/migration/from-v1.html index 0a431a9eb3..c19f11d6b7 100644 --- a/docs/guides/migration/from-v1.html +++ b/docs/guides/migration/from-v1.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/docs/guides/tech/with-nextjs.html b/docs/guides/tech/with-nextjs.html index 70a4847ac4..81faaeb53b 100644 --- a/docs/guides/tech/with-nextjs.html +++ b/docs/guides/tech/with-nextjs.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/docs/guides/tech/with-nuxtjs.html b/docs/guides/tech/with-nuxtjs.html index 8f082285c1..0237965802 100644 --- a/docs/guides/tech/with-nuxtjs.html +++ b/docs/guides/tech/with-nuxtjs.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/docs/guides/tech/with-react-query.html b/docs/guides/tech/with-react-query.html index b2b83e56ae..38b3158711 100644 --- a/docs/guides/tech/with-react-query.html +++ b/docs/guides/tech/with-react-query.html @@ -9,8 +9,8 @@ - - + +
Skip to main content
+ \ No newline at end of file diff --git a/docs/guides/tech/with-sveltekit.html b/docs/guides/tech/with-sveltekit.html index a55cb735c5..0e09e1f89b 100644 --- a/docs/guides/tech/with-sveltekit.html +++ b/docs/guides/tech/with-sveltekit.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/docs/reference.html b/docs/reference.html index 73ccd8d144..aabf0d2729 100644 --- a/docs/reference.html +++ b/docs/reference.html @@ -9,8 +9,8 @@ - - + + +
Public API

Practices for designing scalable and easy-to-integrate modules

\ No newline at end of file diff --git a/docs/reference/isolation.html b/docs/reference/isolation.html index 3edf0e121c..5b47d6e8c2 100644 --- a/docs/reference/isolation.html +++ b/docs/reference/isolation.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/docs/reference/isolation/coupling-cohesion.html b/docs/reference/isolation/coupling-cohesion.html index 5296e7dfa7..08e8686def 100644 --- a/docs/reference/isolation/coupling-cohesion.html +++ b/docs/reference/isolation/coupling-cohesion.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/docs/reference/isolation/decouple-entities.html b/docs/reference/isolation/decouple-entities.html index ab3deacd87..a4d437a7c4 100644 --- a/docs/reference/isolation/decouple-entities.html +++ b/docs/reference/isolation/decouple-entities.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/docs/reference/layers.html b/docs/reference/layers.html index d32c770f64..470a141f05 100644 --- a/docs/reference/layers.html +++ b/docs/reference/layers.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/docs/reference/public-api.html b/docs/reference/public-api.html index be80679b11..20e1de45b1 100644 --- a/docs/reference/public-api.html +++ b/docs/reference/public-api.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/docs/reference/slices-segments.html b/docs/reference/slices-segments.html index ae1c57e293..fe92483806 100644 --- a/docs/reference/slices-segments.html +++ b/docs/reference/slices-segments.html @@ -9,8 +9,8 @@ - - + +
Skip to main content

Slices and segments

@@ -38,6 +38,6 @@

SegmentsExamples

-
Layeruimodellibapi
SharedUI kitUsually not usedUtility modules of several related files.
If you need to use individual helpers, consider using utility libraries such as lodash-es.
Rudimentary API client with additional features like authentication or caching.
EntitiesSkeleton of a business entity with slots for interactive elementsData storage of instances of this entity as well as functions for manipulating that data.
This segment is most fit for storing server-side data. If you use TanStack Query or other methods of implicit storage, you may choose to omit this segment.
Functions for manipulating instances of this entity that aren't related to storageAPI methods using the API client from Shared for easy communication with the backend
FeaturesInteractive elements that enable users to use this featureBusiness logic and infrastructure data storage, if needed (e.g., current app theme). This is the code that actually produces value for the user.Infrastructural code that helps to concisely describe the business logic in the model segmentAPI methods that represent this feature on the backend.
May compose API methods from Entities.
WidgetsComposition of Entities and Features into self-contained UI blocks.
Can also contain error boundaries and loading states.
Infrastructure data storage, if neededNon-business interactions (e.g., gestures) and other necessary code for the block to function on a pageUsually not used, but can contain data loaders in nested routing contexts (e.g., Remix)
PagesComposition of Entities, Features and Widgets into complete pages.
Can also contain error boundaries and loading states.
Usually not usedNon-business interactions (e.g., gestures) and other necessary code for the page to deliver a complete user experienceData loaders for SSR-oriented frameworks
+
Layeruimodellibapi
SharedUI kitUsually not usedUtility modules of several related files.
If you need to use individual helpers, consider using utility libraries such as lodash-es.
Rudimentary API client with additional features like authentication or caching.
EntitiesSkeleton of a business entity with slots for interactive elementsData storage of instances of this entity as well as functions for manipulating that data.
This segment is most fit for storing server-side data. If you use TanStack Query or other methods of implicit storage, you may choose to omit this segment.
Functions for manipulating instances of this entity that aren't related to storageAPI methods using the API client from Shared for easy communication with the backend
FeaturesInteractive elements that enable users to use this featureBusiness logic and infrastructure data storage, if needed (e.g., current app theme). This is the code that actually produces value for the user.Infrastructural code that helps to concisely describe the business logic in the model segmentAPI methods that represent this feature on the backend.
May compose API methods from Entities.
WidgetsComposition of Entities and Features into self-contained UI blocks.
Can also contain error boundaries and loading states.
Infrastructure data storage, if neededNon-business interactions (e.g., gestures) and other necessary code for the block to function on a pageUsually not used, but can contain data loaders in nested routing contexts (e.g., Remix)
PagesComposition of Entities, Features and Widgets into complete pages.
Can also contain error boundaries and loading states.
Usually not usedNon-business interactions (e.g., gestures) and other necessary code for the page to deliver a complete user experienceData loaders for SSR-oriented frameworks
\ No newline at end of file diff --git a/examples.html b/examples.html index 5a8bd82138..f6ac8cdc82 100644 --- a/examples.html +++ b/examples.html @@ -9,8 +9,8 @@ - - + +
Skip to main content

Examples

List of websites people are building with Feature-Sliced Design

v2
Tiny Bunny Mini Game

Mini-game "21 points" in the universe of the visual novel "Tiny Bunny".

reactredux-toolkittypescript
v2
Roke.to Business

Business branch of Roketo, a crypto streaming service which allows paying people by the second

reacteffectortailwindcssturbo
v2
Roke.to dApp

A crypto streaming service which allows paying people by the second

reacteffectortailwindcss
v2
IT bookstore

Catalog for viewing and searching information technology books

reactredux toolkittypescriptreact routervitescss
v2
Moke Smoke (React Native example)

An application that helps you quit smoking, published in the App Store and Google. Developed with React Native

reactrtkpersisttypescriptfirebase
v2
Moonlogs (Effector + Forest example)

Moonlogs is a business-event logging tool with a built-in user-friendly web interface for easy access to events

foresteffectortailwindtypescriptgo
v2
Posts (React Query example)

Example of using FSD with React Query (Mutation, Query, Pagination)

reactreact-querytypescriptmaterial ui
v2
FalkChat

FalkChat is your go-to destination for seamless and engaging online conversations.

reactnextprettierclerktypescripttailwindshadcn/uizustand
v2
Polka

The application is a bookshelf where you can add your favorite books. The application works with the Google Books API.

vue3piniatypescriptvue-routereslintprettiervitevuetify
v2
Fake Cyber Web Store

Example web store on Vue3

vue3piniatypescriptfirebasevue-routereslintprettiervite
v2
VK Audiopad

Chrome extension for VK Music

reactvkuitypescript
v2
Сryptolight

Cryptocurrency review site based on Feature-Sliced Design (Architectural methodology for frontend projects).

reacteffectornextuitypescriptvite
v2
Money Flow

A mobile application for tracking your expenses and incomes.

capacitorjsreactreact-routerzustandvitetypescriptmobileandroidios
v2
E-Commerce

This project is an online store built using React. It provides the ability to view the product catalog and product pages

reactmobxwebpacktypescriptssr
v2
Todo app (Vue 3 + Pinia)

QuickStart todo-app example for Vue developers with pinia store

vue 3piniavitetypescript
v2
Conduit

A social blogging site powered by Feature-Sliced Design architectural methodology.

reactreact-routerreact-queryzustandvitetypescript
v2
Kinomore (React+Effector)

Large project on the effector/fsd stack

reacteffectortypescriptnextjsreact-testing-library
v2
Sudoku (React+Effector)

A simple crossword of numbers on effector / fsd

reacteffectortypescriptvitetailwindatomic-router
v2
Nukeapp (React+ReduxToolkit)

Shopping app build on React/ReduxToolkit stack

reactredux-toolkittypescriptvite
v2
Simple Greenhouse App (React+MobX)

Simple demonstration of how FSD can be implemented with TypeScript, React.js, MobX and Firebase

reactmobxtypescriptfirebasemuivite
v2
Todo App (ReactNative+Redux)

QuickStart todo-app example for ReactNative(Expo) developers

react-nativeexporedux
v2
Rastrr

A simple and free graphic editor for novice artists

svelte
v2
Draw, I'll Help

A drawing app with shape correction powered by ML

svelte
v2
Cast

A podcast listening PWA with automated quality assurance

svelte
v2
Loripsum generator

Simple fish text generator

reacteffector
v2
Projentry (demo)

Assistant for your projects

reactantd
v2
Todo App (Angular 13)

QuickStart todo-app example for Angular developers

angularrxjs
v2
Todo App (Vue 3)

QuickStart todo-app example for Vue developers

vuevuexantd
v2
Todo App (React+Redux)

QuickStart todo-app example for React developers (Redux version)

reactreduxantd
v2
Todo App (React+Effector)

QuickStart todo-app example for React developers (Effector version)

reacteffectorantd
v2
Github Client

React & GraphQL powered github web-client

reactgraphqlantd
v2
Cardbox

The best solutions from developers in one place

reacteffector
diff --git a/index.html b/index.html index 5872101d65..ec478445fb 100644 --- a/index.html +++ b/index.html @@ -9,8 +9,8 @@ - - + +
Skip to main content

Feature-Sliced Design

Architectural methodology for frontend projects

Features

Explicit business logic

Easily discoverable architecture thanks to domain scopes

Adaptability

Architecture components can be flexibly replaced and added for new requirements

Tech debt & Refactoring

Each module can be independently modified / rewritten without side effects

Explicit code reuse

A balance is maintained between DRY and local customization

Concepts

Public API

Each module must have a declaration of its public API at the top level

Isolation

The module should not depend directly on other modules of the same layer or overlying layers

Needs Driven

Orientation to business and user needs

Scheme

Companies using FSD

FSD is used in your company? Tell us
diff --git a/ja/404.html b/ja/404.html index 73bceb0a95..830b6b3851 100644 --- a/ja/404.html +++ b/ja/404.html @@ -9,8 +9,8 @@ - - + +
メインコンテンツにスキップ

ページが見つかりません

申し訳ありませんが、リクエストされたページが見つかりませんでした。

リンク元のサイトの所有者に連絡して、リンクが機能しないことを知らせてください。

diff --git a/ja/assets/js/012f76d8.0d26c4d6.js b/ja/assets/js/012f76d8.dda6753c.js similarity index 98% rename from ja/assets/js/012f76d8.0d26c4d6.js rename to ja/assets/js/012f76d8.dda6753c.js index 48e3eddb5f..1e4e970de1 100644 --- a/ja/assets/js/012f76d8.0d26c4d6.js +++ b/ja/assets/js/012f76d8.dda6753c.js @@ -1 +1 @@ -"use strict";(self.webpackChunk_feature_sliced_documentation=self.webpackChunk_feature_sliced_documentation||[]).push([[1733],{1928:(e,t,i)=>{i.d(t,{Ay:()=>u,RM:()=>c});var n=i(6070),r=i(1100),o=(i(758),i(6783)),s=i(7765);const a=e=>{let{ticket:t}=e;const i=`https://github.com/feature-sliced/documentation/issues/${t}`;return(0,n.jsxs)("div",{children:[(0,n.jsx)("p",{children:(0,s.T)({id:"shared.wip.title"})}),(0,n.jsx)("p",{children:(0,s.T)({id:"shared.wip.subtitle"})}),(0,n.jsxs)("ul",{children:[(0,n.jsxs)("li",{children:[(0,s.T)({id:"shared.wip.var.feedback.base"}),(0,n.jsx)(o.A,{to:i,children:(0,s.T)({id:"shared.wip.var.feedback.link"})})]}),(0,n.jsxs)("li",{children:[(0,s.T)({id:"shared.wip.var.material.base"}),(0,n.jsx)(o.A,{to:"https://t.me/feature_sliced",children:(0,s.T)({id:"shared.wip.var.material.link"})})]}),(0,n.jsxs)("li",{children:[(0,s.T)({id:"shared.wip.var.contribute.base"}),(0,n.jsx)(o.A,{to:"https://github.com/feature-sliced/documentation/blob/master/CONTRIBUTING.md",children:(0,s.T)({id:"shared.wip.var.contribute.link"})})]})]}),(0,n.jsx)("br",{}),(0,n.jsx)("p",{children:(0,n.jsx)("i",{children:"\ud83c\udf70 Stay tuned!"})})]})},c=[];function d(e){const t={admonition:"admonition",...(0,r.R)(),...e.components};return(0,n.jsx)(t.admonition,{title:"WIP",type:"caution",children:(0,n.jsx)(a,{ticket:e.ticket})})}function u(e={}){const{wrapper:t}={...(0,r.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(d,{...e})}):d(e)}},5380:(e,t,i)=>{i.r(t),i.d(t,{assets:()=>d,contentTitle:()=>a,default:()=>p,frontMatter:()=>s,metadata:()=>c,toc:()=>u});var n=i(6070),r=i(1100),o=i(1928);const s={sidebar_position:3,sidebar_class_name:"sidebar-item--wip"},a="\u30c1\u30fc\u30e0\u3067\u306e\u63a8\u9032",c={id:"about/promote/for-team",title:"\u30c1\u30fc\u30e0\u3067\u306e\u63a8\u9032",description:"",source:"@site/i18n/ja/docusaurus-plugin-content-docs/current/about/promote/for-team.mdx",sourceDirName:"about/promote",slug:"/about/promote/for-team",permalink:"/ja/docs/about/promote/for-team",draft:!1,unlisted:!1,editUrl:"https://github.com/feature-sliced/documentation/edit/master/i18n/ja/docusaurus-plugin-content-docs/current/about/promote/for-team.mdx",tags:[],version:"current",lastUpdatedAt:1727607766e3,sidebarPosition:3,frontMatter:{sidebar_position:3,sidebar_class_name:"sidebar-item--wip"},sidebar:"aboutSidebar",previous:{title:"\u90e8\u5206\u7684\u306a\u9069\u7528",permalink:"/ja/docs/about/promote/partial-application"},next:{title:"\u4f1a\u793e\u3067\u306e\u63a8\u9032",permalink:"/ja/docs/about/promote/for-company"}},d={},u=[...o.RM];function l(e){const t={h1:"h1",header:"header",...(0,r.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.header,{children:(0,n.jsx)(t.h1,{id:"\u30c1\u30fc\u30e0\u3067\u306e\u63a8\u9032",children:"\u30c1\u30fc\u30e0\u3067\u306e\u63a8\u9032"})}),"\n",(0,n.jsx)(o.Ay,{ticket:"182"})]})}function p(e={}){const{wrapper:t}={...(0,r.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(l,{...e})}):l(e)}},1100:(e,t,i)=>{i.d(t,{R:()=>s,x:()=>a});var n=i(758);const r={},o=n.createContext(r);function s(e){const t=n.useContext(o);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:s(e.components),n.createElement(o.Provider,{value:t},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunk_feature_sliced_documentation=self.webpackChunk_feature_sliced_documentation||[]).push([[1733],{1928:(e,t,i)=>{i.d(t,{Ay:()=>u,RM:()=>c});var n=i(6070),r=i(1100),o=(i(758),i(6783)),s=i(7765);const a=e=>{let{ticket:t}=e;const i=`https://github.com/feature-sliced/documentation/issues/${t}`;return(0,n.jsxs)("div",{children:[(0,n.jsx)("p",{children:(0,s.T)({id:"shared.wip.title"})}),(0,n.jsx)("p",{children:(0,s.T)({id:"shared.wip.subtitle"})}),(0,n.jsxs)("ul",{children:[(0,n.jsxs)("li",{children:[(0,s.T)({id:"shared.wip.var.feedback.base"}),(0,n.jsx)(o.A,{to:i,children:(0,s.T)({id:"shared.wip.var.feedback.link"})})]}),(0,n.jsxs)("li",{children:[(0,s.T)({id:"shared.wip.var.material.base"}),(0,n.jsx)(o.A,{to:"https://t.me/feature_sliced",children:(0,s.T)({id:"shared.wip.var.material.link"})})]}),(0,n.jsxs)("li",{children:[(0,s.T)({id:"shared.wip.var.contribute.base"}),(0,n.jsx)(o.A,{to:"https://github.com/feature-sliced/documentation/blob/master/CONTRIBUTING.md",children:(0,s.T)({id:"shared.wip.var.contribute.link"})})]})]}),(0,n.jsx)("br",{}),(0,n.jsx)("p",{children:(0,n.jsx)("i",{children:"\ud83c\udf70 Stay tuned!"})})]})},c=[];function d(e){const t={admonition:"admonition",...(0,r.R)(),...e.components};return(0,n.jsx)(t.admonition,{title:"WIP",type:"caution",children:(0,n.jsx)(a,{ticket:e.ticket})})}function u(e={}){const{wrapper:t}={...(0,r.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(d,{...e})}):d(e)}},5380:(e,t,i)=>{i.r(t),i.d(t,{assets:()=>d,contentTitle:()=>a,default:()=>p,frontMatter:()=>s,metadata:()=>c,toc:()=>u});var n=i(6070),r=i(1100),o=i(1928);const s={sidebar_position:3,sidebar_class_name:"sidebar-item--wip"},a="\u30c1\u30fc\u30e0\u3067\u306e\u63a8\u9032",c={id:"about/promote/for-team",title:"\u30c1\u30fc\u30e0\u3067\u306e\u63a8\u9032",description:"",source:"@site/i18n/ja/docusaurus-plugin-content-docs/current/about/promote/for-team.mdx",sourceDirName:"about/promote",slug:"/about/promote/for-team",permalink:"/ja/docs/about/promote/for-team",draft:!1,unlisted:!1,editUrl:"https://github.com/feature-sliced/documentation/edit/master/i18n/ja/docusaurus-plugin-content-docs/current/about/promote/for-team.mdx",tags:[],version:"current",lastUpdatedAt:1728325386e3,sidebarPosition:3,frontMatter:{sidebar_position:3,sidebar_class_name:"sidebar-item--wip"},sidebar:"aboutSidebar",previous:{title:"\u90e8\u5206\u7684\u306a\u9069\u7528",permalink:"/ja/docs/about/promote/partial-application"},next:{title:"\u4f1a\u793e\u3067\u306e\u63a8\u9032",permalink:"/ja/docs/about/promote/for-company"}},d={},u=[...o.RM];function l(e){const t={h1:"h1",header:"header",...(0,r.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.header,{children:(0,n.jsx)(t.h1,{id:"\u30c1\u30fc\u30e0\u3067\u306e\u63a8\u9032",children:"\u30c1\u30fc\u30e0\u3067\u306e\u63a8\u9032"})}),"\n",(0,n.jsx)(o.Ay,{ticket:"182"})]})}function p(e={}){const{wrapper:t}={...(0,r.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(l,{...e})}):l(e)}},1100:(e,t,i)=>{i.d(t,{R:()=>s,x:()=>a});var n=i(758);const r={},o=n.createContext(r);function s(e){const t=n.useContext(o);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:s(e.components),n.createElement(o.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/ja/assets/js/0288f121.c0d3057f.js b/ja/assets/js/0288f121.9ff7ad0a.js similarity index 99% rename from ja/assets/js/0288f121.c0d3057f.js rename to ja/assets/js/0288f121.9ff7ad0a.js index d6ac934bcb..dd6ef88cba 100644 --- a/ja/assets/js/0288f121.c0d3057f.js +++ b/ja/assets/js/0288f121.9ff7ad0a.js @@ -1 +1 @@ -"use strict";(self.webpackChunk_feature_sliced_documentation=self.webpackChunk_feature_sliced_documentation||[]).push([[6285],{8124:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>t,contentTitle:()=>d,default:()=>o,frontMatter:()=>l,metadata:()=>c,toc:()=>a});var i=s(6070),r=s(1100);const l={sidebar_position:1},d="\u8a8d\u8a3c",c={id:"guides/examples/auth",title:"\u8a8d\u8a3c",description:"\u4e00\u822c\u7684\u306b\u3001\u8a8d\u8a3c\u306f\u4ee5\u4e0b\u306e\u30b9\u30c6\u30c3\u30d7\u3067\u69cb\u6210\u3055\u308c\u307e\u3059\u3002",source:"@site/i18n/ja/docusaurus-plugin-content-docs/current/guides/examples/auth.md",sourceDirName:"guides/examples",slug:"/guides/examples/auth",permalink:"/ja/docs/guides/examples/auth",draft:!1,unlisted:!1,editUrl:"https://github.com/feature-sliced/documentation/edit/master/i18n/ja/docusaurus-plugin-content-docs/current/guides/examples/auth.md",tags:[],version:"current",lastUpdatedAt:1727607766e3,sidebarPosition:1,frontMatter:{sidebar_position:1},sidebar:"guidesSidebar",previous:{title:"\u4f8b",permalink:"/ja/docs/guides/examples/"},next:{title:"\u578b",permalink:"/ja/docs/guides/examples/types"}},t={},a=[{value:"\u30e6\u30fc\u30b6\u30fc\u306e\u8cc7\u683c\u60c5\u5831\u3092\u53d6\u5f97\u3059\u308b\u65b9\u6cd5",id:"\u30e6\u30fc\u30b6\u30fc\u306e\u8cc7\u683c\u60c5\u5831\u3092\u53d6\u5f97\u3059\u308b\u65b9\u6cd5",level:2},{value:"\u30ed\u30b0\u30a4\u30f3\u7528\u306e\u5225\u30da\u30fc\u30b8",id:"\u30ed\u30b0\u30a4\u30f3\u7528\u306e\u5225\u30da\u30fc\u30b8",level:3},{value:"\u30ed\u30b0\u30a4\u30f3\u7528\u306e\u30c0\u30a4\u30a2\u30ed\u30b0\u30dc\u30c3\u30af\u30b9",id:"\u30ed\u30b0\u30a4\u30f3\u7528\u306e\u30c0\u30a4\u30a2\u30ed\u30b0\u30dc\u30c3\u30af\u30b9",level:3},{value:"\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3",id:"\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3",level:3},{value:"\u8cc7\u683c\u60c5\u5831\u3092\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u306b\u9001\u4fe1\u3059\u308b\u65b9\u6cd5",id:"\u8cc7\u683c\u60c5\u5831\u3092\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u306b\u9001\u4fe1\u3059\u308b\u65b9\u6cd5",level:2},{value:"\u30ea\u30af\u30a8\u30b9\u30c8\u95a2\u6570\u3092\u3069\u3053\u306b\u7f6e\u304f\u304b",id:"\u30ea\u30af\u30a8\u30b9\u30c8\u95a2\u6570\u3092\u3069\u3053\u306b\u7f6e\u304f\u304b",level:3},{value:"shared/api\u306b",id:"sharedapi\u306b",level:4},{value:"\u30da\u30fc\u30b8\u306eapi\u30bb\u30b0\u30e1\u30f3\u30c8\u306b",id:"\u30da\u30fc\u30b8\u306eapi\u30bb\u30b0\u30e1\u30f3\u30c8\u306b",level:4},{value:"2\u8981\u7d20\u8a8d\u8a3c",id:"2\u8981\u7d20\u8a8d\u8a3c",level:3},{value:"\u8a8d\u8a3c\u3055\u308c\u305f\u30ea\u30af\u30a8\u30b9\u30c8\u7528\u306e\u30c8\u30fc\u30af\u30f3\u3092\u4fdd\u5b58\u3059\u308b\u65b9\u6cd5",id:"how-to-store-the-token-for-authenticated-requests",level:2},{value:"Shared\u5c64\u306b\u4fdd\u5b58\u3059\u308b",id:"shared\u5c64\u306b\u4fdd\u5b58\u3059\u308b",level:3},{value:"Entities\u5c64\u306b\u4fdd\u5b58\u3059\u308b",id:"entities\u5c64\u306b\u4fdd\u5b58\u3059\u308b",level:3},{value:"Pages\u5c64/Widgets\u5c64\u306b\u4fdd\u5b58\u3059\u308b\uff08\u975e\u63a8\u5968\uff09",id:"pages\u5c64widgets\u5c64\u306b\u4fdd\u5b58\u3059\u308b\u975e\u63a8\u5968",level:3},{value:"\u30ed\u30b0\u30a2\u30a6\u30c8\u3068\u30c8\u30fc\u30af\u30f3\u306e\u7121\u52b9\u5316",id:"\u30ed\u30b0\u30a2\u30a6\u30c8\u3068\u30c8\u30fc\u30af\u30f3\u306e\u7121\u52b9\u5316",level:2},{value:"\u81ea\u52d5\u30ed\u30b0\u30a2\u30a6\u30c8",id:"\u81ea\u52d5\u30ed\u30b0\u30a2\u30a6\u30c8",level:3}];function h(e){const n={a:"a",admonition:"admonition",blockquote:"blockquote",br:"br",code:"code",h1:"h1",h2:"h2",h3:"h3",h4:"h4",header:"header",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,r.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.header,{children:(0,i.jsx)(n.h1,{id:"\u8a8d\u8a3c",children:"\u8a8d\u8a3c"})}),"\n",(0,i.jsx)(n.p,{children:"\u4e00\u822c\u7684\u306b\u3001\u8a8d\u8a3c\u306f\u4ee5\u4e0b\u306e\u30b9\u30c6\u30c3\u30d7\u3067\u69cb\u6210\u3055\u308c\u307e\u3059\u3002"}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsx)(n.li,{children:"\u30e6\u30fc\u30b6\u30fc\u304b\u3089\u8cc7\u683c\u60c5\u5831\u3092\u53d6\u5f97\u3059\u308b"}),"\n",(0,i.jsx)(n.li,{children:"\u305d\u308c\u3092\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u306b\u9001\u4fe1\u3059\u308b"}),"\n",(0,i.jsx)(n.li,{children:"\u8a8d\u8a3c\u3055\u308c\u305f\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u9001\u4fe1\u3059\u308b\u305f\u3081\u306e\u30c8\u30fc\u30af\u30f3\u3092\u4fdd\u5b58\u3059\u308b"}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"\u30e6\u30fc\u30b6\u30fc\u306e\u8cc7\u683c\u60c5\u5831\u3092\u53d6\u5f97\u3059\u308b\u65b9\u6cd5",children:"\u30e6\u30fc\u30b6\u30fc\u306e\u8cc7\u683c\u60c5\u5831\u3092\u53d6\u5f97\u3059\u308b\u65b9\u6cd5"}),"\n",(0,i.jsxs)(n.p,{children:["OAuth\u3092\u901a\u3058\u3066\u8a8d\u8a3c\u3092\u884c\u3046\u5834\u5408\u306f\u3001OAuth\u30d7\u30ed\u30d0\u30a4\u30c0\u30fc\u306e\u30da\u30fc\u30b8\u3078\u306e\u30ea\u30f3\u30af\u3092\u6301\u3064\u30ed\u30b0\u30a4\u30f3\u30da\u30fc\u30b8\u3092\u4f5c\u6210\u3057\u3001",(0,i.jsx)(n.a,{href:"#how-to-store-the-token-for-authenticated-requests",children:"\u30b9\u30c6\u30c3\u30d73"}),"\u306b\u9032\u3080\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002"]}),"\n",(0,i.jsx)(n.h3,{id:"\u30ed\u30b0\u30a4\u30f3\u7528\u306e\u5225\u30da\u30fc\u30b8",children:"\u30ed\u30b0\u30a4\u30f3\u7528\u306e\u5225\u30da\u30fc\u30b8"}),"\n",(0,i.jsx)(n.p,{children:"\u901a\u5e38\u3001\u30a6\u30a7\u30d6\u30b5\u30a4\u30c8\u306b\u306f\u30e6\u30fc\u30b6\u30fc\u540d\u3068\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u5165\u529b\u3059\u308b\u305f\u3081\u306e\u30ed\u30b0\u30a4\u30f3\u5c02\u7528\u30da\u30fc\u30b8\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u308c\u3089\u306e\u30da\u30fc\u30b8\u306f\u975e\u5e38\u306b\u30b7\u30f3\u30d7\u30eb\u3067\u3042\u308b\u305f\u3081\u3001\u5206\u89e3\u3059\u308b\u5fc5\u8981\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u3055\u3089\u306b\u3001\u30ed\u30b0\u30a4\u30f3\u30d5\u30a9\u30fc\u30e0\u3068\u767b\u9332\u30d5\u30a9\u30fc\u30e0\u306f\u5916\u898b\u304c\u975e\u5e38\u306b\u4f3c\u3066\u3044\u308b\u305f\u3081\u3001\u540c\u3058\u30da\u30fc\u30b8\u306b\u30b0\u30eb\u30fc\u30d7\u5316\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002\u30ed\u30b0\u30a4\u30f3/\u767b\u9332\u30da\u30fc\u30b8\u7528\u306e\u30b9\u30e9\u30a4\u30b9\u3092Pages\u5c64\u306b\u4f5c\u6210\u3057\u307e\u3059\u3002"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\ud83d\udcc2 pages","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\ud83d\udcc2 login","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\ud83d\udcc2 ui","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"\ud83d\udcc4 LoginPage.tsx"}),"\n",(0,i.jsx)(n.li,{children:"\ud83d\udcc4 RegisterPage.tsx"}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.li,{children:"\ud83d\udcc4 index.ts"}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.li,{children:"\u305d\u306e\u4ed6\u306e\u30da\u30fc\u30b8\u2026"}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"\u3053\u3053\u3067\u306f\u30012\u3064\u306e\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u3092\u4f5c\u6210\u3057\u3001\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3067\u4e21\u65b9\u3092\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u3057\u307e\u3057\u305f\u3002\u3053\u308c\u3089\u306e\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u306f\u3001\u30e6\u30fc\u30b6\u30fc\u304c\u8cc7\u683c\u60c5\u5831\u3092\u5165\u529b\u3059\u308b\u305f\u3081\u306e\u308f\u304b\u308a\u3084\u3059\u3044\u8981\u7d20\u3092\u542b\u3080\u30d5\u30a9\u30fc\u30e0\u3092\u6301\u3061\u307e\u3059\u3002"}),"\n",(0,i.jsx)(n.h3,{id:"\u30ed\u30b0\u30a4\u30f3\u7528\u306e\u30c0\u30a4\u30a2\u30ed\u30b0\u30dc\u30c3\u30af\u30b9",children:"\u30ed\u30b0\u30a4\u30f3\u7528\u306e\u30c0\u30a4\u30a2\u30ed\u30b0\u30dc\u30c3\u30af\u30b9"}),"\n",(0,i.jsx)(n.p,{children:"\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306b\u3069\u306e\u30da\u30fc\u30b8\u3067\u3082\u4f7f\u7528\u3067\u304d\u308b\u30ed\u30b0\u30a4\u30f3\u7528\u306e\u30c0\u30a4\u30a2\u30ed\u30b0\u30dc\u30c3\u30af\u30b9\u304c\u3042\u308b\u5834\u5408\u306f\u3001\u305d\u306e\u30c0\u30a4\u30a2\u30ed\u30b0\u30dc\u30c3\u30af\u30b9\u7528\u306e\u30a6\u30a3\u30b8\u30a7\u30c3\u30c8\u3092\u4f5c\u6210\u3067\u304d\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u30d5\u30a9\u30fc\u30e0\u81ea\u4f53\u3092\u3042\u307e\u308a\u5206\u89e3\u305b\u305a\u306b\u3001\u3069\u306e\u30da\u30fc\u30b8\u3067\u3082\u3053\u306e\u30c0\u30a4\u30a2\u30ed\u30b0\u30dc\u30c3\u30af\u30b9\u3092\u518d\u5229\u7528\u3067\u304d\u307e\u3059\u3002"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\ud83d\udcc2 widgets","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\ud83d\udcc2 login-dialog","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\ud83d\udcc2 ui","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"\ud83d\udcc4 LoginDialog.tsx"}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.li,{children:"\ud83d\udcc4 index.ts"}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.li,{children:"\u305d\u306e\u4ed6\u306e\u30a6\u30a3\u30b8\u30a7\u30c3\u30c8\u2026"}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"\u3053\u306e\u30ac\u30a4\u30c9\u306e\u6b8b\u308a\u306e\u90e8\u5206\u306f\u3001\u30ed\u30b0\u30a4\u30f3\u304c\u5225\u30da\u30fc\u30b8\u3067\u884c\u308f\u308c\u308b\u6700\u521d\u306e\u30a2\u30d7\u30ed\u30fc\u30c1\u306b\u57fa\u3065\u3044\u3066\u3044\u307e\u3059\u304c\u3001\u540c\u3058\u539f\u5247\u304c\u30c0\u30a4\u30a2\u30ed\u30b0\u30dc\u30c3\u30af\u30b9\u7528\u306e\u30a6\u30a3\u30b8\u30a7\u30c3\u30c8\u306b\u3082\u9069\u7528\u3055\u308c\u307e\u3059\u3002"}),"\n",(0,i.jsx)(n.h3,{id:"\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3",children:"\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3"}),"\n",(0,i.jsxs)(n.p,{children:["\u305f\u307e\u306b\u306f\u3001\u7279\u306b\u767b\u9332\u6642\u306b\u3001\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u5074\u3067\u691c\u8a3c\u3092\u884c\u3044\u3001\u30e6\u30fc\u30b6\u30fc\u306b\u30a8\u30e9\u30fc\u3092\u8fc5\u901f\u306b\u901a\u77e5\u3059\u308b\u3053\u3068\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u306e\u5834\u5408\u3001\u691c\u8a3c\u306f\u3001\u30ed\u30b0\u30a4\u30f3\u30da\u30fc\u30b8\u306e",(0,i.jsx)(n.code,{children:"model"}),"\u30bb\u30b0\u30e1\u30f3\u30c8\u3067\u884c\u3046\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u30b9\u30ad\u30fc\u30de\u691c\u8a3c\u30e9\u30a4\u30d6\u30e9\u30ea\u3001\u4f8b\u3048\u3070",(0,i.jsx)(n.a,{href:"https://zod.dev",children:"Zod"}),"\u3092JS/TS\u7528\u306b\u4f7f\u7528\u3057\u3001\u3053\u306e\u30b9\u30ad\u30fc\u30de\u3092",(0,i.jsx)(n.code,{children:"ui"}),"\u30bb\u30b0\u30e1\u30f3\u30c8\u306b\u63d0\u4f9b\u3057\u307e\u3059\u3002"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-ts",metastring:'title="pages/login/model/registration-schema.ts"',children:'import { z } from "zod";\n\nexport const registrationData = z.object({\n email: z.string().email(),\n password: z.string().min(6),\n confirmPassword: z.string(),\n}).refine((data) => data.password === data.confirmPassword, {\n message: "\u30d1\u30b9\u30ef\u30fc\u30c9\u304c\u4e00\u81f4\u3057\u307e\u305b\u3093",\n path: ["confirmPassword"],\n});\n'})}),"\n",(0,i.jsxs)(n.p,{children:["\u6b21\u306b\u3001",(0,i.jsx)(n.code,{children:"ui"}),"\u30bb\u30b0\u30e1\u30f3\u30c8\u3067\u3053\u306e\u30b9\u30ad\u30fc\u30de\u3092\u4f7f\u7528\u3057\u3066\u30e6\u30fc\u30b6\u30fc\u5165\u529b\u3092\u691c\u8a3c\u3067\u304d\u307e\u3059\u3002"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-tsx",metastring:'title="pages/login/ui/RegisterPage.tsx"',children:'import { registrationData } from "../model/registration-schema";\n\nfunction validate(formData: FormData) {\n const data = Object.fromEntries(formData.entries());\n try {\n registrationData.parse(data);\n } catch (error) {\n // TODO: \u30e6\u30fc\u30b6\u30fc\u306b\u30a8\u30e9\u30fc\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u8868\u793a\n }\n}\n\nexport function RegisterPage() {\n return (\n
validate(new FormData(e.target))}>\n \n \n\n \n \n\n \n \n
\n )\n}\n'})}),"\n",(0,i.jsx)(n.h2,{id:"\u8cc7\u683c\u60c5\u5831\u3092\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u306b\u9001\u4fe1\u3059\u308b\u65b9\u6cd5",children:"\u8cc7\u683c\u60c5\u5831\u3092\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u306b\u9001\u4fe1\u3059\u308b\u65b9\u6cd5"}),"\n",(0,i.jsx)(n.p,{children:"\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u306e\u30ed\u30b0\u30a4\u30f3\u30a8\u30f3\u30c9\u30dd\u30a4\u30f3\u30c8\u306b\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u9001\u4fe1\u3059\u308b\u95a2\u6570\u3092\u4f5c\u6210\u3057\u307e\u3057\u3087\u3046\u3002\u3053\u306e\u95a2\u6570\u306f\u3001\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u306e\u30b3\u30fc\u30c9\u5185\u3067\u30df\u30e5\u30fc\u30c6\u30fc\u30b7\u30e7\u30f3\u30e9\u30a4\u30d6\u30e9\u30ea\uff08\u4f8b\u3048\u3070\u3001TanStack Query\uff09\u3092\u901a\u3058\u3066\u76f4\u63a5\u547c\u3073\u51fa\u3059\u3053\u3068\u3082\u3001\u72b6\u614b\u7ba1\u7406\u30e9\u30a4\u30d6\u30e9\u30ea\u306e\u526f\u4f5c\u7528\u3068\u3057\u3066\u547c\u3073\u51fa\u3059\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002"}),"\n",(0,i.jsx)(n.h3,{id:"\u30ea\u30af\u30a8\u30b9\u30c8\u95a2\u6570\u3092\u3069\u3053\u306b\u7f6e\u304f\u304b",children:"\u30ea\u30af\u30a8\u30b9\u30c8\u95a2\u6570\u3092\u3069\u3053\u306b\u7f6e\u304f\u304b"}),"\n",(0,i.jsxs)(n.p,{children:["\u3053\u306e\u95a2\u6570\u3092\u7f6e\u304f\u5834\u6240\u306f2\u3064\u3042\u308a\u307e\u3059: ",(0,i.jsx)(n.code,{children:"shared/api"}),"\u307e\u305f\u306f\u30da\u30fc\u30b8\u306e",(0,i.jsx)(n.code,{children:"api"}),"\u30bb\u30b0\u30e1\u30f3\u30c8\u3067\u3059\u3002"]}),"\n",(0,i.jsxs)(n.h4,{id:"sharedapi\u306b",children:[(0,i.jsx)(n.code,{children:"shared/api"}),"\u306b"]}),"\n",(0,i.jsxs)(n.p,{children:["\u3053\u306e\u30a2\u30d7\u30ed\u30fc\u30c1\u306f\u3001\u3059\u3079\u3066\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u95a2\u6570\u3092",(0,i.jsx)(n.code,{children:"shared/api"}),"\u306b\u914d\u7f6e\u3057\u3001\u30a8\u30f3\u30c9\u30dd\u30a4\u30f3\u30c8\u3054\u3068\u306b\u30b0\u30eb\u30fc\u30d7\u5316\u3059\u308b\u306e\u306b\u9069\u3057\u3066\u3044\u307e\u3059\u3002\u3053\u306e\u5834\u5408\u3001\u30d5\u30a1\u30a4\u30eb\u69cb\u9020\u306f\u6b21\u306e\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002"]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\ud83d\udcc2 shared","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\ud83d\udcc2 api","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\ud83d\udcc2 endpoints","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"\ud83d\udcc4 login.ts"}),"\n",(0,i.jsx)(n.li,{children:"\u305d\u306e\u4ed6\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u95a2\u6570\u2026"}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.li,{children:"\ud83d\udcc4 client.ts"}),"\n",(0,i.jsx)(n.li,{children:"\ud83d\udcc4 index.ts"}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.code,{children:"\ud83d\udcc4 client.ts"}),"\u30d5\u30a1\u30a4\u30eb\u306b\u306f\u3001\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u5b9f\u884c\u3059\u308b\u305f\u3081\u306e\u30d7\u30ea\u30df\u30c6\u30a3\u30d6\u306e\u30e9\u30c3\u30d1\u30fc\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\uff08\u4f8b\u3048\u3070\u3001",(0,i.jsx)(n.code,{children:"fetch()"}),"\uff09\u3002\u3053\u306e\u30e9\u30c3\u30d1\u30fc\u306f\u3001\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u306e\u30d9\u30fc\u30b9URL\u3092\u77e5\u3063\u3066\u304a\u308a\u3001\u5fc5\u8981\u306a\u30d8\u30c3\u30c0\u30fc\u3092\u8a2d\u5b9a\u3057\u3001\u30c7\u30fc\u30bf\u3092\u30b7\u30ea\u30a2\u30e9\u30a4\u30ba\u3057\u307e\u3059\u3002"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-ts",metastring:'title="shared/api/endpoints/login.ts"',children:'import { POST } from "../client";\n\nexport function login({ email, password }: { email: string, password: string }) {\n return POST("/login", { email, password });\n}\n'})}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-ts",metastring:'title="shared/api/index.ts"',children:'export { login } from "./endpoints/login";\n'})}),"\n",(0,i.jsxs)(n.h4,{id:"\u30da\u30fc\u30b8\u306eapi\u30bb\u30b0\u30e1\u30f3\u30c8\u306b",children:["\u30da\u30fc\u30b8\u306e",(0,i.jsx)(n.code,{children:"api"}),"\u30bb\u30b0\u30e1\u30f3\u30c8\u306b"]}),"\n",(0,i.jsxs)(n.p,{children:["\u3059\u3079\u3066\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u30921\u304b\u6240\u306b\u4fdd\u5b58\u3057\u3066\u3044\u306a\u3044\u5834\u5408\u306f\u3001\u30ed\u30b0\u30a4\u30f3\u30da\u30fc\u30b8\u306e",(0,i.jsx)(n.code,{children:"api"}),"\u30bb\u30b0\u30e1\u30f3\u30c8\u306b\u3053\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u95a2\u6570\u3092\u914d\u7f6e\u3059\u308b\u306e\u304c\u9069\u3057\u3066\u3044\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002"]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\ud83d\udcc2 pages","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\ud83d\udcc2 login","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\ud83d\udcc2 api","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"\ud83d\udcc4 login.ts"}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\ud83d\udcc2 ui","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"\ud83d\udcc4 LoginPage.tsx"}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.li,{children:"\ud83d\udcc4 index.ts"}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.li,{children:"\u305d\u306e\u4ed6\u306e\u30da\u30fc\u30b8\u2026"}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-ts",metastring:'title="pages/login/api/login.ts"',children:'import { POST } from "shared/api";\n\nexport function login({ email, password }: { email: string, password: string }) {\n return POST("/login", { email, password });\n}\n'})}),"\n",(0,i.jsx)(n.p,{children:"\u3053\u306e\u95a2\u6570\u306f\u3001\u30da\u30fc\u30b8\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u304b\u3089\u518d\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u3059\u308b\u5fc5\u8981\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u306a\u305c\u306a\u3089\u3001\u6050\u3089\u304f\u3053\u306e\u30da\u30fc\u30b8\u5185\u3067\u306e\u307f\u4f7f\u7528\u3055\u308c\u308b\u304b\u3089\u3067\u3059\u3002"}),"\n",(0,i.jsx)(n.h3,{id:"2\u8981\u7d20\u8a8d\u8a3c",children:"2\u8981\u7d20\u8a8d\u8a3c"}),"\n",(0,i.jsxs)(n.p,{children:["\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u304c2\u8981\u7d20\u8a8d\u8a3c\uff082FA\uff09\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u308b\u5834\u5408\u3001\u30e6\u30fc\u30b6\u30fc\u3092\u4e00\u6642\u7684\u306a\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u5165\u529b\u3059\u308b\u305f\u3081\u306e\u5225\u306e\u30da\u30fc\u30b8\u306b\u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002\u901a\u5e38\u3001",(0,i.jsx)(n.code,{children:"POST /login"}),"\u30ea\u30af\u30a8\u30b9\u30c8\u306f\u3001\u30e6\u30fc\u30b6\u30fc\u306b2FA\u304c\u6709\u52b9\u3067\u3042\u308b\u3053\u3068\u3092\u793a\u3059\u30d5\u30e9\u30b0\u3092\u6301\u3064\u30e6\u30fc\u30b6\u30fc\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u8fd4\u3057\u307e\u3059\u3002\u3053\u306e\u30d5\u30e9\u30b0\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u5834\u5408\u3001\u30e6\u30fc\u30b6\u30fc\u30922FA\u30da\u30fc\u30b8\u306b\u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u3057\u307e\u3059\u3002"]}),"\n",(0,i.jsxs)(n.p,{children:["\u3053\u306e\u30da\u30fc\u30b8\u306f\u30ed\u30b0\u30a4\u30f3\u3068\u975e\u5e38\u306b\u95a2\u9023\u3057\u3066\u3044\u308b\u305f\u3081\u3001Pages\u5c64\u306e\u540c\u3058",(0,i.jsx)(n.code,{children:"login"}),"\u30b9\u30e9\u30a4\u30b9\u306b\u914d\u7f6e\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002"]}),"\n",(0,i.jsxs)(n.p,{children:["\u307e\u305f\u3001\u4e0a\u3067\u4f5c\u6210\u3057\u305f",(0,i.jsx)(n.code,{children:"login()"}),"\u306b\u4f3c\u305f\u5225\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u95a2\u6570\u304c\u5fc5\u8981\u306b\u306a\u308a\u307e\u3059\u3002\u305d\u308c\u3089\u3092Shared\u5c64\u306b\u307e\u3068\u3081\u308b\u304b\u3001\u30ed\u30b0\u30a4\u30f3\u30da\u30fc\u30b8\u306e",(0,i.jsx)(n.code,{children:"api"}),"\u30bb\u30b0\u30e1\u30f3\u30c8\u306b\u914d\u7f6e\u3057\u3066\u304f\u3060\u3055\u3044\u3002"]}),"\n",(0,i.jsx)(n.h2,{id:"how-to-store-the-token-for-authenticated-requests",children:"\u8a8d\u8a3c\u3055\u308c\u305f\u30ea\u30af\u30a8\u30b9\u30c8\u7528\u306e\u30c8\u30fc\u30af\u30f3\u3092\u4fdd\u5b58\u3059\u308b\u65b9\u6cd5"}),"\n",(0,i.jsx)(n.p,{children:"\u4f7f\u7528\u3059\u308b\u8a8d\u8a3c\u30b9\u30ad\u30fc\u30e0\u306b\u95a2\u4fc2\u306a\u304f\u3001\u5358\u7d14\u306a\u30ed\u30b0\u30a4\u30f3\u3068\u30d1\u30b9\u30ef\u30fc\u30c9\u3001OAuth\u3001\u307e\u305f\u306f2\u8981\u7d20\u8a8d\u8a3c\u3067\u3042\u3063\u3066\u3082\u3001\u6700\u7d42\u7684\u306b\u306f\u30c8\u30fc\u30af\u30f3\u3092\u53d6\u5f97\u3057\u307e\u3059\u3002\u4ee5\u964d\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u3067\u81ea\u5206\u3092\u8b58\u5225\u3067\u304d\u308b\u3088\u3046\u306b\u3001\u3053\u306e\u30c8\u30fc\u30af\u30f3\u306f\u4fdd\u5b58\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002"}),"\n",(0,i.jsxs)(n.p,{children:["\u30a6\u30a7\u30d6\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306b\u304a\u3051\u308b\u30c8\u30fc\u30af\u30f3\u306e\u7406\u60f3\u7684\u306a\u4fdd\u5b58\u5834\u6240\u306f",(0,i.jsx)(n.strong,{children:"\u30af\u30c3\u30ad\u30fc"}),"\u3067\u3059\u3002\u30af\u30c3\u30ad\u30fc\u306f\u30c8\u30fc\u30af\u30f3\u306e\u624b\u52d5\u4fdd\u5b58\u3084\u51e6\u7406\u3092\u5fc5\u8981\u3068\u3057\u307e\u305b\u3093\u3002\u3057\u305f\u304c\u3063\u3066\u3001\u30af\u30c3\u30ad\u30fc\u306e\u4fdd\u5b58\u306f\u30d5\u30ed\u30f3\u30c8\u30a8\u30f3\u30c9\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u306b\u307b\u3068\u3093\u3069\u52b4\u529b\u3092\u5fc5\u8981\u3068\u3057\u307e\u305b\u3093\u3002\u30d5\u30ed\u30f3\u30c8\u30a8\u30f3\u30c9\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306b\u30b5\u30fc\u30d0\u30fc\u30b5\u30a4\u30c9\u304c\u3042\u308b\u5834\u5408\uff08\u4f8b\u3048\u3070\u3001",(0,i.jsx)(n.a,{href:"https://remix.run",children:"Remix"}),"\uff09\u3001\u30af\u30c3\u30ad\u30fc\u306e\u30b5\u30fc\u30d0\u30fc\u30a4\u30f3\u30d5\u30e9\u306f",(0,i.jsx)(n.code,{children:"shared/api"}),"\u306b\u4fdd\u5b58\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002",(0,i.jsx)(n.a,{href:"/docs/get-started/tutorial#authentication",children:"\u300c\u8a8d\u8a3c\u300d\u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb\u30bb\u30af\u30b7\u30e7\u30f3"}),"\u306b\u306f\u3001Remix\u3067\u306e\u5b9f\u88c5\u4f8b\u304c\u3042\u308a\u307e\u3059\u3002"]}),"\n",(0,i.jsx)(n.p,{children:"\u305f\u3060\u3057\u3001\u6642\u306b\u306f\u30c8\u30fc\u30af\u30f3\u3092\u30af\u30c3\u30ad\u30fc\u306b\u4fdd\u5b58\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u306a\u3044\u5834\u5408\u3082\u3042\u308a\u307e\u3059\u3002\u3053\u306e\u5834\u5408\u3001\u30c8\u30fc\u30af\u30f3\u3092\u81ea\u5206\u3067\u4fdd\u5b58\u3057\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002\u305d\u306e\u969b\u3001\u30c8\u30fc\u30af\u30f3\u306e\u6709\u52b9\u671f\u9650\u304c\u5207\u308c\u305f\u3068\u304d\u306b\u66f4\u65b0\u3059\u308b\u30ed\u30b8\u30c3\u30af\u3092\u66f8\u304f\u624b\u9593\u304c\u304b\u304b\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002FSD\u306e\u67a0\u7d44\u307f\u5185\u306b\u306f\u3001\u30c8\u30fc\u30af\u30f3\u3092\u4fdd\u5b58\u3067\u304d\u308b\u3044\u304f\u3064\u304b\u306e\u5834\u6240\u3068\u3001\u305d\u306e\u30c8\u30fc\u30af\u30f3\u3092\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u4ed6\u306e\u90e8\u5206\u3067\u5229\u7528\u3067\u304d\u308b\u3088\u3046\u306b\u3059\u308b\u3044\u304f\u3064\u304b\u306e\u65b9\u6cd5\u304c\u3042\u308a\u307e\u3059\u3002"}),"\n",(0,i.jsx)(n.h3,{id:"shared\u5c64\u306b\u4fdd\u5b58\u3059\u308b",children:"Shared\u5c64\u306b\u4fdd\u5b58\u3059\u308b"}),"\n",(0,i.jsxs)(n.p,{children:["\u3053\u306e\u30a2\u30d7\u30ed\u30fc\u30c1\u306f\u3001API\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u304c",(0,i.jsx)(n.code,{children:"shared/api"}),"\u306b\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u308b\u5834\u5408\u306b\u3046\u307e\u304f\u6a5f\u80fd\u3057\u307e\u3059\u3002\u306a\u305c\u306a\u3089\u3001API\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u304c\u30c8\u30fc\u30af\u30f3\u306b\u81ea\u7531\u306b\u30a2\u30af\u30bb\u30b9\u3067\u304d\u308b\u304b\u3089\u3067\u3059\u3002\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u304c\u72b6\u614b\u3092\u6301\u3064\u3088\u3046\u306b\u3059\u308b\u306b\u306f\u3001\u30ea\u30a2\u30af\u30c6\u30a3\u30d6\u30b9\u30c8\u30a2\u3092\u4f7f\u7528\u3059\u308b\u304b\u3001\u5358\u306b\u30e2\u30b8\u30e5\u30fc\u30eb\u30ec\u30d9\u30eb\u306e\u5909\u6570\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u305d\u306e\u5f8c\u3001",(0,i.jsx)(n.code,{children:"login()"}),"/",(0,i.jsx)(n.code,{children:"logout()"}),"\u95a2\u6570\u5185\u3067\u3053\u306e\u72b6\u614b\u3092\u66f4\u65b0\u3067\u304d\u307e\u3059\u3002"]}),"\n",(0,i.jsx)(n.p,{children:"\u30c8\u30fc\u30af\u30f3\u306e\u81ea\u52d5\u66f4\u65b0\u306f\u3001API\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u5185\u306e\u30df\u30c9\u30eb\u30a6\u30a7\u30a2\u3068\u3057\u3066\u5b9f\u88c5\u3067\u304d\u307e\u3059\u3002\u3053\u308c\u306f\u3001\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u884c\u3046\u305f\u3073\u306b\u5b9f\u884c\u3055\u308c\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001\u6b21\u306e\u3088\u3046\u306b\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"\u8a8d\u8a3c\u3057\u3001\u30a2\u30af\u30bb\u30b9\u30c8\u30fc\u30af\u30f3\u3068\u30ea\u30d5\u30ec\u30c3\u30b7\u30e5\u30c8\u30fc\u30af\u30f3\u3092\u4fdd\u5b58\u3059\u308b"}),"\n",(0,i.jsx)(n.li,{children:"\u8a8d\u8a3c\u3092\u5fc5\u8981\u3068\u3059\u308b\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u884c\u3046"}),"\n",(0,i.jsx)(n.li,{children:"\u30ea\u30af\u30a8\u30b9\u30c8\u304c\u30a2\u30af\u30bb\u30b9\u30c8\u30fc\u30af\u30f3\u306e\u6709\u52b9\u671f\u9650\u5207\u308c\u3092\u793a\u3059\u30b9\u30c6\u30fc\u30bf\u30b9\u30b3\u30fc\u30c9\u3067\u5931\u6557\u3057\u305f\u5834\u5408\u3001\u30b9\u30c8\u30ec\u30fc\u30b8\u306b\u30ea\u30d5\u30ec\u30c3\u30b7\u30e5\u30c8\u30fc\u30af\u30f3\u304c\u3042\u308c\u3070\u3001\u66f4\u65b0\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u884c\u3044\u3001\u65b0\u3057\u3044\u30a2\u30af\u30bb\u30b9\u30c8\u30fc\u30af\u30f3\u3068\u30ea\u30d5\u30ec\u30c3\u30b7\u30e5\u30c8\u30fc\u30af\u30f3\u3092\u4fdd\u5b58\u3057\u3001\u5143\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u518d\u8a66\u884c\u3059\u308b"}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["\u3053\u306e\u30a2\u30d7\u30ed\u30fc\u30c1\u306e\u6b20\u70b9\u306e1\u3064\u306f\u3001\u30c8\u30fc\u30af\u30f3\u306e\u4fdd\u5b58\u3068\u66f4\u65b0\u30ed\u30b8\u30c3\u30af\u304c\u5c02\u7528\u306e\u5834\u6240\u3092\u6301\u305f\u306a\u3044\u3053\u3068\u3067\u3059\u3002\u3053\u308c\u306f\u3001\u7279\u5b9a\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3084\u30c1\u30fc\u30e0\u306b\u306f\u9069\u3057\u3066\u3044\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u304c\u3001\u30c8\u30fc\u30af\u30f3\u7ba1\u7406\u306e\u30ed\u30b8\u30c3\u30af\u304c\u3088\u308a\u8907\u96d1\u306a\u5834\u5408\u3001\u30ea\u30af\u30a8\u30b9\u30c8\u9001\u4fe1\u3068\u30c8\u30fc\u30af\u30f3\u7ba1\u7406\u306e\u8cac\u4efb\u3092\u5206\u3051\u305f\u3044\u3068\u601d\u3046\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002\u3053\u306e\u5834\u5408\u3001\u30ea\u30af\u30a8\u30b9\u30c8\u3068API\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u3092",(0,i.jsx)(n.code,{children:"shared/api"}),"\u306b\u7f6e\u304d\u3001\u30c8\u30fc\u30af\u30f3\u30b9\u30c8\u30ec\u30fc\u30b8\u3068\u66f4\u65b0\u30ed\u30b8\u30c3\u30af\u3092",(0,i.jsx)(n.code,{children:"shared/auth"}),"\u306b\u914d\u7f6e\u3057\u307e\u3059\u3002"]}),"\n",(0,i.jsxs)(n.p,{children:["\u3053\u306e\u30a2\u30d7\u30ed\u30fc\u30c1\u306e\u3082\u30461\u3064\u306e\u6b20\u70b9\u306f\u3001\u30b5\u30fc\u30d0\u30fc\u304c\u30c8\u30fc\u30af\u30f3\u3068\u3068\u3082\u306b\u73fe\u5728\u306e\u30e6\u30fc\u30b6\u30fc\u306b\u95a2\u3059\u308b\u60c5\u5831\u3092\u8fd4\u3059\u5834\u5408\u3001\u305d\u306e\u60c5\u5831\u3092\u4fdd\u5b58\u3059\u308b\u5834\u6240\u304c\u306a\u304f\u3001\u7279\u5225\u306a\u30a8\u30f3\u30c9\u30dd\u30a4\u30f3\u30c8\uff08\u4f8b\u3048\u3070",(0,i.jsx)(n.code,{children:"/me"}),"\u3084",(0,i.jsx)(n.code,{children:"/users/current"}),"\uff09\u304b\u3089\u518d\u5ea6\u53d6\u5f97\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u3053\u3068\u3067\u3059\u3002"]}),"\n",(0,i.jsx)(n.h3,{id:"entities\u5c64\u306b\u4fdd\u5b58\u3059\u308b",children:"Entities\u5c64\u306b\u4fdd\u5b58\u3059\u308b"}),"\n",(0,i.jsx)(n.p,{children:"FSD\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u306f\u3001\u30e6\u30fc\u30b6\u30fc\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u3084\u73fe\u5728\u306e\u30e6\u30fc\u30b6\u30fc\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u304c\u5b58\u5728\u3059\u308b\u3053\u3068\u304c\u3088\u304f\u3042\u308a\u307e\u3059\u3002\u3053\u308c\u3089\u306f\u540c\u3058\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u3067\u3042\u308b\u5834\u5408\u3082\u3042\u308a\u307e\u3059\u3002"}),"\n",(0,i.jsx)(n.admonition,{type:"note",children:(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"\u73fe\u5728\u306e\u30e6\u30fc\u30b6\u30fc"}),"\u306f\u6642\u306b\u306f\u300cviewer\u300d\u3084\u300cme\u300d\u3068\u3082\u547c\u3070\u308c\u307e\u3059\u3002\u3053\u308c\u306f\u3001\u6a29\u9650\u3068\u30d7\u30e9\u30a4\u30d9\u30fc\u30c8\u60c5\u5831\u3092\u6301\u3064\u8a8d\u8a3c\u3055\u308c\u305f\u30e6\u30fc\u30b6\u30fc\u3068\u3001\u516c\u958b\u60c5\u5831\u3092\u6301\u3064\u4ed6\u306e\u3059\u3079\u3066\u306e\u30e6\u30fc\u30b6\u30fc\u3092\u533a\u5225\u3059\u308b\u305f\u3081\u306b\u884c\u308f\u308c\u307e\u3059\u3002"]})}),"\n",(0,i.jsxs)(n.p,{children:["\u30e6\u30fc\u30b6\u30fc\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u306b\u30c8\u30fc\u30af\u30f3\u3092\u4fdd\u5b58\u3059\u308b\u306b\u306f\u3001",(0,i.jsx)(n.code,{children:"model"}),"\u30bb\u30b0\u30e1\u30f3\u30c8\u306b\u30ea\u30a2\u30af\u30c6\u30a3\u30d6\u30b9\u30c8\u30a2\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002\u3053\u306e\u30b9\u30c8\u30a2\u306b\u306f\u3001\u30c8\u30fc\u30af\u30f3\u3068\u30e6\u30fc\u30b6\u30fc\u60c5\u5831\u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u4e21\u65b9\u3092\u542b\u3081\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002"]}),"\n",(0,i.jsxs)(n.p,{children:["API\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306f\u901a\u5e38\u3001",(0,i.jsx)(n.code,{children:"shared/api"}),"\u306b\u914d\u7f6e\u3055\u308c\u308b\u304b\u3001\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u9593\u3067\u5206\u6563\u3055\u308c\u308b\u305f\u3081\u3001\u3053\u306e\u30a2\u30d7\u30ed\u30fc\u30c1\u306e\u4e3b\u306a\u554f\u984c\u306f\u3001\u4ed6\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u304c\u30c8\u30fc\u30af\u30f3\u306b\u30a2\u30af\u30bb\u30b9\u3067\u304d\u308b\u3088\u3046\u306b\u3057\u3064\u3064\u3001",(0,i.jsx)(n.a,{href:"/docs/reference/layers#import-rule-on-layers",children:"\u30ec\u30a4\u30e4\u30fc\u306e\u30a4\u30f3\u30dd\u30fc\u30c8\u30eb\u30fc\u30eb"}),"\u3092\u7834\u3089\u306a\u3044\u3053\u3068\u3067\u3059\u3002"]}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsx)(n.p,{children:"\u30b9\u30e9\u30a4\u30b9\u5185\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u306f\u3001\u4e0b\u5c64\u306b\u3042\u308b\u30b9\u30e9\u30a4\u30b9\u306e\u307f\u3092\u30a4\u30f3\u30dd\u30fc\u30c8\u3067\u304d\u308b\u3002"}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"\u3053\u306e\u554f\u984c\u306b\u306f\u3044\u304f\u3064\u304b\u306e\u89e3\u6c7a\u7b56\u304c\u3042\u308a\u307e\u3059\u3002"}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u884c\u3046\u305f\u3073\u306b\u30c8\u30fc\u30af\u30f3\u3092\u624b\u52d5\u3067\u6e21\u3059"}),(0,i.jsx)(n.br,{}),"\n","\u3053\u308c\u306f\u6700\u3082\u7c21\u5358\u306a\u89e3\u6c7a\u7b56\u3067\u3059\u304c\u3001\u3059\u3050\u306b\u4e0d\u4fbf\u306b\u306a\u308a\u3001\u53b3\u5bc6\u306a\u578b\u4ed8\u3051\u304c\u306a\u3044\u5834\u5408\u306f\u5fd8\u308c\u3084\u3059\u304f\u306a\u308a\u307e\u3059\u3002\u3053\u306e\u89e3\u6c7a\u7b56\u306f\u3001Shared\u5c64\u306eAPI\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306e\u30df\u30c9\u30eb\u30a6\u30a7\u30a2\u30d1\u30bf\u30fc\u30f3\u3068\u3082\u4e92\u63db\u6027\u304c\u3042\u308a\u307e\u305b\u3093\u3002"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsxs)(n.strong,{children:["\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u3084",(0,i.jsx)(n.code,{children:"localStorage"}),"\u306e\u3088\u3046\u306a\u30b0\u30ed\u30fc\u30d0\u30eb\u30b9\u30c8\u30ec\u30fc\u30b8\u3092\u4ecb\u3057\u3066\u30a2\u30d7\u30ea\u5168\u4f53\u306b\u30c8\u30fc\u30af\u30f3\u3078\u306e\u30a2\u30af\u30bb\u30b9\u3092\u63d0\u4f9b\u3059\u308b"]}),(0,i.jsx)(n.br,{}),"\n","\u30c8\u30fc\u30af\u30f3\u3092\u53d6\u5f97\u3059\u308b\u305f\u3081\u306e\u30ad\u30fc\u306f",(0,i.jsx)(n.code,{children:"shared/api"}),"\u306b\u4fdd\u5b58\u3055\u308c\u3001API\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u304c\u305d\u308c\u3092\u4f7f\u7528\u3067\u304d\u308b\u3088\u3046\u306b\u3057\u307e\u3059\u3002\u30c8\u30fc\u30af\u30f3\u306e\u30ea\u30a2\u30af\u30c6\u30a3\u30d6\u30b9\u30c8\u30a2\u306f\u30e6\u30fc\u30b6\u30fc\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u304b\u3089\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u3055\u308c\u3001\u5fc5\u8981\u306b\u5fdc\u3058\u3066\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u30d7\u30ed\u30d0\u30a4\u30c0\u30fc\u304cApp\u5c64\u3067\u8a2d\u5b9a\u3055\u308c\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001API\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306e\u8a2d\u8a08\u306b\u5bfe\u3059\u308b\u81ea\u7531\u5ea6\u304c\u5897\u3057\u307e\u3059\u304c\u3001\u3053\u306e\u30a2\u30d7\u30ed\u30fc\u30c1\u306f\u6697\u9ed9\u306e\u4f9d\u5b58\u95a2\u4fc2\u3092\u751f\u307f\u51fa\u3057\u3066\u3057\u307e\u3044\u307e\u3059\u3002"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"\u30c8\u30fc\u30af\u30f3\u304c\u5909\u66f4\u3055\u308c\u308b\u305f\u3073\u306bAPI\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306b\u30c8\u30fc\u30af\u30f3\u3092\u633f\u5165\u3059\u308b"}),(0,i.jsx)(n.br,{}),"\n","\u30ea\u30a2\u30af\u30c6\u30a3\u30d6\u306a\u30b9\u30c8\u30a2\u3067\u3042\u308c\u3070\u3001\u5909\u66f4\u3092\u76e3\u8996\u3057\u3001\u30e6\u30fc\u30b6\u30fc\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u306e\u30b9\u30c8\u30a2\u304c\u5909\u66f4\u3055\u308c\u308b\u305f\u3073\u306bAPI\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306e\u30c8\u30fc\u30af\u30f3\u3092\u66f4\u65b0\u3067\u304d\u307e\u3059\u3002\u3053\u306e\u89e3\u6c7a\u7b56\u306f\u3001\u524d\u306e\u89e3\u6c7a\u7b56\u3068\u540c\u69d8\u306b\u6697\u9ed9\u306e\u4f9d\u5b58\u95a2\u4fc2\u3092\u751f\u307f\u51fa\u3057\u3066\u3057\u307e\u3044\u307e\u3059\u304c\u3001\u3088\u308a\u547d\u4ee4\u7684\uff08\u300c\u30d7\u30c3\u30b7\u30e5\u300d\uff09\u3067\u3042\u308a\u3001\u524d\u306e\u3082\u306e\u306f\u3088\u308a\u5ba3\u8a00\u7684\uff08\u300c\u30d7\u30eb\u300d\uff09\u3067\u3059\u3002"]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["\u30e6\u30fc\u30b6\u30fc\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u306e\u30e2\u30c7\u30eb\u306b\u4fdd\u5b58\u3055\u308c\u305f\u30c8\u30fc\u30af\u30f3\u306e\u53ef\u7528\u6027\u306e\u554f\u984c\u3092\u89e3\u6c7a\u3057\u305f\u3089\u3001\u30c8\u30fc\u30af\u30f3\u7ba1\u7406\u306b\u95a2\u9023\u3059\u308b\u8ffd\u52a0\u306e\u30d3\u30b8\u30cd\u30b9\u30ed\u30b8\u30c3\u30af\u3092\u8a18\u8ff0\u3067\u304d\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001",(0,i.jsx)(n.code,{children:"model"}),"\u30bb\u30b0\u30e1\u30f3\u30c8\u306b\u306f\u3001\u30c8\u30fc\u30af\u30f3\u3092\u4e00\u5b9a\u671f\u9593\u5f8c\u306b\u7121\u52b9\u306b\u3059\u308b\u30ed\u30b8\u30c3\u30af\u3084\u3001\u671f\u9650\u5207\u308c\u306e\u30c8\u30fc\u30af\u30f3\u3092\u66f4\u65b0\u3059\u308b\u30ed\u30b8\u30c3\u30af\u3092\u542b\u3081\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u3053\u308c\u3089\u306e\u30bf\u30b9\u30af\u3092\u5b9f\u884c\u3059\u308b\u305f\u3081\u306b\u3001\u30e6\u30fc\u30b6\u30fc\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u306e",(0,i.jsx)(n.code,{children:"api"}),"\u30bb\u30b0\u30e1\u30f3\u30c8\u3001\u307e\u305f\u306f",(0,i.jsx)(n.code,{children:"shared/api"}),"\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002"]}),"\n",(0,i.jsx)(n.h3,{id:"pages\u5c64widgets\u5c64\u306b\u4fdd\u5b58\u3059\u308b\u975e\u63a8\u5968",children:"Pages\u5c64/Widgets\u5c64\u306b\u4fdd\u5b58\u3059\u308b\uff08\u975e\u63a8\u5968\uff09"}),"\n",(0,i.jsxs)(n.p,{children:["\u30a2\u30af\u30bb\u30b9\u30c8\u30fc\u30af\u30f3\u306e\u3088\u3046\u306a\u30a2\u30d7\u30ea\u5168\u4f53\u306b\u95a2\u9023\u3059\u308b\u72b6\u614b\u3092\u30da\u30fc\u30b8\u3084\u30a6\u30a3\u30b8\u30a7\u30c3\u30c8\u306b\u4fdd\u5b58\u3059\u308b\u3053\u3068\u306f\u63a8\u5968\u3055\u308c\u307e\u305b\u3093\u3002\u30ed\u30b0\u30a4\u30f3\u30da\u30fc\u30b8\u306e",(0,i.jsx)(n.code,{children:"model"}),"\u30bb\u30b0\u30e1\u30f3\u30c8\u306b\u30c8\u30fc\u30af\u30f3\u30b9\u30c8\u30ec\u30fc\u30b8\u3092\u914d\u7f6e\u3057\u306a\u3044\u3067\u304f\u3060\u3055\u3044\u3002\u4ee3\u308f\u308a\u306b\u3001\u6700\u521d\u306e2\u3064\u306e\u89e3\u6c7a\u7b56\uff08Shared\u5c64\u914d\u7f6e\u304bEntities\u5c64\u914d\u7f6e\uff09\u306e\u3044\u305a\u308c\u304b\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044\u3002"]}),"\n",(0,i.jsx)(n.h2,{id:"\u30ed\u30b0\u30a2\u30a6\u30c8\u3068\u30c8\u30fc\u30af\u30f3\u306e\u7121\u52b9\u5316",children:"\u30ed\u30b0\u30a2\u30a6\u30c8\u3068\u30c8\u30fc\u30af\u30f3\u306e\u7121\u52b9\u5316"}),"\n",(0,i.jsx)(n.p,{children:"\u901a\u5e38\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3067\u306f\u30ed\u30b0\u30a2\u30a6\u30c8\u5c02\u7528\u306e\u30da\u30fc\u30b8\u3092\u4f5c\u6210\u3057\u307e\u305b\u3093\u304c\u3001\u30ed\u30b0\u30a2\u30a6\u30c8\u6a5f\u80fd\u306f\u975e\u5e38\u306b\u91cd\u8981\u3067\u3059\u3002\u3053\u306e\u6a5f\u80fd\u306b\u306f\u3001\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u3078\u306e\u8a8d\u8a3c\u30ea\u30af\u30a8\u30b9\u30c8\u3068\u30c8\u30fc\u30af\u30f3\u30b9\u30c8\u30ec\u30fc\u30b8\u306e\u66f4\u65b0\u304c\u542b\u307e\u308c\u307e\u3059\u3002"}),"\n",(0,i.jsxs)(n.p,{children:["\u3059\u3079\u3066\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u3092",(0,i.jsx)(n.code,{children:"shared/api"}),"\u306b\u4fdd\u5b58\u3057\u3066\u3044\u308b\u5834\u5408\u306f\u3001\u30ed\u30b0\u30a4\u30f3\u95a2\u6570\u306e\u8fd1\u304f\u306b\u30ed\u30b0\u30a2\u30a6\u30c8\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u95a2\u6570\u3092\u914d\u7f6e\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u305d\u3046\u3067\u306a\u3044\u5834\u5408\u306f\u3001\u30ed\u30b0\u30a2\u30a6\u30c8\u3092\u547c\u3073\u51fa\u3059\u30dc\u30bf\u30f3\u306e\u8fd1\u304f\u306b\u914d\u7f6e\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u4f8b\u3048\u3070\u3001\u3059\u3079\u3066\u306e\u30da\u30fc\u30b8\u306b\u5b58\u5728\u3057\u3001\u30ed\u30b0\u30a2\u30a6\u30c8\u30ea\u30f3\u30af\u3092\u542b\u3080\u30d8\u30c3\u30c0\u30fc\u30a6\u30a3\u30b8\u30a7\u30c3\u30c8\u304c\u3042\u308b\u5834\u5408\u3001\u305d\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u3053\u306e\u30a6\u30a3\u30b8\u30a7\u30c3\u30c8\u306e",(0,i.jsx)(n.code,{children:"api"}),"\u30bb\u30b0\u30e1\u30f3\u30c8\u306b\u914d\u7f6e\u3057\u307e\u3059\u3002"]}),"\n",(0,i.jsxs)(n.p,{children:["\u30c8\u30fc\u30af\u30f3\u30b9\u30c8\u30ec\u30fc\u30b8\u306e\u66f4\u65b0\u3082\u3001\u30ed\u30b0\u30a2\u30a6\u30c8\u30dc\u30bf\u30f3\u306e\u5834\u6240\u304b\u3089\u30c8\u30ea\u30ac\u30fc\u3055\u308c\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u30ea\u30af\u30a8\u30b9\u30c8\u3068\u30b9\u30c8\u30ec\u30fc\u30b8\u306e\u66f4\u65b0\u3092\u3053\u306e\u30a6\u30a3\u30b8\u30a7\u30c3\u30c8\u306e",(0,i.jsx)(n.code,{children:"model"}),"\u30bb\u30b0\u30e1\u30f3\u30c8\u3067\u7d71\u5408\u3067\u304d\u307e\u3059\u3002"]}),"\n",(0,i.jsx)(n.h3,{id:"\u81ea\u52d5\u30ed\u30b0\u30a2\u30a6\u30c8",children:"\u81ea\u52d5\u30ed\u30b0\u30a2\u30a6\u30c8"}),"\n",(0,i.jsxs)(n.p,{children:["\u30ed\u30b0\u30a2\u30a6\u30c8\u30ea\u30af\u30a8\u30b9\u30c8\u3084\u30c8\u30fc\u30af\u30f3\u66f4\u65b0\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u5931\u6557\u3092\u8003\u616e\u3059\u308b\u3053\u3068\u3092\u5fd8\u308c\u306a\u3044\u3067\u304f\u3060\u3055\u3044\u3002\u3044\u305a\u308c\u306e\u5834\u5408\u3082\u3001\u30c8\u30fc\u30af\u30f3\u30b9\u30c8\u30ec\u30fc\u30b8\u3092\u30ea\u30bb\u30c3\u30c8\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u30c8\u30fc\u30af\u30f3\u3092Entities\u5c64\u306b\u4fdd\u5b58\u3057\u3066\u3044\u308b\u5834\u5408\u3001\u3053\u306e\u30b3\u30fc\u30c9\u306f",(0,i.jsx)(n.code,{children:"model"}),"\u30bb\u30b0\u30e1\u30f3\u30c8\u306b\u914d\u7f6e\u3067\u304d\u307e\u3059\u3002\u30c8\u30fc\u30af\u30f3\u3092Shared\u5c64\u306b\u4fdd\u5b58\u3057\u3066\u3044\u308b\u5834\u5408\u3001\u3053\u306e\u30ed\u30b8\u30c3\u30af\u3092",(0,i.jsx)(n.code,{children:"shared/api"}),"\u306b\u914d\u7f6e\u3059\u308b\u3068\u3001\u30bb\u30b0\u30e1\u30f3\u30c8\u304c\u81a8\u3089\u307f\u3001\u305d\u306e\u76ee\u7684\u304c\u66d6\u6627\u306b\u306a\u3063\u3066\u3057\u307e\u3044\u307e\u3059\u3002",(0,i.jsx)(n.code,{children:"api"}),"\u30bb\u30b0\u30e1\u30f3\u30c8\u306b\u7121\u95a2\u4fc2\u306a2\u3064\u306e\u3082\u306e\u304c\u542b\u307e\u308c\u3066\u3044\u308b\u3053\u3068\u306b\u6c17\u3065\u3044\u305f\u5834\u5408\u3001\u30c8\u30fc\u30af\u30f3\u7ba1\u7406\u30ed\u30b8\u30c3\u30af\u3092\u5225\u306e\u30bb\u30b0\u30e1\u30f3\u30c8\u3001\u4f8b\u3048\u3070",(0,i.jsx)(n.code,{children:"shared/auth"}),"\u306b\u5206\u96e2\u3059\u308b\u3053\u3068\u3092\u691c\u8a0e\u3057\u3066\u307f\u3066\u304f\u3060\u3055\u3044\u3002"]})]})}function o(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(h,{...e})}):h(e)}},1100:(e,n,s)=>{s.d(n,{R:()=>d,x:()=>c});var i=s(758);const r={},l=i.createContext(r);function d(e){const n=i.useContext(l);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:d(e.components),i.createElement(l.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunk_feature_sliced_documentation=self.webpackChunk_feature_sliced_documentation||[]).push([[6285],{8124:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>t,contentTitle:()=>d,default:()=>o,frontMatter:()=>l,metadata:()=>c,toc:()=>a});var i=s(6070),r=s(1100);const l={sidebar_position:1},d="\u8a8d\u8a3c",c={id:"guides/examples/auth",title:"\u8a8d\u8a3c",description:"\u4e00\u822c\u7684\u306b\u3001\u8a8d\u8a3c\u306f\u4ee5\u4e0b\u306e\u30b9\u30c6\u30c3\u30d7\u3067\u69cb\u6210\u3055\u308c\u307e\u3059\u3002",source:"@site/i18n/ja/docusaurus-plugin-content-docs/current/guides/examples/auth.md",sourceDirName:"guides/examples",slug:"/guides/examples/auth",permalink:"/ja/docs/guides/examples/auth",draft:!1,unlisted:!1,editUrl:"https://github.com/feature-sliced/documentation/edit/master/i18n/ja/docusaurus-plugin-content-docs/current/guides/examples/auth.md",tags:[],version:"current",lastUpdatedAt:1728325386e3,sidebarPosition:1,frontMatter:{sidebar_position:1},sidebar:"guidesSidebar",previous:{title:"\u4f8b",permalink:"/ja/docs/guides/examples/"},next:{title:"\u578b",permalink:"/ja/docs/guides/examples/types"}},t={},a=[{value:"\u30e6\u30fc\u30b6\u30fc\u306e\u8cc7\u683c\u60c5\u5831\u3092\u53d6\u5f97\u3059\u308b\u65b9\u6cd5",id:"\u30e6\u30fc\u30b6\u30fc\u306e\u8cc7\u683c\u60c5\u5831\u3092\u53d6\u5f97\u3059\u308b\u65b9\u6cd5",level:2},{value:"\u30ed\u30b0\u30a4\u30f3\u7528\u306e\u5225\u30da\u30fc\u30b8",id:"\u30ed\u30b0\u30a4\u30f3\u7528\u306e\u5225\u30da\u30fc\u30b8",level:3},{value:"\u30ed\u30b0\u30a4\u30f3\u7528\u306e\u30c0\u30a4\u30a2\u30ed\u30b0\u30dc\u30c3\u30af\u30b9",id:"\u30ed\u30b0\u30a4\u30f3\u7528\u306e\u30c0\u30a4\u30a2\u30ed\u30b0\u30dc\u30c3\u30af\u30b9",level:3},{value:"\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3",id:"\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3",level:3},{value:"\u8cc7\u683c\u60c5\u5831\u3092\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u306b\u9001\u4fe1\u3059\u308b\u65b9\u6cd5",id:"\u8cc7\u683c\u60c5\u5831\u3092\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u306b\u9001\u4fe1\u3059\u308b\u65b9\u6cd5",level:2},{value:"\u30ea\u30af\u30a8\u30b9\u30c8\u95a2\u6570\u3092\u3069\u3053\u306b\u7f6e\u304f\u304b",id:"\u30ea\u30af\u30a8\u30b9\u30c8\u95a2\u6570\u3092\u3069\u3053\u306b\u7f6e\u304f\u304b",level:3},{value:"shared/api\u306b",id:"sharedapi\u306b",level:4},{value:"\u30da\u30fc\u30b8\u306eapi\u30bb\u30b0\u30e1\u30f3\u30c8\u306b",id:"\u30da\u30fc\u30b8\u306eapi\u30bb\u30b0\u30e1\u30f3\u30c8\u306b",level:4},{value:"2\u8981\u7d20\u8a8d\u8a3c",id:"2\u8981\u7d20\u8a8d\u8a3c",level:3},{value:"\u8a8d\u8a3c\u3055\u308c\u305f\u30ea\u30af\u30a8\u30b9\u30c8\u7528\u306e\u30c8\u30fc\u30af\u30f3\u3092\u4fdd\u5b58\u3059\u308b\u65b9\u6cd5",id:"how-to-store-the-token-for-authenticated-requests",level:2},{value:"Shared\u5c64\u306b\u4fdd\u5b58\u3059\u308b",id:"shared\u5c64\u306b\u4fdd\u5b58\u3059\u308b",level:3},{value:"Entities\u5c64\u306b\u4fdd\u5b58\u3059\u308b",id:"entities\u5c64\u306b\u4fdd\u5b58\u3059\u308b",level:3},{value:"Pages\u5c64/Widgets\u5c64\u306b\u4fdd\u5b58\u3059\u308b\uff08\u975e\u63a8\u5968\uff09",id:"pages\u5c64widgets\u5c64\u306b\u4fdd\u5b58\u3059\u308b\u975e\u63a8\u5968",level:3},{value:"\u30ed\u30b0\u30a2\u30a6\u30c8\u3068\u30c8\u30fc\u30af\u30f3\u306e\u7121\u52b9\u5316",id:"\u30ed\u30b0\u30a2\u30a6\u30c8\u3068\u30c8\u30fc\u30af\u30f3\u306e\u7121\u52b9\u5316",level:2},{value:"\u81ea\u52d5\u30ed\u30b0\u30a2\u30a6\u30c8",id:"\u81ea\u52d5\u30ed\u30b0\u30a2\u30a6\u30c8",level:3}];function h(e){const n={a:"a",admonition:"admonition",blockquote:"blockquote",br:"br",code:"code",h1:"h1",h2:"h2",h3:"h3",h4:"h4",header:"header",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,r.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.header,{children:(0,i.jsx)(n.h1,{id:"\u8a8d\u8a3c",children:"\u8a8d\u8a3c"})}),"\n",(0,i.jsx)(n.p,{children:"\u4e00\u822c\u7684\u306b\u3001\u8a8d\u8a3c\u306f\u4ee5\u4e0b\u306e\u30b9\u30c6\u30c3\u30d7\u3067\u69cb\u6210\u3055\u308c\u307e\u3059\u3002"}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsx)(n.li,{children:"\u30e6\u30fc\u30b6\u30fc\u304b\u3089\u8cc7\u683c\u60c5\u5831\u3092\u53d6\u5f97\u3059\u308b"}),"\n",(0,i.jsx)(n.li,{children:"\u305d\u308c\u3092\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u306b\u9001\u4fe1\u3059\u308b"}),"\n",(0,i.jsx)(n.li,{children:"\u8a8d\u8a3c\u3055\u308c\u305f\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u9001\u4fe1\u3059\u308b\u305f\u3081\u306e\u30c8\u30fc\u30af\u30f3\u3092\u4fdd\u5b58\u3059\u308b"}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"\u30e6\u30fc\u30b6\u30fc\u306e\u8cc7\u683c\u60c5\u5831\u3092\u53d6\u5f97\u3059\u308b\u65b9\u6cd5",children:"\u30e6\u30fc\u30b6\u30fc\u306e\u8cc7\u683c\u60c5\u5831\u3092\u53d6\u5f97\u3059\u308b\u65b9\u6cd5"}),"\n",(0,i.jsxs)(n.p,{children:["OAuth\u3092\u901a\u3058\u3066\u8a8d\u8a3c\u3092\u884c\u3046\u5834\u5408\u306f\u3001OAuth\u30d7\u30ed\u30d0\u30a4\u30c0\u30fc\u306e\u30da\u30fc\u30b8\u3078\u306e\u30ea\u30f3\u30af\u3092\u6301\u3064\u30ed\u30b0\u30a4\u30f3\u30da\u30fc\u30b8\u3092\u4f5c\u6210\u3057\u3001",(0,i.jsx)(n.a,{href:"#how-to-store-the-token-for-authenticated-requests",children:"\u30b9\u30c6\u30c3\u30d73"}),"\u306b\u9032\u3080\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002"]}),"\n",(0,i.jsx)(n.h3,{id:"\u30ed\u30b0\u30a4\u30f3\u7528\u306e\u5225\u30da\u30fc\u30b8",children:"\u30ed\u30b0\u30a4\u30f3\u7528\u306e\u5225\u30da\u30fc\u30b8"}),"\n",(0,i.jsx)(n.p,{children:"\u901a\u5e38\u3001\u30a6\u30a7\u30d6\u30b5\u30a4\u30c8\u306b\u306f\u30e6\u30fc\u30b6\u30fc\u540d\u3068\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u5165\u529b\u3059\u308b\u305f\u3081\u306e\u30ed\u30b0\u30a4\u30f3\u5c02\u7528\u30da\u30fc\u30b8\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u308c\u3089\u306e\u30da\u30fc\u30b8\u306f\u975e\u5e38\u306b\u30b7\u30f3\u30d7\u30eb\u3067\u3042\u308b\u305f\u3081\u3001\u5206\u89e3\u3059\u308b\u5fc5\u8981\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u3055\u3089\u306b\u3001\u30ed\u30b0\u30a4\u30f3\u30d5\u30a9\u30fc\u30e0\u3068\u767b\u9332\u30d5\u30a9\u30fc\u30e0\u306f\u5916\u898b\u304c\u975e\u5e38\u306b\u4f3c\u3066\u3044\u308b\u305f\u3081\u3001\u540c\u3058\u30da\u30fc\u30b8\u306b\u30b0\u30eb\u30fc\u30d7\u5316\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002\u30ed\u30b0\u30a4\u30f3/\u767b\u9332\u30da\u30fc\u30b8\u7528\u306e\u30b9\u30e9\u30a4\u30b9\u3092Pages\u5c64\u306b\u4f5c\u6210\u3057\u307e\u3059\u3002"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\ud83d\udcc2 pages","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\ud83d\udcc2 login","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\ud83d\udcc2 ui","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"\ud83d\udcc4 LoginPage.tsx"}),"\n",(0,i.jsx)(n.li,{children:"\ud83d\udcc4 RegisterPage.tsx"}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.li,{children:"\ud83d\udcc4 index.ts"}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.li,{children:"\u305d\u306e\u4ed6\u306e\u30da\u30fc\u30b8\u2026"}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"\u3053\u3053\u3067\u306f\u30012\u3064\u306e\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u3092\u4f5c\u6210\u3057\u3001\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3067\u4e21\u65b9\u3092\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u3057\u307e\u3057\u305f\u3002\u3053\u308c\u3089\u306e\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u306f\u3001\u30e6\u30fc\u30b6\u30fc\u304c\u8cc7\u683c\u60c5\u5831\u3092\u5165\u529b\u3059\u308b\u305f\u3081\u306e\u308f\u304b\u308a\u3084\u3059\u3044\u8981\u7d20\u3092\u542b\u3080\u30d5\u30a9\u30fc\u30e0\u3092\u6301\u3061\u307e\u3059\u3002"}),"\n",(0,i.jsx)(n.h3,{id:"\u30ed\u30b0\u30a4\u30f3\u7528\u306e\u30c0\u30a4\u30a2\u30ed\u30b0\u30dc\u30c3\u30af\u30b9",children:"\u30ed\u30b0\u30a4\u30f3\u7528\u306e\u30c0\u30a4\u30a2\u30ed\u30b0\u30dc\u30c3\u30af\u30b9"}),"\n",(0,i.jsx)(n.p,{children:"\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306b\u3069\u306e\u30da\u30fc\u30b8\u3067\u3082\u4f7f\u7528\u3067\u304d\u308b\u30ed\u30b0\u30a4\u30f3\u7528\u306e\u30c0\u30a4\u30a2\u30ed\u30b0\u30dc\u30c3\u30af\u30b9\u304c\u3042\u308b\u5834\u5408\u306f\u3001\u305d\u306e\u30c0\u30a4\u30a2\u30ed\u30b0\u30dc\u30c3\u30af\u30b9\u7528\u306e\u30a6\u30a3\u30b8\u30a7\u30c3\u30c8\u3092\u4f5c\u6210\u3067\u304d\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u30d5\u30a9\u30fc\u30e0\u81ea\u4f53\u3092\u3042\u307e\u308a\u5206\u89e3\u305b\u305a\u306b\u3001\u3069\u306e\u30da\u30fc\u30b8\u3067\u3082\u3053\u306e\u30c0\u30a4\u30a2\u30ed\u30b0\u30dc\u30c3\u30af\u30b9\u3092\u518d\u5229\u7528\u3067\u304d\u307e\u3059\u3002"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\ud83d\udcc2 widgets","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\ud83d\udcc2 login-dialog","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\ud83d\udcc2 ui","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"\ud83d\udcc4 LoginDialog.tsx"}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.li,{children:"\ud83d\udcc4 index.ts"}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.li,{children:"\u305d\u306e\u4ed6\u306e\u30a6\u30a3\u30b8\u30a7\u30c3\u30c8\u2026"}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"\u3053\u306e\u30ac\u30a4\u30c9\u306e\u6b8b\u308a\u306e\u90e8\u5206\u306f\u3001\u30ed\u30b0\u30a4\u30f3\u304c\u5225\u30da\u30fc\u30b8\u3067\u884c\u308f\u308c\u308b\u6700\u521d\u306e\u30a2\u30d7\u30ed\u30fc\u30c1\u306b\u57fa\u3065\u3044\u3066\u3044\u307e\u3059\u304c\u3001\u540c\u3058\u539f\u5247\u304c\u30c0\u30a4\u30a2\u30ed\u30b0\u30dc\u30c3\u30af\u30b9\u7528\u306e\u30a6\u30a3\u30b8\u30a7\u30c3\u30c8\u306b\u3082\u9069\u7528\u3055\u308c\u307e\u3059\u3002"}),"\n",(0,i.jsx)(n.h3,{id:"\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3",children:"\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3"}),"\n",(0,i.jsxs)(n.p,{children:["\u305f\u307e\u306b\u306f\u3001\u7279\u306b\u767b\u9332\u6642\u306b\u3001\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u5074\u3067\u691c\u8a3c\u3092\u884c\u3044\u3001\u30e6\u30fc\u30b6\u30fc\u306b\u30a8\u30e9\u30fc\u3092\u8fc5\u901f\u306b\u901a\u77e5\u3059\u308b\u3053\u3068\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u306e\u5834\u5408\u3001\u691c\u8a3c\u306f\u3001\u30ed\u30b0\u30a4\u30f3\u30da\u30fc\u30b8\u306e",(0,i.jsx)(n.code,{children:"model"}),"\u30bb\u30b0\u30e1\u30f3\u30c8\u3067\u884c\u3046\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u30b9\u30ad\u30fc\u30de\u691c\u8a3c\u30e9\u30a4\u30d6\u30e9\u30ea\u3001\u4f8b\u3048\u3070",(0,i.jsx)(n.a,{href:"https://zod.dev",children:"Zod"}),"\u3092JS/TS\u7528\u306b\u4f7f\u7528\u3057\u3001\u3053\u306e\u30b9\u30ad\u30fc\u30de\u3092",(0,i.jsx)(n.code,{children:"ui"}),"\u30bb\u30b0\u30e1\u30f3\u30c8\u306b\u63d0\u4f9b\u3057\u307e\u3059\u3002"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-ts",metastring:'title="pages/login/model/registration-schema.ts"',children:'import { z } from "zod";\n\nexport const registrationData = z.object({\n email: z.string().email(),\n password: z.string().min(6),\n confirmPassword: z.string(),\n}).refine((data) => data.password === data.confirmPassword, {\n message: "\u30d1\u30b9\u30ef\u30fc\u30c9\u304c\u4e00\u81f4\u3057\u307e\u305b\u3093",\n path: ["confirmPassword"],\n});\n'})}),"\n",(0,i.jsxs)(n.p,{children:["\u6b21\u306b\u3001",(0,i.jsx)(n.code,{children:"ui"}),"\u30bb\u30b0\u30e1\u30f3\u30c8\u3067\u3053\u306e\u30b9\u30ad\u30fc\u30de\u3092\u4f7f\u7528\u3057\u3066\u30e6\u30fc\u30b6\u30fc\u5165\u529b\u3092\u691c\u8a3c\u3067\u304d\u307e\u3059\u3002"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-tsx",metastring:'title="pages/login/ui/RegisterPage.tsx"',children:'import { registrationData } from "../model/registration-schema";\n\nfunction validate(formData: FormData) {\n const data = Object.fromEntries(formData.entries());\n try {\n registrationData.parse(data);\n } catch (error) {\n // TODO: \u30e6\u30fc\u30b6\u30fc\u306b\u30a8\u30e9\u30fc\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u8868\u793a\n }\n}\n\nexport function RegisterPage() {\n return (\n
validate(new FormData(e.target))}>\n \n \n\n \n \n\n \n \n
\n )\n}\n'})}),"\n",(0,i.jsx)(n.h2,{id:"\u8cc7\u683c\u60c5\u5831\u3092\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u306b\u9001\u4fe1\u3059\u308b\u65b9\u6cd5",children:"\u8cc7\u683c\u60c5\u5831\u3092\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u306b\u9001\u4fe1\u3059\u308b\u65b9\u6cd5"}),"\n",(0,i.jsx)(n.p,{children:"\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u306e\u30ed\u30b0\u30a4\u30f3\u30a8\u30f3\u30c9\u30dd\u30a4\u30f3\u30c8\u306b\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u9001\u4fe1\u3059\u308b\u95a2\u6570\u3092\u4f5c\u6210\u3057\u307e\u3057\u3087\u3046\u3002\u3053\u306e\u95a2\u6570\u306f\u3001\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u306e\u30b3\u30fc\u30c9\u5185\u3067\u30df\u30e5\u30fc\u30c6\u30fc\u30b7\u30e7\u30f3\u30e9\u30a4\u30d6\u30e9\u30ea\uff08\u4f8b\u3048\u3070\u3001TanStack Query\uff09\u3092\u901a\u3058\u3066\u76f4\u63a5\u547c\u3073\u51fa\u3059\u3053\u3068\u3082\u3001\u72b6\u614b\u7ba1\u7406\u30e9\u30a4\u30d6\u30e9\u30ea\u306e\u526f\u4f5c\u7528\u3068\u3057\u3066\u547c\u3073\u51fa\u3059\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002"}),"\n",(0,i.jsx)(n.h3,{id:"\u30ea\u30af\u30a8\u30b9\u30c8\u95a2\u6570\u3092\u3069\u3053\u306b\u7f6e\u304f\u304b",children:"\u30ea\u30af\u30a8\u30b9\u30c8\u95a2\u6570\u3092\u3069\u3053\u306b\u7f6e\u304f\u304b"}),"\n",(0,i.jsxs)(n.p,{children:["\u3053\u306e\u95a2\u6570\u3092\u7f6e\u304f\u5834\u6240\u306f2\u3064\u3042\u308a\u307e\u3059: ",(0,i.jsx)(n.code,{children:"shared/api"}),"\u307e\u305f\u306f\u30da\u30fc\u30b8\u306e",(0,i.jsx)(n.code,{children:"api"}),"\u30bb\u30b0\u30e1\u30f3\u30c8\u3067\u3059\u3002"]}),"\n",(0,i.jsxs)(n.h4,{id:"sharedapi\u306b",children:[(0,i.jsx)(n.code,{children:"shared/api"}),"\u306b"]}),"\n",(0,i.jsxs)(n.p,{children:["\u3053\u306e\u30a2\u30d7\u30ed\u30fc\u30c1\u306f\u3001\u3059\u3079\u3066\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u95a2\u6570\u3092",(0,i.jsx)(n.code,{children:"shared/api"}),"\u306b\u914d\u7f6e\u3057\u3001\u30a8\u30f3\u30c9\u30dd\u30a4\u30f3\u30c8\u3054\u3068\u306b\u30b0\u30eb\u30fc\u30d7\u5316\u3059\u308b\u306e\u306b\u9069\u3057\u3066\u3044\u307e\u3059\u3002\u3053\u306e\u5834\u5408\u3001\u30d5\u30a1\u30a4\u30eb\u69cb\u9020\u306f\u6b21\u306e\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002"]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\ud83d\udcc2 shared","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\ud83d\udcc2 api","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\ud83d\udcc2 endpoints","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"\ud83d\udcc4 login.ts"}),"\n",(0,i.jsx)(n.li,{children:"\u305d\u306e\u4ed6\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u95a2\u6570\u2026"}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.li,{children:"\ud83d\udcc4 client.ts"}),"\n",(0,i.jsx)(n.li,{children:"\ud83d\udcc4 index.ts"}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.code,{children:"\ud83d\udcc4 client.ts"}),"\u30d5\u30a1\u30a4\u30eb\u306b\u306f\u3001\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u5b9f\u884c\u3059\u308b\u305f\u3081\u306e\u30d7\u30ea\u30df\u30c6\u30a3\u30d6\u306e\u30e9\u30c3\u30d1\u30fc\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\uff08\u4f8b\u3048\u3070\u3001",(0,i.jsx)(n.code,{children:"fetch()"}),"\uff09\u3002\u3053\u306e\u30e9\u30c3\u30d1\u30fc\u306f\u3001\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u306e\u30d9\u30fc\u30b9URL\u3092\u77e5\u3063\u3066\u304a\u308a\u3001\u5fc5\u8981\u306a\u30d8\u30c3\u30c0\u30fc\u3092\u8a2d\u5b9a\u3057\u3001\u30c7\u30fc\u30bf\u3092\u30b7\u30ea\u30a2\u30e9\u30a4\u30ba\u3057\u307e\u3059\u3002"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-ts",metastring:'title="shared/api/endpoints/login.ts"',children:'import { POST } from "../client";\n\nexport function login({ email, password }: { email: string, password: string }) {\n return POST("/login", { email, password });\n}\n'})}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-ts",metastring:'title="shared/api/index.ts"',children:'export { login } from "./endpoints/login";\n'})}),"\n",(0,i.jsxs)(n.h4,{id:"\u30da\u30fc\u30b8\u306eapi\u30bb\u30b0\u30e1\u30f3\u30c8\u306b",children:["\u30da\u30fc\u30b8\u306e",(0,i.jsx)(n.code,{children:"api"}),"\u30bb\u30b0\u30e1\u30f3\u30c8\u306b"]}),"\n",(0,i.jsxs)(n.p,{children:["\u3059\u3079\u3066\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u30921\u304b\u6240\u306b\u4fdd\u5b58\u3057\u3066\u3044\u306a\u3044\u5834\u5408\u306f\u3001\u30ed\u30b0\u30a4\u30f3\u30da\u30fc\u30b8\u306e",(0,i.jsx)(n.code,{children:"api"}),"\u30bb\u30b0\u30e1\u30f3\u30c8\u306b\u3053\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u95a2\u6570\u3092\u914d\u7f6e\u3059\u308b\u306e\u304c\u9069\u3057\u3066\u3044\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002"]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\ud83d\udcc2 pages","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\ud83d\udcc2 login","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\ud83d\udcc2 api","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"\ud83d\udcc4 login.ts"}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\ud83d\udcc2 ui","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"\ud83d\udcc4 LoginPage.tsx"}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.li,{children:"\ud83d\udcc4 index.ts"}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.li,{children:"\u305d\u306e\u4ed6\u306e\u30da\u30fc\u30b8\u2026"}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-ts",metastring:'title="pages/login/api/login.ts"',children:'import { POST } from "shared/api";\n\nexport function login({ email, password }: { email: string, password: string }) {\n return POST("/login", { email, password });\n}\n'})}),"\n",(0,i.jsx)(n.p,{children:"\u3053\u306e\u95a2\u6570\u306f\u3001\u30da\u30fc\u30b8\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u304b\u3089\u518d\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u3059\u308b\u5fc5\u8981\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u306a\u305c\u306a\u3089\u3001\u6050\u3089\u304f\u3053\u306e\u30da\u30fc\u30b8\u5185\u3067\u306e\u307f\u4f7f\u7528\u3055\u308c\u308b\u304b\u3089\u3067\u3059\u3002"}),"\n",(0,i.jsx)(n.h3,{id:"2\u8981\u7d20\u8a8d\u8a3c",children:"2\u8981\u7d20\u8a8d\u8a3c"}),"\n",(0,i.jsxs)(n.p,{children:["\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u304c2\u8981\u7d20\u8a8d\u8a3c\uff082FA\uff09\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u308b\u5834\u5408\u3001\u30e6\u30fc\u30b6\u30fc\u3092\u4e00\u6642\u7684\u306a\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u5165\u529b\u3059\u308b\u305f\u3081\u306e\u5225\u306e\u30da\u30fc\u30b8\u306b\u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002\u901a\u5e38\u3001",(0,i.jsx)(n.code,{children:"POST /login"}),"\u30ea\u30af\u30a8\u30b9\u30c8\u306f\u3001\u30e6\u30fc\u30b6\u30fc\u306b2FA\u304c\u6709\u52b9\u3067\u3042\u308b\u3053\u3068\u3092\u793a\u3059\u30d5\u30e9\u30b0\u3092\u6301\u3064\u30e6\u30fc\u30b6\u30fc\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u8fd4\u3057\u307e\u3059\u3002\u3053\u306e\u30d5\u30e9\u30b0\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u308b\u5834\u5408\u3001\u30e6\u30fc\u30b6\u30fc\u30922FA\u30da\u30fc\u30b8\u306b\u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u3057\u307e\u3059\u3002"]}),"\n",(0,i.jsxs)(n.p,{children:["\u3053\u306e\u30da\u30fc\u30b8\u306f\u30ed\u30b0\u30a4\u30f3\u3068\u975e\u5e38\u306b\u95a2\u9023\u3057\u3066\u3044\u308b\u305f\u3081\u3001Pages\u5c64\u306e\u540c\u3058",(0,i.jsx)(n.code,{children:"login"}),"\u30b9\u30e9\u30a4\u30b9\u306b\u914d\u7f6e\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002"]}),"\n",(0,i.jsxs)(n.p,{children:["\u307e\u305f\u3001\u4e0a\u3067\u4f5c\u6210\u3057\u305f",(0,i.jsx)(n.code,{children:"login()"}),"\u306b\u4f3c\u305f\u5225\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u95a2\u6570\u304c\u5fc5\u8981\u306b\u306a\u308a\u307e\u3059\u3002\u305d\u308c\u3089\u3092Shared\u5c64\u306b\u307e\u3068\u3081\u308b\u304b\u3001\u30ed\u30b0\u30a4\u30f3\u30da\u30fc\u30b8\u306e",(0,i.jsx)(n.code,{children:"api"}),"\u30bb\u30b0\u30e1\u30f3\u30c8\u306b\u914d\u7f6e\u3057\u3066\u304f\u3060\u3055\u3044\u3002"]}),"\n",(0,i.jsx)(n.h2,{id:"how-to-store-the-token-for-authenticated-requests",children:"\u8a8d\u8a3c\u3055\u308c\u305f\u30ea\u30af\u30a8\u30b9\u30c8\u7528\u306e\u30c8\u30fc\u30af\u30f3\u3092\u4fdd\u5b58\u3059\u308b\u65b9\u6cd5"}),"\n",(0,i.jsx)(n.p,{children:"\u4f7f\u7528\u3059\u308b\u8a8d\u8a3c\u30b9\u30ad\u30fc\u30e0\u306b\u95a2\u4fc2\u306a\u304f\u3001\u5358\u7d14\u306a\u30ed\u30b0\u30a4\u30f3\u3068\u30d1\u30b9\u30ef\u30fc\u30c9\u3001OAuth\u3001\u307e\u305f\u306f2\u8981\u7d20\u8a8d\u8a3c\u3067\u3042\u3063\u3066\u3082\u3001\u6700\u7d42\u7684\u306b\u306f\u30c8\u30fc\u30af\u30f3\u3092\u53d6\u5f97\u3057\u307e\u3059\u3002\u4ee5\u964d\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u3067\u81ea\u5206\u3092\u8b58\u5225\u3067\u304d\u308b\u3088\u3046\u306b\u3001\u3053\u306e\u30c8\u30fc\u30af\u30f3\u306f\u4fdd\u5b58\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002"}),"\n",(0,i.jsxs)(n.p,{children:["\u30a6\u30a7\u30d6\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306b\u304a\u3051\u308b\u30c8\u30fc\u30af\u30f3\u306e\u7406\u60f3\u7684\u306a\u4fdd\u5b58\u5834\u6240\u306f",(0,i.jsx)(n.strong,{children:"\u30af\u30c3\u30ad\u30fc"}),"\u3067\u3059\u3002\u30af\u30c3\u30ad\u30fc\u306f\u30c8\u30fc\u30af\u30f3\u306e\u624b\u52d5\u4fdd\u5b58\u3084\u51e6\u7406\u3092\u5fc5\u8981\u3068\u3057\u307e\u305b\u3093\u3002\u3057\u305f\u304c\u3063\u3066\u3001\u30af\u30c3\u30ad\u30fc\u306e\u4fdd\u5b58\u306f\u30d5\u30ed\u30f3\u30c8\u30a8\u30f3\u30c9\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u306b\u307b\u3068\u3093\u3069\u52b4\u529b\u3092\u5fc5\u8981\u3068\u3057\u307e\u305b\u3093\u3002\u30d5\u30ed\u30f3\u30c8\u30a8\u30f3\u30c9\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306b\u30b5\u30fc\u30d0\u30fc\u30b5\u30a4\u30c9\u304c\u3042\u308b\u5834\u5408\uff08\u4f8b\u3048\u3070\u3001",(0,i.jsx)(n.a,{href:"https://remix.run",children:"Remix"}),"\uff09\u3001\u30af\u30c3\u30ad\u30fc\u306e\u30b5\u30fc\u30d0\u30fc\u30a4\u30f3\u30d5\u30e9\u306f",(0,i.jsx)(n.code,{children:"shared/api"}),"\u306b\u4fdd\u5b58\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002",(0,i.jsx)(n.a,{href:"/docs/get-started/tutorial#authentication",children:"\u300c\u8a8d\u8a3c\u300d\u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb\u30bb\u30af\u30b7\u30e7\u30f3"}),"\u306b\u306f\u3001Remix\u3067\u306e\u5b9f\u88c5\u4f8b\u304c\u3042\u308a\u307e\u3059\u3002"]}),"\n",(0,i.jsx)(n.p,{children:"\u305f\u3060\u3057\u3001\u6642\u306b\u306f\u30c8\u30fc\u30af\u30f3\u3092\u30af\u30c3\u30ad\u30fc\u306b\u4fdd\u5b58\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u306a\u3044\u5834\u5408\u3082\u3042\u308a\u307e\u3059\u3002\u3053\u306e\u5834\u5408\u3001\u30c8\u30fc\u30af\u30f3\u3092\u81ea\u5206\u3067\u4fdd\u5b58\u3057\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002\u305d\u306e\u969b\u3001\u30c8\u30fc\u30af\u30f3\u306e\u6709\u52b9\u671f\u9650\u304c\u5207\u308c\u305f\u3068\u304d\u306b\u66f4\u65b0\u3059\u308b\u30ed\u30b8\u30c3\u30af\u3092\u66f8\u304f\u624b\u9593\u304c\u304b\u304b\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002FSD\u306e\u67a0\u7d44\u307f\u5185\u306b\u306f\u3001\u30c8\u30fc\u30af\u30f3\u3092\u4fdd\u5b58\u3067\u304d\u308b\u3044\u304f\u3064\u304b\u306e\u5834\u6240\u3068\u3001\u305d\u306e\u30c8\u30fc\u30af\u30f3\u3092\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u4ed6\u306e\u90e8\u5206\u3067\u5229\u7528\u3067\u304d\u308b\u3088\u3046\u306b\u3059\u308b\u3044\u304f\u3064\u304b\u306e\u65b9\u6cd5\u304c\u3042\u308a\u307e\u3059\u3002"}),"\n",(0,i.jsx)(n.h3,{id:"shared\u5c64\u306b\u4fdd\u5b58\u3059\u308b",children:"Shared\u5c64\u306b\u4fdd\u5b58\u3059\u308b"}),"\n",(0,i.jsxs)(n.p,{children:["\u3053\u306e\u30a2\u30d7\u30ed\u30fc\u30c1\u306f\u3001API\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u304c",(0,i.jsx)(n.code,{children:"shared/api"}),"\u306b\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u308b\u5834\u5408\u306b\u3046\u307e\u304f\u6a5f\u80fd\u3057\u307e\u3059\u3002\u306a\u305c\u306a\u3089\u3001API\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u304c\u30c8\u30fc\u30af\u30f3\u306b\u81ea\u7531\u306b\u30a2\u30af\u30bb\u30b9\u3067\u304d\u308b\u304b\u3089\u3067\u3059\u3002\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u304c\u72b6\u614b\u3092\u6301\u3064\u3088\u3046\u306b\u3059\u308b\u306b\u306f\u3001\u30ea\u30a2\u30af\u30c6\u30a3\u30d6\u30b9\u30c8\u30a2\u3092\u4f7f\u7528\u3059\u308b\u304b\u3001\u5358\u306b\u30e2\u30b8\u30e5\u30fc\u30eb\u30ec\u30d9\u30eb\u306e\u5909\u6570\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u305d\u306e\u5f8c\u3001",(0,i.jsx)(n.code,{children:"login()"}),"/",(0,i.jsx)(n.code,{children:"logout()"}),"\u95a2\u6570\u5185\u3067\u3053\u306e\u72b6\u614b\u3092\u66f4\u65b0\u3067\u304d\u307e\u3059\u3002"]}),"\n",(0,i.jsx)(n.p,{children:"\u30c8\u30fc\u30af\u30f3\u306e\u81ea\u52d5\u66f4\u65b0\u306f\u3001API\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u5185\u306e\u30df\u30c9\u30eb\u30a6\u30a7\u30a2\u3068\u3057\u3066\u5b9f\u88c5\u3067\u304d\u307e\u3059\u3002\u3053\u308c\u306f\u3001\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u884c\u3046\u305f\u3073\u306b\u5b9f\u884c\u3055\u308c\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001\u6b21\u306e\u3088\u3046\u306b\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"\u8a8d\u8a3c\u3057\u3001\u30a2\u30af\u30bb\u30b9\u30c8\u30fc\u30af\u30f3\u3068\u30ea\u30d5\u30ec\u30c3\u30b7\u30e5\u30c8\u30fc\u30af\u30f3\u3092\u4fdd\u5b58\u3059\u308b"}),"\n",(0,i.jsx)(n.li,{children:"\u8a8d\u8a3c\u3092\u5fc5\u8981\u3068\u3059\u308b\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u884c\u3046"}),"\n",(0,i.jsx)(n.li,{children:"\u30ea\u30af\u30a8\u30b9\u30c8\u304c\u30a2\u30af\u30bb\u30b9\u30c8\u30fc\u30af\u30f3\u306e\u6709\u52b9\u671f\u9650\u5207\u308c\u3092\u793a\u3059\u30b9\u30c6\u30fc\u30bf\u30b9\u30b3\u30fc\u30c9\u3067\u5931\u6557\u3057\u305f\u5834\u5408\u3001\u30b9\u30c8\u30ec\u30fc\u30b8\u306b\u30ea\u30d5\u30ec\u30c3\u30b7\u30e5\u30c8\u30fc\u30af\u30f3\u304c\u3042\u308c\u3070\u3001\u66f4\u65b0\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u884c\u3044\u3001\u65b0\u3057\u3044\u30a2\u30af\u30bb\u30b9\u30c8\u30fc\u30af\u30f3\u3068\u30ea\u30d5\u30ec\u30c3\u30b7\u30e5\u30c8\u30fc\u30af\u30f3\u3092\u4fdd\u5b58\u3057\u3001\u5143\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u518d\u8a66\u884c\u3059\u308b"}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["\u3053\u306e\u30a2\u30d7\u30ed\u30fc\u30c1\u306e\u6b20\u70b9\u306e1\u3064\u306f\u3001\u30c8\u30fc\u30af\u30f3\u306e\u4fdd\u5b58\u3068\u66f4\u65b0\u30ed\u30b8\u30c3\u30af\u304c\u5c02\u7528\u306e\u5834\u6240\u3092\u6301\u305f\u306a\u3044\u3053\u3068\u3067\u3059\u3002\u3053\u308c\u306f\u3001\u7279\u5b9a\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3084\u30c1\u30fc\u30e0\u306b\u306f\u9069\u3057\u3066\u3044\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u304c\u3001\u30c8\u30fc\u30af\u30f3\u7ba1\u7406\u306e\u30ed\u30b8\u30c3\u30af\u304c\u3088\u308a\u8907\u96d1\u306a\u5834\u5408\u3001\u30ea\u30af\u30a8\u30b9\u30c8\u9001\u4fe1\u3068\u30c8\u30fc\u30af\u30f3\u7ba1\u7406\u306e\u8cac\u4efb\u3092\u5206\u3051\u305f\u3044\u3068\u601d\u3046\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002\u3053\u306e\u5834\u5408\u3001\u30ea\u30af\u30a8\u30b9\u30c8\u3068API\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u3092",(0,i.jsx)(n.code,{children:"shared/api"}),"\u306b\u7f6e\u304d\u3001\u30c8\u30fc\u30af\u30f3\u30b9\u30c8\u30ec\u30fc\u30b8\u3068\u66f4\u65b0\u30ed\u30b8\u30c3\u30af\u3092",(0,i.jsx)(n.code,{children:"shared/auth"}),"\u306b\u914d\u7f6e\u3057\u307e\u3059\u3002"]}),"\n",(0,i.jsxs)(n.p,{children:["\u3053\u306e\u30a2\u30d7\u30ed\u30fc\u30c1\u306e\u3082\u30461\u3064\u306e\u6b20\u70b9\u306f\u3001\u30b5\u30fc\u30d0\u30fc\u304c\u30c8\u30fc\u30af\u30f3\u3068\u3068\u3082\u306b\u73fe\u5728\u306e\u30e6\u30fc\u30b6\u30fc\u306b\u95a2\u3059\u308b\u60c5\u5831\u3092\u8fd4\u3059\u5834\u5408\u3001\u305d\u306e\u60c5\u5831\u3092\u4fdd\u5b58\u3059\u308b\u5834\u6240\u304c\u306a\u304f\u3001\u7279\u5225\u306a\u30a8\u30f3\u30c9\u30dd\u30a4\u30f3\u30c8\uff08\u4f8b\u3048\u3070",(0,i.jsx)(n.code,{children:"/me"}),"\u3084",(0,i.jsx)(n.code,{children:"/users/current"}),"\uff09\u304b\u3089\u518d\u5ea6\u53d6\u5f97\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u3053\u3068\u3067\u3059\u3002"]}),"\n",(0,i.jsx)(n.h3,{id:"entities\u5c64\u306b\u4fdd\u5b58\u3059\u308b",children:"Entities\u5c64\u306b\u4fdd\u5b58\u3059\u308b"}),"\n",(0,i.jsx)(n.p,{children:"FSD\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u306f\u3001\u30e6\u30fc\u30b6\u30fc\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u3084\u73fe\u5728\u306e\u30e6\u30fc\u30b6\u30fc\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u304c\u5b58\u5728\u3059\u308b\u3053\u3068\u304c\u3088\u304f\u3042\u308a\u307e\u3059\u3002\u3053\u308c\u3089\u306f\u540c\u3058\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u3067\u3042\u308b\u5834\u5408\u3082\u3042\u308a\u307e\u3059\u3002"}),"\n",(0,i.jsx)(n.admonition,{type:"note",children:(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"\u73fe\u5728\u306e\u30e6\u30fc\u30b6\u30fc"}),"\u306f\u6642\u306b\u306f\u300cviewer\u300d\u3084\u300cme\u300d\u3068\u3082\u547c\u3070\u308c\u307e\u3059\u3002\u3053\u308c\u306f\u3001\u6a29\u9650\u3068\u30d7\u30e9\u30a4\u30d9\u30fc\u30c8\u60c5\u5831\u3092\u6301\u3064\u8a8d\u8a3c\u3055\u308c\u305f\u30e6\u30fc\u30b6\u30fc\u3068\u3001\u516c\u958b\u60c5\u5831\u3092\u6301\u3064\u4ed6\u306e\u3059\u3079\u3066\u306e\u30e6\u30fc\u30b6\u30fc\u3092\u533a\u5225\u3059\u308b\u305f\u3081\u306b\u884c\u308f\u308c\u307e\u3059\u3002"]})}),"\n",(0,i.jsxs)(n.p,{children:["\u30e6\u30fc\u30b6\u30fc\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u306b\u30c8\u30fc\u30af\u30f3\u3092\u4fdd\u5b58\u3059\u308b\u306b\u306f\u3001",(0,i.jsx)(n.code,{children:"model"}),"\u30bb\u30b0\u30e1\u30f3\u30c8\u306b\u30ea\u30a2\u30af\u30c6\u30a3\u30d6\u30b9\u30c8\u30a2\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002\u3053\u306e\u30b9\u30c8\u30a2\u306b\u306f\u3001\u30c8\u30fc\u30af\u30f3\u3068\u30e6\u30fc\u30b6\u30fc\u60c5\u5831\u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u4e21\u65b9\u3092\u542b\u3081\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002"]}),"\n",(0,i.jsxs)(n.p,{children:["API\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306f\u901a\u5e38\u3001",(0,i.jsx)(n.code,{children:"shared/api"}),"\u306b\u914d\u7f6e\u3055\u308c\u308b\u304b\u3001\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u9593\u3067\u5206\u6563\u3055\u308c\u308b\u305f\u3081\u3001\u3053\u306e\u30a2\u30d7\u30ed\u30fc\u30c1\u306e\u4e3b\u306a\u554f\u984c\u306f\u3001\u4ed6\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u304c\u30c8\u30fc\u30af\u30f3\u306b\u30a2\u30af\u30bb\u30b9\u3067\u304d\u308b\u3088\u3046\u306b\u3057\u3064\u3064\u3001",(0,i.jsx)(n.a,{href:"/docs/reference/layers#import-rule-on-layers",children:"\u30ec\u30a4\u30e4\u30fc\u306e\u30a4\u30f3\u30dd\u30fc\u30c8\u30eb\u30fc\u30eb"}),"\u3092\u7834\u3089\u306a\u3044\u3053\u3068\u3067\u3059\u3002"]}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsx)(n.p,{children:"\u30b9\u30e9\u30a4\u30b9\u5185\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u306f\u3001\u4e0b\u5c64\u306b\u3042\u308b\u30b9\u30e9\u30a4\u30b9\u306e\u307f\u3092\u30a4\u30f3\u30dd\u30fc\u30c8\u3067\u304d\u308b\u3002"}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"\u3053\u306e\u554f\u984c\u306b\u306f\u3044\u304f\u3064\u304b\u306e\u89e3\u6c7a\u7b56\u304c\u3042\u308a\u307e\u3059\u3002"}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u884c\u3046\u305f\u3073\u306b\u30c8\u30fc\u30af\u30f3\u3092\u624b\u52d5\u3067\u6e21\u3059"}),(0,i.jsx)(n.br,{}),"\n","\u3053\u308c\u306f\u6700\u3082\u7c21\u5358\u306a\u89e3\u6c7a\u7b56\u3067\u3059\u304c\u3001\u3059\u3050\u306b\u4e0d\u4fbf\u306b\u306a\u308a\u3001\u53b3\u5bc6\u306a\u578b\u4ed8\u3051\u304c\u306a\u3044\u5834\u5408\u306f\u5fd8\u308c\u3084\u3059\u304f\u306a\u308a\u307e\u3059\u3002\u3053\u306e\u89e3\u6c7a\u7b56\u306f\u3001Shared\u5c64\u306eAPI\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306e\u30df\u30c9\u30eb\u30a6\u30a7\u30a2\u30d1\u30bf\u30fc\u30f3\u3068\u3082\u4e92\u63db\u6027\u304c\u3042\u308a\u307e\u305b\u3093\u3002"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsxs)(n.strong,{children:["\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u3084",(0,i.jsx)(n.code,{children:"localStorage"}),"\u306e\u3088\u3046\u306a\u30b0\u30ed\u30fc\u30d0\u30eb\u30b9\u30c8\u30ec\u30fc\u30b8\u3092\u4ecb\u3057\u3066\u30a2\u30d7\u30ea\u5168\u4f53\u306b\u30c8\u30fc\u30af\u30f3\u3078\u306e\u30a2\u30af\u30bb\u30b9\u3092\u63d0\u4f9b\u3059\u308b"]}),(0,i.jsx)(n.br,{}),"\n","\u30c8\u30fc\u30af\u30f3\u3092\u53d6\u5f97\u3059\u308b\u305f\u3081\u306e\u30ad\u30fc\u306f",(0,i.jsx)(n.code,{children:"shared/api"}),"\u306b\u4fdd\u5b58\u3055\u308c\u3001API\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u304c\u305d\u308c\u3092\u4f7f\u7528\u3067\u304d\u308b\u3088\u3046\u306b\u3057\u307e\u3059\u3002\u30c8\u30fc\u30af\u30f3\u306e\u30ea\u30a2\u30af\u30c6\u30a3\u30d6\u30b9\u30c8\u30a2\u306f\u30e6\u30fc\u30b6\u30fc\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u304b\u3089\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u3055\u308c\u3001\u5fc5\u8981\u306b\u5fdc\u3058\u3066\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u30d7\u30ed\u30d0\u30a4\u30c0\u30fc\u304cApp\u5c64\u3067\u8a2d\u5b9a\u3055\u308c\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001API\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306e\u8a2d\u8a08\u306b\u5bfe\u3059\u308b\u81ea\u7531\u5ea6\u304c\u5897\u3057\u307e\u3059\u304c\u3001\u3053\u306e\u30a2\u30d7\u30ed\u30fc\u30c1\u306f\u6697\u9ed9\u306e\u4f9d\u5b58\u95a2\u4fc2\u3092\u751f\u307f\u51fa\u3057\u3066\u3057\u307e\u3044\u307e\u3059\u3002"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"\u30c8\u30fc\u30af\u30f3\u304c\u5909\u66f4\u3055\u308c\u308b\u305f\u3073\u306bAPI\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306b\u30c8\u30fc\u30af\u30f3\u3092\u633f\u5165\u3059\u308b"}),(0,i.jsx)(n.br,{}),"\n","\u30ea\u30a2\u30af\u30c6\u30a3\u30d6\u306a\u30b9\u30c8\u30a2\u3067\u3042\u308c\u3070\u3001\u5909\u66f4\u3092\u76e3\u8996\u3057\u3001\u30e6\u30fc\u30b6\u30fc\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u306e\u30b9\u30c8\u30a2\u304c\u5909\u66f4\u3055\u308c\u308b\u305f\u3073\u306bAPI\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306e\u30c8\u30fc\u30af\u30f3\u3092\u66f4\u65b0\u3067\u304d\u307e\u3059\u3002\u3053\u306e\u89e3\u6c7a\u7b56\u306f\u3001\u524d\u306e\u89e3\u6c7a\u7b56\u3068\u540c\u69d8\u306b\u6697\u9ed9\u306e\u4f9d\u5b58\u95a2\u4fc2\u3092\u751f\u307f\u51fa\u3057\u3066\u3057\u307e\u3044\u307e\u3059\u304c\u3001\u3088\u308a\u547d\u4ee4\u7684\uff08\u300c\u30d7\u30c3\u30b7\u30e5\u300d\uff09\u3067\u3042\u308a\u3001\u524d\u306e\u3082\u306e\u306f\u3088\u308a\u5ba3\u8a00\u7684\uff08\u300c\u30d7\u30eb\u300d\uff09\u3067\u3059\u3002"]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["\u30e6\u30fc\u30b6\u30fc\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u306e\u30e2\u30c7\u30eb\u306b\u4fdd\u5b58\u3055\u308c\u305f\u30c8\u30fc\u30af\u30f3\u306e\u53ef\u7528\u6027\u306e\u554f\u984c\u3092\u89e3\u6c7a\u3057\u305f\u3089\u3001\u30c8\u30fc\u30af\u30f3\u7ba1\u7406\u306b\u95a2\u9023\u3059\u308b\u8ffd\u52a0\u306e\u30d3\u30b8\u30cd\u30b9\u30ed\u30b8\u30c3\u30af\u3092\u8a18\u8ff0\u3067\u304d\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001",(0,i.jsx)(n.code,{children:"model"}),"\u30bb\u30b0\u30e1\u30f3\u30c8\u306b\u306f\u3001\u30c8\u30fc\u30af\u30f3\u3092\u4e00\u5b9a\u671f\u9593\u5f8c\u306b\u7121\u52b9\u306b\u3059\u308b\u30ed\u30b8\u30c3\u30af\u3084\u3001\u671f\u9650\u5207\u308c\u306e\u30c8\u30fc\u30af\u30f3\u3092\u66f4\u65b0\u3059\u308b\u30ed\u30b8\u30c3\u30af\u3092\u542b\u3081\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u3053\u308c\u3089\u306e\u30bf\u30b9\u30af\u3092\u5b9f\u884c\u3059\u308b\u305f\u3081\u306b\u3001\u30e6\u30fc\u30b6\u30fc\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u306e",(0,i.jsx)(n.code,{children:"api"}),"\u30bb\u30b0\u30e1\u30f3\u30c8\u3001\u307e\u305f\u306f",(0,i.jsx)(n.code,{children:"shared/api"}),"\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002"]}),"\n",(0,i.jsx)(n.h3,{id:"pages\u5c64widgets\u5c64\u306b\u4fdd\u5b58\u3059\u308b\u975e\u63a8\u5968",children:"Pages\u5c64/Widgets\u5c64\u306b\u4fdd\u5b58\u3059\u308b\uff08\u975e\u63a8\u5968\uff09"}),"\n",(0,i.jsxs)(n.p,{children:["\u30a2\u30af\u30bb\u30b9\u30c8\u30fc\u30af\u30f3\u306e\u3088\u3046\u306a\u30a2\u30d7\u30ea\u5168\u4f53\u306b\u95a2\u9023\u3059\u308b\u72b6\u614b\u3092\u30da\u30fc\u30b8\u3084\u30a6\u30a3\u30b8\u30a7\u30c3\u30c8\u306b\u4fdd\u5b58\u3059\u308b\u3053\u3068\u306f\u63a8\u5968\u3055\u308c\u307e\u305b\u3093\u3002\u30ed\u30b0\u30a4\u30f3\u30da\u30fc\u30b8\u306e",(0,i.jsx)(n.code,{children:"model"}),"\u30bb\u30b0\u30e1\u30f3\u30c8\u306b\u30c8\u30fc\u30af\u30f3\u30b9\u30c8\u30ec\u30fc\u30b8\u3092\u914d\u7f6e\u3057\u306a\u3044\u3067\u304f\u3060\u3055\u3044\u3002\u4ee3\u308f\u308a\u306b\u3001\u6700\u521d\u306e2\u3064\u306e\u89e3\u6c7a\u7b56\uff08Shared\u5c64\u914d\u7f6e\u304bEntities\u5c64\u914d\u7f6e\uff09\u306e\u3044\u305a\u308c\u304b\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044\u3002"]}),"\n",(0,i.jsx)(n.h2,{id:"\u30ed\u30b0\u30a2\u30a6\u30c8\u3068\u30c8\u30fc\u30af\u30f3\u306e\u7121\u52b9\u5316",children:"\u30ed\u30b0\u30a2\u30a6\u30c8\u3068\u30c8\u30fc\u30af\u30f3\u306e\u7121\u52b9\u5316"}),"\n",(0,i.jsx)(n.p,{children:"\u901a\u5e38\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3067\u306f\u30ed\u30b0\u30a2\u30a6\u30c8\u5c02\u7528\u306e\u30da\u30fc\u30b8\u3092\u4f5c\u6210\u3057\u307e\u305b\u3093\u304c\u3001\u30ed\u30b0\u30a2\u30a6\u30c8\u6a5f\u80fd\u306f\u975e\u5e38\u306b\u91cd\u8981\u3067\u3059\u3002\u3053\u306e\u6a5f\u80fd\u306b\u306f\u3001\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u3078\u306e\u8a8d\u8a3c\u30ea\u30af\u30a8\u30b9\u30c8\u3068\u30c8\u30fc\u30af\u30f3\u30b9\u30c8\u30ec\u30fc\u30b8\u306e\u66f4\u65b0\u304c\u542b\u307e\u308c\u307e\u3059\u3002"}),"\n",(0,i.jsxs)(n.p,{children:["\u3059\u3079\u3066\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u3092",(0,i.jsx)(n.code,{children:"shared/api"}),"\u306b\u4fdd\u5b58\u3057\u3066\u3044\u308b\u5834\u5408\u306f\u3001\u30ed\u30b0\u30a4\u30f3\u95a2\u6570\u306e\u8fd1\u304f\u306b\u30ed\u30b0\u30a2\u30a6\u30c8\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u95a2\u6570\u3092\u914d\u7f6e\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u305d\u3046\u3067\u306a\u3044\u5834\u5408\u306f\u3001\u30ed\u30b0\u30a2\u30a6\u30c8\u3092\u547c\u3073\u51fa\u3059\u30dc\u30bf\u30f3\u306e\u8fd1\u304f\u306b\u914d\u7f6e\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u4f8b\u3048\u3070\u3001\u3059\u3079\u3066\u306e\u30da\u30fc\u30b8\u306b\u5b58\u5728\u3057\u3001\u30ed\u30b0\u30a2\u30a6\u30c8\u30ea\u30f3\u30af\u3092\u542b\u3080\u30d8\u30c3\u30c0\u30fc\u30a6\u30a3\u30b8\u30a7\u30c3\u30c8\u304c\u3042\u308b\u5834\u5408\u3001\u305d\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u3053\u306e\u30a6\u30a3\u30b8\u30a7\u30c3\u30c8\u306e",(0,i.jsx)(n.code,{children:"api"}),"\u30bb\u30b0\u30e1\u30f3\u30c8\u306b\u914d\u7f6e\u3057\u307e\u3059\u3002"]}),"\n",(0,i.jsxs)(n.p,{children:["\u30c8\u30fc\u30af\u30f3\u30b9\u30c8\u30ec\u30fc\u30b8\u306e\u66f4\u65b0\u3082\u3001\u30ed\u30b0\u30a2\u30a6\u30c8\u30dc\u30bf\u30f3\u306e\u5834\u6240\u304b\u3089\u30c8\u30ea\u30ac\u30fc\u3055\u308c\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u30ea\u30af\u30a8\u30b9\u30c8\u3068\u30b9\u30c8\u30ec\u30fc\u30b8\u306e\u66f4\u65b0\u3092\u3053\u306e\u30a6\u30a3\u30b8\u30a7\u30c3\u30c8\u306e",(0,i.jsx)(n.code,{children:"model"}),"\u30bb\u30b0\u30e1\u30f3\u30c8\u3067\u7d71\u5408\u3067\u304d\u307e\u3059\u3002"]}),"\n",(0,i.jsx)(n.h3,{id:"\u81ea\u52d5\u30ed\u30b0\u30a2\u30a6\u30c8",children:"\u81ea\u52d5\u30ed\u30b0\u30a2\u30a6\u30c8"}),"\n",(0,i.jsxs)(n.p,{children:["\u30ed\u30b0\u30a2\u30a6\u30c8\u30ea\u30af\u30a8\u30b9\u30c8\u3084\u30c8\u30fc\u30af\u30f3\u66f4\u65b0\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u5931\u6557\u3092\u8003\u616e\u3059\u308b\u3053\u3068\u3092\u5fd8\u308c\u306a\u3044\u3067\u304f\u3060\u3055\u3044\u3002\u3044\u305a\u308c\u306e\u5834\u5408\u3082\u3001\u30c8\u30fc\u30af\u30f3\u30b9\u30c8\u30ec\u30fc\u30b8\u3092\u30ea\u30bb\u30c3\u30c8\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u30c8\u30fc\u30af\u30f3\u3092Entities\u5c64\u306b\u4fdd\u5b58\u3057\u3066\u3044\u308b\u5834\u5408\u3001\u3053\u306e\u30b3\u30fc\u30c9\u306f",(0,i.jsx)(n.code,{children:"model"}),"\u30bb\u30b0\u30e1\u30f3\u30c8\u306b\u914d\u7f6e\u3067\u304d\u307e\u3059\u3002\u30c8\u30fc\u30af\u30f3\u3092Shared\u5c64\u306b\u4fdd\u5b58\u3057\u3066\u3044\u308b\u5834\u5408\u3001\u3053\u306e\u30ed\u30b8\u30c3\u30af\u3092",(0,i.jsx)(n.code,{children:"shared/api"}),"\u306b\u914d\u7f6e\u3059\u308b\u3068\u3001\u30bb\u30b0\u30e1\u30f3\u30c8\u304c\u81a8\u3089\u307f\u3001\u305d\u306e\u76ee\u7684\u304c\u66d6\u6627\u306b\u306a\u3063\u3066\u3057\u307e\u3044\u307e\u3059\u3002",(0,i.jsx)(n.code,{children:"api"}),"\u30bb\u30b0\u30e1\u30f3\u30c8\u306b\u7121\u95a2\u4fc2\u306a2\u3064\u306e\u3082\u306e\u304c\u542b\u307e\u308c\u3066\u3044\u308b\u3053\u3068\u306b\u6c17\u3065\u3044\u305f\u5834\u5408\u3001\u30c8\u30fc\u30af\u30f3\u7ba1\u7406\u30ed\u30b8\u30c3\u30af\u3092\u5225\u306e\u30bb\u30b0\u30e1\u30f3\u30c8\u3001\u4f8b\u3048\u3070",(0,i.jsx)(n.code,{children:"shared/auth"}),"\u306b\u5206\u96e2\u3059\u308b\u3053\u3068\u3092\u691c\u8a0e\u3057\u3066\u307f\u3066\u304f\u3060\u3055\u3044\u3002"]})]})}function o(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(h,{...e})}):h(e)}},1100:(e,n,s)=>{s.d(n,{R:()=>d,x:()=>c});var i=s(758);const r={},l=i.createContext(r);function d(e){const n=i.useContext(l);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:d(e.components),i.createElement(l.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/ja/assets/js/0289c23f.78005ed1.js b/ja/assets/js/0289c23f.bf82634d.js similarity index 97% rename from ja/assets/js/0289c23f.78005ed1.js rename to ja/assets/js/0289c23f.bf82634d.js index e81d1aa2c1..b2ca46824a 100644 --- a/ja/assets/js/0289c23f.78005ed1.js +++ b/ja/assets/js/0289c23f.bf82634d.js @@ -1 +1 @@ -"use strict";(self.webpackChunk_feature_sliced_documentation=self.webpackChunk_feature_sliced_documentation||[]).push([[1436],{1928:(e,t,i)=>{i.d(t,{Ay:()=>u,RM:()=>a});var n=i(6070),s=i(1100),r=(i(758),i(6783)),c=i(7765);const d=e=>{let{ticket:t}=e;const i=`https://github.com/feature-sliced/documentation/issues/${t}`;return(0,n.jsxs)("div",{children:[(0,n.jsx)("p",{children:(0,c.T)({id:"shared.wip.title"})}),(0,n.jsx)("p",{children:(0,c.T)({id:"shared.wip.subtitle"})}),(0,n.jsxs)("ul",{children:[(0,n.jsxs)("li",{children:[(0,c.T)({id:"shared.wip.var.feedback.base"}),(0,n.jsx)(r.A,{to:i,children:(0,c.T)({id:"shared.wip.var.feedback.link"})})]}),(0,n.jsxs)("li",{children:[(0,c.T)({id:"shared.wip.var.material.base"}),(0,n.jsx)(r.A,{to:"https://t.me/feature_sliced",children:(0,c.T)({id:"shared.wip.var.material.link"})})]}),(0,n.jsxs)("li",{children:[(0,c.T)({id:"shared.wip.var.contribute.base"}),(0,n.jsx)(r.A,{to:"https://github.com/feature-sliced/documentation/blob/master/CONTRIBUTING.md",children:(0,c.T)({id:"shared.wip.var.contribute.link"})})]})]}),(0,n.jsx)("br",{}),(0,n.jsx)("p",{children:(0,n.jsx)("i",{children:"\ud83c\udf70 Stay tuned!"})})]})},a=[];function o(e){const t={admonition:"admonition",...(0,s.R)(),...e.components};return(0,n.jsx)(t.admonition,{title:"WIP",type:"caution",children:(0,n.jsx)(d,{ticket:e.ticket})})}function u(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(o,{...e})}):o(e)}},5510:(e,t,i)=>{i.r(t),i.d(t,{assets:()=>o,contentTitle:()=>d,default:()=>m,frontMatter:()=>c,metadata:()=>a,toc:()=>u});var n=i(6070),s=i(1100),r=i(1928);const c={sidebar_class_name:"sidebar-item--wip",unlisted:!0},d="\u30e1\u30c8\u30ea\u30af\u30b9",a={id:"guides/examples/metric",title:"\u30e1\u30c8\u30ea\u30af\u30b9",description:"",source:"@site/i18n/ja/docusaurus-plugin-content-docs/current/guides/examples/metric.mdx",sourceDirName:"guides/examples",slug:"/guides/examples/metric",permalink:"/ja/docs/guides/examples/metric",draft:!1,unlisted:!0,editUrl:"https://github.com/feature-sliced/documentation/edit/master/i18n/ja/docusaurus-plugin-content-docs/current/guides/examples/metric.mdx",tags:[],version:"current",lastUpdatedAt:1727607766e3,frontMatter:{sidebar_class_name:"sidebar-item--wip",unlisted:!0},sidebar:"guidesSidebar"},o={},u=[...r.RM];function l(e){const t={h1:"h1",header:"header",...(0,s.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.header,{children:(0,n.jsx)(t.h1,{id:"\u30e1\u30c8\u30ea\u30af\u30b9",children:"\u30e1\u30c8\u30ea\u30af\u30b9"})}),"\n",(0,n.jsx)(r.Ay,{ticket:"181"})]})}function m(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(l,{...e})}):l(e)}},1100:(e,t,i)=>{i.d(t,{R:()=>c,x:()=>d});var n=i(758);const s={},r=n.createContext(s);function c(e){const t=n.useContext(r);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function d(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:c(e.components),n.createElement(r.Provider,{value:t},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunk_feature_sliced_documentation=self.webpackChunk_feature_sliced_documentation||[]).push([[1436],{1928:(e,t,i)=>{i.d(t,{Ay:()=>u,RM:()=>a});var n=i(6070),s=i(1100),r=(i(758),i(6783)),c=i(7765);const d=e=>{let{ticket:t}=e;const i=`https://github.com/feature-sliced/documentation/issues/${t}`;return(0,n.jsxs)("div",{children:[(0,n.jsx)("p",{children:(0,c.T)({id:"shared.wip.title"})}),(0,n.jsx)("p",{children:(0,c.T)({id:"shared.wip.subtitle"})}),(0,n.jsxs)("ul",{children:[(0,n.jsxs)("li",{children:[(0,c.T)({id:"shared.wip.var.feedback.base"}),(0,n.jsx)(r.A,{to:i,children:(0,c.T)({id:"shared.wip.var.feedback.link"})})]}),(0,n.jsxs)("li",{children:[(0,c.T)({id:"shared.wip.var.material.base"}),(0,n.jsx)(r.A,{to:"https://t.me/feature_sliced",children:(0,c.T)({id:"shared.wip.var.material.link"})})]}),(0,n.jsxs)("li",{children:[(0,c.T)({id:"shared.wip.var.contribute.base"}),(0,n.jsx)(r.A,{to:"https://github.com/feature-sliced/documentation/blob/master/CONTRIBUTING.md",children:(0,c.T)({id:"shared.wip.var.contribute.link"})})]})]}),(0,n.jsx)("br",{}),(0,n.jsx)("p",{children:(0,n.jsx)("i",{children:"\ud83c\udf70 Stay tuned!"})})]})},a=[];function o(e){const t={admonition:"admonition",...(0,s.R)(),...e.components};return(0,n.jsx)(t.admonition,{title:"WIP",type:"caution",children:(0,n.jsx)(d,{ticket:e.ticket})})}function u(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(o,{...e})}):o(e)}},5510:(e,t,i)=>{i.r(t),i.d(t,{assets:()=>o,contentTitle:()=>d,default:()=>m,frontMatter:()=>c,metadata:()=>a,toc:()=>u});var n=i(6070),s=i(1100),r=i(1928);const c={sidebar_class_name:"sidebar-item--wip",unlisted:!0},d="\u30e1\u30c8\u30ea\u30af\u30b9",a={id:"guides/examples/metric",title:"\u30e1\u30c8\u30ea\u30af\u30b9",description:"",source:"@site/i18n/ja/docusaurus-plugin-content-docs/current/guides/examples/metric.mdx",sourceDirName:"guides/examples",slug:"/guides/examples/metric",permalink:"/ja/docs/guides/examples/metric",draft:!1,unlisted:!0,editUrl:"https://github.com/feature-sliced/documentation/edit/master/i18n/ja/docusaurus-plugin-content-docs/current/guides/examples/metric.mdx",tags:[],version:"current",lastUpdatedAt:1728325386e3,frontMatter:{sidebar_class_name:"sidebar-item--wip",unlisted:!0},sidebar:"guidesSidebar"},o={},u=[...r.RM];function l(e){const t={h1:"h1",header:"header",...(0,s.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.header,{children:(0,n.jsx)(t.h1,{id:"\u30e1\u30c8\u30ea\u30af\u30b9",children:"\u30e1\u30c8\u30ea\u30af\u30b9"})}),"\n",(0,n.jsx)(r.Ay,{ticket:"181"})]})}function m(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(l,{...e})}):l(e)}},1100:(e,t,i)=>{i.d(t,{R:()=>c,x:()=>d});var n=i(758);const s={},r=n.createContext(s);function c(e){const t=n.useContext(r);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function d(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:c(e.components),n.createElement(r.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/ja/assets/js/05cea7a5.0075ee40.js b/ja/assets/js/05cea7a5.2123c32d.js similarity index 98% rename from ja/assets/js/05cea7a5.0075ee40.js rename to ja/assets/js/05cea7a5.2123c32d.js index 7181c24683..26cd4e9190 100644 --- a/ja/assets/js/05cea7a5.0075ee40.js +++ b/ja/assets/js/05cea7a5.2123c32d.js @@ -1 +1 @@ -"use strict";(self.webpackChunk_feature_sliced_documentation=self.webpackChunk_feature_sliced_documentation||[]).push([[688],{4505:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>d,contentTitle:()=>r,default:()=>h,frontMatter:()=>i,metadata:()=>c,toc:()=>o});var n=s(6070),a=s(1100);const i={unlisted:!0},r="\u5206\u89e3\u306e\u30c1\u30fc\u30c8\u30b7\u30fc\u30c8",c={id:"get-started/cheatsheet",title:"\u5206\u89e3\u306e\u30c1\u30fc\u30c8\u30b7\u30fc\u30c8",description:"\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\u3092\u30ec\u30a4\u30e4\u30fc\u306b\u5206\u5272\u3059\u308b\u969b\u306e\u53c2\u8003\u66f8\u3068\u3057\u3066\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u4ee5\u4e0b\u306bPDF\u30d0\u30fc\u30b8\u30e7\u30f3\u3082\u3042\u308a\u3001\u5370\u5237\u3057\u3066\u6795\u306e\u4e0b\u306b\u7f6e\u3044\u3066\u304a\u304f\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002",source:"@site/i18n/ja/docusaurus-plugin-content-docs/current/get-started/cheatsheet.mdx",sourceDirName:"get-started",slug:"/get-started/cheatsheet",permalink:"/ja/docs/get-started/cheatsheet",draft:!1,unlisted:!0,editUrl:"https://github.com/feature-sliced/documentation/edit/master/i18n/ja/docusaurus-plugin-content-docs/current/get-started/cheatsheet.mdx",tags:[],version:"current",lastUpdatedAt:1727607766e3,frontMatter:{unlisted:!0},sidebar:"getstartedSidebar"},d={},o=[{value:"\u30ec\u30a4\u30e4\u30fc\u306e\u9078\u629e",id:"choosing-a-layer",level:2},{value:"\u4f8b",id:"examples",level:2},{value:"\u30c4\u30a4\u30fc\u30c8",id:"\u30c4\u30a4\u30fc\u30c8",level:3},{value:"GitHub",id:"github",level:3},{value:"\u53c2\u7167",id:"see-also",level:2}];function l(e){const t={a:"a",h1:"h1",h2:"h2",h3:"h3",header:"header",img:"img",li:"li",p:"p",ul:"ul",...(0,a.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.header,{children:(0,n.jsx)(t.h1,{id:"\u5206\u89e3\u306e\u30c1\u30fc\u30c8\u30b7\u30fc\u30c8",children:"\u5206\u89e3\u306e\u30c1\u30fc\u30c8\u30b7\u30fc\u30c8"})}),"\n",(0,n.jsx)(t.p,{children:"\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\u3092\u30ec\u30a4\u30e4\u30fc\u306b\u5206\u5272\u3059\u308b\u969b\u306e\u53c2\u8003\u66f8\u3068\u3057\u3066\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u4ee5\u4e0b\u306bPDF\u30d0\u30fc\u30b8\u30e7\u30f3\u3082\u3042\u308a\u3001\u5370\u5237\u3057\u3066\u6795\u306e\u4e0b\u306b\u7f6e\u3044\u3066\u304a\u304f\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002"}),"\n",(0,n.jsx)(t.h2,{id:"choosing-a-layer",children:"\u30ec\u30a4\u30e4\u30fc\u306e\u9078\u629e"}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.a,{target:"_blank","data-noBrokenLinkCheck":!0,href:s(9603).A+"",children:"PDF\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9"})}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"\u30ec\u30a4\u30e4\u30fc\u306e\u5b9a\u7fa9\u3068\u81ea\u5df1\u30c1\u30a7\u30c3\u30af\u306e\u8cea\u554f",src:s(4603).A+"",width:"1684",height:"1190"})}),"\n",(0,n.jsx)(t.h2,{id:"examples",children:"\u4f8b"}),"\n",(0,n.jsx)(t.h3,{id:"\u30c4\u30a4\u30fc\u30c8",children:"\u30c4\u30a4\u30fc\u30c8"}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"\u5206\u89e3\u3055\u308c\u305f\u30c4\u30a4\u30fc\u30c8",src:s(8898).A+"",width:"1200",height:"2364"})}),"\n",(0,n.jsx)(t.h3,{id:"github",children:"GitHub"}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"\u5206\u89e3\u3055\u308c\u305fGitHub",src:s(8142).A+"",width:"2291",height:"1080"})}),"\n",(0,n.jsx)(t.h2,{id:"see-also",children:"\u53c2\u7167"}),"\n",(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsx)(t.li,{children:(0,n.jsx)(t.a,{href:"https://www.pluralsight.com/resources/blog/guides/how-to-organize-your-react--redux-codebase",children:"(\u8a18\u4e8b) \u30ed\u30b8\u30c3\u30af\u306e\u5206\u89e3\u306b\u304a\u3051\u308b\u3055\u307e\u3056\u307e\u306a\u30a2\u30d7\u30ed\u30fc\u30c1"})}),"\n"]})]})}function h(e={}){const{wrapper:t}={...(0,a.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(l,{...e})}):l(e)}},9603:(e,t,s)=>{s.d(t,{A:()=>n});const n=s.p+"assets/files/choosing-a-layer-en-12fdf3265c8fc4f6b58687352b81fce7.pdf"},4603:(e,t,s)=>{s.d(t,{A:()=>n});const n=s.p+"assets/images/choosing-a-layer-en-5b67f20bb921ba17d78a56c0dc7654a9.jpg"},8142:(e,t,s)=>{s.d(t,{A:()=>n});const n=s.p+"assets/images/decompose-github-a0eeb839a4b5ef5c480a73726a4451b0.jpg"},8898:(e,t,s)=>{s.d(t,{A:()=>n});const n=s.p+"assets/images/decompose-twitter-7b9a50f879d763c49305b3bf0751ee35.png"},1100:(e,t,s)=>{s.d(t,{R:()=>r,x:()=>c});var n=s(758);const a={},i=n.createContext(a);function r(e){const t=n.useContext(i);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function c(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:r(e.components),n.createElement(i.Provider,{value:t},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunk_feature_sliced_documentation=self.webpackChunk_feature_sliced_documentation||[]).push([[688],{4505:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>d,contentTitle:()=>r,default:()=>h,frontMatter:()=>i,metadata:()=>c,toc:()=>o});var n=s(6070),a=s(1100);const i={unlisted:!0},r="\u5206\u89e3\u306e\u30c1\u30fc\u30c8\u30b7\u30fc\u30c8",c={id:"get-started/cheatsheet",title:"\u5206\u89e3\u306e\u30c1\u30fc\u30c8\u30b7\u30fc\u30c8",description:"\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\u3092\u30ec\u30a4\u30e4\u30fc\u306b\u5206\u5272\u3059\u308b\u969b\u306e\u53c2\u8003\u66f8\u3068\u3057\u3066\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u4ee5\u4e0b\u306bPDF\u30d0\u30fc\u30b8\u30e7\u30f3\u3082\u3042\u308a\u3001\u5370\u5237\u3057\u3066\u6795\u306e\u4e0b\u306b\u7f6e\u3044\u3066\u304a\u304f\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002",source:"@site/i18n/ja/docusaurus-plugin-content-docs/current/get-started/cheatsheet.mdx",sourceDirName:"get-started",slug:"/get-started/cheatsheet",permalink:"/ja/docs/get-started/cheatsheet",draft:!1,unlisted:!0,editUrl:"https://github.com/feature-sliced/documentation/edit/master/i18n/ja/docusaurus-plugin-content-docs/current/get-started/cheatsheet.mdx",tags:[],version:"current",lastUpdatedAt:1728325386e3,frontMatter:{unlisted:!0},sidebar:"getstartedSidebar"},d={},o=[{value:"\u30ec\u30a4\u30e4\u30fc\u306e\u9078\u629e",id:"choosing-a-layer",level:2},{value:"\u4f8b",id:"examples",level:2},{value:"\u30c4\u30a4\u30fc\u30c8",id:"\u30c4\u30a4\u30fc\u30c8",level:3},{value:"GitHub",id:"github",level:3},{value:"\u53c2\u7167",id:"see-also",level:2}];function l(e){const t={a:"a",h1:"h1",h2:"h2",h3:"h3",header:"header",img:"img",li:"li",p:"p",ul:"ul",...(0,a.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.header,{children:(0,n.jsx)(t.h1,{id:"\u5206\u89e3\u306e\u30c1\u30fc\u30c8\u30b7\u30fc\u30c8",children:"\u5206\u89e3\u306e\u30c1\u30fc\u30c8\u30b7\u30fc\u30c8"})}),"\n",(0,n.jsx)(t.p,{children:"\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\u3092\u30ec\u30a4\u30e4\u30fc\u306b\u5206\u5272\u3059\u308b\u969b\u306e\u53c2\u8003\u66f8\u3068\u3057\u3066\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u4ee5\u4e0b\u306bPDF\u30d0\u30fc\u30b8\u30e7\u30f3\u3082\u3042\u308a\u3001\u5370\u5237\u3057\u3066\u6795\u306e\u4e0b\u306b\u7f6e\u3044\u3066\u304a\u304f\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002"}),"\n",(0,n.jsx)(t.h2,{id:"choosing-a-layer",children:"\u30ec\u30a4\u30e4\u30fc\u306e\u9078\u629e"}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.a,{target:"_blank","data-noBrokenLinkCheck":!0,href:s(9603).A+"",children:"PDF\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9"})}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"\u30ec\u30a4\u30e4\u30fc\u306e\u5b9a\u7fa9\u3068\u81ea\u5df1\u30c1\u30a7\u30c3\u30af\u306e\u8cea\u554f",src:s(4603).A+"",width:"1684",height:"1190"})}),"\n",(0,n.jsx)(t.h2,{id:"examples",children:"\u4f8b"}),"\n",(0,n.jsx)(t.h3,{id:"\u30c4\u30a4\u30fc\u30c8",children:"\u30c4\u30a4\u30fc\u30c8"}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"\u5206\u89e3\u3055\u308c\u305f\u30c4\u30a4\u30fc\u30c8",src:s(8898).A+"",width:"1200",height:"2364"})}),"\n",(0,n.jsx)(t.h3,{id:"github",children:"GitHub"}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"\u5206\u89e3\u3055\u308c\u305fGitHub",src:s(8142).A+"",width:"2291",height:"1080"})}),"\n",(0,n.jsx)(t.h2,{id:"see-also",children:"\u53c2\u7167"}),"\n",(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsx)(t.li,{children:(0,n.jsx)(t.a,{href:"https://www.pluralsight.com/resources/blog/guides/how-to-organize-your-react--redux-codebase",children:"(\u8a18\u4e8b) \u30ed\u30b8\u30c3\u30af\u306e\u5206\u89e3\u306b\u304a\u3051\u308b\u3055\u307e\u3056\u307e\u306a\u30a2\u30d7\u30ed\u30fc\u30c1"})}),"\n"]})]})}function h(e={}){const{wrapper:t}={...(0,a.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(l,{...e})}):l(e)}},9603:(e,t,s)=>{s.d(t,{A:()=>n});const n=s.p+"assets/files/choosing-a-layer-en-12fdf3265c8fc4f6b58687352b81fce7.pdf"},4603:(e,t,s)=>{s.d(t,{A:()=>n});const n=s.p+"assets/images/choosing-a-layer-en-5b67f20bb921ba17d78a56c0dc7654a9.jpg"},8142:(e,t,s)=>{s.d(t,{A:()=>n});const n=s.p+"assets/images/decompose-github-a0eeb839a4b5ef5c480a73726a4451b0.jpg"},8898:(e,t,s)=>{s.d(t,{A:()=>n});const n=s.p+"assets/images/decompose-twitter-7b9a50f879d763c49305b3bf0751ee35.png"},1100:(e,t,s)=>{s.d(t,{R:()=>r,x:()=>c});var n=s(758);const a={},i=n.createContext(a);function r(e){const t=n.useContext(i);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function c(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:r(e.components),n.createElement(i.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/ja/assets/js/06894aee.161a7678.js b/ja/assets/js/06894aee.4fc234ba.js similarity index 98% rename from ja/assets/js/06894aee.161a7678.js rename to ja/assets/js/06894aee.4fc234ba.js index 8a957657c4..62104e289f 100644 --- a/ja/assets/js/06894aee.161a7678.js +++ b/ja/assets/js/06894aee.4fc234ba.js @@ -1 +1 @@ -"use strict";(self.webpackChunk_feature_sliced_documentation=self.webpackChunk_feature_sliced_documentation||[]).push([[1083],{1928:(e,t,i)=>{i.d(t,{Ay:()=>u,RM:()=>o});var s=i(6070),n=i(1100),r=(i(758),i(6783)),d=i(7765);const a=e=>{let{ticket:t}=e;const i=`https://github.com/feature-sliced/documentation/issues/${t}`;return(0,s.jsxs)("div",{children:[(0,s.jsx)("p",{children:(0,d.T)({id:"shared.wip.title"})}),(0,s.jsx)("p",{children:(0,d.T)({id:"shared.wip.subtitle"})}),(0,s.jsxs)("ul",{children:[(0,s.jsxs)("li",{children:[(0,d.T)({id:"shared.wip.var.feedback.base"}),(0,s.jsx)(r.A,{to:i,children:(0,d.T)({id:"shared.wip.var.feedback.link"})})]}),(0,s.jsxs)("li",{children:[(0,d.T)({id:"shared.wip.var.material.base"}),(0,s.jsx)(r.A,{to:"https://t.me/feature_sliced",children:(0,d.T)({id:"shared.wip.var.material.link"})})]}),(0,s.jsxs)("li",{children:[(0,d.T)({id:"shared.wip.var.contribute.base"}),(0,s.jsx)(r.A,{to:"https://github.com/feature-sliced/documentation/blob/master/CONTRIBUTING.md",children:(0,d.T)({id:"shared.wip.var.contribute.link"})})]})]}),(0,s.jsx)("br",{}),(0,s.jsx)("p",{children:(0,s.jsx)("i",{children:"\ud83c\udf70 Stay tuned!"})})]})},o=[];function c(e){const t={admonition:"admonition",...(0,n.R)(),...e.components};return(0,s.jsx)(t.admonition,{title:"WIP",type:"caution",children:(0,s.jsx)(a,{ticket:e.ticket})})}function u(e={}){const{wrapper:t}={...(0,n.R)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(c,{...e})}):c(e)}},6840:(e,t,i)=>{i.r(t),i.d(t,{assets:()=>c,contentTitle:()=>a,default:()=>p,frontMatter:()=>d,metadata:()=>o,toc:()=>u});var s=i(6070),n=i(1100),r=i(1928);const d={sidebar_position:5,sidebar_class_name:"sidebar-item--wip",unlisted:!0},a="\u81ea\u52d5\u88dc\u5b8c",o={id:"guides/examples/autocompleted",title:"\u81ea\u52d5\u88dc\u5b8c",description:"",source:"@site/i18n/ja/docusaurus-plugin-content-docs/current/guides/examples/autocompleted.mdx",sourceDirName:"guides/examples",slug:"/guides/examples/autocompleted",permalink:"/ja/docs/guides/examples/autocompleted",draft:!1,unlisted:!0,editUrl:"https://github.com/feature-sliced/documentation/edit/master/i18n/ja/docusaurus-plugin-content-docs/current/guides/examples/autocompleted.mdx",tags:[],version:"current",lastUpdatedAt:1727607766e3,sidebarPosition:5,frontMatter:{sidebar_position:5,sidebar_class_name:"sidebar-item--wip",unlisted:!0},sidebar:"guidesSidebar"},c={},u=[...r.RM];function l(e){const t={h1:"h1",header:"header",...(0,n.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(t.header,{children:(0,s.jsx)(t.h1,{id:"\u81ea\u52d5\u88dc\u5b8c",children:"\u81ea\u52d5\u88dc\u5b8c"})}),"\n",(0,s.jsx)(r.Ay,{ticket:"170"})]})}function p(e={}){const{wrapper:t}={...(0,n.R)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(l,{...e})}):l(e)}},1100:(e,t,i)=>{i.d(t,{R:()=>d,x:()=>a});var s=i(758);const n={},r=s.createContext(n);function d(e){const t=s.useContext(r);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:d(e.components),s.createElement(r.Provider,{value:t},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunk_feature_sliced_documentation=self.webpackChunk_feature_sliced_documentation||[]).push([[1083],{1928:(e,t,i)=>{i.d(t,{Ay:()=>u,RM:()=>o});var s=i(6070),n=i(1100),r=(i(758),i(6783)),d=i(7765);const a=e=>{let{ticket:t}=e;const i=`https://github.com/feature-sliced/documentation/issues/${t}`;return(0,s.jsxs)("div",{children:[(0,s.jsx)("p",{children:(0,d.T)({id:"shared.wip.title"})}),(0,s.jsx)("p",{children:(0,d.T)({id:"shared.wip.subtitle"})}),(0,s.jsxs)("ul",{children:[(0,s.jsxs)("li",{children:[(0,d.T)({id:"shared.wip.var.feedback.base"}),(0,s.jsx)(r.A,{to:i,children:(0,d.T)({id:"shared.wip.var.feedback.link"})})]}),(0,s.jsxs)("li",{children:[(0,d.T)({id:"shared.wip.var.material.base"}),(0,s.jsx)(r.A,{to:"https://t.me/feature_sliced",children:(0,d.T)({id:"shared.wip.var.material.link"})})]}),(0,s.jsxs)("li",{children:[(0,d.T)({id:"shared.wip.var.contribute.base"}),(0,s.jsx)(r.A,{to:"https://github.com/feature-sliced/documentation/blob/master/CONTRIBUTING.md",children:(0,d.T)({id:"shared.wip.var.contribute.link"})})]})]}),(0,s.jsx)("br",{}),(0,s.jsx)("p",{children:(0,s.jsx)("i",{children:"\ud83c\udf70 Stay tuned!"})})]})},o=[];function c(e){const t={admonition:"admonition",...(0,n.R)(),...e.components};return(0,s.jsx)(t.admonition,{title:"WIP",type:"caution",children:(0,s.jsx)(a,{ticket:e.ticket})})}function u(e={}){const{wrapper:t}={...(0,n.R)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(c,{...e})}):c(e)}},6840:(e,t,i)=>{i.r(t),i.d(t,{assets:()=>c,contentTitle:()=>a,default:()=>p,frontMatter:()=>d,metadata:()=>o,toc:()=>u});var s=i(6070),n=i(1100),r=i(1928);const d={sidebar_position:5,sidebar_class_name:"sidebar-item--wip",unlisted:!0},a="\u81ea\u52d5\u88dc\u5b8c",o={id:"guides/examples/autocompleted",title:"\u81ea\u52d5\u88dc\u5b8c",description:"",source:"@site/i18n/ja/docusaurus-plugin-content-docs/current/guides/examples/autocompleted.mdx",sourceDirName:"guides/examples",slug:"/guides/examples/autocompleted",permalink:"/ja/docs/guides/examples/autocompleted",draft:!1,unlisted:!0,editUrl:"https://github.com/feature-sliced/documentation/edit/master/i18n/ja/docusaurus-plugin-content-docs/current/guides/examples/autocompleted.mdx",tags:[],version:"current",lastUpdatedAt:1728325386e3,sidebarPosition:5,frontMatter:{sidebar_position:5,sidebar_class_name:"sidebar-item--wip",unlisted:!0},sidebar:"guidesSidebar"},c={},u=[...r.RM];function l(e){const t={h1:"h1",header:"header",...(0,n.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(t.header,{children:(0,s.jsx)(t.h1,{id:"\u81ea\u52d5\u88dc\u5b8c",children:"\u81ea\u52d5\u88dc\u5b8c"})}),"\n",(0,s.jsx)(r.Ay,{ticket:"170"})]})}function p(e={}){const{wrapper:t}={...(0,n.R)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(l,{...e})}):l(e)}},1100:(e,t,i)=>{i.d(t,{R:()=>d,x:()=>a});var s=i(758);const n={},r=s.createContext(n);function d(e){const t=s.useContext(r);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:d(e.components),s.createElement(r.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/ja/assets/js/0d985d97.72948b33.js b/ja/assets/js/0d985d97.9dfc44db.js similarity index 99% rename from ja/assets/js/0d985d97.72948b33.js rename to ja/assets/js/0d985d97.9dfc44db.js index d02cfd1f4a..818d588b95 100644 --- a/ja/assets/js/0d985d97.72948b33.js +++ b/ja/assets/js/0d985d97.9dfc44db.js @@ -1 +1 @@ -"use strict";(self.webpackChunk_feature_sliced_documentation=self.webpackChunk_feature_sliced_documentation||[]).push([[6823],{917:(e,s,i)=>{i.r(s),i.d(s,{assets:()=>h,contentTitle:()=>d,default:()=>t,frontMatter:()=>r,metadata:()=>c,toc:()=>o});var n=i(6070),l=i(1100);const r={sidebar_position:3,sidebar_label:"\u30ab\u30b9\u30bf\u30e0\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u304b\u3089\u306e\u79fb\u884c"},d="\u30ab\u30b9\u30bf\u30e0\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u304b\u3089\u306e\u79fb\u884c",c={id:"guides/migration/from-custom",title:"\u30ab\u30b9\u30bf\u30e0\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u304b\u3089\u306e\u79fb\u884c",description:"\u3053\u306e\u30ac\u30a4\u30c9\u306f\u3001\u30ab\u30b9\u30bf\u30e0\u306e\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u304b\u3089Feature-Sliced Design\u3078\u306e\u79fb\u884c\u306b\u5f79\u7acb\u3064\u30a2\u30d7\u30ed\u30fc\u30c1\u3092\u8aac\u660e\u3057\u307e\u3059\u3002",source:"@site/i18n/ja/docusaurus-plugin-content-docs/current/guides/migration/from-custom.md",sourceDirName:"guides/migration",slug:"/guides/migration/from-custom",permalink:"/ja/docs/guides/migration/from-custom",draft:!1,unlisted:!1,editUrl:"https://github.com/feature-sliced/documentation/edit/master/i18n/ja/docusaurus-plugin-content-docs/current/guides/migration/from-custom.md",tags:[],version:"current",lastUpdatedAt:1727607766e3,sidebarPosition:3,frontMatter:{sidebar_position:3,sidebar_label:"\u30ab\u30b9\u30bf\u30e0\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u304b\u3089\u306e\u79fb\u884c"},sidebar:"guidesSidebar",previous:{title:"\u30da\u30fc\u30b8\u30ec\u30a4\u30a2\u30a6\u30c8",permalink:"/ja/docs/guides/examples/page-layout"},next:{title:"v1\u304b\u3089\u306e\u79fb\u884c",permalink:"/ja/docs/guides/migration/from-v1"}},h={},o=[{value:"\u958b\u59cb\u524d\u306b",id:"before-you-start",level:2},{value:"\u30b9\u30c6\u30c3\u30d7\uff11\u3002\u30b3\u30fc\u30c9\u3092\u30da\u30fc\u30b8\u3054\u3068\u306b\u5206\u5272\u3059\u308b",id:"divide-code-by-pages",level:2},{value:"\u30b9\u30c6\u30c3\u30d7\uff12\u3002 \u30da\u30fc\u30b8\u4ee5\u5916\u306e\u3059\u3079\u3066\u3092\u5206\u96e2\u3059\u308b",id:"separate-everything-else-from-pages",level:2},{value:"\u30b9\u30c6\u30c3\u30d7\uff13\u3002 \u30da\u30fc\u30b8\u9593\u306e\u30af\u30ed\u30b9\u30a4\u30f3\u30dd\u30fc\u30c8\u3092\u89e3\u6d88\u3059\u308b",id:"tackle-cross-imports-between-pages",level:2},{value:"\u30b9\u30c6\u30c3\u30d7\uff14\u3002 Shared\u5c64\u3092\u5206\u89e3\u3059\u308b",id:"unpack-shared-layer",level:2},{value:"\u30b9\u30c6\u30c3\u30d7\uff15\u3002 \u30b3\u30fc\u30c9\u3092\u6280\u8853\u7684\u306a\u76ee\u7684\u306b\u57fa\u3065\u3044\u3066\u6574\u7406\u3059\u308b",id:"organize-by-technical-purpose",level:2},{value:"\u4efb\u610f\u306e\u30b9\u30c6\u30c3\u30d7",id:"optional-steps",level:2},{value:"\u30b9\u30c6\u30c3\u30d7\uff16\u3002 \u8907\u6570\u306e\u30da\u30fc\u30b8\u3067\u4f7f\u7528\u3055\u308c\u308bRedux\u30b9\u30e9\u30a4\u30b9\u304b\u3089\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3/\u30d5\u30a3\u30fc\u30c1\u30e3\u30fc\u3092\u5f62\u6210\u3059\u308b",id:"form-entities-features-from-redux",level:3},{value:"\u30b9\u30c6\u30c3\u30d7\uff17\u3002 \u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u30ea\u30d5\u30a1\u30af\u30bf\u30ea\u30f3\u30b0\u3059\u308b",id:"refactor-your-modules",level:3},{value:"\u30b9\u30c6\u30c3\u30d78\u3002 shared/ui\u306bUI\u57fa\u76e4\u3092\u6b63\u3057\u304f\u5f62\u6210\u3059\u308b",id:"form-clean-ui-foundation",level:3}];function x(e){const s={a:"a",admonition:"admonition",code:"code",em:"em",h1:"h1",h2:"h2",h3:"h3",header:"header",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,l.R)(),...e.components},{Details:i}=s;return i||function(e,s){throw new Error("Expected "+(s?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(s.header,{children:(0,n.jsx)(s.h1,{id:"\u30ab\u30b9\u30bf\u30e0\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u304b\u3089\u306e\u79fb\u884c",children:"\u30ab\u30b9\u30bf\u30e0\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u304b\u3089\u306e\u79fb\u884c"})}),"\n",(0,n.jsx)(s.p,{children:"\u3053\u306e\u30ac\u30a4\u30c9\u306f\u3001\u30ab\u30b9\u30bf\u30e0\u306e\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u304b\u3089Feature-Sliced Design\u3078\u306e\u79fb\u884c\u306b\u5f79\u7acb\u3064\u30a2\u30d7\u30ed\u30fc\u30c1\u3092\u8aac\u660e\u3057\u307e\u3059\u3002"}),"\n",(0,n.jsx)(s.p,{children:"\u4ee5\u4e0b\u306f\u3001\u5178\u578b\u7684\u306a\u30ab\u30b9\u30bf\u30e0\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u306e\u30d5\u30a9\u30eb\u30c0\u69cb\u9020\u3067\u3059\u3002\u3053\u306e\u30ac\u30a4\u30c9\u3067\u306f\u3001\u3053\u308c\u3092\u4f8b\u3068\u3057\u3066\u4f7f\u7528\u3057\u307e\u3059\u3002\u30d5\u30a9\u30eb\u30c0\u306e\u5185\u5bb9\u304c\u898b\u3048\u308b\u3088\u3046\u306b\u3001\u30d5\u30a9\u30eb\u30c0\u306e\u6a2a\u306b\u3042\u308b\u9752\u3044\u77e2\u5370\u3092\u30af\u30ea\u30c3\u30af\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002"}),"\n",(0,n.jsxs)(i,{className:"file-tree",children:[(0,n.jsx)("summary",{children:"\ud83d\udcc1 src"}),(0,n.jsxs)("ul",{children:[(0,n.jsx)("li",{children:(0,n.jsxs)(i,{className:"file-tree",children:[(0,n.jsx)("summary",{children:"\ud83d\udcc1 actions"}),(0,n.jsxs)("ul",{children:[(0,n.jsx)("li",{children:"\ud83d\udcc1 product"}),(0,n.jsx)("li",{children:"\ud83d\udcc1 order"})]})]})}),(0,n.jsx)("li",{children:"\ud83d\udcc1 api"}),(0,n.jsx)("li",{children:"\ud83d\udcc1 components"}),(0,n.jsx)("li",{children:"\ud83d\udcc1 containers"}),(0,n.jsx)("li",{children:"\ud83d\udcc1 constants"}),(0,n.jsx)("li",{children:"\ud83d\udcc1 i18n"}),(0,n.jsx)("li",{children:"\ud83d\udcc1 modules"}),(0,n.jsx)("li",{children:"\ud83d\udcc1 helpers"}),(0,n.jsx)("li",{children:(0,n.jsxs)(i,{className:"file-tree",children:[(0,n.jsx)("summary",{children:"\ud83d\udcc1 routes"}),(0,n.jsxs)("ul",{children:[(0,n.jsx)("li",{children:"\ud83d\udcc1 products.jsx"}),(0,n.jsx)("li",{children:"\ud83d\udcc4 products.[id].jsx"})]})]})}),(0,n.jsx)("li",{children:"\ud83d\udcc1 utils"}),(0,n.jsx)("li",{children:"\ud83d\udcc1 reducers"}),(0,n.jsx)("li",{children:"\ud83d\udcc1 selectors"}),(0,n.jsx)("li",{children:"\ud83d\udcc1 styles"}),(0,n.jsx)("li",{children:"\ud83d\udcc4 App.jsx"}),(0,n.jsx)("li",{children:"\ud83d\udcc4 index.js"})]})]}),"\n",(0,n.jsx)(s.h2,{id:"before-you-start",children:"\u958b\u59cb\u524d\u306b"}),"\n",(0,n.jsx)(s.p,{children:"Feature-Sliced Design\u3078\u306e\u79fb\u884c\u3092\u691c\u8a0e\u3059\u308b\u969b\u306b\u3001\u30c1\u30fc\u30e0\u306b\u6700\u3082\u91cd\u8981\u306a\u8cea\u554f\u306f\u300c\u672c\u5f53\u306b\u5fc5\u8981\u304b\uff1f\u300d\u3067\u3059\u3002\u79c1\u305f\u3061\u306fFeature-Sliced Design\u304c\u597d\u304d\u3067\u3059\u304c\u3001\u3044\u304f\u3064\u304b\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306f\u305d\u308c\u306a\u3057\u3067\u3046\u307e\u304f\u3044\u3051\u308b\u3053\u3068\u3092\u8a8d\u3081\u3066\u3044\u307e\u3059\u3002"}),"\n",(0,n.jsx)(s.p,{children:"\u79fb\u884c\u3092\u691c\u8a0e\u3059\u3079\u304d\u7406\u7531\u306f\u3044\u304f\u3064\u304b\u3042\u308a\u307e\u3059\u3002"}),"\n",(0,n.jsxs)(s.ol,{children:["\n",(0,n.jsx)(s.li,{children:"\u65b0\u3057\u3044\u30c1\u30fc\u30e0\u30e1\u30f3\u30d0\u30fc\u304c\u751f\u7523\u7684\u306a\u30ec\u30d9\u30eb\u306b\u9054\u3059\u308b\u306e\u304c\u96e3\u3057\u3044\u3068\u4e0d\u6e80\u3092\u8a00\u3046\u3002"}),"\n",(0,n.jsxs)(s.li,{children:["\u30b3\u30fc\u30c9\u306e\u4e00\u90e8\u3092\u5909\u66f4\u3059\u308b\u3068\u3001",(0,n.jsx)(s.strong,{children:"\u3057\u3070\u3057\u3070"}),"\u4ed6\u306e\u7121\u95a2\u4fc2\u306a\u90e8\u5206\u304c\u58ca\u308c\u308b\u3002"]}),"\n",(0,n.jsx)(s.li,{children:"\u5de8\u5927\u306a\u30b3\u30fc\u30c9\u30d9\u30fc\u30b9\u306e\u305f\u3081\u3001\u65b0\u3057\u3044\u6a5f\u80fd\u3092\u8ffd\u52a0\u3059\u308b\u306e\u304c\u96e3\u3057\u3044\u3002"}),"\n"]}),"\n",(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.strong,{children:"\u540c\u50da\u306e\u610f\u306b\u53cd\u3057\u3066FSD\u306b\u79fb\u884c\u3059\u308b\u3053\u3068\u306f\u907f\u3051\u3066\u304f\u3060\u3055\u3044"}),"\u3002\u305f\u3068\u3048\u3042\u306a\u305f\u304c\u30c1\u30fc\u30e0\u30ea\u30fc\u30c0\u30fc\u3067\u3042\u3063\u3066\u3082\u3001\u307e\u305a\u306f\u540c\u50da\u3092\u8aac\u5f97\u3057\u3001\u79fb\u884c\u306e\u5229\u70b9\u304c\u30b3\u30b9\u30c8\u3092\u4e0a\u56de\u308b\u3053\u3068\u3092\u7406\u89e3\u3055\u305b\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002"]}),"\n",(0,n.jsx)(s.p,{children:"\u307e\u305f\u3001\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u306e\u5909\u66f4\u306f\u3001\u77ac\u6642\u306b\u306f\u7d4c\u55b6\u9663\u306b\u306f\u898b\u3048\u306a\u3044\u3053\u3068\u3092\u899a\u3048\u3066\u304a\u3044\u3066\u304f\u3060\u3055\u3044\u3002\u59cb\u3081\u308b\u524d\u306b\u3001\u7d4c\u55b6\u9663\u304c\u79fb\u884c\u3092\u652f\u6301\u3057\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3001\u3053\u306e\u79fb\u884c\u304c\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u3069\u306e\u3088\u3046\u306b\u5f79\u7acb\u3064\u304b\u3092\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044\u3002"}),"\n",(0,n.jsxs)(s.admonition,{type:"tip",children:[(0,n.jsx)(s.p,{children:"\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u30de\u30cd\u30fc\u30b8\u30e3\u30fc\u3092FSD\u306e\u6709\u7528\u6027\u306b\u7d0d\u5f97\u3055\u305b\u308b\u305f\u3081\u306e\u30a2\u30a4\u30c7\u30a2\u3092\u3044\u304f\u3064\u304b\u7d39\u4ecb\u3057\u307e\u3059\u3002"}),(0,n.jsxs)(s.ol,{children:["\n",(0,n.jsx)(s.li,{children:"FSD\u3078\u306e\u79fb\u884c\u306f\u6bb5\u968e\u7684\u306b\u884c\u3048\u308b\u305f\u3081\u3001\u65b0\u6a5f\u80fd\u306e\u958b\u767a\u3092\u6b62\u3081\u308b\u3053\u3068\u306f\u3042\u308a\u307e\u305b\u3093\u3002"}),"\n",(0,n.jsx)(s.li,{children:"\u826f\u3044\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u306f\u3001\u65b0\u3057\u3044\u958b\u767a\u8005\u304c\u751f\u7523\u6027\u3092\u9054\u6210\u3059\u308b\u306e\u306b\u304b\u304b\u308b\u6642\u9593\u3092\u5927\u5e45\u306b\u77ed\u7e2e\u3067\u304d\u307e\u3059\u3002"}),"\n",(0,n.jsx)(s.li,{children:"FSD\u306f\u6587\u66f8\u5316\u3055\u308c\u305f\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u3067\u3042\u308b\u305f\u3081\u3001\u30c1\u30fc\u30e0\u306f\u72ec\u81ea\u306e\u6587\u66f8\u3092\u7dad\u6301\u3059\u308b\u305f\u3081\u306b\u5e38\u306b\u6642\u9593\u3092\u8cbb\u3084\u3059\u5fc5\u8981\u304c\u3042\u308a\u307e\u305b\u3093\u3002"}),"\n"]})]}),"\n",(0,n.jsx)(s.hr,{}),"\n",(0,n.jsxs)(s.p,{children:["\u3082\u3057\u79fb\u884c\u3092\u59cb\u3081\u308b\u6c7a\u65ad\u3092\u3057\u305f\u5834\u5408\u3001\u6700\u521d\u306b\u884c\u3046\u3079\u304d\u3053\u3068\u306f",(0,n.jsx)(s.code,{children:"\ud83d\udcc1 src"}),"\u306e\u30a8\u30a4\u30ea\u30a2\u30b9\u3092\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u3067\u3059\u3002\u3053\u308c\u306f\u3001\u5f8c\u3067\u4e0a\u4f4d\u30d5\u30a9\u30eb\u30c0\u3092\u53c2\u7167\u3059\u308b\u306e\u306b\u4fbf\u5229\u3067\u3059\u3002\u4ee5\u964d\u306e\u30c6\u30ad\u30b9\u30c8\u3067\u306f\u3001",(0,n.jsx)(s.code,{children:"@"}),"\u3092",(0,n.jsx)(s.code,{children:"./src"}),"\u306e\u30a8\u30a4\u30ea\u30a2\u30b9\u3068\u3057\u3066\u6271\u3044\u307e\u3059\u3002"]}),"\n",(0,n.jsx)(s.h2,{id:"divide-code-by-pages",children:"\u30b9\u30c6\u30c3\u30d7\uff11\u3002\u30b3\u30fc\u30c9\u3092\u30da\u30fc\u30b8\u3054\u3068\u306b\u5206\u5272\u3059\u308b"}),"\n",(0,n.jsxs)(s.p,{children:["\u307b\u3068\u3093\u3069\u306e\u30ab\u30b9\u30bf\u30e0\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u306f\u3001\u30ed\u30b8\u30c3\u30af\u306e\u30b5\u30a4\u30ba\u306b\u95a2\u4fc2\u306a\u304f\u3001\u3059\u3067\u306b\u30da\u30fc\u30b8\u3054\u3068\u306b\u5206\u5272\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u3082\u3057",(0,n.jsx)(s.code,{children:"\ud83d\udcc1 pages"}),"\u304c\u3059\u3067\u306b\u5b58\u5728\u3059\u308b\u5834\u5408\u306f\u3001\u3053\u306e\u30b9\u30c6\u30c3\u30d7\u3092\u30b9\u30ad\u30c3\u30d7\u3067\u304d\u307e\u3059\u3002"]}),"\n",(0,n.jsxs)(s.p,{children:["\u3082\u3057",(0,n.jsx)(s.code,{children:"\ud83d\udcc1 routes"}),"\u3057\u304b\u306a\u3044\u5834\u5408\u306f\u3001",(0,n.jsx)(s.code,{children:"\ud83d\udcc1 pages"}),"\u3092\u4f5c\u6210\u3057\u3001\u3067\u304d\u308b\u3060\u3051\u591a\u304f\u306e\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u30b3\u30fc\u30c9\u3092",(0,n.jsx)(s.code,{children:"\ud83d\udcc1 routes"}),"\u304b\u3089\u79fb\u52d5\u3055\u305b\u3066\u307f\u3066\u304f\u3060\u3055\u3044\u3002\u7406\u60f3\u7684\u306b\u306f\u3001\u5c0f\u3055\u306a\u30eb\u30fc\u30c8\u30d5\u30a1\u30a4\u30eb\u3068\u5927\u304d\u306a\u30da\u30fc\u30b8\u30d5\u30a1\u30a4\u30eb\u304c\u3042\u308b\u3053\u3068\u3067\u3059\u3002\u30b3\u30fc\u30c9\u3092\u79fb\u52d5\u3055\u305b\u308b\u969b\u306b\u306f\u3001\u5404\u30da\u30fc\u30b8\u306e\u305f\u3081\u306e\u30d5\u30a9\u30eb\u30c0\u3092\u4f5c\u6210\u3057\u3001\u305d\u306e\u4e2d\u306b\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u30d5\u30a1\u30a4\u30eb\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002"]}),"\n",(0,n.jsx)(s.admonition,{type:"note",children:(0,n.jsx)(s.p,{children:"\u73fe\u6642\u70b9\u3067\u306f\u3001\u30da\u30fc\u30b8\u540c\u58eb\u304c\u4e92\u3044\u306b\u30a4\u30f3\u30dd\u30fc\u30c8\u3059\u308b\u3053\u3068\u306f\u554f\u984c\u3042\u308a\u307e\u305b\u3093\u3002\u5f8c\u3067\u3053\u308c\u3089\u306e\u4f9d\u5b58\u95a2\u4fc2\u3092\u89e3\u6d88\u3059\u308b\u305f\u3081\u306e\u5225\u306e\u30b9\u30c6\u30c3\u30d7\u304c\u3042\u308a\u307e\u3059\u3002\u4eca\u306f\u30da\u30fc\u30b8\u3054\u3068\u306e\u660e\u78ba\u306a\u5206\u5272\u3092\u78ba\u7acb\u3059\u308b\u3053\u3068\u306b\u96c6\u4e2d\u3057\u307e\u3059\u3002"})}),"\n",(0,n.jsx)(s.p,{children:"\u30eb\u30fc\u30c8\u30d5\u30a1\u30a4\u30eb"}),"\n",(0,n.jsx)(s.pre,{children:(0,n.jsx)(s.code,{className:"language-js",metastring:'title="src/routes/products.[id].js"',children:'export { ProductPage as default } from "@/pages/product"\n'})}),"\n",(0,n.jsx)(s.p,{children:"\u30da\u30fc\u30b8\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u30d5\u30a1\u30a4\u30eb"}),"\n",(0,n.jsx)(s.pre,{children:(0,n.jsx)(s.code,{className:"language-js",metastring:'title="src/pages/product/index.js"',children:'export { ProductPage } from "./ProductPage.jsx"\n'})}),"\n",(0,n.jsx)(s.p,{children:"\u30da\u30fc\u30b8\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u30d5\u30a1\u30a4\u30eb"}),"\n",(0,n.jsx)(s.pre,{children:(0,n.jsx)(s.code,{className:"language-jsx",metastring:'title="src/pages/product/ProductPage.jsx"',children:"export function ProductPage(props) {\n return
;\n}\n"})}),"\n",(0,n.jsx)(s.h2,{id:"separate-everything-else-from-pages",children:"\u30b9\u30c6\u30c3\u30d7\uff12\u3002 \u30da\u30fc\u30b8\u4ee5\u5916\u306e\u3059\u3079\u3066\u3092\u5206\u96e2\u3059\u308b"}),"\n",(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.code,{children:"\ud83d\udcc1 src/shared"}),"\u30d5\u30a9\u30eb\u30c0\u3092\u4f5c\u6210\u3057\u3001",(0,n.jsx)(s.code,{children:"\ud83d\udcc1 pages"}),"\u3084",(0,n.jsx)(s.code,{children:"\ud83d\udcc1 routes"}),"\u304b\u3089\u30a4\u30f3\u30dd\u30fc\u30c8\u3055\u308c\u306a\u3044\u3059\u3079\u3066\u3092\u305d\u3053\u306b\u79fb\u52d5\u3057\u307e\u3059\u3002",(0,n.jsx)(s.code,{children:"\ud83d\udcc1 src/app"}),"\u30d5\u30a9\u30eb\u30c0\u3092\u4f5c\u6210\u3057\u3001\u30da\u30fc\u30b8\u3084\u30eb\u30fc\u30c8\u3092\u30a4\u30f3\u30dd\u30fc\u30c8\u3059\u308b\u3059\u3079\u3066\u3092\u305d\u3053\u306b\u79fb\u52d5\u3057\u307e\u3059\u3002"]}),"\n",(0,n.jsx)(s.p,{children:"Shared\u5c64\u306b\u306f\u30b9\u30e9\u30a4\u30b9\u304c\u306a\u3044\u3053\u3068\u3092\u899a\u3048\u3066\u304a\u3044\u3066\u304f\u3060\u3055\u3044\u3002\u3057\u305f\u304c\u3063\u3066\u3001\u30bb\u30b0\u30e1\u30f3\u30c8\u306f\u4e92\u3044\u306b\u30a4\u30f3\u30dd\u30fc\u30c8\u3067\u304d\u307e\u3059\u3002"}),"\n",(0,n.jsx)(s.p,{children:"\u6700\u7d42\u7684\u306b\u306f\u3001\u6b21\u306e\u3088\u3046\u306a\u30d5\u30a1\u30a4\u30eb\u69cb\u9020\u306b\u306a\u308b\u306f\u305a\u3067\u3059\u3002"}),"\n",(0,n.jsxs)(i,{className:"file-tree",open:!0,children:[(0,n.jsx)("summary",{children:"\ud83d\udcc1 src"}),(0,n.jsxs)("ul",{children:[(0,n.jsx)("li",{children:(0,n.jsxs)(i,{className:"file-tree",children:[(0,n.jsx)("summary",{children:"\ud83d\udcc1 app"}),(0,n.jsxs)("ul",{children:[(0,n.jsx)("li",{children:(0,n.jsxs)(i,{className:"file-tree",children:[(0,n.jsx)("summary",{children:"\ud83d\udcc1 routes"}),(0,n.jsxs)("ul",{children:[(0,n.jsx)("li",{children:"\ud83d\udcc4 products.jsx"}),(0,n.jsx)("li",{children:"\ud83d\udcc4 products.[id].jsx"})]})]})}),(0,n.jsx)("li",{children:"\ud83d\udcc4 App.jsx"}),(0,n.jsx)("li",{children:"\ud83d\udcc4 index.js"})]})]})}),(0,n.jsx)("li",{children:(0,n.jsxs)(i,{className:"file-tree",children:[(0,n.jsx)("summary",{children:"\ud83d\udcc1 pages"}),(0,n.jsxs)("ul",{children:[(0,n.jsx)("li",{children:(0,n.jsxs)(i,{className:"file-tree",children:[(0,n.jsx)("summary",{children:"\ud83d\udcc1 product"}),(0,n.jsxs)("ul",{children:[(0,n.jsx)("li",{children:(0,n.jsxs)(i,{className:"file-tree",children:[(0,n.jsx)("summary",{children:"\ud83d\udcc1 ui"}),(0,n.jsx)("ul",{children:(0,n.jsx)("li",{children:"\ud83d\udcc4 ProductPage.jsx"})})]})}),(0,n.jsx)("li",{children:"\ud83d\udcc4 index.js"})]})]})}),(0,n.jsx)("li",{children:"\ud83d\udcc1 catalog"})]})]})}),(0,n.jsx)("li",{children:(0,n.jsxs)(i,{className:"file-tree",children:[(0,n.jsx)("summary",{children:"\ud83d\udcc1 shared"}),(0,n.jsxs)("ul",{children:[(0,n.jsx)("li",{children:"\ud83d\udcc1 actions"}),(0,n.jsx)("li",{children:"\ud83d\udcc1 api"}),(0,n.jsx)("li",{children:"\ud83d\udcc1 components"}),(0,n.jsx)("li",{children:"\ud83d\udcc1 containers"}),(0,n.jsx)("li",{children:"\ud83d\udcc1 constants"}),(0,n.jsx)("li",{children:"\ud83d\udcc1 i18n"}),(0,n.jsx)("li",{children:"\ud83d\udcc1 modules"}),(0,n.jsx)("li",{children:"\ud83d\udcc1 helpers"}),(0,n.jsx)("li",{children:"\ud83d\udcc1 utils"}),(0,n.jsx)("li",{children:"\ud83d\udcc1 reducers"}),(0,n.jsx)("li",{children:"\ud83d\udcc1 selectors"}),(0,n.jsx)("li",{children:"\ud83d\udcc1 styles"})]})]})})]})]}),"\n",(0,n.jsx)(s.h2,{id:"tackle-cross-imports-between-pages",children:"\u30b9\u30c6\u30c3\u30d7\uff13\u3002 \u30da\u30fc\u30b8\u9593\u306e\u30af\u30ed\u30b9\u30a4\u30f3\u30dd\u30fc\u30c8\u3092\u89e3\u6d88\u3059\u308b"}),"\n",(0,n.jsx)(s.p,{children:"\u3042\u308b\u30da\u30fc\u30b8\u304c\u4ed6\u306e\u30da\u30fc\u30b8\u304b\u3089\u4f55\u304b\u3092\u30a4\u30f3\u30dd\u30fc\u30c8\u3057\u3066\u3044\u308b\u3059\u3079\u3066\u306e\u7b87\u6240\u3092\u898b\u3064\u3051\u3001\u6b21\u306e\u3044\u305a\u308c\u304b\u3092\u884c\u3044\u307e\u3059\u3002"}),"\n",(0,n.jsxs)(s.ol,{children:["\n",(0,n.jsx)(s.li,{children:"\u30a4\u30f3\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u308b\u30b3\u30fc\u30c9\u3092\u4f9d\u5b58\u3059\u308b\u30da\u30fc\u30b8\u306b\u30b3\u30d4\u30fc\u3057\u3066\u3001\u4f9d\u5b58\u95a2\u4fc2\u3092\u53d6\u308a\u9664\u304f\u3002"}),"\n",(0,n.jsxs)(s.li,{children:["\u30b3\u30fc\u30c9\u3092Shared\u5c64\u306e\u9069\u5207\u306a\u30bb\u30b0\u30e1\u30f3\u30c8\u306b\u79fb\u52d5\u3059\u308b","\n",(0,n.jsxs)(s.ul,{children:["\n",(0,n.jsxs)(s.li,{children:["UI\u30ad\u30c3\u30c8\u306e\u4e00\u90e8\u3067\u3042\u308c\u3070\u3001",(0,n.jsx)(s.code,{children:"\ud83d\udcc1 shared/ui"}),"\u306b\u79fb\u52d5\u3002"]}),"\n",(0,n.jsxs)(s.li,{children:["\u8a2d\u5b9a\u306e\u5b9a\u6570\u3067\u3042\u308c\u3070\u3001",(0,n.jsx)(s.code,{children:"\ud83d\udcc1 shared/config"}),"\u306b\u79fb\u52d5\u3002"]}),"\n",(0,n.jsxs)(s.li,{children:["\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u3068\u306e\u3084\u308a\u53d6\u308a\u3067\u3042\u308c\u3070\u3001",(0,n.jsx)(s.code,{children:"\ud83d\udcc1 shared/api"}),"\u306b\u79fb\u52d5\u3002"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,n.jsxs)(s.admonition,{type:"note",children:[(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.strong,{children:"\u30b3\u30d4\u30fc\u81ea\u4f53\u306f\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u306e\u554f\u984c\u3067\u306f\u3042\u308a\u307e\u305b\u3093"}),"\u3002\u5b9f\u969b\u3001\u6642\u306b\u306f\u65b0\u3057\u3044\u518d\u5229\u7528\u53ef\u80fd\u306a\u30e2\u30b8\u30e5\u30fc\u30eb\u306b\u4f55\u304b\u3092\u62bd\u8c61\u5316\u3059\u308b\u3088\u308a\u3082\u3001\u4f55\u304b\u3092\u8907\u88fd\u3059\u308b\u65b9\u304c\u6b63\u3057\u3044\u5834\u5408\u3082\u3042\u308a\u307e\u3059\u3002\u30da\u30fc\u30b8\u306e\u5171\u901a\u90e8\u5206\u304c\u7570\u306a\u3063\u3066\u304f\u308b\u3053\u3068\u304c\u3042\u308b\u305f\u3081\u3001\u305d\u306e\u5834\u5408\u3001\u4f9d\u5b58\u95a2\u4fc2\u304c\u59a8\u3052\u306b\u306a\u3089\u306a\u3044\u3088\u3046\u306b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002"]}),(0,n.jsx)(s.p,{children:'\u305f\u3060\u3057\u3001DRY\uff08"don\'t repeat yourself" \u2014 "\u7e70\u308a\u8fd4\u3055\u306a\u3044"\uff09\u306e\u539f\u5247\u306b\u306f\u610f\u5473\u304c\u3042\u308b\u305f\u3081\u3001\u30d3\u30b8\u30cd\u30b9\u30ed\u30b8\u30c3\u30af\u3092\u30b3\u30d4\u30fc\u3057\u306a\u3044\u3088\u3046\u306b\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u305d\u3046\u3057\u306a\u3044\u3068\u3001\u30d0\u30b0\u3092\u8907\u6570\u306e\u7b87\u6240\u3067\u4fee\u6b63\u3059\u308b\u3053\u3068\u306b\u306a\u308b\u3053\u3068\u3092\u982d\u306b\u5165\u308c\u3066\u304a\u304f\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002'})]}),"\n",(0,n.jsx)(s.h2,{id:"unpack-shared-layer",children:"\u30b9\u30c6\u30c3\u30d7\uff14\u3002 Shared\u5c64\u3092\u5206\u89e3\u3059\u308b"}),"\n",(0,n.jsx)(s.p,{children:"\u3053\u306e\u6bb5\u968e\u3067\u306f\u3001Shared\u5c64\u306b\u591a\u304f\u306e\u3082\u306e\u304c\u5165\u3063\u3066\u3044\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u304c\u3001\u4e00\u822c\u7684\u306b\u306f\u305d\u306e\u3088\u3046\u306a\u72b6\u6cc1\u3092\u907f\u3051\u308b\u3079\u304d\u3067\u3059\u3002\u7406\u7531\u306f\u3001Shared\u5c64\u306b\u4f9d\u5b58\u3057\u3066\u3044\u308b\u4ed6\u306e\u5c64\u306b\u3042\u308b\u30b3\u30fc\u30c9\u304c\u5b58\u5728\u3057\u3066\u3044\u308b\u53ef\u80fd\u6027\u304c\u3042\u308b\u305f\u3081\u3001\u305d\u3053\u306b\u5909\u66f4\u3092\u52a0\u3048\u308b\u3053\u3068\u306f\u4e88\u671f\u3057\u306a\u3044\u7d50\u679c\u3092\u5f15\u304d\u8d77\u3053\u3059\u53ef\u80fd\u6027\u304c\u9ad8\u304f\u306a\u308a\u307e\u3059\u3002"}),"\n",(0,n.jsxs)(s.p,{children:["\u7279\u5b9a\u306e\u30da\u30fc\u30b8\u3067\u306e\u307f\u4f7f\u7528\u3055\u308c\u308b\u3059\u3079\u3066\u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u898b\u3064\u3051\u3001\u305d\u308c\u3089\u3092\u305d\u306e\u30da\u30fc\u30b8\u306e\u30b9\u30e9\u30a4\u30b9\u306b\u79fb\u52d5\u3057\u307e\u3059\u3002\u305d\u3057\u3066\u3001",(0,n.jsx)(s.em,{children:"\u3053\u308c\u306b\u306f\u30a2\u30af\u30b7\u30e7\u30f3\u3001\u30ea\u30c7\u30e5\u30fc\u30b5\u30fc\u3001\u30bb\u30ec\u30af\u30bf\u30fc\u3082\u542b\u307e\u308c\u307e\u3059"}),"\u3002\u3059\u3079\u3066\u306e\u30a2\u30af\u30b7\u30e7\u30f3\u3092\u4e00\u7dd2\u306b\u30b0\u30eb\u30fc\u30d7\u5316\u3059\u308b\u3053\u3068\u306b\u306f\u610f\u5473\u304c\u3042\u308a\u307e\u305b\u3093\u304c\u3001\u95a2\u9023\u3059\u308b\u30a2\u30af\u30b7\u30e7\u30f3\u3092\u305d\u306e\u4f7f\u7528\u5834\u6240\u306e\u8fd1\u304f\u306b\u7f6e\u304f\u3053\u3068\u306b\u306f\u610f\u5473\u304c\u3042\u308a\u307e\u3059\u3002"]}),"\n",(0,n.jsx)(s.p,{children:"\u6700\u7d42\u7684\u306b\u306f\u3001\u6b21\u306e\u3088\u3046\u306a\u30d5\u30a1\u30a4\u30eb\u69cb\u9020\u306b\u306a\u308b\u306f\u305a\u3067\u3059\u3002"}),"\n",(0,n.jsxs)(i,{className:"file-tree",open:!0,children:[(0,n.jsx)("summary",{children:"\ud83d\udcc1 src"}),(0,n.jsxs)("ul",{children:[(0,n.jsx)("li",{children:"\ud83d\udcc1 app (\u5909\u66f4\u306a\u3057)"}),(0,n.jsx)("li",{children:(0,n.jsxs)(i,{className:"file-tree",open:!0,children:[(0,n.jsx)("summary",{children:"\ud83d\udcc1 pages"}),(0,n.jsxs)("ul",{children:[(0,n.jsx)("li",{children:(0,n.jsxs)(i,{className:"file-tree",open:!0,children:[(0,n.jsx)("summary",{children:"\ud83d\udcc1 product"}),(0,n.jsxs)("ul",{children:[(0,n.jsx)("li",{children:"\ud83d\udcc1 actions"}),(0,n.jsx)("li",{children:"\ud83d\udcc1 reducers"}),(0,n.jsx)("li",{children:"\ud83d\udcc1 selectors"}),(0,n.jsx)("li",{children:(0,n.jsxs)(i,{className:"file-tree",children:[(0,n.jsx)("summary",{children:"\ud83d\udcc1 ui"}),(0,n.jsxs)("ul",{children:[(0,n.jsx)("li",{children:"\ud83d\udcc4 Component.jsx"}),(0,n.jsx)("li",{children:"\ud83d\udcc4 Container.jsx"}),(0,n.jsx)("li",{children:"\ud83d\udcc4 ProductPage.jsx"})]})]})}),(0,n.jsx)("li",{children:"\ud83d\udcc4 index.js"})]})]})}),(0,n.jsx)("li",{children:"\ud83d\udcc1 catalog"})]})]})}),(0,n.jsx)("li",{children:(0,n.jsxs)(i,{className:"file-tree",children:[(0,n.jsx)("summary",{children:"\ud83d\udcc1 shared (\u518d\u5229\u7528\u3055\u308c\u308b\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u307f)"}),(0,n.jsxs)("ul",{children:[(0,n.jsx)("li",{children:"\ud83d\udcc1 actions"}),(0,n.jsx)("li",{children:"\ud83d\udcc1 api"}),(0,n.jsx)("li",{children:"\ud83d\udcc1 components"}),(0,n.jsx)("li",{children:"\ud83d\udcc1 containers"}),(0,n.jsx)("li",{children:"\ud83d\udcc1 constants"}),(0,n.jsx)("li",{children:"\ud83d\udcc1 i18n"}),(0,n.jsx)("li",{children:"\ud83d\udcc1 modules"}),(0,n.jsx)("li",{children:"\ud83d\udcc1 helpers"}),(0,n.jsx)("li",{children:"\ud83d\udcc1 utils"}),(0,n.jsx)("li",{children:"\ud83d\udcc1 reducers"}),(0,n.jsx)("li",{children:"\ud83d\udcc1 selectors"}),(0,n.jsx)("li",{children:"\ud83d\udcc1 styles"})]})]})})]})]}),"\n",(0,n.jsx)(s.h2,{id:"organize-by-technical-purpose",children:"\u30b9\u30c6\u30c3\u30d7\uff15\u3002 \u30b3\u30fc\u30c9\u3092\u6280\u8853\u7684\u306a\u76ee\u7684\u306b\u57fa\u3065\u3044\u3066\u6574\u7406\u3059\u308b"}),"\n",(0,n.jsxs)(s.p,{children:["FSD\u3067\u306f\u3001\u6280\u8853\u7684\u306a\u76ee\u7684\u306b\u57fa\u3065\u304f\u5206\u5272\u304c",(0,n.jsx)("i",{children:"\u30bb\u30b0\u30e1\u30f3\u30c8"}),"\u306b\u3088\u3063\u3066\u884c\u308f\u308c\u307e\u3059\u3002\u3088\u304f\u898b\u3089\u308c\u308b\u30bb\u30b0\u30e1\u30f3\u30c8\u306f\u3044\u304f\u3064\u304b\u3042\u308a\u307e\u3059\u3002"]}),"\n",(0,n.jsxs)(s.ul,{children:["\n",(0,n.jsxs)(s.li,{children:[(0,n.jsx)(s.code,{children:"ui"})," \u2014 \u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\u306e\u8868\u793a\u306b\u95a2\u9023\u3059\u308b\u3059\u3079\u3066: UI\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u3001\u65e5\u4ed8\u306e\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u3001\u30b9\u30bf\u30a4\u30eb\u306a\u3069\u3002"]}),"\n",(0,n.jsxs)(s.li,{children:[(0,n.jsx)(s.code,{children:"api"})," \u2014 \u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u3068\u306e\u3084\u308a\u53d6\u308a: \u30ea\u30af\u30a8\u30b9\u30c8\u95a2\u6570\u3001\u30c7\u30fc\u30bf\u578b\u3001\u30de\u30c3\u30d1\u30fc\u306a\u3069\u3002"]}),"\n",(0,n.jsxs)(s.li,{children:[(0,n.jsx)(s.code,{children:"model"})," \u2014 \u30c7\u30fc\u30bf\u30e2\u30c7\u30eb: \u30b9\u30ad\u30fc\u30de\u3001\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\u3001\u30b9\u30c8\u30ec\u30fc\u30b8\u3001\u30d3\u30b8\u30cd\u30b9\u30ed\u30b8\u30c3\u30af\u3002"]}),"\n",(0,n.jsxs)(s.li,{children:[(0,n.jsx)(s.code,{children:"lib"})," \u2014 \u4ed6\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u306b\u5fc5\u8981\u306a\u30e9\u30a4\u30d6\u30e9\u30ea\u30b3\u30fc\u30c9\u3002"]}),"\n",(0,n.jsxs)(s.li,{children:[(0,n.jsx)(s.code,{children:"config"})," \u2014 \u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3084\u30d5\u30a3\u30fc\u30c1\u30e3\u30fc\u30d5\u30e9\u30b0\u3002"]}),"\n"]}),"\n",(0,n.jsxs)(s.p,{children:["\u5fc5\u8981\u306b\u5fdc\u3058\u3066\u72ec\u81ea\u306e\u30bb\u30b0\u30e1\u30f3\u30c8\u3092\u4f5c\u6210\u3067\u304d\u307e\u3059\u3002\u305f\u3060\u3057\u3001\u30b3\u30fc\u30c9\u3092\u305d\u306e\u6027\u8cea\u306b\u3088\u3063\u3066\u30b0\u30eb\u30fc\u30d7\u5316\u3059\u308b\u30bb\u30b0\u30e1\u30f3\u30c8\uff08\u4f8b: ",(0,n.jsx)(s.code,{children:"components"}),"\u3001",(0,n.jsx)(s.code,{children:"actions"}),"\u3001",(0,n.jsx)(s.code,{children:"types"}),"\u3001",(0,n.jsx)(s.code,{children:"utils"}),"\uff09\u3092\u4f5c\u6210\u3057\u306a\u3044\u3088\u3046\u306b\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u4ee3\u308f\u308a\u306b\u3001\u30b3\u30fc\u30c9\u306e\u76ee\u7684\u306b\u57fa\u3065\u3044\u3066\u30b0\u30eb\u30fc\u30d7\u5316\u3057\u3066\u304f\u3060\u3055\u3044\u3002"]}),"\n",(0,n.jsxs)(s.p,{children:["\u30da\u30fc\u30b8\u306e\u30b3\u30fc\u30c9\u3092\u30bb\u30b0\u30e1\u30f3\u30c8\u306b\u518d\u5206\u914d\u3057\u307e\u3059\u3002\u3059\u3067\u306b",(0,n.jsx)(s.code,{children:"ui"}),"\u30bb\u30b0\u30e1\u30f3\u30c8\u304c\u3042\u308b\u306f\u305a\u306a\u306e\u3067\u3001\u4eca\u306f\u4ed6\u306e\u30bb\u30b0\u30e1\u30f3\u30c8\uff08\u4f8b\u3048\u3070\u3001\u30a2\u30af\u30b7\u30e7\u30f3\u3001\u30ea\u30c7\u30e5\u30fc\u30b5\u30fc\u3001\u30bb\u30ec\u30af\u30bf\u30fc\u306e\u305f\u3081\u306e",(0,n.jsx)(s.code,{children:"model"}),"\u3084\u3001\u30b5\u30f3\u30af\u3084\u30df\u30e5\u30fc\u30c6\u30fc\u30b7\u30e7\u30f3\u306e\u305f\u3081\u306e",(0,n.jsx)(s.code,{children:"api"}),"\uff09\u3092\u4f5c\u6210\u3059\u308b\u3068\u304d\u3067\u3059\u3002"]}),"\n",(0,n.jsx)(s.p,{children:"\u307e\u305f\u3001Shared\u5c64\u3092\u518d\u5206\u914d\u3057\u3066\u3001\u6b21\u306e\u30d5\u30a9\u30eb\u30c0\u3092\u524a\u9664\u3057\u307e\u3059\u3002"}),"\n",(0,n.jsxs)(s.ul,{children:["\n",(0,n.jsxs)(s.li,{children:[(0,n.jsx)(s.code,{children:"\ud83d\udcc1 components"}),"\u3001",(0,n.jsx)(s.code,{children:"\ud83d\udcc1 containers"})," \u2014 \u305d\u306e\u5185\u5bb9\u306e\u307b\u3068\u3093\u3069\u306f",(0,n.jsx)(s.code,{children:"\ud83d\udcc1 shared/ui"}),"\u306b\u306a\u308b\u3079\u304d\u3067\u3059\u3002"]}),"\n",(0,n.jsxs)(s.li,{children:[(0,n.jsx)(s.code,{children:"\ud83d\udcc1 helpers"}),"\u3001",(0,n.jsx)(s.code,{children:"\ud83d\udcc1 utils"})," \u2014 \u518d\u5229\u7528\u53ef\u80fd\u306a\u30d8\u30eb\u30d1\u30fc\u95a2\u6570\u304c\u6b8b\u3063\u3066\u3044\u308b\u5834\u5408\u306f\u3001\u76ee\u7684\u306b\u57fa\u3065\u3044\u3066\u30b0\u30eb\u30fc\u30d7\u5316\u3057\u3001\u3053\u308c\u3089\u306e\u30b0\u30eb\u30fc\u30d7\u3092",(0,n.jsx)(s.code,{children:"\ud83d\udcc1 shared/lib"}),"\u306b\u79fb\u52d5\u3057\u307e\u3059\u3002"]}),"\n",(0,n.jsxs)(s.li,{children:[(0,n.jsx)(s.code,{children:"\ud83d\udcc1 constants"})," \u2014 \u540c\u69d8\u306b\u3001\u76ee\u7684\u306b\u57fa\u3065\u3044\u3066\u30b0\u30eb\u30fc\u30d7\u5316\u3057\u3001",(0,n.jsx)(s.code,{children:"\ud83d\udcc1 shared/config"}),"\u306b\u79fb\u52d5\u3057\u307e\u3059\u3002"]}),"\n"]}),"\n",(0,n.jsx)(s.h2,{id:"optional-steps",children:"\u4efb\u610f\u306e\u30b9\u30c6\u30c3\u30d7"}),"\n",(0,n.jsx)(s.h3,{id:"form-entities-features-from-redux",children:"\u30b9\u30c6\u30c3\u30d7\uff16\u3002 \u8907\u6570\u306e\u30da\u30fc\u30b8\u3067\u4f7f\u7528\u3055\u308c\u308bRedux\u30b9\u30e9\u30a4\u30b9\u304b\u3089\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3/\u30d5\u30a3\u30fc\u30c1\u30e3\u30fc\u3092\u5f62\u6210\u3059\u308b"}),"\n",(0,n.jsx)(s.p,{children:"\u901a\u5e38\u3001\u3053\u308c\u3089\u306e\u518d\u5229\u7528\u53ef\u80fd\u306aRedux\u30b9\u30e9\u30a4\u30b9\u306f\u3001\u30d3\u30b8\u30cd\u30b9\u306b\u95a2\u9023\u3059\u308b\u4f55\u304b\u3092\u8aac\u660e\u3057\u307e\u3059\uff08\u4f8b\u3048\u3070\u3001\u30d7\u30ed\u30c0\u30af\u30c8\u3084\u30e6\u30fc\u30b6\u30fc\u306a\u3069\uff09\u3002\u3057\u305f\u304c\u3063\u3066\u3001\u305d\u308c\u3089\u3092\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u5c64\u306b\u79fb\u52d5\u3067\u304d\u307e\u3059\u30021\u3064\u306e\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u306b\u3064\u304d1\u3064\u306e\u30d5\u30a9\u30eb\u30c0\u3067\u3059\u3002Redux\u30b9\u30e9\u30a4\u30b9\u304c\u3001\u30e6\u30fc\u30b6\u30fc\u304c\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3067\u5b9f\u884c\u3057\u305f\u3044\u30a2\u30af\u30b7\u30e7\u30f3\u306b\u95a2\u9023\u3057\u3066\u3044\u308b\u5834\u5408\uff08\u4f8b\u3048\u3070\u3001\u30b3\u30e1\u30f3\u30c8\u306a\u3069\uff09\u3001\u305d\u308c\u3092\u30d5\u30a3\u30fc\u30c1\u30e3\u30fc\u5c64\u306b\u79fb\u52d5\u3067\u304d\u307e\u3059\u3002"}),"\n",(0,n.jsxs)(s.p,{children:["\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u3068\u30d5\u30a3\u30fc\u30c1\u30e3\u30fc\u306f\u4e92\u3044\u306b\u72ec\u7acb\u3057\u3066\u3044\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u30d3\u30b8\u30cd\u30b9\u9818\u57df\u306b\u7d44\u307f\u8fbc\u307e\u308c\u305f\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u9593\u306e\u95a2\u4fc2\u304c\u3042\u308b\u5834\u5408\u306f\u3001",(0,n.jsx)(s.a,{href:"/docs/guides/examples/types#business-entities-and-their-cross-references",children:"\u30d3\u30b8\u30cd\u30b9\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u306b\u95a2\u3059\u308b\u30ac\u30a4\u30c9"}),"\u3092\u53c2\u7167\u3057\u3066\u3001\u3053\u308c\u3089\u306e\u95a2\u4fc2\u3092\u6574\u7406\u3059\u308b\u65b9\u6cd5\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002"]}),"\n",(0,n.jsxs)(s.p,{children:["\u3053\u308c\u3089\u306e\u30b9\u30e9\u30a4\u30b9\u306b\u95a2\u9023\u3059\u308bAPI\u95a2\u6570\u306f\u3001",(0,n.jsx)(s.code,{children:"\ud83d\udcc1 shared/api"}),"\u306b\u6b8b\u3059\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002"]}),"\n",(0,n.jsx)(s.h3,{id:"refactor-your-modules",children:"\u30b9\u30c6\u30c3\u30d7\uff17\u3002 \u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u30ea\u30d5\u30a1\u30af\u30bf\u30ea\u30f3\u30b0\u3059\u308b"}),"\n",(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.code,{children:"\ud83d\udcc1 modules"}),"\u30d5\u30a9\u30eb\u30c0\u306f\u901a\u5e38\u3001\u30d3\u30b8\u30cd\u30b9\u30ed\u30b8\u30c3\u30af\u306b\u4f7f\u7528\u3055\u308c\u308b\u305f\u3081\u3001\u3059\u3067\u306bFSD\u306e\u30d5\u30a3\u30fc\u30c1\u30e3\u30fc\u5c64\u306b\u4f3c\u305f\u6027\u8cea\u3092\u6301\u3063\u3066\u3044\u307e\u3059\u3002\u4e00\u90e8\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u306f\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u5927\u304d\u306a\u90e8\u5206\uff08\u4f8b\u3048\u3070\u3001\u30a2\u30d7\u30ea\u306e\u30d8\u30c3\u30c0\u30fc\u306a\u3069\uff09\u3092\u8aac\u660e\u3059\u308b\u3053\u3068\u3082\u3042\u308a\u307e\u3059\u3002\u3053\u306e\u5834\u5408\u3001\u305d\u308c\u3089\u3092\u30a6\u30a3\u30b8\u30a7\u30c3\u30c8\u5c64\u306b\u79fb\u52d5\u3067\u304d\u307e\u3059\u3002"]}),"\n",(0,n.jsxs)(s.h3,{id:"form-clean-ui-foundation",children:["\u30b9\u30c6\u30c3\u30d78\u3002 ",(0,n.jsx)(s.code,{children:"shared/ui"}),"\u306bUI\u57fa\u76e4\u3092\u6b63\u3057\u304f\u5f62\u6210\u3059\u308b"]}),"\n",(0,n.jsxs)(s.p,{children:["\u7406\u60f3\u7684\u306b\u306f\u3001",(0,n.jsx)(s.code,{children:"\ud83d\udcc1 shared/ui"}),"\u306b\u306f\u30d3\u30b8\u30cd\u30b9\u30ed\u30b8\u30c3\u30af\u304c\u542b\u307e\u308c\u3066\u3044\u306a\u3044UI\u8981\u7d20\u306e\u30bb\u30c3\u30c8\u304c\u542b\u307e\u308c\u308b\u3079\u304d\u3067\u3059\u3002\u307e\u305f\u3001\u975e\u5e38\u306b\u518d\u5229\u7528\u53ef\u80fd\u3067\u3042\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002"]}),"\n",(0,n.jsxs)(s.p,{children:["\u4ee5\u524d",(0,n.jsx)(s.code,{children:"\ud83d\udcc1 components"}),"\u3084",(0,n.jsx)(s.code,{children:"\ud83d\udcc1 containers"}),"\u306b\u3042\u3063\u305fUI\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u3092\u30ea\u30d5\u30a1\u30af\u30bf\u30ea\u30f3\u30b0\u3057\u3066\u3001\u30d3\u30b8\u30cd\u30b9\u30ed\u30b8\u30c3\u30af\u3092\u5206\u96e2\u3057\u307e\u3059\u3002\u3053\u306e\u30d3\u30b8\u30cd\u30b9\u30ed\u30b8\u30c3\u30af\u3092\u4e0a\u4f4d\u5c64\u306b\u79fb\u52d5\u3057\u307e\u3059\u3002\u3042\u307e\u308a\u591a\u304f\u306e\u5834\u6240\u3067\u4f7f\u7528\u3055\u308c\u3066\u3044\u306a\u3044\u5834\u5408\u306f\u3001\u30b3\u30d4\u30fc\u3092\u691c\u8a0e\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002"]})]})}function t(e={}){const{wrapper:s}={...(0,l.R)(),...e.components};return s?(0,n.jsx)(s,{...e,children:(0,n.jsx)(x,{...e})}):x(e)}},1100:(e,s,i)=>{i.d(s,{R:()=>d,x:()=>c});var n=i(758);const l={},r=n.createContext(l);function d(e){const s=n.useContext(r);return n.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function c(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(l):e.components||l:d(e.components),n.createElement(r.Provider,{value:s},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunk_feature_sliced_documentation=self.webpackChunk_feature_sliced_documentation||[]).push([[6823],{917:(e,s,i)=>{i.r(s),i.d(s,{assets:()=>h,contentTitle:()=>d,default:()=>t,frontMatter:()=>r,metadata:()=>c,toc:()=>o});var n=i(6070),l=i(1100);const r={sidebar_position:3,sidebar_label:"\u30ab\u30b9\u30bf\u30e0\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u304b\u3089\u306e\u79fb\u884c"},d="\u30ab\u30b9\u30bf\u30e0\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u304b\u3089\u306e\u79fb\u884c",c={id:"guides/migration/from-custom",title:"\u30ab\u30b9\u30bf\u30e0\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u304b\u3089\u306e\u79fb\u884c",description:"\u3053\u306e\u30ac\u30a4\u30c9\u306f\u3001\u30ab\u30b9\u30bf\u30e0\u306e\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u304b\u3089Feature-Sliced Design\u3078\u306e\u79fb\u884c\u306b\u5f79\u7acb\u3064\u30a2\u30d7\u30ed\u30fc\u30c1\u3092\u8aac\u660e\u3057\u307e\u3059\u3002",source:"@site/i18n/ja/docusaurus-plugin-content-docs/current/guides/migration/from-custom.md",sourceDirName:"guides/migration",slug:"/guides/migration/from-custom",permalink:"/ja/docs/guides/migration/from-custom",draft:!1,unlisted:!1,editUrl:"https://github.com/feature-sliced/documentation/edit/master/i18n/ja/docusaurus-plugin-content-docs/current/guides/migration/from-custom.md",tags:[],version:"current",lastUpdatedAt:1728325386e3,sidebarPosition:3,frontMatter:{sidebar_position:3,sidebar_label:"\u30ab\u30b9\u30bf\u30e0\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u304b\u3089\u306e\u79fb\u884c"},sidebar:"guidesSidebar",previous:{title:"\u30da\u30fc\u30b8\u30ec\u30a4\u30a2\u30a6\u30c8",permalink:"/ja/docs/guides/examples/page-layout"},next:{title:"v1\u304b\u3089\u306e\u79fb\u884c",permalink:"/ja/docs/guides/migration/from-v1"}},h={},o=[{value:"\u958b\u59cb\u524d\u306b",id:"before-you-start",level:2},{value:"\u30b9\u30c6\u30c3\u30d7\uff11\u3002\u30b3\u30fc\u30c9\u3092\u30da\u30fc\u30b8\u3054\u3068\u306b\u5206\u5272\u3059\u308b",id:"divide-code-by-pages",level:2},{value:"\u30b9\u30c6\u30c3\u30d7\uff12\u3002 \u30da\u30fc\u30b8\u4ee5\u5916\u306e\u3059\u3079\u3066\u3092\u5206\u96e2\u3059\u308b",id:"separate-everything-else-from-pages",level:2},{value:"\u30b9\u30c6\u30c3\u30d7\uff13\u3002 \u30da\u30fc\u30b8\u9593\u306e\u30af\u30ed\u30b9\u30a4\u30f3\u30dd\u30fc\u30c8\u3092\u89e3\u6d88\u3059\u308b",id:"tackle-cross-imports-between-pages",level:2},{value:"\u30b9\u30c6\u30c3\u30d7\uff14\u3002 Shared\u5c64\u3092\u5206\u89e3\u3059\u308b",id:"unpack-shared-layer",level:2},{value:"\u30b9\u30c6\u30c3\u30d7\uff15\u3002 \u30b3\u30fc\u30c9\u3092\u6280\u8853\u7684\u306a\u76ee\u7684\u306b\u57fa\u3065\u3044\u3066\u6574\u7406\u3059\u308b",id:"organize-by-technical-purpose",level:2},{value:"\u4efb\u610f\u306e\u30b9\u30c6\u30c3\u30d7",id:"optional-steps",level:2},{value:"\u30b9\u30c6\u30c3\u30d7\uff16\u3002 \u8907\u6570\u306e\u30da\u30fc\u30b8\u3067\u4f7f\u7528\u3055\u308c\u308bRedux\u30b9\u30e9\u30a4\u30b9\u304b\u3089\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3/\u30d5\u30a3\u30fc\u30c1\u30e3\u30fc\u3092\u5f62\u6210\u3059\u308b",id:"form-entities-features-from-redux",level:3},{value:"\u30b9\u30c6\u30c3\u30d7\uff17\u3002 \u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u30ea\u30d5\u30a1\u30af\u30bf\u30ea\u30f3\u30b0\u3059\u308b",id:"refactor-your-modules",level:3},{value:"\u30b9\u30c6\u30c3\u30d78\u3002 shared/ui\u306bUI\u57fa\u76e4\u3092\u6b63\u3057\u304f\u5f62\u6210\u3059\u308b",id:"form-clean-ui-foundation",level:3}];function x(e){const s={a:"a",admonition:"admonition",code:"code",em:"em",h1:"h1",h2:"h2",h3:"h3",header:"header",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,l.R)(),...e.components},{Details:i}=s;return i||function(e,s){throw new Error("Expected "+(s?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(s.header,{children:(0,n.jsx)(s.h1,{id:"\u30ab\u30b9\u30bf\u30e0\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u304b\u3089\u306e\u79fb\u884c",children:"\u30ab\u30b9\u30bf\u30e0\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u304b\u3089\u306e\u79fb\u884c"})}),"\n",(0,n.jsx)(s.p,{children:"\u3053\u306e\u30ac\u30a4\u30c9\u306f\u3001\u30ab\u30b9\u30bf\u30e0\u306e\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u304b\u3089Feature-Sliced Design\u3078\u306e\u79fb\u884c\u306b\u5f79\u7acb\u3064\u30a2\u30d7\u30ed\u30fc\u30c1\u3092\u8aac\u660e\u3057\u307e\u3059\u3002"}),"\n",(0,n.jsx)(s.p,{children:"\u4ee5\u4e0b\u306f\u3001\u5178\u578b\u7684\u306a\u30ab\u30b9\u30bf\u30e0\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u306e\u30d5\u30a9\u30eb\u30c0\u69cb\u9020\u3067\u3059\u3002\u3053\u306e\u30ac\u30a4\u30c9\u3067\u306f\u3001\u3053\u308c\u3092\u4f8b\u3068\u3057\u3066\u4f7f\u7528\u3057\u307e\u3059\u3002\u30d5\u30a9\u30eb\u30c0\u306e\u5185\u5bb9\u304c\u898b\u3048\u308b\u3088\u3046\u306b\u3001\u30d5\u30a9\u30eb\u30c0\u306e\u6a2a\u306b\u3042\u308b\u9752\u3044\u77e2\u5370\u3092\u30af\u30ea\u30c3\u30af\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002"}),"\n",(0,n.jsxs)(i,{className:"file-tree",children:[(0,n.jsx)("summary",{children:"\ud83d\udcc1 src"}),(0,n.jsxs)("ul",{children:[(0,n.jsx)("li",{children:(0,n.jsxs)(i,{className:"file-tree",children:[(0,n.jsx)("summary",{children:"\ud83d\udcc1 actions"}),(0,n.jsxs)("ul",{children:[(0,n.jsx)("li",{children:"\ud83d\udcc1 product"}),(0,n.jsx)("li",{children:"\ud83d\udcc1 order"})]})]})}),(0,n.jsx)("li",{children:"\ud83d\udcc1 api"}),(0,n.jsx)("li",{children:"\ud83d\udcc1 components"}),(0,n.jsx)("li",{children:"\ud83d\udcc1 containers"}),(0,n.jsx)("li",{children:"\ud83d\udcc1 constants"}),(0,n.jsx)("li",{children:"\ud83d\udcc1 i18n"}),(0,n.jsx)("li",{children:"\ud83d\udcc1 modules"}),(0,n.jsx)("li",{children:"\ud83d\udcc1 helpers"}),(0,n.jsx)("li",{children:(0,n.jsxs)(i,{className:"file-tree",children:[(0,n.jsx)("summary",{children:"\ud83d\udcc1 routes"}),(0,n.jsxs)("ul",{children:[(0,n.jsx)("li",{children:"\ud83d\udcc1 products.jsx"}),(0,n.jsx)("li",{children:"\ud83d\udcc4 products.[id].jsx"})]})]})}),(0,n.jsx)("li",{children:"\ud83d\udcc1 utils"}),(0,n.jsx)("li",{children:"\ud83d\udcc1 reducers"}),(0,n.jsx)("li",{children:"\ud83d\udcc1 selectors"}),(0,n.jsx)("li",{children:"\ud83d\udcc1 styles"}),(0,n.jsx)("li",{children:"\ud83d\udcc4 App.jsx"}),(0,n.jsx)("li",{children:"\ud83d\udcc4 index.js"})]})]}),"\n",(0,n.jsx)(s.h2,{id:"before-you-start",children:"\u958b\u59cb\u524d\u306b"}),"\n",(0,n.jsx)(s.p,{children:"Feature-Sliced Design\u3078\u306e\u79fb\u884c\u3092\u691c\u8a0e\u3059\u308b\u969b\u306b\u3001\u30c1\u30fc\u30e0\u306b\u6700\u3082\u91cd\u8981\u306a\u8cea\u554f\u306f\u300c\u672c\u5f53\u306b\u5fc5\u8981\u304b\uff1f\u300d\u3067\u3059\u3002\u79c1\u305f\u3061\u306fFeature-Sliced Design\u304c\u597d\u304d\u3067\u3059\u304c\u3001\u3044\u304f\u3064\u304b\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306f\u305d\u308c\u306a\u3057\u3067\u3046\u307e\u304f\u3044\u3051\u308b\u3053\u3068\u3092\u8a8d\u3081\u3066\u3044\u307e\u3059\u3002"}),"\n",(0,n.jsx)(s.p,{children:"\u79fb\u884c\u3092\u691c\u8a0e\u3059\u3079\u304d\u7406\u7531\u306f\u3044\u304f\u3064\u304b\u3042\u308a\u307e\u3059\u3002"}),"\n",(0,n.jsxs)(s.ol,{children:["\n",(0,n.jsx)(s.li,{children:"\u65b0\u3057\u3044\u30c1\u30fc\u30e0\u30e1\u30f3\u30d0\u30fc\u304c\u751f\u7523\u7684\u306a\u30ec\u30d9\u30eb\u306b\u9054\u3059\u308b\u306e\u304c\u96e3\u3057\u3044\u3068\u4e0d\u6e80\u3092\u8a00\u3046\u3002"}),"\n",(0,n.jsxs)(s.li,{children:["\u30b3\u30fc\u30c9\u306e\u4e00\u90e8\u3092\u5909\u66f4\u3059\u308b\u3068\u3001",(0,n.jsx)(s.strong,{children:"\u3057\u3070\u3057\u3070"}),"\u4ed6\u306e\u7121\u95a2\u4fc2\u306a\u90e8\u5206\u304c\u58ca\u308c\u308b\u3002"]}),"\n",(0,n.jsx)(s.li,{children:"\u5de8\u5927\u306a\u30b3\u30fc\u30c9\u30d9\u30fc\u30b9\u306e\u305f\u3081\u3001\u65b0\u3057\u3044\u6a5f\u80fd\u3092\u8ffd\u52a0\u3059\u308b\u306e\u304c\u96e3\u3057\u3044\u3002"}),"\n"]}),"\n",(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.strong,{children:"\u540c\u50da\u306e\u610f\u306b\u53cd\u3057\u3066FSD\u306b\u79fb\u884c\u3059\u308b\u3053\u3068\u306f\u907f\u3051\u3066\u304f\u3060\u3055\u3044"}),"\u3002\u305f\u3068\u3048\u3042\u306a\u305f\u304c\u30c1\u30fc\u30e0\u30ea\u30fc\u30c0\u30fc\u3067\u3042\u3063\u3066\u3082\u3001\u307e\u305a\u306f\u540c\u50da\u3092\u8aac\u5f97\u3057\u3001\u79fb\u884c\u306e\u5229\u70b9\u304c\u30b3\u30b9\u30c8\u3092\u4e0a\u56de\u308b\u3053\u3068\u3092\u7406\u89e3\u3055\u305b\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002"]}),"\n",(0,n.jsx)(s.p,{children:"\u307e\u305f\u3001\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u306e\u5909\u66f4\u306f\u3001\u77ac\u6642\u306b\u306f\u7d4c\u55b6\u9663\u306b\u306f\u898b\u3048\u306a\u3044\u3053\u3068\u3092\u899a\u3048\u3066\u304a\u3044\u3066\u304f\u3060\u3055\u3044\u3002\u59cb\u3081\u308b\u524d\u306b\u3001\u7d4c\u55b6\u9663\u304c\u79fb\u884c\u3092\u652f\u6301\u3057\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3001\u3053\u306e\u79fb\u884c\u304c\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u3069\u306e\u3088\u3046\u306b\u5f79\u7acb\u3064\u304b\u3092\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044\u3002"}),"\n",(0,n.jsxs)(s.admonition,{type:"tip",children:[(0,n.jsx)(s.p,{children:"\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u30de\u30cd\u30fc\u30b8\u30e3\u30fc\u3092FSD\u306e\u6709\u7528\u6027\u306b\u7d0d\u5f97\u3055\u305b\u308b\u305f\u3081\u306e\u30a2\u30a4\u30c7\u30a2\u3092\u3044\u304f\u3064\u304b\u7d39\u4ecb\u3057\u307e\u3059\u3002"}),(0,n.jsxs)(s.ol,{children:["\n",(0,n.jsx)(s.li,{children:"FSD\u3078\u306e\u79fb\u884c\u306f\u6bb5\u968e\u7684\u306b\u884c\u3048\u308b\u305f\u3081\u3001\u65b0\u6a5f\u80fd\u306e\u958b\u767a\u3092\u6b62\u3081\u308b\u3053\u3068\u306f\u3042\u308a\u307e\u305b\u3093\u3002"}),"\n",(0,n.jsx)(s.li,{children:"\u826f\u3044\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u306f\u3001\u65b0\u3057\u3044\u958b\u767a\u8005\u304c\u751f\u7523\u6027\u3092\u9054\u6210\u3059\u308b\u306e\u306b\u304b\u304b\u308b\u6642\u9593\u3092\u5927\u5e45\u306b\u77ed\u7e2e\u3067\u304d\u307e\u3059\u3002"}),"\n",(0,n.jsx)(s.li,{children:"FSD\u306f\u6587\u66f8\u5316\u3055\u308c\u305f\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u3067\u3042\u308b\u305f\u3081\u3001\u30c1\u30fc\u30e0\u306f\u72ec\u81ea\u306e\u6587\u66f8\u3092\u7dad\u6301\u3059\u308b\u305f\u3081\u306b\u5e38\u306b\u6642\u9593\u3092\u8cbb\u3084\u3059\u5fc5\u8981\u304c\u3042\u308a\u307e\u305b\u3093\u3002"}),"\n"]})]}),"\n",(0,n.jsx)(s.hr,{}),"\n",(0,n.jsxs)(s.p,{children:["\u3082\u3057\u79fb\u884c\u3092\u59cb\u3081\u308b\u6c7a\u65ad\u3092\u3057\u305f\u5834\u5408\u3001\u6700\u521d\u306b\u884c\u3046\u3079\u304d\u3053\u3068\u306f",(0,n.jsx)(s.code,{children:"\ud83d\udcc1 src"}),"\u306e\u30a8\u30a4\u30ea\u30a2\u30b9\u3092\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u3067\u3059\u3002\u3053\u308c\u306f\u3001\u5f8c\u3067\u4e0a\u4f4d\u30d5\u30a9\u30eb\u30c0\u3092\u53c2\u7167\u3059\u308b\u306e\u306b\u4fbf\u5229\u3067\u3059\u3002\u4ee5\u964d\u306e\u30c6\u30ad\u30b9\u30c8\u3067\u306f\u3001",(0,n.jsx)(s.code,{children:"@"}),"\u3092",(0,n.jsx)(s.code,{children:"./src"}),"\u306e\u30a8\u30a4\u30ea\u30a2\u30b9\u3068\u3057\u3066\u6271\u3044\u307e\u3059\u3002"]}),"\n",(0,n.jsx)(s.h2,{id:"divide-code-by-pages",children:"\u30b9\u30c6\u30c3\u30d7\uff11\u3002\u30b3\u30fc\u30c9\u3092\u30da\u30fc\u30b8\u3054\u3068\u306b\u5206\u5272\u3059\u308b"}),"\n",(0,n.jsxs)(s.p,{children:["\u307b\u3068\u3093\u3069\u306e\u30ab\u30b9\u30bf\u30e0\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u306f\u3001\u30ed\u30b8\u30c3\u30af\u306e\u30b5\u30a4\u30ba\u306b\u95a2\u4fc2\u306a\u304f\u3001\u3059\u3067\u306b\u30da\u30fc\u30b8\u3054\u3068\u306b\u5206\u5272\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u3082\u3057",(0,n.jsx)(s.code,{children:"\ud83d\udcc1 pages"}),"\u304c\u3059\u3067\u306b\u5b58\u5728\u3059\u308b\u5834\u5408\u306f\u3001\u3053\u306e\u30b9\u30c6\u30c3\u30d7\u3092\u30b9\u30ad\u30c3\u30d7\u3067\u304d\u307e\u3059\u3002"]}),"\n",(0,n.jsxs)(s.p,{children:["\u3082\u3057",(0,n.jsx)(s.code,{children:"\ud83d\udcc1 routes"}),"\u3057\u304b\u306a\u3044\u5834\u5408\u306f\u3001",(0,n.jsx)(s.code,{children:"\ud83d\udcc1 pages"}),"\u3092\u4f5c\u6210\u3057\u3001\u3067\u304d\u308b\u3060\u3051\u591a\u304f\u306e\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u30b3\u30fc\u30c9\u3092",(0,n.jsx)(s.code,{children:"\ud83d\udcc1 routes"}),"\u304b\u3089\u79fb\u52d5\u3055\u305b\u3066\u307f\u3066\u304f\u3060\u3055\u3044\u3002\u7406\u60f3\u7684\u306b\u306f\u3001\u5c0f\u3055\u306a\u30eb\u30fc\u30c8\u30d5\u30a1\u30a4\u30eb\u3068\u5927\u304d\u306a\u30da\u30fc\u30b8\u30d5\u30a1\u30a4\u30eb\u304c\u3042\u308b\u3053\u3068\u3067\u3059\u3002\u30b3\u30fc\u30c9\u3092\u79fb\u52d5\u3055\u305b\u308b\u969b\u306b\u306f\u3001\u5404\u30da\u30fc\u30b8\u306e\u305f\u3081\u306e\u30d5\u30a9\u30eb\u30c0\u3092\u4f5c\u6210\u3057\u3001\u305d\u306e\u4e2d\u306b\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u30d5\u30a1\u30a4\u30eb\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002"]}),"\n",(0,n.jsx)(s.admonition,{type:"note",children:(0,n.jsx)(s.p,{children:"\u73fe\u6642\u70b9\u3067\u306f\u3001\u30da\u30fc\u30b8\u540c\u58eb\u304c\u4e92\u3044\u306b\u30a4\u30f3\u30dd\u30fc\u30c8\u3059\u308b\u3053\u3068\u306f\u554f\u984c\u3042\u308a\u307e\u305b\u3093\u3002\u5f8c\u3067\u3053\u308c\u3089\u306e\u4f9d\u5b58\u95a2\u4fc2\u3092\u89e3\u6d88\u3059\u308b\u305f\u3081\u306e\u5225\u306e\u30b9\u30c6\u30c3\u30d7\u304c\u3042\u308a\u307e\u3059\u3002\u4eca\u306f\u30da\u30fc\u30b8\u3054\u3068\u306e\u660e\u78ba\u306a\u5206\u5272\u3092\u78ba\u7acb\u3059\u308b\u3053\u3068\u306b\u96c6\u4e2d\u3057\u307e\u3059\u3002"})}),"\n",(0,n.jsx)(s.p,{children:"\u30eb\u30fc\u30c8\u30d5\u30a1\u30a4\u30eb"}),"\n",(0,n.jsx)(s.pre,{children:(0,n.jsx)(s.code,{className:"language-js",metastring:'title="src/routes/products.[id].js"',children:'export { ProductPage as default } from "@/pages/product"\n'})}),"\n",(0,n.jsx)(s.p,{children:"\u30da\u30fc\u30b8\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u30d5\u30a1\u30a4\u30eb"}),"\n",(0,n.jsx)(s.pre,{children:(0,n.jsx)(s.code,{className:"language-js",metastring:'title="src/pages/product/index.js"',children:'export { ProductPage } from "./ProductPage.jsx"\n'})}),"\n",(0,n.jsx)(s.p,{children:"\u30da\u30fc\u30b8\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u30d5\u30a1\u30a4\u30eb"}),"\n",(0,n.jsx)(s.pre,{children:(0,n.jsx)(s.code,{className:"language-jsx",metastring:'title="src/pages/product/ProductPage.jsx"',children:"export function ProductPage(props) {\n return
;\n}\n"})}),"\n",(0,n.jsx)(s.h2,{id:"separate-everything-else-from-pages",children:"\u30b9\u30c6\u30c3\u30d7\uff12\u3002 \u30da\u30fc\u30b8\u4ee5\u5916\u306e\u3059\u3079\u3066\u3092\u5206\u96e2\u3059\u308b"}),"\n",(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.code,{children:"\ud83d\udcc1 src/shared"}),"\u30d5\u30a9\u30eb\u30c0\u3092\u4f5c\u6210\u3057\u3001",(0,n.jsx)(s.code,{children:"\ud83d\udcc1 pages"}),"\u3084",(0,n.jsx)(s.code,{children:"\ud83d\udcc1 routes"}),"\u304b\u3089\u30a4\u30f3\u30dd\u30fc\u30c8\u3055\u308c\u306a\u3044\u3059\u3079\u3066\u3092\u305d\u3053\u306b\u79fb\u52d5\u3057\u307e\u3059\u3002",(0,n.jsx)(s.code,{children:"\ud83d\udcc1 src/app"}),"\u30d5\u30a9\u30eb\u30c0\u3092\u4f5c\u6210\u3057\u3001\u30da\u30fc\u30b8\u3084\u30eb\u30fc\u30c8\u3092\u30a4\u30f3\u30dd\u30fc\u30c8\u3059\u308b\u3059\u3079\u3066\u3092\u305d\u3053\u306b\u79fb\u52d5\u3057\u307e\u3059\u3002"]}),"\n",(0,n.jsx)(s.p,{children:"Shared\u5c64\u306b\u306f\u30b9\u30e9\u30a4\u30b9\u304c\u306a\u3044\u3053\u3068\u3092\u899a\u3048\u3066\u304a\u3044\u3066\u304f\u3060\u3055\u3044\u3002\u3057\u305f\u304c\u3063\u3066\u3001\u30bb\u30b0\u30e1\u30f3\u30c8\u306f\u4e92\u3044\u306b\u30a4\u30f3\u30dd\u30fc\u30c8\u3067\u304d\u307e\u3059\u3002"}),"\n",(0,n.jsx)(s.p,{children:"\u6700\u7d42\u7684\u306b\u306f\u3001\u6b21\u306e\u3088\u3046\u306a\u30d5\u30a1\u30a4\u30eb\u69cb\u9020\u306b\u306a\u308b\u306f\u305a\u3067\u3059\u3002"}),"\n",(0,n.jsxs)(i,{className:"file-tree",open:!0,children:[(0,n.jsx)("summary",{children:"\ud83d\udcc1 src"}),(0,n.jsxs)("ul",{children:[(0,n.jsx)("li",{children:(0,n.jsxs)(i,{className:"file-tree",children:[(0,n.jsx)("summary",{children:"\ud83d\udcc1 app"}),(0,n.jsxs)("ul",{children:[(0,n.jsx)("li",{children:(0,n.jsxs)(i,{className:"file-tree",children:[(0,n.jsx)("summary",{children:"\ud83d\udcc1 routes"}),(0,n.jsxs)("ul",{children:[(0,n.jsx)("li",{children:"\ud83d\udcc4 products.jsx"}),(0,n.jsx)("li",{children:"\ud83d\udcc4 products.[id].jsx"})]})]})}),(0,n.jsx)("li",{children:"\ud83d\udcc4 App.jsx"}),(0,n.jsx)("li",{children:"\ud83d\udcc4 index.js"})]})]})}),(0,n.jsx)("li",{children:(0,n.jsxs)(i,{className:"file-tree",children:[(0,n.jsx)("summary",{children:"\ud83d\udcc1 pages"}),(0,n.jsxs)("ul",{children:[(0,n.jsx)("li",{children:(0,n.jsxs)(i,{className:"file-tree",children:[(0,n.jsx)("summary",{children:"\ud83d\udcc1 product"}),(0,n.jsxs)("ul",{children:[(0,n.jsx)("li",{children:(0,n.jsxs)(i,{className:"file-tree",children:[(0,n.jsx)("summary",{children:"\ud83d\udcc1 ui"}),(0,n.jsx)("ul",{children:(0,n.jsx)("li",{children:"\ud83d\udcc4 ProductPage.jsx"})})]})}),(0,n.jsx)("li",{children:"\ud83d\udcc4 index.js"})]})]})}),(0,n.jsx)("li",{children:"\ud83d\udcc1 catalog"})]})]})}),(0,n.jsx)("li",{children:(0,n.jsxs)(i,{className:"file-tree",children:[(0,n.jsx)("summary",{children:"\ud83d\udcc1 shared"}),(0,n.jsxs)("ul",{children:[(0,n.jsx)("li",{children:"\ud83d\udcc1 actions"}),(0,n.jsx)("li",{children:"\ud83d\udcc1 api"}),(0,n.jsx)("li",{children:"\ud83d\udcc1 components"}),(0,n.jsx)("li",{children:"\ud83d\udcc1 containers"}),(0,n.jsx)("li",{children:"\ud83d\udcc1 constants"}),(0,n.jsx)("li",{children:"\ud83d\udcc1 i18n"}),(0,n.jsx)("li",{children:"\ud83d\udcc1 modules"}),(0,n.jsx)("li",{children:"\ud83d\udcc1 helpers"}),(0,n.jsx)("li",{children:"\ud83d\udcc1 utils"}),(0,n.jsx)("li",{children:"\ud83d\udcc1 reducers"}),(0,n.jsx)("li",{children:"\ud83d\udcc1 selectors"}),(0,n.jsx)("li",{children:"\ud83d\udcc1 styles"})]})]})})]})]}),"\n",(0,n.jsx)(s.h2,{id:"tackle-cross-imports-between-pages",children:"\u30b9\u30c6\u30c3\u30d7\uff13\u3002 \u30da\u30fc\u30b8\u9593\u306e\u30af\u30ed\u30b9\u30a4\u30f3\u30dd\u30fc\u30c8\u3092\u89e3\u6d88\u3059\u308b"}),"\n",(0,n.jsx)(s.p,{children:"\u3042\u308b\u30da\u30fc\u30b8\u304c\u4ed6\u306e\u30da\u30fc\u30b8\u304b\u3089\u4f55\u304b\u3092\u30a4\u30f3\u30dd\u30fc\u30c8\u3057\u3066\u3044\u308b\u3059\u3079\u3066\u306e\u7b87\u6240\u3092\u898b\u3064\u3051\u3001\u6b21\u306e\u3044\u305a\u308c\u304b\u3092\u884c\u3044\u307e\u3059\u3002"}),"\n",(0,n.jsxs)(s.ol,{children:["\n",(0,n.jsx)(s.li,{children:"\u30a4\u30f3\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u308b\u30b3\u30fc\u30c9\u3092\u4f9d\u5b58\u3059\u308b\u30da\u30fc\u30b8\u306b\u30b3\u30d4\u30fc\u3057\u3066\u3001\u4f9d\u5b58\u95a2\u4fc2\u3092\u53d6\u308a\u9664\u304f\u3002"}),"\n",(0,n.jsxs)(s.li,{children:["\u30b3\u30fc\u30c9\u3092Shared\u5c64\u306e\u9069\u5207\u306a\u30bb\u30b0\u30e1\u30f3\u30c8\u306b\u79fb\u52d5\u3059\u308b","\n",(0,n.jsxs)(s.ul,{children:["\n",(0,n.jsxs)(s.li,{children:["UI\u30ad\u30c3\u30c8\u306e\u4e00\u90e8\u3067\u3042\u308c\u3070\u3001",(0,n.jsx)(s.code,{children:"\ud83d\udcc1 shared/ui"}),"\u306b\u79fb\u52d5\u3002"]}),"\n",(0,n.jsxs)(s.li,{children:["\u8a2d\u5b9a\u306e\u5b9a\u6570\u3067\u3042\u308c\u3070\u3001",(0,n.jsx)(s.code,{children:"\ud83d\udcc1 shared/config"}),"\u306b\u79fb\u52d5\u3002"]}),"\n",(0,n.jsxs)(s.li,{children:["\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u3068\u306e\u3084\u308a\u53d6\u308a\u3067\u3042\u308c\u3070\u3001",(0,n.jsx)(s.code,{children:"\ud83d\udcc1 shared/api"}),"\u306b\u79fb\u52d5\u3002"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,n.jsxs)(s.admonition,{type:"note",children:[(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.strong,{children:"\u30b3\u30d4\u30fc\u81ea\u4f53\u306f\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u306e\u554f\u984c\u3067\u306f\u3042\u308a\u307e\u305b\u3093"}),"\u3002\u5b9f\u969b\u3001\u6642\u306b\u306f\u65b0\u3057\u3044\u518d\u5229\u7528\u53ef\u80fd\u306a\u30e2\u30b8\u30e5\u30fc\u30eb\u306b\u4f55\u304b\u3092\u62bd\u8c61\u5316\u3059\u308b\u3088\u308a\u3082\u3001\u4f55\u304b\u3092\u8907\u88fd\u3059\u308b\u65b9\u304c\u6b63\u3057\u3044\u5834\u5408\u3082\u3042\u308a\u307e\u3059\u3002\u30da\u30fc\u30b8\u306e\u5171\u901a\u90e8\u5206\u304c\u7570\u306a\u3063\u3066\u304f\u308b\u3053\u3068\u304c\u3042\u308b\u305f\u3081\u3001\u305d\u306e\u5834\u5408\u3001\u4f9d\u5b58\u95a2\u4fc2\u304c\u59a8\u3052\u306b\u306a\u3089\u306a\u3044\u3088\u3046\u306b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002"]}),(0,n.jsx)(s.p,{children:'\u305f\u3060\u3057\u3001DRY\uff08"don\'t repeat yourself" \u2014 "\u7e70\u308a\u8fd4\u3055\u306a\u3044"\uff09\u306e\u539f\u5247\u306b\u306f\u610f\u5473\u304c\u3042\u308b\u305f\u3081\u3001\u30d3\u30b8\u30cd\u30b9\u30ed\u30b8\u30c3\u30af\u3092\u30b3\u30d4\u30fc\u3057\u306a\u3044\u3088\u3046\u306b\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u305d\u3046\u3057\u306a\u3044\u3068\u3001\u30d0\u30b0\u3092\u8907\u6570\u306e\u7b87\u6240\u3067\u4fee\u6b63\u3059\u308b\u3053\u3068\u306b\u306a\u308b\u3053\u3068\u3092\u982d\u306b\u5165\u308c\u3066\u304a\u304f\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002'})]}),"\n",(0,n.jsx)(s.h2,{id:"unpack-shared-layer",children:"\u30b9\u30c6\u30c3\u30d7\uff14\u3002 Shared\u5c64\u3092\u5206\u89e3\u3059\u308b"}),"\n",(0,n.jsx)(s.p,{children:"\u3053\u306e\u6bb5\u968e\u3067\u306f\u3001Shared\u5c64\u306b\u591a\u304f\u306e\u3082\u306e\u304c\u5165\u3063\u3066\u3044\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u304c\u3001\u4e00\u822c\u7684\u306b\u306f\u305d\u306e\u3088\u3046\u306a\u72b6\u6cc1\u3092\u907f\u3051\u308b\u3079\u304d\u3067\u3059\u3002\u7406\u7531\u306f\u3001Shared\u5c64\u306b\u4f9d\u5b58\u3057\u3066\u3044\u308b\u4ed6\u306e\u5c64\u306b\u3042\u308b\u30b3\u30fc\u30c9\u304c\u5b58\u5728\u3057\u3066\u3044\u308b\u53ef\u80fd\u6027\u304c\u3042\u308b\u305f\u3081\u3001\u305d\u3053\u306b\u5909\u66f4\u3092\u52a0\u3048\u308b\u3053\u3068\u306f\u4e88\u671f\u3057\u306a\u3044\u7d50\u679c\u3092\u5f15\u304d\u8d77\u3053\u3059\u53ef\u80fd\u6027\u304c\u9ad8\u304f\u306a\u308a\u307e\u3059\u3002"}),"\n",(0,n.jsxs)(s.p,{children:["\u7279\u5b9a\u306e\u30da\u30fc\u30b8\u3067\u306e\u307f\u4f7f\u7528\u3055\u308c\u308b\u3059\u3079\u3066\u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u898b\u3064\u3051\u3001\u305d\u308c\u3089\u3092\u305d\u306e\u30da\u30fc\u30b8\u306e\u30b9\u30e9\u30a4\u30b9\u306b\u79fb\u52d5\u3057\u307e\u3059\u3002\u305d\u3057\u3066\u3001",(0,n.jsx)(s.em,{children:"\u3053\u308c\u306b\u306f\u30a2\u30af\u30b7\u30e7\u30f3\u3001\u30ea\u30c7\u30e5\u30fc\u30b5\u30fc\u3001\u30bb\u30ec\u30af\u30bf\u30fc\u3082\u542b\u307e\u308c\u307e\u3059"}),"\u3002\u3059\u3079\u3066\u306e\u30a2\u30af\u30b7\u30e7\u30f3\u3092\u4e00\u7dd2\u306b\u30b0\u30eb\u30fc\u30d7\u5316\u3059\u308b\u3053\u3068\u306b\u306f\u610f\u5473\u304c\u3042\u308a\u307e\u305b\u3093\u304c\u3001\u95a2\u9023\u3059\u308b\u30a2\u30af\u30b7\u30e7\u30f3\u3092\u305d\u306e\u4f7f\u7528\u5834\u6240\u306e\u8fd1\u304f\u306b\u7f6e\u304f\u3053\u3068\u306b\u306f\u610f\u5473\u304c\u3042\u308a\u307e\u3059\u3002"]}),"\n",(0,n.jsx)(s.p,{children:"\u6700\u7d42\u7684\u306b\u306f\u3001\u6b21\u306e\u3088\u3046\u306a\u30d5\u30a1\u30a4\u30eb\u69cb\u9020\u306b\u306a\u308b\u306f\u305a\u3067\u3059\u3002"}),"\n",(0,n.jsxs)(i,{className:"file-tree",open:!0,children:[(0,n.jsx)("summary",{children:"\ud83d\udcc1 src"}),(0,n.jsxs)("ul",{children:[(0,n.jsx)("li",{children:"\ud83d\udcc1 app (\u5909\u66f4\u306a\u3057)"}),(0,n.jsx)("li",{children:(0,n.jsxs)(i,{className:"file-tree",open:!0,children:[(0,n.jsx)("summary",{children:"\ud83d\udcc1 pages"}),(0,n.jsxs)("ul",{children:[(0,n.jsx)("li",{children:(0,n.jsxs)(i,{className:"file-tree",open:!0,children:[(0,n.jsx)("summary",{children:"\ud83d\udcc1 product"}),(0,n.jsxs)("ul",{children:[(0,n.jsx)("li",{children:"\ud83d\udcc1 actions"}),(0,n.jsx)("li",{children:"\ud83d\udcc1 reducers"}),(0,n.jsx)("li",{children:"\ud83d\udcc1 selectors"}),(0,n.jsx)("li",{children:(0,n.jsxs)(i,{className:"file-tree",children:[(0,n.jsx)("summary",{children:"\ud83d\udcc1 ui"}),(0,n.jsxs)("ul",{children:[(0,n.jsx)("li",{children:"\ud83d\udcc4 Component.jsx"}),(0,n.jsx)("li",{children:"\ud83d\udcc4 Container.jsx"}),(0,n.jsx)("li",{children:"\ud83d\udcc4 ProductPage.jsx"})]})]})}),(0,n.jsx)("li",{children:"\ud83d\udcc4 index.js"})]})]})}),(0,n.jsx)("li",{children:"\ud83d\udcc1 catalog"})]})]})}),(0,n.jsx)("li",{children:(0,n.jsxs)(i,{className:"file-tree",children:[(0,n.jsx)("summary",{children:"\ud83d\udcc1 shared (\u518d\u5229\u7528\u3055\u308c\u308b\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u307f)"}),(0,n.jsxs)("ul",{children:[(0,n.jsx)("li",{children:"\ud83d\udcc1 actions"}),(0,n.jsx)("li",{children:"\ud83d\udcc1 api"}),(0,n.jsx)("li",{children:"\ud83d\udcc1 components"}),(0,n.jsx)("li",{children:"\ud83d\udcc1 containers"}),(0,n.jsx)("li",{children:"\ud83d\udcc1 constants"}),(0,n.jsx)("li",{children:"\ud83d\udcc1 i18n"}),(0,n.jsx)("li",{children:"\ud83d\udcc1 modules"}),(0,n.jsx)("li",{children:"\ud83d\udcc1 helpers"}),(0,n.jsx)("li",{children:"\ud83d\udcc1 utils"}),(0,n.jsx)("li",{children:"\ud83d\udcc1 reducers"}),(0,n.jsx)("li",{children:"\ud83d\udcc1 selectors"}),(0,n.jsx)("li",{children:"\ud83d\udcc1 styles"})]})]})})]})]}),"\n",(0,n.jsx)(s.h2,{id:"organize-by-technical-purpose",children:"\u30b9\u30c6\u30c3\u30d7\uff15\u3002 \u30b3\u30fc\u30c9\u3092\u6280\u8853\u7684\u306a\u76ee\u7684\u306b\u57fa\u3065\u3044\u3066\u6574\u7406\u3059\u308b"}),"\n",(0,n.jsxs)(s.p,{children:["FSD\u3067\u306f\u3001\u6280\u8853\u7684\u306a\u76ee\u7684\u306b\u57fa\u3065\u304f\u5206\u5272\u304c",(0,n.jsx)("i",{children:"\u30bb\u30b0\u30e1\u30f3\u30c8"}),"\u306b\u3088\u3063\u3066\u884c\u308f\u308c\u307e\u3059\u3002\u3088\u304f\u898b\u3089\u308c\u308b\u30bb\u30b0\u30e1\u30f3\u30c8\u306f\u3044\u304f\u3064\u304b\u3042\u308a\u307e\u3059\u3002"]}),"\n",(0,n.jsxs)(s.ul,{children:["\n",(0,n.jsxs)(s.li,{children:[(0,n.jsx)(s.code,{children:"ui"})," \u2014 \u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\u306e\u8868\u793a\u306b\u95a2\u9023\u3059\u308b\u3059\u3079\u3066: UI\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u3001\u65e5\u4ed8\u306e\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u3001\u30b9\u30bf\u30a4\u30eb\u306a\u3069\u3002"]}),"\n",(0,n.jsxs)(s.li,{children:[(0,n.jsx)(s.code,{children:"api"})," \u2014 \u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u3068\u306e\u3084\u308a\u53d6\u308a: \u30ea\u30af\u30a8\u30b9\u30c8\u95a2\u6570\u3001\u30c7\u30fc\u30bf\u578b\u3001\u30de\u30c3\u30d1\u30fc\u306a\u3069\u3002"]}),"\n",(0,n.jsxs)(s.li,{children:[(0,n.jsx)(s.code,{children:"model"})," \u2014 \u30c7\u30fc\u30bf\u30e2\u30c7\u30eb: \u30b9\u30ad\u30fc\u30de\u3001\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\u3001\u30b9\u30c8\u30ec\u30fc\u30b8\u3001\u30d3\u30b8\u30cd\u30b9\u30ed\u30b8\u30c3\u30af\u3002"]}),"\n",(0,n.jsxs)(s.li,{children:[(0,n.jsx)(s.code,{children:"lib"})," \u2014 \u4ed6\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u306b\u5fc5\u8981\u306a\u30e9\u30a4\u30d6\u30e9\u30ea\u30b3\u30fc\u30c9\u3002"]}),"\n",(0,n.jsxs)(s.li,{children:[(0,n.jsx)(s.code,{children:"config"})," \u2014 \u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3084\u30d5\u30a3\u30fc\u30c1\u30e3\u30fc\u30d5\u30e9\u30b0\u3002"]}),"\n"]}),"\n",(0,n.jsxs)(s.p,{children:["\u5fc5\u8981\u306b\u5fdc\u3058\u3066\u72ec\u81ea\u306e\u30bb\u30b0\u30e1\u30f3\u30c8\u3092\u4f5c\u6210\u3067\u304d\u307e\u3059\u3002\u305f\u3060\u3057\u3001\u30b3\u30fc\u30c9\u3092\u305d\u306e\u6027\u8cea\u306b\u3088\u3063\u3066\u30b0\u30eb\u30fc\u30d7\u5316\u3059\u308b\u30bb\u30b0\u30e1\u30f3\u30c8\uff08\u4f8b: ",(0,n.jsx)(s.code,{children:"components"}),"\u3001",(0,n.jsx)(s.code,{children:"actions"}),"\u3001",(0,n.jsx)(s.code,{children:"types"}),"\u3001",(0,n.jsx)(s.code,{children:"utils"}),"\uff09\u3092\u4f5c\u6210\u3057\u306a\u3044\u3088\u3046\u306b\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u4ee3\u308f\u308a\u306b\u3001\u30b3\u30fc\u30c9\u306e\u76ee\u7684\u306b\u57fa\u3065\u3044\u3066\u30b0\u30eb\u30fc\u30d7\u5316\u3057\u3066\u304f\u3060\u3055\u3044\u3002"]}),"\n",(0,n.jsxs)(s.p,{children:["\u30da\u30fc\u30b8\u306e\u30b3\u30fc\u30c9\u3092\u30bb\u30b0\u30e1\u30f3\u30c8\u306b\u518d\u5206\u914d\u3057\u307e\u3059\u3002\u3059\u3067\u306b",(0,n.jsx)(s.code,{children:"ui"}),"\u30bb\u30b0\u30e1\u30f3\u30c8\u304c\u3042\u308b\u306f\u305a\u306a\u306e\u3067\u3001\u4eca\u306f\u4ed6\u306e\u30bb\u30b0\u30e1\u30f3\u30c8\uff08\u4f8b\u3048\u3070\u3001\u30a2\u30af\u30b7\u30e7\u30f3\u3001\u30ea\u30c7\u30e5\u30fc\u30b5\u30fc\u3001\u30bb\u30ec\u30af\u30bf\u30fc\u306e\u305f\u3081\u306e",(0,n.jsx)(s.code,{children:"model"}),"\u3084\u3001\u30b5\u30f3\u30af\u3084\u30df\u30e5\u30fc\u30c6\u30fc\u30b7\u30e7\u30f3\u306e\u305f\u3081\u306e",(0,n.jsx)(s.code,{children:"api"}),"\uff09\u3092\u4f5c\u6210\u3059\u308b\u3068\u304d\u3067\u3059\u3002"]}),"\n",(0,n.jsx)(s.p,{children:"\u307e\u305f\u3001Shared\u5c64\u3092\u518d\u5206\u914d\u3057\u3066\u3001\u6b21\u306e\u30d5\u30a9\u30eb\u30c0\u3092\u524a\u9664\u3057\u307e\u3059\u3002"}),"\n",(0,n.jsxs)(s.ul,{children:["\n",(0,n.jsxs)(s.li,{children:[(0,n.jsx)(s.code,{children:"\ud83d\udcc1 components"}),"\u3001",(0,n.jsx)(s.code,{children:"\ud83d\udcc1 containers"})," \u2014 \u305d\u306e\u5185\u5bb9\u306e\u307b\u3068\u3093\u3069\u306f",(0,n.jsx)(s.code,{children:"\ud83d\udcc1 shared/ui"}),"\u306b\u306a\u308b\u3079\u304d\u3067\u3059\u3002"]}),"\n",(0,n.jsxs)(s.li,{children:[(0,n.jsx)(s.code,{children:"\ud83d\udcc1 helpers"}),"\u3001",(0,n.jsx)(s.code,{children:"\ud83d\udcc1 utils"})," \u2014 \u518d\u5229\u7528\u53ef\u80fd\u306a\u30d8\u30eb\u30d1\u30fc\u95a2\u6570\u304c\u6b8b\u3063\u3066\u3044\u308b\u5834\u5408\u306f\u3001\u76ee\u7684\u306b\u57fa\u3065\u3044\u3066\u30b0\u30eb\u30fc\u30d7\u5316\u3057\u3001\u3053\u308c\u3089\u306e\u30b0\u30eb\u30fc\u30d7\u3092",(0,n.jsx)(s.code,{children:"\ud83d\udcc1 shared/lib"}),"\u306b\u79fb\u52d5\u3057\u307e\u3059\u3002"]}),"\n",(0,n.jsxs)(s.li,{children:[(0,n.jsx)(s.code,{children:"\ud83d\udcc1 constants"})," \u2014 \u540c\u69d8\u306b\u3001\u76ee\u7684\u306b\u57fa\u3065\u3044\u3066\u30b0\u30eb\u30fc\u30d7\u5316\u3057\u3001",(0,n.jsx)(s.code,{children:"\ud83d\udcc1 shared/config"}),"\u306b\u79fb\u52d5\u3057\u307e\u3059\u3002"]}),"\n"]}),"\n",(0,n.jsx)(s.h2,{id:"optional-steps",children:"\u4efb\u610f\u306e\u30b9\u30c6\u30c3\u30d7"}),"\n",(0,n.jsx)(s.h3,{id:"form-entities-features-from-redux",children:"\u30b9\u30c6\u30c3\u30d7\uff16\u3002 \u8907\u6570\u306e\u30da\u30fc\u30b8\u3067\u4f7f\u7528\u3055\u308c\u308bRedux\u30b9\u30e9\u30a4\u30b9\u304b\u3089\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3/\u30d5\u30a3\u30fc\u30c1\u30e3\u30fc\u3092\u5f62\u6210\u3059\u308b"}),"\n",(0,n.jsx)(s.p,{children:"\u901a\u5e38\u3001\u3053\u308c\u3089\u306e\u518d\u5229\u7528\u53ef\u80fd\u306aRedux\u30b9\u30e9\u30a4\u30b9\u306f\u3001\u30d3\u30b8\u30cd\u30b9\u306b\u95a2\u9023\u3059\u308b\u4f55\u304b\u3092\u8aac\u660e\u3057\u307e\u3059\uff08\u4f8b\u3048\u3070\u3001\u30d7\u30ed\u30c0\u30af\u30c8\u3084\u30e6\u30fc\u30b6\u30fc\u306a\u3069\uff09\u3002\u3057\u305f\u304c\u3063\u3066\u3001\u305d\u308c\u3089\u3092\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u5c64\u306b\u79fb\u52d5\u3067\u304d\u307e\u3059\u30021\u3064\u306e\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u306b\u3064\u304d1\u3064\u306e\u30d5\u30a9\u30eb\u30c0\u3067\u3059\u3002Redux\u30b9\u30e9\u30a4\u30b9\u304c\u3001\u30e6\u30fc\u30b6\u30fc\u304c\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3067\u5b9f\u884c\u3057\u305f\u3044\u30a2\u30af\u30b7\u30e7\u30f3\u306b\u95a2\u9023\u3057\u3066\u3044\u308b\u5834\u5408\uff08\u4f8b\u3048\u3070\u3001\u30b3\u30e1\u30f3\u30c8\u306a\u3069\uff09\u3001\u305d\u308c\u3092\u30d5\u30a3\u30fc\u30c1\u30e3\u30fc\u5c64\u306b\u79fb\u52d5\u3067\u304d\u307e\u3059\u3002"}),"\n",(0,n.jsxs)(s.p,{children:["\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u3068\u30d5\u30a3\u30fc\u30c1\u30e3\u30fc\u306f\u4e92\u3044\u306b\u72ec\u7acb\u3057\u3066\u3044\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u30d3\u30b8\u30cd\u30b9\u9818\u57df\u306b\u7d44\u307f\u8fbc\u307e\u308c\u305f\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u9593\u306e\u95a2\u4fc2\u304c\u3042\u308b\u5834\u5408\u306f\u3001",(0,n.jsx)(s.a,{href:"/docs/guides/examples/types#business-entities-and-their-cross-references",children:"\u30d3\u30b8\u30cd\u30b9\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u306b\u95a2\u3059\u308b\u30ac\u30a4\u30c9"}),"\u3092\u53c2\u7167\u3057\u3066\u3001\u3053\u308c\u3089\u306e\u95a2\u4fc2\u3092\u6574\u7406\u3059\u308b\u65b9\u6cd5\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002"]}),"\n",(0,n.jsxs)(s.p,{children:["\u3053\u308c\u3089\u306e\u30b9\u30e9\u30a4\u30b9\u306b\u95a2\u9023\u3059\u308bAPI\u95a2\u6570\u306f\u3001",(0,n.jsx)(s.code,{children:"\ud83d\udcc1 shared/api"}),"\u306b\u6b8b\u3059\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002"]}),"\n",(0,n.jsx)(s.h3,{id:"refactor-your-modules",children:"\u30b9\u30c6\u30c3\u30d7\uff17\u3002 \u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u30ea\u30d5\u30a1\u30af\u30bf\u30ea\u30f3\u30b0\u3059\u308b"}),"\n",(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.code,{children:"\ud83d\udcc1 modules"}),"\u30d5\u30a9\u30eb\u30c0\u306f\u901a\u5e38\u3001\u30d3\u30b8\u30cd\u30b9\u30ed\u30b8\u30c3\u30af\u306b\u4f7f\u7528\u3055\u308c\u308b\u305f\u3081\u3001\u3059\u3067\u306bFSD\u306e\u30d5\u30a3\u30fc\u30c1\u30e3\u30fc\u5c64\u306b\u4f3c\u305f\u6027\u8cea\u3092\u6301\u3063\u3066\u3044\u307e\u3059\u3002\u4e00\u90e8\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u306f\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u5927\u304d\u306a\u90e8\u5206\uff08\u4f8b\u3048\u3070\u3001\u30a2\u30d7\u30ea\u306e\u30d8\u30c3\u30c0\u30fc\u306a\u3069\uff09\u3092\u8aac\u660e\u3059\u308b\u3053\u3068\u3082\u3042\u308a\u307e\u3059\u3002\u3053\u306e\u5834\u5408\u3001\u305d\u308c\u3089\u3092\u30a6\u30a3\u30b8\u30a7\u30c3\u30c8\u5c64\u306b\u79fb\u52d5\u3067\u304d\u307e\u3059\u3002"]}),"\n",(0,n.jsxs)(s.h3,{id:"form-clean-ui-foundation",children:["\u30b9\u30c6\u30c3\u30d78\u3002 ",(0,n.jsx)(s.code,{children:"shared/ui"}),"\u306bUI\u57fa\u76e4\u3092\u6b63\u3057\u304f\u5f62\u6210\u3059\u308b"]}),"\n",(0,n.jsxs)(s.p,{children:["\u7406\u60f3\u7684\u306b\u306f\u3001",(0,n.jsx)(s.code,{children:"\ud83d\udcc1 shared/ui"}),"\u306b\u306f\u30d3\u30b8\u30cd\u30b9\u30ed\u30b8\u30c3\u30af\u304c\u542b\u307e\u308c\u3066\u3044\u306a\u3044UI\u8981\u7d20\u306e\u30bb\u30c3\u30c8\u304c\u542b\u307e\u308c\u308b\u3079\u304d\u3067\u3059\u3002\u307e\u305f\u3001\u975e\u5e38\u306b\u518d\u5229\u7528\u53ef\u80fd\u3067\u3042\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002"]}),"\n",(0,n.jsxs)(s.p,{children:["\u4ee5\u524d",(0,n.jsx)(s.code,{children:"\ud83d\udcc1 components"}),"\u3084",(0,n.jsx)(s.code,{children:"\ud83d\udcc1 containers"}),"\u306b\u3042\u3063\u305fUI\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u3092\u30ea\u30d5\u30a1\u30af\u30bf\u30ea\u30f3\u30b0\u3057\u3066\u3001\u30d3\u30b8\u30cd\u30b9\u30ed\u30b8\u30c3\u30af\u3092\u5206\u96e2\u3057\u307e\u3059\u3002\u3053\u306e\u30d3\u30b8\u30cd\u30b9\u30ed\u30b8\u30c3\u30af\u3092\u4e0a\u4f4d\u5c64\u306b\u79fb\u52d5\u3057\u307e\u3059\u3002\u3042\u307e\u308a\u591a\u304f\u306e\u5834\u6240\u3067\u4f7f\u7528\u3055\u308c\u3066\u3044\u306a\u3044\u5834\u5408\u306f\u3001\u30b3\u30d4\u30fc\u3092\u691c\u8a0e\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002"]})]})}function t(e={}){const{wrapper:s}={...(0,l.R)(),...e.components};return s?(0,n.jsx)(s,{...e,children:(0,n.jsx)(x,{...e})}):x(e)}},1100:(e,s,i)=>{i.d(s,{R:()=>d,x:()=>c});var n=i(758);const l={},r=n.createContext(l);function d(e){const s=n.useContext(r);return n.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function c(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(l):e.components||l:d(e.components),n.createElement(r.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/ja/assets/js/0fe5f65b.9289c53a.js b/ja/assets/js/0fe5f65b.44b30890.js similarity index 95% rename from ja/assets/js/0fe5f65b.9289c53a.js rename to ja/assets/js/0fe5f65b.44b30890.js index 89a82826c2..a6c61b9768 100644 --- a/ja/assets/js/0fe5f65b.9289c53a.js +++ b/ja/assets/js/0fe5f65b.44b30890.js @@ -1 +1 @@ -"use strict";(self.webpackChunk_feature_sliced_documentation=self.webpackChunk_feature_sliced_documentation||[]).push([[3970],{1928:(e,t,i)=>{i.d(t,{Ay:()=>u,RM:()=>c});var s=i(6070),n=i(1100),r=(i(758),i(6783)),a=i(7765);const d=e=>{let{ticket:t}=e;const i=`https://github.com/feature-sliced/documentation/issues/${t}`;return(0,s.jsxs)("div",{children:[(0,s.jsx)("p",{children:(0,a.T)({id:"shared.wip.title"})}),(0,s.jsx)("p",{children:(0,a.T)({id:"shared.wip.subtitle"})}),(0,s.jsxs)("ul",{children:[(0,s.jsxs)("li",{children:[(0,a.T)({id:"shared.wip.var.feedback.base"}),(0,s.jsx)(r.A,{to:i,children:(0,a.T)({id:"shared.wip.var.feedback.link"})})]}),(0,s.jsxs)("li",{children:[(0,a.T)({id:"shared.wip.var.material.base"}),(0,s.jsx)(r.A,{to:"https://t.me/feature_sliced",children:(0,a.T)({id:"shared.wip.var.material.link"})})]}),(0,s.jsxs)("li",{children:[(0,a.T)({id:"shared.wip.var.contribute.base"}),(0,s.jsx)(r.A,{to:"https://github.com/feature-sliced/documentation/blob/master/CONTRIBUTING.md",children:(0,a.T)({id:"shared.wip.var.contribute.link"})})]})]}),(0,s.jsx)("br",{}),(0,s.jsx)("p",{children:(0,s.jsx)("i",{children:"\ud83c\udf70 Stay tuned!"})})]})},c=[];function o(e){const t={admonition:"admonition",...(0,n.R)(),...e.components};return(0,s.jsx)(t.admonition,{title:"WIP",type:"caution",children:(0,s.jsx)(d,{ticket:e.ticket})})}function u(e={}){const{wrapper:t}={...(0,n.R)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(o,{...e})}):o(e)}},4059:(e,t,i)=>{i.r(t),i.d(t,{assets:()=>o,contentTitle:()=>d,default:()=>p,frontMatter:()=>a,metadata:()=>c,toc:()=>u});var s=i(6070),n=i(1100),r=i(1928);const a={sidebar_class_name:"sidebar-item--wip",unlisted:!0},d="\u30d6\u30e9\u30a6\u30b6API",c={id:"guides/examples/browser-api",title:"\u30d6\u30e9\u30a6\u30b6API",description:"",source:"@site/i18n/ja/docusaurus-plugin-content-docs/current/guides/examples/browser-api.mdx",sourceDirName:"guides/examples",slug:"/guides/examples/browser-api",permalink:"/ja/docs/guides/examples/browser-api",draft:!1,unlisted:!0,editUrl:"https://github.com/feature-sliced/documentation/edit/master/i18n/ja/docusaurus-plugin-content-docs/current/guides/examples/browser-api.mdx",tags:[],version:"current",lastUpdatedAt:1727607766e3,frontMatter:{sidebar_class_name:"sidebar-item--wip",unlisted:!0},sidebar:"guidesSidebar"},o={},u=[...r.RM];function l(e){const t={h1:"h1",header:"header",...(0,n.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(t.header,{children:(0,s.jsx)(t.h1,{id:"\u30d6\u30e9\u30a6\u30b6api",children:"\u30d6\u30e9\u30a6\u30b6API"})}),"\n",(0,s.jsx)(r.Ay,{ticket:"197"})]})}function p(e={}){const{wrapper:t}={...(0,n.R)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(l,{...e})}):l(e)}},1100:(e,t,i)=>{i.d(t,{R:()=>a,x:()=>d});var s=i(758);const n={},r=s.createContext(n);function a(e){const t=s.useContext(r);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function d(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:a(e.components),s.createElement(r.Provider,{value:t},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunk_feature_sliced_documentation=self.webpackChunk_feature_sliced_documentation||[]).push([[3970],{1928:(e,t,i)=>{i.d(t,{Ay:()=>u,RM:()=>c});var s=i(6070),n=i(1100),r=(i(758),i(6783)),a=i(7765);const d=e=>{let{ticket:t}=e;const i=`https://github.com/feature-sliced/documentation/issues/${t}`;return(0,s.jsxs)("div",{children:[(0,s.jsx)("p",{children:(0,a.T)({id:"shared.wip.title"})}),(0,s.jsx)("p",{children:(0,a.T)({id:"shared.wip.subtitle"})}),(0,s.jsxs)("ul",{children:[(0,s.jsxs)("li",{children:[(0,a.T)({id:"shared.wip.var.feedback.base"}),(0,s.jsx)(r.A,{to:i,children:(0,a.T)({id:"shared.wip.var.feedback.link"})})]}),(0,s.jsxs)("li",{children:[(0,a.T)({id:"shared.wip.var.material.base"}),(0,s.jsx)(r.A,{to:"https://t.me/feature_sliced",children:(0,a.T)({id:"shared.wip.var.material.link"})})]}),(0,s.jsxs)("li",{children:[(0,a.T)({id:"shared.wip.var.contribute.base"}),(0,s.jsx)(r.A,{to:"https://github.com/feature-sliced/documentation/blob/master/CONTRIBUTING.md",children:(0,a.T)({id:"shared.wip.var.contribute.link"})})]})]}),(0,s.jsx)("br",{}),(0,s.jsx)("p",{children:(0,s.jsx)("i",{children:"\ud83c\udf70 Stay tuned!"})})]})},c=[];function o(e){const t={admonition:"admonition",...(0,n.R)(),...e.components};return(0,s.jsx)(t.admonition,{title:"WIP",type:"caution",children:(0,s.jsx)(d,{ticket:e.ticket})})}function u(e={}){const{wrapper:t}={...(0,n.R)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(o,{...e})}):o(e)}},4059:(e,t,i)=>{i.r(t),i.d(t,{assets:()=>o,contentTitle:()=>d,default:()=>p,frontMatter:()=>a,metadata:()=>c,toc:()=>u});var s=i(6070),n=i(1100),r=i(1928);const a={sidebar_class_name:"sidebar-item--wip",unlisted:!0},d="\u30d6\u30e9\u30a6\u30b6API",c={id:"guides/examples/browser-api",title:"\u30d6\u30e9\u30a6\u30b6API",description:"",source:"@site/i18n/ja/docusaurus-plugin-content-docs/current/guides/examples/browser-api.mdx",sourceDirName:"guides/examples",slug:"/guides/examples/browser-api",permalink:"/ja/docs/guides/examples/browser-api",draft:!1,unlisted:!0,editUrl:"https://github.com/feature-sliced/documentation/edit/master/i18n/ja/docusaurus-plugin-content-docs/current/guides/examples/browser-api.mdx",tags:[],version:"current",lastUpdatedAt:1728325386e3,frontMatter:{sidebar_class_name:"sidebar-item--wip",unlisted:!0},sidebar:"guidesSidebar"},o={},u=[...r.RM];function l(e){const t={h1:"h1",header:"header",...(0,n.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(t.header,{children:(0,s.jsx)(t.h1,{id:"\u30d6\u30e9\u30a6\u30b6api",children:"\u30d6\u30e9\u30a6\u30b6API"})}),"\n",(0,s.jsx)(r.Ay,{ticket:"197"})]})}function p(e={}){const{wrapper:t}={...(0,n.R)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(l,{...e})}):l(e)}},1100:(e,t,i)=>{i.d(t,{R:()=>a,x:()=>d});var s=i(758);const n={},r=s.createContext(n);function a(e){const t=s.useContext(r);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function d(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:a(e.components),s.createElement(r.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/ja/assets/js/12472d65.8afa1d33.js b/ja/assets/js/12472d65.b965a988.js similarity index 99% rename from ja/assets/js/12472d65.8afa1d33.js rename to ja/assets/js/12472d65.b965a988.js index 0abcfe2ef3..1b8493c196 100644 --- a/ja/assets/js/12472d65.8afa1d33.js +++ b/ja/assets/js/12472d65.b965a988.js @@ -1 +1 @@ -"use strict";(self.webpackChunk_feature_sliced_documentation=self.webpackChunk_feature_sliced_documentation||[]).push([[9248],{2792:(e,s,n)=>{n.r(s),n.d(s,{assets:()=>t,contentTitle:()=>d,default:()=>j,frontMatter:()=>l,metadata:()=>c,toc:()=>h});var i=n(6070),r=n(1100);const l={sidebar_position:1,pagination_next:"reference/slices-segments"},d="\u30ec\u30a4\u30e4\u30fc",c={id:"reference/layers",title:"\u30ec\u30a4\u30e4\u30fc",description:"\u30ec\u30a4\u30e4\u30fc\uff08\u5c64\uff09\u306f\u3001Feature-Sliced Design\u306b\u304a\u3051\u308b\u7d44\u7e54\u968e\u5c64\u306e\u6700\u521d\u306e\u30ec\u30d9\u30eb\u3067\u3059\u3002\u305d\u306e\u76ee\u7684\u306f\u3001\u30b3\u30fc\u30c9\u3092\u5fc5\u8981\u306a\u8cac\u4efb\u306e\u91cf\u3068\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u5185\u306e\u4ed6\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u3078\u306e\u4f9d\u5b58\u5ea6\u306b\u57fa\u3065\u3044\u3066\u5206\u5272\u3059\u308b\u3053\u3068\u3067\u3059\u3002",source:"@site/i18n/ja/docusaurus-plugin-content-docs/current/reference/layers.mdx",sourceDirName:"reference",slug:"/reference/layers",permalink:"/ja/docs/reference/layers",draft:!1,unlisted:!1,editUrl:"https://github.com/feature-sliced/documentation/edit/master/i18n/ja/docusaurus-plugin-content-docs/current/reference/layers.mdx",tags:[],version:"current",lastUpdatedAt:1727607766e3,sidebarPosition:1,frontMatter:{sidebar_position:1,pagination_next:"reference/slices-segments"},sidebar:"referenceSidebar",previous:{title:"\ud83d\udcda \u53c2\u8003\u66f8",permalink:"/ja/docs/reference/"},next:{title:"\u30b9\u30e9\u30a4\u30b9\u3068\u30bb\u30b0\u30e1\u30f3\u30c8",permalink:"/ja/docs/reference/slices-segments"}},t={},h=[{value:"\u30ec\u30a4\u30e4\u30fc\u306e\u30a4\u30f3\u30dd\u30fc\u30c8\u30eb\u30fc\u30eb",id:"import-rule-on-layers",level:2},{value:"\u30ec\u30a4\u30e4\u30fc\u306e\u5b9a\u7fa9",id:"\u30ec\u30a4\u30e4\u30fc\u306e\u5b9a\u7fa9",level:2},{value:"Shared\u5c64",id:"shared\u5c64",level:3},{value:"Entities\u5c64",id:"entities\u5c64",level:3},{value:"Features\u5c64",id:"features\u5c64",level:3},{value:"Widgets\u5c64",id:"widgets\u5c64",level:3},{value:"Pages\u5c64",id:"pages\u5c64",level:3},{value:"Processes\u5c64",id:"processes\u5c64",level:3},{value:"App\u5c64",id:"app\u5c64",level:3}];function x(e){const s={a:"a",admonition:"admonition",blockquote:"blockquote",code:"code",em:"em",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",ol:"ol",p:"p",strong:"strong",ul:"ul",...(0,r.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(s.header,{children:(0,i.jsx)(s.h1,{id:"\u30ec\u30a4\u30e4\u30fc",children:"\u30ec\u30a4\u30e4\u30fc"})}),"\n",(0,i.jsx)(s.p,{children:"\u30ec\u30a4\u30e4\u30fc\uff08\u5c64\uff09\u306f\u3001Feature-Sliced Design\u306b\u304a\u3051\u308b\u7d44\u7e54\u968e\u5c64\u306e\u6700\u521d\u306e\u30ec\u30d9\u30eb\u3067\u3059\u3002\u305d\u306e\u76ee\u7684\u306f\u3001\u30b3\u30fc\u30c9\u3092\u5fc5\u8981\u306a\u8cac\u4efb\u306e\u91cf\u3068\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u5185\u306e\u4ed6\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u3078\u306e\u4f9d\u5b58\u5ea6\u306b\u57fa\u3065\u3044\u3066\u5206\u5272\u3059\u308b\u3053\u3068\u3067\u3059\u3002"}),"\n",(0,i.jsx)(s.admonition,{type:"note",children:(0,i.jsx)(s.p,{children:"\u3053\u306e\u30da\u30fc\u30b8\u3067\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u306f\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u5185\u306e\u30d5\u30a1\u30a4\u30eb\u3084\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u30d5\u30a1\u30a4\u30eb\u3092\u6301\u3064\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3092\u6307\u3057\u3066\u3044\u308b\u3002npm\u30d1\u30c3\u30b1\u30fc\u30b8\u3068\u6df7\u540c\u3057\u306a\u3044\u3067\u304f\u3060\u3055\u3044\u3002"})}),"\n",(0,i.jsx)(s.p,{children:"\u5404\u30ec\u30a4\u30e4\u30fc\u306f\u3001\u30b3\u30fc\u30c9\u5185\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u306b\u3069\u308c\u3060\u3051\u306e\u8cac\u4efb\u3092\u5272\u308a\u5f53\u3066\u308b\u3079\u304d\u304b\u3092\u5224\u65ad\u3059\u308b\u306e\u306b\u5f79\u7acb\u3064\u7279\u5225\u306a\u610f\u5473\u3092\u6301\u3063\u3066\u3044\u307e\u3059\u3002\u30ec\u30a4\u30e4\u30fc\u540d\u3068\u30ec\u30a4\u30e4\u30fc\u306e\u610f\u5473\u306f\u3001Feature-Sliced Design\u3092\u4f7f\u7528\u3057\u3066\u69cb\u7bc9\u3055\u308c\u305f\u3059\u3079\u3066\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u6a19\u6e96\u5316\u3055\u308c\u3066\u3044\u307e\u3059\u3002"}),"\n",(0,i.jsxs)(s.p,{children:["\u5408\u8a08\u3067",(0,i.jsx)("b",{children:"7\u3064\u306e\u30ec\u30a4\u30e4\u30fc"}),"\u304c\u3042\u308a\u3001\u6700\u3082\u8cac\u4efb\u3068\u4f9d\u5b58\u5ea6\u304c\u9ad8\u3044\u3082\u306e\u304b\u3089\u6700\u3082\u4f4e\u3044\u3082\u306e\u3078\u3068\u914d\u7f6e\u3055\u308c\u3066\u3044\u307e\u3059\u3002"]}),"\n",(0,i.jsx)("img",{src:"/img/layers/folders-graphic-light.svg#light-mode-only",width:"180",style:{float:"right",margin:"0 1em"},alt:"\u30d5\u30a1\u30a4\u30eb\u30b7\u30b9\u30c6\u30e0\u306e\u30c4\u30ea\u30fc\u306f\u30011\u3064\u306e\u30eb\u30fc\u30c8\u30d5\u30a9\u30eb\u30c0src\u30687\u3064\u306e\u30b5\u30d6\u30d5\u30a9\u30eb\u30c0\uff08app\u3001processes\u3001pages\u3001widgets\u3001features\u3001entities\u3001shared\uff09\u3067\u69cb\u6210\u3055\u308c\u3066\u3044\u307e\u3059\u3002processes\u30d5\u30a9\u30eb\u30c0\u306f\u5c11\u3057\u8584\u304f\u8868\u793a\u3055\u308c\u3066\u3044\u307e\u3059\u3002"}),"\n",(0,i.jsx)("img",{src:"/img/layers/folders-graphic-dark.svg#dark-mode-only",width:"180",style:{float:"right",margin:"0 1em"},alt:"\u30d5\u30a1\u30a4\u30eb\u30b7\u30b9\u30c6\u30e0\u306e\u30c4\u30ea\u30fc\u306f\u30011\u3064\u306e\u30eb\u30fc\u30c8\u30d5\u30a9\u30eb\u30c0src\u30687\u3064\u306e\u30b5\u30d6\u30d5\u30a9\u30eb\u30c0\uff08app\u3001processes\u3001pages\u3001widgets\u3001features\u3001entities\u3001shared\uff09\u3067\u69cb\u6210\u3055\u308c\u3066\u3044\u307e\u3059\u3002processes\u30d5\u30a9\u30eb\u30c0\u306f\u5c11\u3057\u8584\u304f\u8868\u793a\u3055\u308c\u3066\u3044\u307e\u3059\u3002"}),"\n",(0,i.jsxs)(s.ol,{children:["\n",(0,i.jsx)(s.li,{children:"App (\u30a2\u30c3\u30d7)"}),"\n",(0,i.jsx)(s.li,{children:"Processes (\u30d7\u30ed\u30bb\u30b9\u3001\u975e\u63a8\u5968)"}),"\n",(0,i.jsx)(s.li,{children:"Pages (\u30da\u30fc\u30b8)"}),"\n",(0,i.jsx)(s.li,{children:"Widgets (\u30a6\u30a3\u30b8\u30a7\u30c3\u30c8)"}),"\n",(0,i.jsx)(s.li,{children:"Features (\u30d5\u30a3\u30fc\u30c1\u30e3\u30fc)"}),"\n",(0,i.jsx)(s.li,{children:"Entities (\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3)"}),"\n",(0,i.jsx)(s.li,{children:"Shared (\u30b7\u30a7\u30a2\u30fc\u30c9)"}),"\n"]}),"\n",(0,i.jsx)(s.p,{children:"\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u5168\u3066\u306e\u30ec\u30a4\u30e4\u30fc\u3092\u4f7f\u7528\u3059\u308b\u5fc5\u8981\u306f\u306a\u3044\u306e\u3067\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u4fa1\u5024\u3092\u3082\u305f\u3089\u3059\u30ec\u30a4\u30e4\u30fc\u3060\u3051\u3092\u8ffd\u52a0\u3057\u3066\u304f\u3060\u3055\u3044\u3002"}),"\n",(0,i.jsx)(s.h2,{id:"import-rule-on-layers",children:"\u30ec\u30a4\u30e4\u30fc\u306e\u30a4\u30f3\u30dd\u30fc\u30c8\u30eb\u30fc\u30eb"}),"\n",(0,i.jsxs)(s.p,{children:["\u30ec\u30a4\u30e4\u30fc\u306f\u3001\u5f37\u304f\u7d50\u5408\u3055\u308c\u305f\u30e2\u30b8\u30e5\u30fc\u30eb\u306e\u30b0\u30eb\u30fc\u30d7\u3067\u3042\u308b",(0,i.jsx)("i",{children:"\u30b9\u30e9\u30a4\u30b9"}),"\u304b\u3089\u69cb\u6210\u3055\u308c\u3066\u3044\u307e\u3059\u3002Feature-Sliced Design\u306f\u4f4e\u3044\u7d50\u5408\u5ea6\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u308b\u305f\u3081\u3001\u30b9\u30e9\u30a4\u30b9\u9593\u306e\u4f9d\u5b58\u95a2\u4fc2\u306f",(0,i.jsx)("b",{children:"\u30ec\u30a4\u30e4\u30fc\u306e\u30a4\u30f3\u30dd\u30fc\u30c8\u30eb\u30fc\u30eb"}),"\u306b\u3088\u3063\u3066\u5236\u5fa1\u3055\u308c\u307e\u3059\u3002"]}),"\n",(0,i.jsxs)(s.blockquote,{children:["\n",(0,i.jsx)(s.p,{children:(0,i.jsx)(s.em,{children:"\u30b9\u30e9\u30a4\u30b9\u5185\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u306f\u3001\u4e0b\u5c64\u306e\u30ec\u30a4\u30e4\u30fc\u306b\u3042\u308b\u30b9\u30e9\u30a4\u30b9\u306e\u307f\u3092\u30a4\u30f3\u30dd\u30fc\u30c8\u3067\u304d\u308b\u3002"})}),"\n"]}),"\n",(0,i.jsxs)(s.p,{children:["\u4f8b\u3048\u3070\u3001",(0,i.jsx)(s.code,{children:"~/features/aaa"})," \u3067\u306f\u3001\u30b9\u30e9\u30a4\u30b9\u306f ",(0,i.jsx)(s.code,{children:"aaa"})," \u3067\u3042\u308b\u305f\u3081\u3001",(0,i.jsx)(s.code,{children:"~/features/aaa/api/request.ts"})," \u30d5\u30a1\u30a4\u30eb\u306f ",(0,i.jsx)(s.code,{children:"~/features/bbb"})," \u30d5\u30a9\u30eb\u30c0\u30fc\u5185\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u304b\u3089\u30b3\u30fc\u30c9\u3092\u30a4\u30f3\u30dd\u30fc\u30c8\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u304c\u3001",(0,i.jsx)(s.code,{children:"~/entities"})," \u3084 ",(0,i.jsx)(s.code,{children:"~/shared"})," \u304b\u3089\u3001\u307e\u305f ",(0,i.jsx)(s.code,{children:"~/features/aaa"})," \u5185\u306e\u96a3\u63a5\u30e2\u30b8\u30e5\u30fc\u30eb\u304b\u3089\u306f\u30a4\u30f3\u30dd\u30fc\u30c8\u3067\u304d\u307e\u3059\u3002"]}),"\n",(0,i.jsx)(s.h2,{id:"\u30ec\u30a4\u30e4\u30fc\u306e\u5b9a\u7fa9",children:"\u30ec\u30a4\u30e4\u30fc\u306e\u5b9a\u7fa9"}),"\n",(0,i.jsx)(s.h3,{id:"shared\u5c64",children:"Shared\u5c64"}),"\n",(0,i.jsx)(s.p,{children:"Shared\u5c64\u306f\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3084\u30d3\u30b8\u30cd\u30b9\u306e\u7279\u6027\u304b\u3089\u5207\u308a\u96e2\u3055\u308c\u305f\u3001\u5b64\u7acb\u3057\u305f\u30e2\u30b8\u30e5\u30fc\u30eb\u3001\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u3001\u62bd\u8c61\u5316\u306e\u3053\u3068\u3067\u3059\u3002"}),"\n",(0,i.jsx)(s.p,{children:"\u3053\u306e\u30ec\u30a4\u30e4\u30fc\u306f\u4ed6\u306e\u30ec\u30a4\u30e4\u30fc\u3068\u306f\u7570\u306a\u308a\u3001\u30b9\u30e9\u30a4\u30b9\u3067\u306f\u306a\u304f\u76f4\u63a5\u30bb\u30b0\u30e1\u30f3\u30c8\u3067\u69cb\u6210\u3055\u308c\u3066\u3044\u307e\u3059\u3002"}),"\n",(0,i.jsx)(s.p,{children:(0,i.jsx)(s.strong,{children:"\u5185\u5bb9\u306e\u4f8b"})}),"\n",(0,i.jsxs)(s.ul,{children:["\n",(0,i.jsx)(s.li,{children:"UI\u30e9\u30a4\u30d6\u30e9\u30ea"}),"\n",(0,i.jsx)(s.li,{children:"API\u30af\u30e9\u30a4\u30a2\u30f3\u30c8"}),"\n",(0,i.jsx)(s.li,{children:"\u30d6\u30e9\u30a6\u30b6API\u3068\u9023\u643a\u3059\u308b\u30b3\u30fc\u30c9"}),"\n"]}),"\n",(0,i.jsx)(s.h3,{id:"entities\u5c64",children:"Entities\u5c64"}),"\n",(0,i.jsx)(s.p,{children:"Entities\u5c64\u306f\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u672c\u8cea\u3092\u5f62\u6210\u3059\u308b\u73fe\u5b9f\u4e16\u754c\u306e\u6982\u5ff5\u3067\u3059\u3002\u901a\u5e38\u3001\u3053\u308c\u306f\u30d3\u30b8\u30cd\u30b9\u304c\u30d7\u30ed\u30c0\u30af\u30c8\u3092\u8aac\u660e\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3059\u308b\u7528\u8a9e\u3067\u3059\u3002"}),"\n",(0,i.jsx)(s.p,{children:"\u3053\u306e\u30ec\u30a4\u30e4\u30fc\u306e\u5404\u30b9\u30e9\u30a4\u30b9\u306f\u3001\u30e6\u30fc\u30b6\u30fc\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\u306e\u9759\u7684\u8981\u7d20\u3001\u30c7\u30fc\u30bf\u30b9\u30c8\u30ec\u30fc\u30b8\u3001\u304a\u3088\u3073CRUD\uff08\u4f5c\u6210\u30fb\u8aad\u307f\u53d6\u308a\u30fb\u66f4\u65b0\u30fb\u524a\u9664\uff09\u64cd\u4f5c\u3092\u542b\u307f\u307e\u3059\u3002"}),"\n",(0,i.jsx)(s.p,{children:(0,i.jsx)(s.strong,{children:"\u30b9\u30e9\u30a4\u30b9\u306e\u4f8b"})}),"\n",(0,i.jsxs)("table",{children:[(0,i.jsx)("thead",{children:(0,i.jsxs)("tr",{children:[(0,i.jsx)("th",{children:" SNS "}),(0,i.jsx)("th",{children:" Git\u30d5\u30ed\u30f3\u30c8\u30a8\u30f3\u30c9\uff08\u4f8b\uff1aGitHub\uff09 "})]})}),(0,i.jsx)("tbody",{children:(0,i.jsxs)("tr",{children:[(0,i.jsx)("td",{children:(0,i.jsxs)("ul",{children:[(0,i.jsx)("li",{children:"\u30e6\u30fc\u30b6\u30fc"}),(0,i.jsx)("li",{children:"\u6295\u7a3f"}),(0,i.jsx)("li",{children:"\u30b0\u30eb\u30fc\u30d7"})]})}),(0,i.jsx)("td",{children:(0,i.jsxs)("ul",{children:[(0,i.jsx)("li",{children:"\u30ea\u30dd\u30b8\u30c8\u30ea"}),(0,i.jsx)("li",{children:"\u30d5\u30a1\u30a4\u30eb"}),(0,i.jsx)("li",{children:"\u30b3\u30df\u30c3\u30c8"})]})})]})})]}),"\n",(0,i.jsxs)(s.admonition,{type:"tip",children:[(0,i.jsxs)(s.p,{children:["Git\u30d5\u30ed\u30f3\u30c8\u30a8\u30f3\u30c9\u306e\u4f8b\u3067\u306f\u3001",(0,i.jsx)("i",{children:"\u30ea\u30dd\u30b8\u30c8\u30ea"}),"\u304c",(0,i.jsx)("i",{children:"\u30d5\u30a1\u30a4\u30eb"}),"\u3092\u542b\u3080\u3053\u3068\u306b\u6c17\u4ed8\u304f\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002\u3053\u308c\u306f\u3001\u30ea\u30dd\u30b8\u30c8\u30ea\u304c\u4ed6\u306e\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u3092\u5185\u5305\u3059\u308b\u9ad8\u30ec\u30d9\u30eb\u306e\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u3067\u3042\u308b\u3053\u3068\u3092\u793a\u3057\u3066\u3044\u307e\u3059\u3002\u3053\u306e\u3088\u3046\u306a\u9ad8\u30ec\u30d9\u30eb\u306e\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u3092\u4f5c\u6210\u3053\u3068\u306f\u4e00\u822c\u7684\u304c\u3001\u3053\u306e\u5834\u5408\u3001\u30ec\u30a4\u30e4\u30fc\u306e\u30a4\u30f3\u30dd\u30fc\u30c8\u30eb\u30fc\u30eb\u3092\u7834\u3089\u306a\u3044\u3053\u3068\u306f\u6642\u306b\u96e3\u3057\u3044\u3067\u3059\u3002"]}),(0,i.jsx)(s.p,{children:"\u3053\u306e\u554f\u984c\u3092\u89e3\u6c7a\u3059\u308b\u305f\u3081\u306e\u3044\u304f\u3064\u304b\u306e\u63d0\u6848\u304c\u3042\u308a\u307e\u3059\u3002"}),(0,i.jsxs)(s.ul,{children:["\n",(0,i.jsx)(s.li,{children:"\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u306eUI\u306f\u3001\u4e0b\u4f4d\u30ec\u30d9\u30eb\u306e\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u3092\u633f\u5165\u3059\u308b\u305f\u3081\u306e\u30b9\u30ed\u30c3\u30c8\u3092\u542b\u3080\u3079\u304d"}),"\n",(0,i.jsx)(s.li,{children:"\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u9593\u306e\u76f8\u4e92\u4f5c\u7528\u306b\u95a2\u9023\u3059\u308b\u30d3\u30b8\u30cd\u30b9\u30ed\u30b8\u30c3\u30af\u306f\u3001\u901a\u5e38\u3001Features\u5c64\u306b\u914d\u7f6e\u3055\u308c\u308b\u3079\u304d"}),"\n",(0,i.jsx)(s.li,{children:"\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\u306f\u3001API\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306e\u8fd1\u304f\u306b\u3042\u308bShared\u5c64\u306b\u62bd\u51fa\u3067\u304d\u308b"}),"\n"]})]}),"\n",(0,i.jsx)(s.h3,{id:"features\u5c64",children:"Features\u5c64"}),"\n",(0,i.jsx)(s.p,{children:"Features\u5c64\u306f\u3001\u30e6\u30fc\u30b6\u30fc\u304c\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u5185\u3067\u30d3\u30b8\u30cd\u30b9\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u3068\u30a4\u30f3\u30bf\u30e9\u30af\u30b7\u30e7\u30f3\u3059\u308b\u305f\u3081\u306b\u884c\u3046\u30a2\u30af\u30b7\u30e7\u30f3\u3067\u3001\u4fa1\u5024\u306e\u3042\u308b\u7d50\u679c\u3092\u9054\u6210\u3059\u308b\u305f\u3081\u306e\u3082\u306e\u3067\u3059\u3002\u3053\u3053\u306b\u306f\u3001\u30e6\u30fc\u30b6\u30fc\u306e\u305f\u3081\u306b\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u304c\u5b9f\u884c\u3059\u308b\u30a2\u30af\u30b7\u30e7\u30f3\u3082\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002"}),"\n",(0,i.jsx)(s.p,{children:"\u3053\u306e\u30ec\u30a4\u30e4\u30fc\u306e\u30b9\u30e9\u30a4\u30b9\u306f\u3001\u4fa1\u5024\u3092\u751f\u307f\u51fa\u3059\u30a2\u30af\u30b7\u30e7\u30f3\u3092\u5b9f\u884c\u3059\u308b\u305f\u3081\u306e\u30a4\u30f3\u30bf\u30e9\u30af\u30c6\u30a3\u30d6\u306aUI\u8981\u7d20\u3001\u5185\u90e8\u72b6\u614b\u3001\u304a\u3088\u3073API\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u542b\u3080\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002"}),"\n",(0,i.jsx)(s.p,{children:(0,i.jsx)(s.strong,{children:"\u30b9\u30e9\u30a4\u30b9\u306e\u4f8b"})}),"\n",(0,i.jsxs)("table",{children:[(0,i.jsx)("thead",{children:(0,i.jsxs)("tr",{children:[(0,i.jsx)("th",{children:" SNS "}),(0,i.jsx)("th",{children:" Git\u30d5\u30ed\u30f3\u30c8\u30a8\u30f3\u30c9\uff08\u4f8b\uff1aGitHub\uff09 "}),(0,i.jsx)("th",{children:" \u30e6\u30fc\u30b6\u30fc\u306e\u4ee3\u308f\u308a\u306b\u884c\u3046\u30a2\u30af\u30b7\u30e7\u30f3 "})]})}),(0,i.jsx)("tbody",{children:(0,i.jsxs)("tr",{children:[(0,i.jsx)("td",{children:(0,i.jsxs)("ul",{children:[(0,i.jsx)("li",{children:"\u30ed\u30b0\u30a4\u30f3"}),(0,i.jsx)("li",{children:"\u6295\u7a3f\u3092\u4f5c\u6210"}),(0,i.jsx)("li",{children:"\u30b0\u30eb\u30fc\u30d7\u306b\u53c2\u52a0"})]})}),(0,i.jsx)("td",{children:(0,i.jsxs)("ul",{children:[(0,i.jsx)("li",{children:"\u30d5\u30a1\u30a4\u30eb\u3092\u5909\u66f4"}),(0,i.jsx)("li",{children:"\u30b3\u30e1\u30f3\u30c8\u3092\u6b8b\u3059"}),(0,i.jsx)("li",{children:"\u30d6\u30e9\u30f3\u30c1\u3092\u30de\u30fc\u30b8"})]})}),(0,i.jsx)("td",{children:(0,i.jsxs)("ul",{children:[(0,i.jsx)("li",{children:"\u30c0\u30fc\u30af\u30c6\u30fc\u30de\u3092\u81ea\u52d5\u7684\u306b\u6709\u52b9\u306b\u3059\u308b"}),(0,i.jsx)("li",{children:"\u30d0\u30c3\u30af\u30b0\u30e9\u30a6\u30f3\u30c9\u3067\u8a08\u7b97\u3092\u5b9f\u884c\u3059\u308b"}),(0,i.jsx)("li",{children:"User-Agent\u306b\u57fa\u3065\u304f\u30a2\u30af\u30b7\u30e7\u30f3"})]})})]})})]}),"\n",(0,i.jsx)(s.h3,{id:"widgets\u5c64",children:"Widgets\u5c64"}),"\n",(0,i.jsx)(s.p,{children:"Widgets\u5c64\u306f\u3001\u72ec\u7acb\u3057\u305fUI\u30d6\u30ed\u30c3\u30af\u3067\u3042\u308a\u3001\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u3084\u30d5\u30a3\u30fc\u30c1\u30e3\u30fc\u306a\u3069\u306e\u4f4e\u30ec\u30d9\u30eb\u30e6\u30cb\u30c3\u30c8\u306e\u7d44\u307f\u5408\u308f\u305b\u3067\u3059\u3002"}),"\n",(0,i.jsx)(s.p,{children:"\u3053\u306e\u30ec\u30a4\u30e4\u30fc\u306f\u3001\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u306e\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\u306b\u6b8b\u3055\u308c\u305f\u30b9\u30ed\u30c3\u30c8\u3092\u3001\u4ed6\u306e\u30d5\u30a3\u30fc\u30c1\u30e3\u30fc\u304b\u3089\u306e\u30a4\u30f3\u30bf\u30e9\u30af\u30c6\u30a3\u30d6\u8981\u7d20\u3084\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u3067\u57cb\u3081\u308b\u3053\u3068\u3092\u53ef\u80fd\u306b\u3057\u3066\u3044\u307e\u3059\u3002\u3057\u305f\u304c\u3063\u3066\u3001\u901a\u5e38\u3001\u3053\u306e\u30ec\u30a4\u30e4\u30fc\u306b\u306f\u30d3\u30b8\u30cd\u30b9\u30ed\u30b8\u30c3\u30af\u306f\u914d\u7f6e\u3055\u308c\u305a\u3001\u4ee3\u308f\u308a\u306b\u30d5\u30a3\u30fc\u30c1\u30e3\u30fc\u306b\u4fdd\u5b58\u3055\u308c\u307e\u3059\u3002\u3053\u306e\u30ec\u30a4\u30e4\u30fc\u306e\u5404\u30b9\u30e9\u30a4\u30b9\u306f\u3001\u4f7f\u7528\u53ef\u80fd\u306aUI\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u3092\u542b\u307f\u3001\u6642\u306b\u306f\u30d3\u30b8\u30cd\u30b9\u30ed\u30b8\u30c3\u30af\u4ee5\u5916\u306e\u30ed\u30b8\u30c3\u30af\uff08\u4f8b\u3048\u3070\u3001\u30b8\u30a7\u30b9\u30c1\u30e3\u30fc\u3001\u30ad\u30fc\u30dc\u30fc\u30c9\u3068\u306e\u76f8\u4e92\u4f5c\u7528\u306a\u3069\uff09\u3092\u542b\u3080\u3053\u3068\u304c\u3042\u308a\u307e\u3059\u3002"}),"\n",(0,i.jsx)(s.p,{children:"\u6642\u306b\u306f\u3001\u3053\u306e\u30ec\u30a4\u30e4\u30fc\u306b\u30d3\u30b8\u30cd\u30b9\u30ed\u30b8\u30c3\u30af\u3092\u914d\u7f6e\u3059\u308b\u65b9\u304c\u4fbf\u5229\u306a\u5834\u5408\u3082\u3042\u308a\u307e\u3059\u3002\u3053\u308c\u306f\u3001\u30a6\u30a3\u30b8\u30a7\u30c3\u30c8\u304c\u304b\u306a\u308a\u306e\u30a4\u30f3\u30bf\u30e9\u30af\u30c6\u30a3\u30d6\u6027\u3092\u6301\u3063\u3066\u3044\u308b\u5834\u5408\uff08\u4f8b\u3048\u3070\u3001\u30a4\u30f3\u30bf\u30e9\u30af\u30c6\u30a3\u30d6\u30c6\u30fc\u30d6\u30eb\uff09\u3067\u3001\u305d\u306e\u4e2d\u306e\u30d3\u30b8\u30cd\u30b9\u30ed\u30b8\u30c3\u30af\u304c\u518d\u5229\u7528\u3055\u308c\u306a\u3044\u5834\u5408\u306b\u3088\u304f\u767a\u751f\u3057\u307e\u3059\u3002"}),"\n",(0,i.jsx)(s.p,{children:(0,i.jsx)(s.strong,{children:"\u30b9\u30e9\u30a4\u30b9\u306e\u4f8b"})}),"\n",(0,i.jsxs)("table",{children:[(0,i.jsx)("thead",{children:(0,i.jsxs)("tr",{children:[(0,i.jsx)("th",{children:" SNS "}),(0,i.jsx)("th",{children:" Git\u30d5\u30ed\u30f3\u30c8\u30a8\u30f3\u30c9\uff08\u4f8b\uff1aGitHub\uff09 "})]})}),(0,i.jsx)("tbody",{children:(0,i.jsxs)("tr",{children:[(0,i.jsx)("td",{children:(0,i.jsxs)("ul",{children:[(0,i.jsx)("li",{children:"\u6295\u7a3f\u30ab\u30fc\u30c9"}),(0,i.jsx)("li",{children:"\u30e6\u30fc\u30b6\u30fc\u30d7\u30ed\u30d5\u30a3\u30fc\u30eb\u306e\u30d8\u30c3\u30c0\u30fc\uff08\u30a2\u30af\u30b7\u30e7\u30f3\u4ed8\u304d\uff09"})]})}),(0,i.jsx)("td",{children:(0,i.jsxs)("ul",{children:[(0,i.jsx)("li",{children:"\u30ea\u30dd\u30b8\u30c8\u30ea\u5185\u306e\u30d5\u30a1\u30a4\u30eb\u4e00\u89a7\uff08\u30a2\u30af\u30b7\u30e7\u30f3\u4ed8\u304d\uff09"}),(0,i.jsx)("li",{children:"\u30b9\u30ec\u30c3\u30c9\u5185\u306e\u30b3\u30e1\u30f3\u30c8"}),(0,i.jsx)("li",{children:"\u30ea\u30dd\u30b8\u30c8\u30ea\u30ab\u30fc\u30c9"})]})})]})})]}),"\n",(0,i.jsx)(s.admonition,{type:"tip",children:(0,i.jsxs)(s.p,{children:["\u30cd\u30b9\u30c8\u3055\u308c\u305f\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u30b7\u30b9\u30c6\u30e0\uff08\u4f8b\u3048\u3070\u3001",(0,i.jsx)(s.a,{href:"https://remix.run",children:"Remix"}),"\u30eb\u30fc\u30bf\u30fc\uff09\u3092\u4f7f\u7528\u3057\u3066\u3044\u308b\u5834\u5408\u3001Widgets\u5c64\u3092Pages\u5c64\u3068\u540c\u69d8\u306b\u4f7f\u7528\u3059\u308b\u3053\u3068\u304c\u4fbf\u5229\u306a\u30b1\u30fc\u30b9\u304c\u3042\u308a\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u304b\u3089\u306e\u30c7\u30fc\u30bf\u3092\u53d6\u5f97\u3057\u3001\u8aad\u307f\u8fbc\u307f\u72b6\u614b\u3084\u30a8\u30e9\u30fc\u51e6\u7406\u3092\u542b\u3080\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\u30d6\u30ed\u30c3\u30af\u3092\u4f5c\u6210\u3059\u308b\u969b\u306b\u5f79\u7acb\u3066\u307e\u3059\u3002\u307e\u305f\u3001Pages\u5c64\u306e\u30ec\u30a4\u30a2\u30a6\u30c8\u3092\u3053\u3053\u306b\u914d\u7f6e\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002"]})}),"\n",(0,i.jsx)(s.h3,{id:"pages\u5c64",children:"Pages\u5c64"}),"\n",(0,i.jsx)(s.p,{children:"Pages\u5c64\u306f\u3001\u30da\u30fc\u30b8\u30d9\u30fc\u30b9\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\uff08\u4f8b\u3048\u3070\u3001\u30a6\u30a7\u30d6\u30b5\u30a4\u30c8\uff09\u306e\u30da\u30fc\u30b8\u3084\u3001\u753b\u9762\u30d9\u30fc\u30b9\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\uff08\u4f8b\u3048\u3070\u3001\u30e2\u30d0\u30a4\u30eb\u30a2\u30d7\u30ea\uff09\u306e\u753b\u9762\u3084\u30a2\u30af\u30c6\u30a3\u30d3\u30c6\u30a3\u3067\u3059\u3002"}),"\n",(0,i.jsx)(s.p,{children:"\u3053\u306e\u30ec\u30a4\u30e4\u30fc\u306f\u3001\u305d\u306e\u69cb\u6210\u7684\u306a\u6027\u8cea\u306b\u304a\u3044\u3066Widgets\u5c64\u306b\u4f3c\u3066\u3044\u307e\u3059\u304c\u3001\u3088\u308a\u5927\u304d\u306a\u898f\u6a21\u3067\u69cb\u6210\u3055\u308c\u3066\u3044\u307e\u3059\u3002Pages\u5c64\u306e\u5404\u30b9\u30e9\u30a4\u30b9\u306f\u3001\u30eb\u30fc\u30bf\u30fc\u306b\u63a5\u7d9a\u3067\u304d\u308bUI\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u3092\u542b\u3080\u307b\u304b\u3001\u30c7\u30fc\u30bf\u53d6\u5f97\u3084\u30a8\u30e9\u30fc\u51e6\u7406\u306e\u30ed\u30b8\u30c3\u30af\u3092\u542b\u3080\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002"}),"\n",(0,i.jsx)(s.p,{children:(0,i.jsx)(s.strong,{children:"\u30b9\u30e9\u30a4\u30b9\u306e\u4f8b"})}),"\n",(0,i.jsxs)("table",{children:[(0,i.jsx)("thead",{children:(0,i.jsxs)("tr",{children:[(0,i.jsx)("th",{children:" SNS "}),(0,i.jsx)("th",{children:" Git\u30d5\u30ed\u30f3\u30c8\u30a8\u30f3\u30c9\uff08\u4f8b\uff1aGitHub\uff09 "})]})}),(0,i.jsx)("tbody",{children:(0,i.jsxs)("tr",{children:[(0,i.jsx)("td",{children:(0,i.jsxs)("ul",{children:[(0,i.jsx)("li",{children:"\u30cb\u30e5\u30fc\u30b9\u30d5\u30a3\u30fc\u30c9"}),(0,i.jsx)("li",{children:"\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u30da\u30fc\u30b8"}),(0,i.jsx)("li",{children:"\u516c\u958b\u30e6\u30fc\u30b6\u30fc\u30d7\u30ed\u30d5\u30a3\u30fc\u30eb"})]})}),(0,i.jsx)("td",{children:(0,i.jsxs)("ul",{children:[(0,i.jsx)("li",{children:"\u30ea\u30dd\u30b8\u30c8\u30ea\u30da\u30fc\u30b8"}),(0,i.jsx)("li",{children:"\u30e6\u30fc\u30b6\u30fc\u306e\u30ea\u30dd\u30b8\u30c8\u30ea"}),(0,i.jsx)("li",{children:"\u30ea\u30dd\u30b8\u30c8\u30ea\u5185\u306e\u30d6\u30e9\u30f3\u30c1"})]})})]})})]}),"\n",(0,i.jsx)(s.h3,{id:"processes\u5c64",children:"Processes\u5c64"}),"\n",(0,i.jsx)(s.admonition,{type:"caution",children:(0,i.jsxs)(s.p,{children:["\u3053\u306e\u30ec\u30a4\u30e4\u30fc\u306f\u3001\u5ec3\u6b62\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u73fe\u5728\u306e\u4ed5\u69d8\u30d0\u30fc\u30b8\u30e7\u30f3\u3067\u306f\u3001\u3053\u308c\u3092\u907f\u3051\u3001\u5185\u5bb9\u3092 ",(0,i.jsx)(s.code,{children:"features"}),"\u5c64 \u3068 ",(0,i.jsx)(s.code,{children:"app"}),"\u5c64 \u306b\u79fb\u52d5\u3059\u308b\u3053\u3068\u3092\u63a8\u5968\u3057\u3066\u3044\u307e\u3059\u3002"]})}),"\n",(0,i.jsx)(s.p,{children:"Processes\u5c64\u306f\u3001\u8907\u96d1\u306a\u30de\u30eb\u30c1\u30da\u30fc\u30b8\u30a4\u30f3\u30bf\u30e9\u30af\u30b7\u30e7\u30f3\u304c\u5fc5\u8981\u306a\u969b\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002"}),"\n",(0,i.jsx)(s.p,{children:"\u3053\u306e\u30ec\u30a4\u30e4\u30fc\u306f\u610f\u56f3\u7684\u306b\u3042\u307e\u308a\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002\u307b\u3068\u3093\u3069\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306b\u306f\u3053\u306e\u30ec\u30a4\u30e4\u30fc\u306f\u5fc5\u8981\u3042\u308a\u307e\u305b\u3093\u3002\u30eb\u30fc\u30bf\u30fc\u3084\u30b5\u30fc\u30d0\u30fc\u30ec\u30d9\u30eb\u306e\u30ed\u30b8\u30c3\u30af\u306fApp\u5c64\u306b\u6b8b\u3059\u3079\u304d\u3067\u3059\u3002\u3053\u306e\u30ec\u30a4\u30e4\u30fc\u306f\u3001App\u5c64\u304c\u6210\u9577\u3057\u3059\u304e\u3066\u7ba1\u7406\u3067\u304d\u306a\u304f\u306a\u3063\u305f\u5834\u5408\u306b\u306e\u307f\u4f7f\u7528\u3092\u691c\u8a0e\u3057\u3066\u304f\u3060\u3055\u3044\u3002"}),"\n",(0,i.jsx)(s.h3,{id:"app\u5c64",children:"App\u5c64"}),"\n",(0,i.jsx)(s.p,{children:"App\u5c64\u306f\u3001\u30a2\u30d7\u30ea\u5168\u4f53\u306b\u95a2\u3059\u308b\u3059\u3079\u3066\u306e\u3053\u3068\u3067\u3059\u3002\u6280\u8853\u7684\u306a\u610f\u5473\uff08\u4f8b\u3048\u3070\u3001\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u30d7\u30ed\u30d0\u30a4\u30c0\u30fc\uff09\u3068\u30d3\u30b8\u30cd\u30b9\u7684\u306a\u610f\u5473\uff08\u4f8b\u3048\u3070\u3001\u5206\u6790\uff09\u3092\u542b\u307f\u307e\u3059\u3002"}),"\n",(0,i.jsx)(s.p,{children:"\u3053\u306e\u30ec\u30a4\u30e4\u30fc\u306f\u901a\u5e38\u3001Shared\u5c64\u3068\u540c\u69d8\u306b\u30b9\u30e9\u30a4\u30b9\u3092\u542b\u307e\u305a\u3001\u76f4\u63a5\u30bb\u30b0\u30e1\u30f3\u30c8\u3067\u69cb\u6210\u3055\u308c\u3066\u3044\u307e\u3059\u3002"}),"\n",(0,i.jsx)(s.p,{children:(0,i.jsx)(s.strong,{children:"\u5185\u5bb9\u306e\u4f8b"})}),"\n",(0,i.jsxs)(s.ul,{children:["\n",(0,i.jsx)(s.li,{children:"\u30b9\u30bf\u30a4\u30eb"}),"\n",(0,i.jsx)(s.li,{children:"\u30eb\u30fc\u30bf\u30fc"}),"\n",(0,i.jsx)(s.li,{children:"\u30c7\u30fc\u30bf\u30b9\u30c8\u30ec\u30fc\u30b8\u3084\u305d\u306e\u4ed6\u306e\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u30d7\u30ed\u30d0\u30a4\u30c0\u30fc"}),"\n",(0,i.jsx)(s.li,{children:"\u5206\u6790\u306e\u521d\u671f\u5316"}),"\n"]})]})}function j(e={}){const{wrapper:s}={...(0,r.R)(),...e.components};return s?(0,i.jsx)(s,{...e,children:(0,i.jsx)(x,{...e})}):x(e)}},1100:(e,s,n)=>{n.d(s,{R:()=>d,x:()=>c});var i=n(758);const r={},l=i.createContext(r);function d(e){const s=i.useContext(l);return i.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function c(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:d(e.components),i.createElement(l.Provider,{value:s},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunk_feature_sliced_documentation=self.webpackChunk_feature_sliced_documentation||[]).push([[9248],{2792:(e,s,n)=>{n.r(s),n.d(s,{assets:()=>t,contentTitle:()=>d,default:()=>j,frontMatter:()=>l,metadata:()=>c,toc:()=>h});var i=n(6070),r=n(1100);const l={sidebar_position:1,pagination_next:"reference/slices-segments"},d="\u30ec\u30a4\u30e4\u30fc",c={id:"reference/layers",title:"\u30ec\u30a4\u30e4\u30fc",description:"\u30ec\u30a4\u30e4\u30fc\uff08\u5c64\uff09\u306f\u3001Feature-Sliced Design\u306b\u304a\u3051\u308b\u7d44\u7e54\u968e\u5c64\u306e\u6700\u521d\u306e\u30ec\u30d9\u30eb\u3067\u3059\u3002\u305d\u306e\u76ee\u7684\u306f\u3001\u30b3\u30fc\u30c9\u3092\u5fc5\u8981\u306a\u8cac\u4efb\u306e\u91cf\u3068\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u5185\u306e\u4ed6\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u3078\u306e\u4f9d\u5b58\u5ea6\u306b\u57fa\u3065\u3044\u3066\u5206\u5272\u3059\u308b\u3053\u3068\u3067\u3059\u3002",source:"@site/i18n/ja/docusaurus-plugin-content-docs/current/reference/layers.mdx",sourceDirName:"reference",slug:"/reference/layers",permalink:"/ja/docs/reference/layers",draft:!1,unlisted:!1,editUrl:"https://github.com/feature-sliced/documentation/edit/master/i18n/ja/docusaurus-plugin-content-docs/current/reference/layers.mdx",tags:[],version:"current",lastUpdatedAt:1728325386e3,sidebarPosition:1,frontMatter:{sidebar_position:1,pagination_next:"reference/slices-segments"},sidebar:"referenceSidebar",previous:{title:"\ud83d\udcda \u53c2\u8003\u66f8",permalink:"/ja/docs/reference/"},next:{title:"\u30b9\u30e9\u30a4\u30b9\u3068\u30bb\u30b0\u30e1\u30f3\u30c8",permalink:"/ja/docs/reference/slices-segments"}},t={},h=[{value:"\u30ec\u30a4\u30e4\u30fc\u306e\u30a4\u30f3\u30dd\u30fc\u30c8\u30eb\u30fc\u30eb",id:"import-rule-on-layers",level:2},{value:"\u30ec\u30a4\u30e4\u30fc\u306e\u5b9a\u7fa9",id:"\u30ec\u30a4\u30e4\u30fc\u306e\u5b9a\u7fa9",level:2},{value:"Shared\u5c64",id:"shared\u5c64",level:3},{value:"Entities\u5c64",id:"entities\u5c64",level:3},{value:"Features\u5c64",id:"features\u5c64",level:3},{value:"Widgets\u5c64",id:"widgets\u5c64",level:3},{value:"Pages\u5c64",id:"pages\u5c64",level:3},{value:"Processes\u5c64",id:"processes\u5c64",level:3},{value:"App\u5c64",id:"app\u5c64",level:3}];function x(e){const s={a:"a",admonition:"admonition",blockquote:"blockquote",code:"code",em:"em",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",ol:"ol",p:"p",strong:"strong",ul:"ul",...(0,r.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(s.header,{children:(0,i.jsx)(s.h1,{id:"\u30ec\u30a4\u30e4\u30fc",children:"\u30ec\u30a4\u30e4\u30fc"})}),"\n",(0,i.jsx)(s.p,{children:"\u30ec\u30a4\u30e4\u30fc\uff08\u5c64\uff09\u306f\u3001Feature-Sliced Design\u306b\u304a\u3051\u308b\u7d44\u7e54\u968e\u5c64\u306e\u6700\u521d\u306e\u30ec\u30d9\u30eb\u3067\u3059\u3002\u305d\u306e\u76ee\u7684\u306f\u3001\u30b3\u30fc\u30c9\u3092\u5fc5\u8981\u306a\u8cac\u4efb\u306e\u91cf\u3068\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u5185\u306e\u4ed6\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u3078\u306e\u4f9d\u5b58\u5ea6\u306b\u57fa\u3065\u3044\u3066\u5206\u5272\u3059\u308b\u3053\u3068\u3067\u3059\u3002"}),"\n",(0,i.jsx)(s.admonition,{type:"note",children:(0,i.jsx)(s.p,{children:"\u3053\u306e\u30da\u30fc\u30b8\u3067\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u306f\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u5185\u306e\u30d5\u30a1\u30a4\u30eb\u3084\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u30d5\u30a1\u30a4\u30eb\u3092\u6301\u3064\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3092\u6307\u3057\u3066\u3044\u308b\u3002npm\u30d1\u30c3\u30b1\u30fc\u30b8\u3068\u6df7\u540c\u3057\u306a\u3044\u3067\u304f\u3060\u3055\u3044\u3002"})}),"\n",(0,i.jsx)(s.p,{children:"\u5404\u30ec\u30a4\u30e4\u30fc\u306f\u3001\u30b3\u30fc\u30c9\u5185\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u306b\u3069\u308c\u3060\u3051\u306e\u8cac\u4efb\u3092\u5272\u308a\u5f53\u3066\u308b\u3079\u304d\u304b\u3092\u5224\u65ad\u3059\u308b\u306e\u306b\u5f79\u7acb\u3064\u7279\u5225\u306a\u610f\u5473\u3092\u6301\u3063\u3066\u3044\u307e\u3059\u3002\u30ec\u30a4\u30e4\u30fc\u540d\u3068\u30ec\u30a4\u30e4\u30fc\u306e\u610f\u5473\u306f\u3001Feature-Sliced Design\u3092\u4f7f\u7528\u3057\u3066\u69cb\u7bc9\u3055\u308c\u305f\u3059\u3079\u3066\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u6a19\u6e96\u5316\u3055\u308c\u3066\u3044\u307e\u3059\u3002"}),"\n",(0,i.jsxs)(s.p,{children:["\u5408\u8a08\u3067",(0,i.jsx)("b",{children:"7\u3064\u306e\u30ec\u30a4\u30e4\u30fc"}),"\u304c\u3042\u308a\u3001\u6700\u3082\u8cac\u4efb\u3068\u4f9d\u5b58\u5ea6\u304c\u9ad8\u3044\u3082\u306e\u304b\u3089\u6700\u3082\u4f4e\u3044\u3082\u306e\u3078\u3068\u914d\u7f6e\u3055\u308c\u3066\u3044\u307e\u3059\u3002"]}),"\n",(0,i.jsx)("img",{src:"/img/layers/folders-graphic-light.svg#light-mode-only",width:"180",style:{float:"right",margin:"0 1em"},alt:"\u30d5\u30a1\u30a4\u30eb\u30b7\u30b9\u30c6\u30e0\u306e\u30c4\u30ea\u30fc\u306f\u30011\u3064\u306e\u30eb\u30fc\u30c8\u30d5\u30a9\u30eb\u30c0src\u30687\u3064\u306e\u30b5\u30d6\u30d5\u30a9\u30eb\u30c0\uff08app\u3001processes\u3001pages\u3001widgets\u3001features\u3001entities\u3001shared\uff09\u3067\u69cb\u6210\u3055\u308c\u3066\u3044\u307e\u3059\u3002processes\u30d5\u30a9\u30eb\u30c0\u306f\u5c11\u3057\u8584\u304f\u8868\u793a\u3055\u308c\u3066\u3044\u307e\u3059\u3002"}),"\n",(0,i.jsx)("img",{src:"/img/layers/folders-graphic-dark.svg#dark-mode-only",width:"180",style:{float:"right",margin:"0 1em"},alt:"\u30d5\u30a1\u30a4\u30eb\u30b7\u30b9\u30c6\u30e0\u306e\u30c4\u30ea\u30fc\u306f\u30011\u3064\u306e\u30eb\u30fc\u30c8\u30d5\u30a9\u30eb\u30c0src\u30687\u3064\u306e\u30b5\u30d6\u30d5\u30a9\u30eb\u30c0\uff08app\u3001processes\u3001pages\u3001widgets\u3001features\u3001entities\u3001shared\uff09\u3067\u69cb\u6210\u3055\u308c\u3066\u3044\u307e\u3059\u3002processes\u30d5\u30a9\u30eb\u30c0\u306f\u5c11\u3057\u8584\u304f\u8868\u793a\u3055\u308c\u3066\u3044\u307e\u3059\u3002"}),"\n",(0,i.jsxs)(s.ol,{children:["\n",(0,i.jsx)(s.li,{children:"App (\u30a2\u30c3\u30d7)"}),"\n",(0,i.jsx)(s.li,{children:"Processes (\u30d7\u30ed\u30bb\u30b9\u3001\u975e\u63a8\u5968)"}),"\n",(0,i.jsx)(s.li,{children:"Pages (\u30da\u30fc\u30b8)"}),"\n",(0,i.jsx)(s.li,{children:"Widgets (\u30a6\u30a3\u30b8\u30a7\u30c3\u30c8)"}),"\n",(0,i.jsx)(s.li,{children:"Features (\u30d5\u30a3\u30fc\u30c1\u30e3\u30fc)"}),"\n",(0,i.jsx)(s.li,{children:"Entities (\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3)"}),"\n",(0,i.jsx)(s.li,{children:"Shared (\u30b7\u30a7\u30a2\u30fc\u30c9)"}),"\n"]}),"\n",(0,i.jsx)(s.p,{children:"\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u5168\u3066\u306e\u30ec\u30a4\u30e4\u30fc\u3092\u4f7f\u7528\u3059\u308b\u5fc5\u8981\u306f\u306a\u3044\u306e\u3067\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u4fa1\u5024\u3092\u3082\u305f\u3089\u3059\u30ec\u30a4\u30e4\u30fc\u3060\u3051\u3092\u8ffd\u52a0\u3057\u3066\u304f\u3060\u3055\u3044\u3002"}),"\n",(0,i.jsx)(s.h2,{id:"import-rule-on-layers",children:"\u30ec\u30a4\u30e4\u30fc\u306e\u30a4\u30f3\u30dd\u30fc\u30c8\u30eb\u30fc\u30eb"}),"\n",(0,i.jsxs)(s.p,{children:["\u30ec\u30a4\u30e4\u30fc\u306f\u3001\u5f37\u304f\u7d50\u5408\u3055\u308c\u305f\u30e2\u30b8\u30e5\u30fc\u30eb\u306e\u30b0\u30eb\u30fc\u30d7\u3067\u3042\u308b",(0,i.jsx)("i",{children:"\u30b9\u30e9\u30a4\u30b9"}),"\u304b\u3089\u69cb\u6210\u3055\u308c\u3066\u3044\u307e\u3059\u3002Feature-Sliced Design\u306f\u4f4e\u3044\u7d50\u5408\u5ea6\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u308b\u305f\u3081\u3001\u30b9\u30e9\u30a4\u30b9\u9593\u306e\u4f9d\u5b58\u95a2\u4fc2\u306f",(0,i.jsx)("b",{children:"\u30ec\u30a4\u30e4\u30fc\u306e\u30a4\u30f3\u30dd\u30fc\u30c8\u30eb\u30fc\u30eb"}),"\u306b\u3088\u3063\u3066\u5236\u5fa1\u3055\u308c\u307e\u3059\u3002"]}),"\n",(0,i.jsxs)(s.blockquote,{children:["\n",(0,i.jsx)(s.p,{children:(0,i.jsx)(s.em,{children:"\u30b9\u30e9\u30a4\u30b9\u5185\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u306f\u3001\u4e0b\u5c64\u306e\u30ec\u30a4\u30e4\u30fc\u306b\u3042\u308b\u30b9\u30e9\u30a4\u30b9\u306e\u307f\u3092\u30a4\u30f3\u30dd\u30fc\u30c8\u3067\u304d\u308b\u3002"})}),"\n"]}),"\n",(0,i.jsxs)(s.p,{children:["\u4f8b\u3048\u3070\u3001",(0,i.jsx)(s.code,{children:"~/features/aaa"})," \u3067\u306f\u3001\u30b9\u30e9\u30a4\u30b9\u306f ",(0,i.jsx)(s.code,{children:"aaa"})," \u3067\u3042\u308b\u305f\u3081\u3001",(0,i.jsx)(s.code,{children:"~/features/aaa/api/request.ts"})," \u30d5\u30a1\u30a4\u30eb\u306f ",(0,i.jsx)(s.code,{children:"~/features/bbb"})," \u30d5\u30a9\u30eb\u30c0\u30fc\u5185\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u304b\u3089\u30b3\u30fc\u30c9\u3092\u30a4\u30f3\u30dd\u30fc\u30c8\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u304c\u3001",(0,i.jsx)(s.code,{children:"~/entities"})," \u3084 ",(0,i.jsx)(s.code,{children:"~/shared"})," \u304b\u3089\u3001\u307e\u305f ",(0,i.jsx)(s.code,{children:"~/features/aaa"})," \u5185\u306e\u96a3\u63a5\u30e2\u30b8\u30e5\u30fc\u30eb\u304b\u3089\u306f\u30a4\u30f3\u30dd\u30fc\u30c8\u3067\u304d\u307e\u3059\u3002"]}),"\n",(0,i.jsx)(s.h2,{id:"\u30ec\u30a4\u30e4\u30fc\u306e\u5b9a\u7fa9",children:"\u30ec\u30a4\u30e4\u30fc\u306e\u5b9a\u7fa9"}),"\n",(0,i.jsx)(s.h3,{id:"shared\u5c64",children:"Shared\u5c64"}),"\n",(0,i.jsx)(s.p,{children:"Shared\u5c64\u306f\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3084\u30d3\u30b8\u30cd\u30b9\u306e\u7279\u6027\u304b\u3089\u5207\u308a\u96e2\u3055\u308c\u305f\u3001\u5b64\u7acb\u3057\u305f\u30e2\u30b8\u30e5\u30fc\u30eb\u3001\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u3001\u62bd\u8c61\u5316\u306e\u3053\u3068\u3067\u3059\u3002"}),"\n",(0,i.jsx)(s.p,{children:"\u3053\u306e\u30ec\u30a4\u30e4\u30fc\u306f\u4ed6\u306e\u30ec\u30a4\u30e4\u30fc\u3068\u306f\u7570\u306a\u308a\u3001\u30b9\u30e9\u30a4\u30b9\u3067\u306f\u306a\u304f\u76f4\u63a5\u30bb\u30b0\u30e1\u30f3\u30c8\u3067\u69cb\u6210\u3055\u308c\u3066\u3044\u307e\u3059\u3002"}),"\n",(0,i.jsx)(s.p,{children:(0,i.jsx)(s.strong,{children:"\u5185\u5bb9\u306e\u4f8b"})}),"\n",(0,i.jsxs)(s.ul,{children:["\n",(0,i.jsx)(s.li,{children:"UI\u30e9\u30a4\u30d6\u30e9\u30ea"}),"\n",(0,i.jsx)(s.li,{children:"API\u30af\u30e9\u30a4\u30a2\u30f3\u30c8"}),"\n",(0,i.jsx)(s.li,{children:"\u30d6\u30e9\u30a6\u30b6API\u3068\u9023\u643a\u3059\u308b\u30b3\u30fc\u30c9"}),"\n"]}),"\n",(0,i.jsx)(s.h3,{id:"entities\u5c64",children:"Entities\u5c64"}),"\n",(0,i.jsx)(s.p,{children:"Entities\u5c64\u306f\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u672c\u8cea\u3092\u5f62\u6210\u3059\u308b\u73fe\u5b9f\u4e16\u754c\u306e\u6982\u5ff5\u3067\u3059\u3002\u901a\u5e38\u3001\u3053\u308c\u306f\u30d3\u30b8\u30cd\u30b9\u304c\u30d7\u30ed\u30c0\u30af\u30c8\u3092\u8aac\u660e\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3059\u308b\u7528\u8a9e\u3067\u3059\u3002"}),"\n",(0,i.jsx)(s.p,{children:"\u3053\u306e\u30ec\u30a4\u30e4\u30fc\u306e\u5404\u30b9\u30e9\u30a4\u30b9\u306f\u3001\u30e6\u30fc\u30b6\u30fc\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\u306e\u9759\u7684\u8981\u7d20\u3001\u30c7\u30fc\u30bf\u30b9\u30c8\u30ec\u30fc\u30b8\u3001\u304a\u3088\u3073CRUD\uff08\u4f5c\u6210\u30fb\u8aad\u307f\u53d6\u308a\u30fb\u66f4\u65b0\u30fb\u524a\u9664\uff09\u64cd\u4f5c\u3092\u542b\u307f\u307e\u3059\u3002"}),"\n",(0,i.jsx)(s.p,{children:(0,i.jsx)(s.strong,{children:"\u30b9\u30e9\u30a4\u30b9\u306e\u4f8b"})}),"\n",(0,i.jsxs)("table",{children:[(0,i.jsx)("thead",{children:(0,i.jsxs)("tr",{children:[(0,i.jsx)("th",{children:" SNS "}),(0,i.jsx)("th",{children:" Git\u30d5\u30ed\u30f3\u30c8\u30a8\u30f3\u30c9\uff08\u4f8b\uff1aGitHub\uff09 "})]})}),(0,i.jsx)("tbody",{children:(0,i.jsxs)("tr",{children:[(0,i.jsx)("td",{children:(0,i.jsxs)("ul",{children:[(0,i.jsx)("li",{children:"\u30e6\u30fc\u30b6\u30fc"}),(0,i.jsx)("li",{children:"\u6295\u7a3f"}),(0,i.jsx)("li",{children:"\u30b0\u30eb\u30fc\u30d7"})]})}),(0,i.jsx)("td",{children:(0,i.jsxs)("ul",{children:[(0,i.jsx)("li",{children:"\u30ea\u30dd\u30b8\u30c8\u30ea"}),(0,i.jsx)("li",{children:"\u30d5\u30a1\u30a4\u30eb"}),(0,i.jsx)("li",{children:"\u30b3\u30df\u30c3\u30c8"})]})})]})})]}),"\n",(0,i.jsxs)(s.admonition,{type:"tip",children:[(0,i.jsxs)(s.p,{children:["Git\u30d5\u30ed\u30f3\u30c8\u30a8\u30f3\u30c9\u306e\u4f8b\u3067\u306f\u3001",(0,i.jsx)("i",{children:"\u30ea\u30dd\u30b8\u30c8\u30ea"}),"\u304c",(0,i.jsx)("i",{children:"\u30d5\u30a1\u30a4\u30eb"}),"\u3092\u542b\u3080\u3053\u3068\u306b\u6c17\u4ed8\u304f\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002\u3053\u308c\u306f\u3001\u30ea\u30dd\u30b8\u30c8\u30ea\u304c\u4ed6\u306e\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u3092\u5185\u5305\u3059\u308b\u9ad8\u30ec\u30d9\u30eb\u306e\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u3067\u3042\u308b\u3053\u3068\u3092\u793a\u3057\u3066\u3044\u307e\u3059\u3002\u3053\u306e\u3088\u3046\u306a\u9ad8\u30ec\u30d9\u30eb\u306e\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u3092\u4f5c\u6210\u3053\u3068\u306f\u4e00\u822c\u7684\u304c\u3001\u3053\u306e\u5834\u5408\u3001\u30ec\u30a4\u30e4\u30fc\u306e\u30a4\u30f3\u30dd\u30fc\u30c8\u30eb\u30fc\u30eb\u3092\u7834\u3089\u306a\u3044\u3053\u3068\u306f\u6642\u306b\u96e3\u3057\u3044\u3067\u3059\u3002"]}),(0,i.jsx)(s.p,{children:"\u3053\u306e\u554f\u984c\u3092\u89e3\u6c7a\u3059\u308b\u305f\u3081\u306e\u3044\u304f\u3064\u304b\u306e\u63d0\u6848\u304c\u3042\u308a\u307e\u3059\u3002"}),(0,i.jsxs)(s.ul,{children:["\n",(0,i.jsx)(s.li,{children:"\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u306eUI\u306f\u3001\u4e0b\u4f4d\u30ec\u30d9\u30eb\u306e\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u3092\u633f\u5165\u3059\u308b\u305f\u3081\u306e\u30b9\u30ed\u30c3\u30c8\u3092\u542b\u3080\u3079\u304d"}),"\n",(0,i.jsx)(s.li,{children:"\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u9593\u306e\u76f8\u4e92\u4f5c\u7528\u306b\u95a2\u9023\u3059\u308b\u30d3\u30b8\u30cd\u30b9\u30ed\u30b8\u30c3\u30af\u306f\u3001\u901a\u5e38\u3001Features\u5c64\u306b\u914d\u7f6e\u3055\u308c\u308b\u3079\u304d"}),"\n",(0,i.jsx)(s.li,{children:"\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\u306f\u3001API\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306e\u8fd1\u304f\u306b\u3042\u308bShared\u5c64\u306b\u62bd\u51fa\u3067\u304d\u308b"}),"\n"]})]}),"\n",(0,i.jsx)(s.h3,{id:"features\u5c64",children:"Features\u5c64"}),"\n",(0,i.jsx)(s.p,{children:"Features\u5c64\u306f\u3001\u30e6\u30fc\u30b6\u30fc\u304c\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u5185\u3067\u30d3\u30b8\u30cd\u30b9\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u3068\u30a4\u30f3\u30bf\u30e9\u30af\u30b7\u30e7\u30f3\u3059\u308b\u305f\u3081\u306b\u884c\u3046\u30a2\u30af\u30b7\u30e7\u30f3\u3067\u3001\u4fa1\u5024\u306e\u3042\u308b\u7d50\u679c\u3092\u9054\u6210\u3059\u308b\u305f\u3081\u306e\u3082\u306e\u3067\u3059\u3002\u3053\u3053\u306b\u306f\u3001\u30e6\u30fc\u30b6\u30fc\u306e\u305f\u3081\u306b\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u304c\u5b9f\u884c\u3059\u308b\u30a2\u30af\u30b7\u30e7\u30f3\u3082\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002"}),"\n",(0,i.jsx)(s.p,{children:"\u3053\u306e\u30ec\u30a4\u30e4\u30fc\u306e\u30b9\u30e9\u30a4\u30b9\u306f\u3001\u4fa1\u5024\u3092\u751f\u307f\u51fa\u3059\u30a2\u30af\u30b7\u30e7\u30f3\u3092\u5b9f\u884c\u3059\u308b\u305f\u3081\u306e\u30a4\u30f3\u30bf\u30e9\u30af\u30c6\u30a3\u30d6\u306aUI\u8981\u7d20\u3001\u5185\u90e8\u72b6\u614b\u3001\u304a\u3088\u3073API\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u542b\u3080\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002"}),"\n",(0,i.jsx)(s.p,{children:(0,i.jsx)(s.strong,{children:"\u30b9\u30e9\u30a4\u30b9\u306e\u4f8b"})}),"\n",(0,i.jsxs)("table",{children:[(0,i.jsx)("thead",{children:(0,i.jsxs)("tr",{children:[(0,i.jsx)("th",{children:" SNS "}),(0,i.jsx)("th",{children:" Git\u30d5\u30ed\u30f3\u30c8\u30a8\u30f3\u30c9\uff08\u4f8b\uff1aGitHub\uff09 "}),(0,i.jsx)("th",{children:" \u30e6\u30fc\u30b6\u30fc\u306e\u4ee3\u308f\u308a\u306b\u884c\u3046\u30a2\u30af\u30b7\u30e7\u30f3 "})]})}),(0,i.jsx)("tbody",{children:(0,i.jsxs)("tr",{children:[(0,i.jsx)("td",{children:(0,i.jsxs)("ul",{children:[(0,i.jsx)("li",{children:"\u30ed\u30b0\u30a4\u30f3"}),(0,i.jsx)("li",{children:"\u6295\u7a3f\u3092\u4f5c\u6210"}),(0,i.jsx)("li",{children:"\u30b0\u30eb\u30fc\u30d7\u306b\u53c2\u52a0"})]})}),(0,i.jsx)("td",{children:(0,i.jsxs)("ul",{children:[(0,i.jsx)("li",{children:"\u30d5\u30a1\u30a4\u30eb\u3092\u5909\u66f4"}),(0,i.jsx)("li",{children:"\u30b3\u30e1\u30f3\u30c8\u3092\u6b8b\u3059"}),(0,i.jsx)("li",{children:"\u30d6\u30e9\u30f3\u30c1\u3092\u30de\u30fc\u30b8"})]})}),(0,i.jsx)("td",{children:(0,i.jsxs)("ul",{children:[(0,i.jsx)("li",{children:"\u30c0\u30fc\u30af\u30c6\u30fc\u30de\u3092\u81ea\u52d5\u7684\u306b\u6709\u52b9\u306b\u3059\u308b"}),(0,i.jsx)("li",{children:"\u30d0\u30c3\u30af\u30b0\u30e9\u30a6\u30f3\u30c9\u3067\u8a08\u7b97\u3092\u5b9f\u884c\u3059\u308b"}),(0,i.jsx)("li",{children:"User-Agent\u306b\u57fa\u3065\u304f\u30a2\u30af\u30b7\u30e7\u30f3"})]})})]})})]}),"\n",(0,i.jsx)(s.h3,{id:"widgets\u5c64",children:"Widgets\u5c64"}),"\n",(0,i.jsx)(s.p,{children:"Widgets\u5c64\u306f\u3001\u72ec\u7acb\u3057\u305fUI\u30d6\u30ed\u30c3\u30af\u3067\u3042\u308a\u3001\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u3084\u30d5\u30a3\u30fc\u30c1\u30e3\u30fc\u306a\u3069\u306e\u4f4e\u30ec\u30d9\u30eb\u30e6\u30cb\u30c3\u30c8\u306e\u7d44\u307f\u5408\u308f\u305b\u3067\u3059\u3002"}),"\n",(0,i.jsx)(s.p,{children:"\u3053\u306e\u30ec\u30a4\u30e4\u30fc\u306f\u3001\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u306e\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\u306b\u6b8b\u3055\u308c\u305f\u30b9\u30ed\u30c3\u30c8\u3092\u3001\u4ed6\u306e\u30d5\u30a3\u30fc\u30c1\u30e3\u30fc\u304b\u3089\u306e\u30a4\u30f3\u30bf\u30e9\u30af\u30c6\u30a3\u30d6\u8981\u7d20\u3084\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u3067\u57cb\u3081\u308b\u3053\u3068\u3092\u53ef\u80fd\u306b\u3057\u3066\u3044\u307e\u3059\u3002\u3057\u305f\u304c\u3063\u3066\u3001\u901a\u5e38\u3001\u3053\u306e\u30ec\u30a4\u30e4\u30fc\u306b\u306f\u30d3\u30b8\u30cd\u30b9\u30ed\u30b8\u30c3\u30af\u306f\u914d\u7f6e\u3055\u308c\u305a\u3001\u4ee3\u308f\u308a\u306b\u30d5\u30a3\u30fc\u30c1\u30e3\u30fc\u306b\u4fdd\u5b58\u3055\u308c\u307e\u3059\u3002\u3053\u306e\u30ec\u30a4\u30e4\u30fc\u306e\u5404\u30b9\u30e9\u30a4\u30b9\u306f\u3001\u4f7f\u7528\u53ef\u80fd\u306aUI\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u3092\u542b\u307f\u3001\u6642\u306b\u306f\u30d3\u30b8\u30cd\u30b9\u30ed\u30b8\u30c3\u30af\u4ee5\u5916\u306e\u30ed\u30b8\u30c3\u30af\uff08\u4f8b\u3048\u3070\u3001\u30b8\u30a7\u30b9\u30c1\u30e3\u30fc\u3001\u30ad\u30fc\u30dc\u30fc\u30c9\u3068\u306e\u76f8\u4e92\u4f5c\u7528\u306a\u3069\uff09\u3092\u542b\u3080\u3053\u3068\u304c\u3042\u308a\u307e\u3059\u3002"}),"\n",(0,i.jsx)(s.p,{children:"\u6642\u306b\u306f\u3001\u3053\u306e\u30ec\u30a4\u30e4\u30fc\u306b\u30d3\u30b8\u30cd\u30b9\u30ed\u30b8\u30c3\u30af\u3092\u914d\u7f6e\u3059\u308b\u65b9\u304c\u4fbf\u5229\u306a\u5834\u5408\u3082\u3042\u308a\u307e\u3059\u3002\u3053\u308c\u306f\u3001\u30a6\u30a3\u30b8\u30a7\u30c3\u30c8\u304c\u304b\u306a\u308a\u306e\u30a4\u30f3\u30bf\u30e9\u30af\u30c6\u30a3\u30d6\u6027\u3092\u6301\u3063\u3066\u3044\u308b\u5834\u5408\uff08\u4f8b\u3048\u3070\u3001\u30a4\u30f3\u30bf\u30e9\u30af\u30c6\u30a3\u30d6\u30c6\u30fc\u30d6\u30eb\uff09\u3067\u3001\u305d\u306e\u4e2d\u306e\u30d3\u30b8\u30cd\u30b9\u30ed\u30b8\u30c3\u30af\u304c\u518d\u5229\u7528\u3055\u308c\u306a\u3044\u5834\u5408\u306b\u3088\u304f\u767a\u751f\u3057\u307e\u3059\u3002"}),"\n",(0,i.jsx)(s.p,{children:(0,i.jsx)(s.strong,{children:"\u30b9\u30e9\u30a4\u30b9\u306e\u4f8b"})}),"\n",(0,i.jsxs)("table",{children:[(0,i.jsx)("thead",{children:(0,i.jsxs)("tr",{children:[(0,i.jsx)("th",{children:" SNS "}),(0,i.jsx)("th",{children:" Git\u30d5\u30ed\u30f3\u30c8\u30a8\u30f3\u30c9\uff08\u4f8b\uff1aGitHub\uff09 "})]})}),(0,i.jsx)("tbody",{children:(0,i.jsxs)("tr",{children:[(0,i.jsx)("td",{children:(0,i.jsxs)("ul",{children:[(0,i.jsx)("li",{children:"\u6295\u7a3f\u30ab\u30fc\u30c9"}),(0,i.jsx)("li",{children:"\u30e6\u30fc\u30b6\u30fc\u30d7\u30ed\u30d5\u30a3\u30fc\u30eb\u306e\u30d8\u30c3\u30c0\u30fc\uff08\u30a2\u30af\u30b7\u30e7\u30f3\u4ed8\u304d\uff09"})]})}),(0,i.jsx)("td",{children:(0,i.jsxs)("ul",{children:[(0,i.jsx)("li",{children:"\u30ea\u30dd\u30b8\u30c8\u30ea\u5185\u306e\u30d5\u30a1\u30a4\u30eb\u4e00\u89a7\uff08\u30a2\u30af\u30b7\u30e7\u30f3\u4ed8\u304d\uff09"}),(0,i.jsx)("li",{children:"\u30b9\u30ec\u30c3\u30c9\u5185\u306e\u30b3\u30e1\u30f3\u30c8"}),(0,i.jsx)("li",{children:"\u30ea\u30dd\u30b8\u30c8\u30ea\u30ab\u30fc\u30c9"})]})})]})})]}),"\n",(0,i.jsx)(s.admonition,{type:"tip",children:(0,i.jsxs)(s.p,{children:["\u30cd\u30b9\u30c8\u3055\u308c\u305f\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0\u30b7\u30b9\u30c6\u30e0\uff08\u4f8b\u3048\u3070\u3001",(0,i.jsx)(s.a,{href:"https://remix.run",children:"Remix"}),"\u30eb\u30fc\u30bf\u30fc\uff09\u3092\u4f7f\u7528\u3057\u3066\u3044\u308b\u5834\u5408\u3001Widgets\u5c64\u3092Pages\u5c64\u3068\u540c\u69d8\u306b\u4f7f\u7528\u3059\u308b\u3053\u3068\u304c\u4fbf\u5229\u306a\u30b1\u30fc\u30b9\u304c\u3042\u308a\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u304b\u3089\u306e\u30c7\u30fc\u30bf\u3092\u53d6\u5f97\u3057\u3001\u8aad\u307f\u8fbc\u307f\u72b6\u614b\u3084\u30a8\u30e9\u30fc\u51e6\u7406\u3092\u542b\u3080\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\u30d6\u30ed\u30c3\u30af\u3092\u4f5c\u6210\u3059\u308b\u969b\u306b\u5f79\u7acb\u3066\u307e\u3059\u3002\u307e\u305f\u3001Pages\u5c64\u306e\u30ec\u30a4\u30a2\u30a6\u30c8\u3092\u3053\u3053\u306b\u914d\u7f6e\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002"]})}),"\n",(0,i.jsx)(s.h3,{id:"pages\u5c64",children:"Pages\u5c64"}),"\n",(0,i.jsx)(s.p,{children:"Pages\u5c64\u306f\u3001\u30da\u30fc\u30b8\u30d9\u30fc\u30b9\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\uff08\u4f8b\u3048\u3070\u3001\u30a6\u30a7\u30d6\u30b5\u30a4\u30c8\uff09\u306e\u30da\u30fc\u30b8\u3084\u3001\u753b\u9762\u30d9\u30fc\u30b9\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\uff08\u4f8b\u3048\u3070\u3001\u30e2\u30d0\u30a4\u30eb\u30a2\u30d7\u30ea\uff09\u306e\u753b\u9762\u3084\u30a2\u30af\u30c6\u30a3\u30d3\u30c6\u30a3\u3067\u3059\u3002"}),"\n",(0,i.jsx)(s.p,{children:"\u3053\u306e\u30ec\u30a4\u30e4\u30fc\u306f\u3001\u305d\u306e\u69cb\u6210\u7684\u306a\u6027\u8cea\u306b\u304a\u3044\u3066Widgets\u5c64\u306b\u4f3c\u3066\u3044\u307e\u3059\u304c\u3001\u3088\u308a\u5927\u304d\u306a\u898f\u6a21\u3067\u69cb\u6210\u3055\u308c\u3066\u3044\u307e\u3059\u3002Pages\u5c64\u306e\u5404\u30b9\u30e9\u30a4\u30b9\u306f\u3001\u30eb\u30fc\u30bf\u30fc\u306b\u63a5\u7d9a\u3067\u304d\u308bUI\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u3092\u542b\u3080\u307b\u304b\u3001\u30c7\u30fc\u30bf\u53d6\u5f97\u3084\u30a8\u30e9\u30fc\u51e6\u7406\u306e\u30ed\u30b8\u30c3\u30af\u3092\u542b\u3080\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002"}),"\n",(0,i.jsx)(s.p,{children:(0,i.jsx)(s.strong,{children:"\u30b9\u30e9\u30a4\u30b9\u306e\u4f8b"})}),"\n",(0,i.jsxs)("table",{children:[(0,i.jsx)("thead",{children:(0,i.jsxs)("tr",{children:[(0,i.jsx)("th",{children:" SNS "}),(0,i.jsx)("th",{children:" Git\u30d5\u30ed\u30f3\u30c8\u30a8\u30f3\u30c9\uff08\u4f8b\uff1aGitHub\uff09 "})]})}),(0,i.jsx)("tbody",{children:(0,i.jsxs)("tr",{children:[(0,i.jsx)("td",{children:(0,i.jsxs)("ul",{children:[(0,i.jsx)("li",{children:"\u30cb\u30e5\u30fc\u30b9\u30d5\u30a3\u30fc\u30c9"}),(0,i.jsx)("li",{children:"\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u30da\u30fc\u30b8"}),(0,i.jsx)("li",{children:"\u516c\u958b\u30e6\u30fc\u30b6\u30fc\u30d7\u30ed\u30d5\u30a3\u30fc\u30eb"})]})}),(0,i.jsx)("td",{children:(0,i.jsxs)("ul",{children:[(0,i.jsx)("li",{children:"\u30ea\u30dd\u30b8\u30c8\u30ea\u30da\u30fc\u30b8"}),(0,i.jsx)("li",{children:"\u30e6\u30fc\u30b6\u30fc\u306e\u30ea\u30dd\u30b8\u30c8\u30ea"}),(0,i.jsx)("li",{children:"\u30ea\u30dd\u30b8\u30c8\u30ea\u5185\u306e\u30d6\u30e9\u30f3\u30c1"})]})})]})})]}),"\n",(0,i.jsx)(s.h3,{id:"processes\u5c64",children:"Processes\u5c64"}),"\n",(0,i.jsx)(s.admonition,{type:"caution",children:(0,i.jsxs)(s.p,{children:["\u3053\u306e\u30ec\u30a4\u30e4\u30fc\u306f\u3001\u5ec3\u6b62\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u73fe\u5728\u306e\u4ed5\u69d8\u30d0\u30fc\u30b8\u30e7\u30f3\u3067\u306f\u3001\u3053\u308c\u3092\u907f\u3051\u3001\u5185\u5bb9\u3092 ",(0,i.jsx)(s.code,{children:"features"}),"\u5c64 \u3068 ",(0,i.jsx)(s.code,{children:"app"}),"\u5c64 \u306b\u79fb\u52d5\u3059\u308b\u3053\u3068\u3092\u63a8\u5968\u3057\u3066\u3044\u307e\u3059\u3002"]})}),"\n",(0,i.jsx)(s.p,{children:"Processes\u5c64\u306f\u3001\u8907\u96d1\u306a\u30de\u30eb\u30c1\u30da\u30fc\u30b8\u30a4\u30f3\u30bf\u30e9\u30af\u30b7\u30e7\u30f3\u304c\u5fc5\u8981\u306a\u969b\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002"}),"\n",(0,i.jsx)(s.p,{children:"\u3053\u306e\u30ec\u30a4\u30e4\u30fc\u306f\u610f\u56f3\u7684\u306b\u3042\u307e\u308a\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002\u307b\u3068\u3093\u3069\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306b\u306f\u3053\u306e\u30ec\u30a4\u30e4\u30fc\u306f\u5fc5\u8981\u3042\u308a\u307e\u305b\u3093\u3002\u30eb\u30fc\u30bf\u30fc\u3084\u30b5\u30fc\u30d0\u30fc\u30ec\u30d9\u30eb\u306e\u30ed\u30b8\u30c3\u30af\u306fApp\u5c64\u306b\u6b8b\u3059\u3079\u304d\u3067\u3059\u3002\u3053\u306e\u30ec\u30a4\u30e4\u30fc\u306f\u3001App\u5c64\u304c\u6210\u9577\u3057\u3059\u304e\u3066\u7ba1\u7406\u3067\u304d\u306a\u304f\u306a\u3063\u305f\u5834\u5408\u306b\u306e\u307f\u4f7f\u7528\u3092\u691c\u8a0e\u3057\u3066\u304f\u3060\u3055\u3044\u3002"}),"\n",(0,i.jsx)(s.h3,{id:"app\u5c64",children:"App\u5c64"}),"\n",(0,i.jsx)(s.p,{children:"App\u5c64\u306f\u3001\u30a2\u30d7\u30ea\u5168\u4f53\u306b\u95a2\u3059\u308b\u3059\u3079\u3066\u306e\u3053\u3068\u3067\u3059\u3002\u6280\u8853\u7684\u306a\u610f\u5473\uff08\u4f8b\u3048\u3070\u3001\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u30d7\u30ed\u30d0\u30a4\u30c0\u30fc\uff09\u3068\u30d3\u30b8\u30cd\u30b9\u7684\u306a\u610f\u5473\uff08\u4f8b\u3048\u3070\u3001\u5206\u6790\uff09\u3092\u542b\u307f\u307e\u3059\u3002"}),"\n",(0,i.jsx)(s.p,{children:"\u3053\u306e\u30ec\u30a4\u30e4\u30fc\u306f\u901a\u5e38\u3001Shared\u5c64\u3068\u540c\u69d8\u306b\u30b9\u30e9\u30a4\u30b9\u3092\u542b\u307e\u305a\u3001\u76f4\u63a5\u30bb\u30b0\u30e1\u30f3\u30c8\u3067\u69cb\u6210\u3055\u308c\u3066\u3044\u307e\u3059\u3002"}),"\n",(0,i.jsx)(s.p,{children:(0,i.jsx)(s.strong,{children:"\u5185\u5bb9\u306e\u4f8b"})}),"\n",(0,i.jsxs)(s.ul,{children:["\n",(0,i.jsx)(s.li,{children:"\u30b9\u30bf\u30a4\u30eb"}),"\n",(0,i.jsx)(s.li,{children:"\u30eb\u30fc\u30bf\u30fc"}),"\n",(0,i.jsx)(s.li,{children:"\u30c7\u30fc\u30bf\u30b9\u30c8\u30ec\u30fc\u30b8\u3084\u305d\u306e\u4ed6\u306e\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u30d7\u30ed\u30d0\u30a4\u30c0\u30fc"}),"\n",(0,i.jsx)(s.li,{children:"\u5206\u6790\u306e\u521d\u671f\u5316"}),"\n"]})]})}function j(e={}){const{wrapper:s}={...(0,r.R)(),...e.components};return s?(0,i.jsx)(s,{...e,children:(0,i.jsx)(x,{...e})}):x(e)}},1100:(e,s,n)=>{n.d(s,{R:()=>d,x:()=>c});var i=n(758);const r={},l=i.createContext(r);function d(e){const s=i.useContext(l);return i.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function c(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:d(e.components),i.createElement(l.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/ja/assets/js/13884f15.602d033f.js b/ja/assets/js/13884f15.ccb96ee5.js similarity index 98% rename from ja/assets/js/13884f15.602d033f.js rename to ja/assets/js/13884f15.ccb96ee5.js index 555f6b423e..cc6317cd25 100644 --- a/ja/assets/js/13884f15.602d033f.js +++ b/ja/assets/js/13884f15.ccb96ee5.js @@ -1 +1 @@ -"use strict";(self.webpackChunk_feature_sliced_documentation=self.webpackChunk_feature_sliced_documentation||[]).push([[7783],{3254:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>d,contentTitle:()=>l,default:()=>u,frontMatter:()=>t,metadata:()=>o,toc:()=>c});var s=i(6070),r=i(1100);const t={sidebar_position:1},l="\u30df\u30c3\u30b7\u30e7\u30f3",o={id:"about/mission",title:"\u30df\u30c3\u30b7\u30e7\u30f3",description:"\u3053\u3053\u3067\u306f\u3001\u79c1\u305f\u3061\u304cFSD\u65b9\u6cd5\u8ad6\u3092\u958b\u767a\u3059\u308b\u969b\u306b\u5f93\u3046\u65b9\u6cd5\u8ad6\u9069\u7528\u306e\u5236\u9650\u3068\u76ee\u6a19\u306b\u3064\u3044\u3066\u8aac\u660e\u3057\u307e\u3059\u3002",source:"@site/i18n/ja/docusaurus-plugin-content-docs/current/about/mission.md",sourceDirName:"about",slug:"/about/mission",permalink:"/ja/docs/about/mission",draft:!1,unlisted:!1,editUrl:"https://github.com/feature-sliced/documentation/edit/master/i18n/ja/docusaurus-plugin-content-docs/current/about/mission.md",tags:[],version:"current",lastUpdatedAt:1727607766e3,sidebarPosition:1,frontMatter:{sidebar_position:1},sidebar:"aboutSidebar",previous:{title:"\ud83c\udf70 FSD\u306b\u3064\u3044\u3066",permalink:"/ja/docs/about/"},next:{title:"\u30e2\u30c1\u30d9\u30fc\u30b7\u30e7\u30f3",permalink:"/ja/docs/about/motivation"}},d={},c=[{value:"\u76ee\u6a19",id:"goals",level:2},{value:"\u5e45\u5e83\u3044\u958b\u767a\u8005\u306b\u5bfe\u3059\u308b\u76f4\u611f\u7684\u306a\u660e\u78ba\u3055",id:"intuitive-clarity-for-a-wide-range-of-developers",level:3},{value:"\u65e5\u5e38\u7684\u306a\u554f\u984c\u306e\u89e3\u6c7a",id:"solving-everyday-problems",level:3},{value:"\u5236\u9650",id:"limitations",level:2},{value:"\u53c2\u7167",id:"see-also",level:2}];function a(e){const n={a:"a",blockquote:"blockquote",em:"em",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",p:"p",strong:"strong",ul:"ul",...(0,r.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.header,{children:(0,s.jsx)(n.h1,{id:"\u30df\u30c3\u30b7\u30e7\u30f3",children:"\u30df\u30c3\u30b7\u30e7\u30f3"})}),"\n",(0,s.jsx)(n.p,{children:"\u3053\u3053\u3067\u306f\u3001\u79c1\u305f\u3061\u304cFSD\u65b9\u6cd5\u8ad6\u3092\u958b\u767a\u3059\u308b\u969b\u306b\u5f93\u3046\u65b9\u6cd5\u8ad6\u9069\u7528\u306e\u5236\u9650\u3068\u76ee\u6a19\u306b\u3064\u3044\u3066\u8aac\u660e\u3057\u307e\u3059\u3002"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"\u79c1\u305f\u3061\u306f\u3001\u76ee\u6a19\u3092\u30a4\u30c7\u30aa\u30ed\u30ae\u30fc\u3068\u30b7\u30f3\u30d7\u30eb\u3055\u306e\u30d0\u30e9\u30f3\u30b9\u3068\u3057\u3066\u8003\u3048\u3066\u3044\u308b"}),"\n",(0,s.jsx)(n.li,{children:"\u79c1\u305f\u3061\u306f\u3001\u3059\u3079\u3066\u306e\u4eba\u306b\u9069\u3057\u305f\u9280\u306e\u5f3e\u4e38\u3092\u4f5c\u308b\u3053\u3068\u306f\u3067\u304d\u306a\u3044"}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"\u305d\u308c\u3067\u3082\u3001FSD\u65b9\u6cd5\u8ad6\u304c\u5e83\u7bc4\u306a\u958b\u767a\u8005\u306b\u3068\u3063\u3066\u8fd1\u304f\u3001\u30a2\u30af\u30bb\u30b9\u53ef\u80fd\u3067\u3042\u308b\u3053\u3068\u3092\u671b\u3093\u3067\u3044\u307e\u3059\u3002"})}),"\n",(0,s.jsx)(n.h2,{id:"goals",children:"\u76ee\u6a19"}),"\n",(0,s.jsx)(n.h3,{id:"intuitive-clarity-for-a-wide-range-of-developers",children:"\u5e45\u5e83\u3044\u958b\u767a\u8005\u306b\u5bfe\u3059\u308b\u76f4\u611f\u7684\u306a\u660e\u78ba\u3055"}),"\n",(0,s.jsx)(n.p,{children:"FSD\u65b9\u6cd5\u8ad6\u306f\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u30c1\u30fc\u30e0\u306e\u5927\u90e8\u5206\u306b\u3068\u3063\u3066\u30a2\u30af\u30bb\u30b9\u53ef\u80fd\u3067\u3042\u308b\u3079\u304d\u3067\u3059\u3002"}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.em,{children:"\u306a\u305c\u306a\u3089\u3001\u5c06\u6765\u306e\u3059\u3079\u3066\u306e\u30c4\u30fc\u30eb\u304c\u3042\u3063\u3066\u3082\u3001FSD\u65b9\u6cd5\u8ad6\u3092\u7406\u89e3\u3067\u304d\u308b\u306e\u306f\u7d4c\u9a13\u8c4a\u5bcc\u306a\u30b7\u30cb\u30a2\u3084\u30ea\u30fc\u30c0\u30fc\u3060\u3051\u3067\u306f\u4e0d\u5341\u5206\u3060\u304b\u3089\u3067\u3042\u308b"})}),"\n",(0,s.jsx)(n.h3,{id:"solving-everyday-problems",children:"\u65e5\u5e38\u7684\u306a\u554f\u984c\u306e\u89e3\u6c7a"}),"\n",(0,s.jsx)(n.p,{children:"FSD\u65b9\u6cd5\u8ad6\u306b\u306f\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u958b\u767a\u306b\u304a\u3051\u308b\u65e5\u5e38\u7684\u306a\u554f\u984c\u306e\u7406\u7531\u3068\u89e3\u6c7a\u7b56\u304c\u793a\u3055\u308c\u308b\u3079\u304d\u3067\u3059\u3002"}),"\n",(0,s.jsxs)(n.p,{children:["\u307e\u305f\u3001\u958b\u767a\u8005\u304c",(0,s.jsx)(n.em,{children:"\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u30fc\u306e\u7d4c\u9a13\u306b\u57fa\u3065\u3044\u305f"}),"\u30a2\u30d7\u30ed\u30fc\u30c1\u3092\u4f7f\u7528\u3067\u304d\u308b\u3088\u3046\u306b\u3057\u3001\u9577\u5e74\u306e\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u3084\u958b\u767a\u306e\u554f\u984c\u3092\u56de\u907f\u3067\u304d\u308b\u3088\u3046\u306b\u3059\u308b\u306b\u306f\u3001",(0,s.jsx)(n.strong,{children:"FSD\u65b9\u6cd5\u8ad6\u306f\u3053\u308c\u306b\u95a2\u9023\u3059\u308b\u30c4\u30fc\u30eb\uff08CLI\u3001\u30ea\u30f3\u30bf\u30fc\uff09\u3092\u63d0\u4f9b\u3059\u308b\u3053\u3068\u3082\u5fc5\u8981\u3067\u3059\u3002"})]}),"\n",(0,s.jsxs)(n.blockquote,{children:["\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.em,{children:"@sergeysova: \u60f3\u50cf\u3057\u3066\u307f\u3066\u304f\u3060\u3055\u3044\u3002\u958b\u767a\u8005\u304c\u65b9\u6cd5\u8ad6\u306b\u57fa\u3065\u3044\u3066\u30b3\u30fc\u30c9\u3092\u66f8\u3044\u3066\u3044\u308b\u3068\u304d\u3001\u958b\u767a\u8005\u306e\u76f4\u9762\u3057\u3066\u3044\u308b\u554f\u984c\u306f10\u500d\u5c11\u306a\u304f\u767a\u751f\u3057\u3066\u3044\u307e\u3059\u3002\u305d\u308c\u306f\u4ed6\u306e\u4eba\u3005\u304c\u591a\u304f\u306e\u554f\u984c\u306e\u89e3\u6c7a\u7b56\u3092\u8003\u3048\u51fa\u3057\u305f\u304b\u3089\u3001\u53ef\u80fd\u306b\u306a\u3063\u305f\u306e\u3067\u3059\u3002"})}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"limitations",children:"\u5236\u9650"}),"\n",(0,s.jsxs)(n.p,{children:["\u79c1\u305f\u3061\u306f",(0,s.jsx)(n.em,{children:"\u81ea\u5206\u305f\u3061\u306e\u898b\u89e3\u3092\u62bc\u3057\u4ed8\u3051\u305f\u304f\u3042\u308a\u307e\u305b\u3093"}),"\u304c\u3001\u540c\u6642\u306b",(0,s.jsx)(n.em,{children:"\u591a\u304f\u306e\u958b\u767a\u8005\u306e\u7fd2\u6163\u304c\u65e5\u3005\u306e\u958b\u767a\u306e\u59a8\u3052\u306b\u306a\u3063\u3066\u3044\u308b\u3053\u3068\u3092\u7406\u89e3\u3057\u3066\u3044\u307e\u3059\u3002"})]}),"\n",(0,s.jsxs)(n.p,{children:["\u3059\u3079\u3066\u306e\u958b\u767a\u8005\u306b\u306f\u30b7\u30b9\u30c6\u30e0\u8a2d\u8a08\u3068\u958b\u767a\u7d4c\u9a13\u30ec\u30d9\u30eb\u304c\u7570\u306a\u308b\u305f\u3081\u3001",(0,s.jsx)(n.strong,{children:"\u6b21\u306e\u3053\u3068\u3092\u7406\u89e3\u3059\u308b\u3053\u3068\u304c\u91cd\u8981\u3067\u3059\u3002"})]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["FSD\u65b9\u6cd5\u8ad6\u306f\u3001\u3059\u3079\u3066\u306e\u958b\u767a\u8005\u306b\u3068\u3063\u3066\u3001\u540c\u6642\u306b\u975e\u5e38\u306b\u30b7\u30f3\u30d7\u30eb\u3067\u3001\u975e\u5e38\u306b\u660e\u78ba\u306b\u3059\u308b\u306e\u306f\u4e0d\u53ef\u80fd","\n",(0,s.jsxs)(n.blockquote,{children:["\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.em,{children:"@sergeysova: \u4e00\u90e8\u306e\u6982\u5ff5\u306f\u3001\u554f\u984c\u306b\u76f4\u9762\u3057\u3001\u89e3\u6c7a\u306b\u6570\u5e74\u3092\u8cbb\u3084\u3055\u306a\u3044\u9650\u308a\u3001\u76f4\u611f\u7684\u306b\u7406\u89e3\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u306a\u3044\u3002"})}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.em,{children:"\u6570\u5b66\u306e\u4f8b \u2014 \u30b0\u30e9\u30d5\u7406\u8ad6\u3002"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.em,{children:"\u7269\u7406\u306e\u4f8b \u2014 \u91cf\u5b50\u529b\u5b66\u3002"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.em,{children:"\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u306e\u4f8b \u2014 \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u3002"})}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(n.li,{children:"\u30b7\u30f3\u30d7\u30eb\u3055\u3001\u62e1\u5f35\u6027\u306f\u3001\u5b9f\u73fe\u53ef\u80fd\u3067\u3042\u3063\u3066\u671b\u307e\u3057\u3044"}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"see-also",children:"\u53c2\u7167"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"/docs/about/understanding/architecture#problems",children:"\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u306e\u554f\u984c"})}),"\n"]})]})}function u(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(a,{...e})}):a(e)}},1100:(e,n,i)=>{i.d(n,{R:()=>l,x:()=>o});var s=i(758);const r={},t=s.createContext(r);function l(e){const n=s.useContext(t);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:l(e.components),s.createElement(t.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunk_feature_sliced_documentation=self.webpackChunk_feature_sliced_documentation||[]).push([[7783],{3254:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>d,contentTitle:()=>l,default:()=>u,frontMatter:()=>t,metadata:()=>o,toc:()=>c});var s=i(6070),r=i(1100);const t={sidebar_position:1},l="\u30df\u30c3\u30b7\u30e7\u30f3",o={id:"about/mission",title:"\u30df\u30c3\u30b7\u30e7\u30f3",description:"\u3053\u3053\u3067\u306f\u3001\u79c1\u305f\u3061\u304cFSD\u65b9\u6cd5\u8ad6\u3092\u958b\u767a\u3059\u308b\u969b\u306b\u5f93\u3046\u65b9\u6cd5\u8ad6\u9069\u7528\u306e\u5236\u9650\u3068\u76ee\u6a19\u306b\u3064\u3044\u3066\u8aac\u660e\u3057\u307e\u3059\u3002",source:"@site/i18n/ja/docusaurus-plugin-content-docs/current/about/mission.md",sourceDirName:"about",slug:"/about/mission",permalink:"/ja/docs/about/mission",draft:!1,unlisted:!1,editUrl:"https://github.com/feature-sliced/documentation/edit/master/i18n/ja/docusaurus-plugin-content-docs/current/about/mission.md",tags:[],version:"current",lastUpdatedAt:1728325386e3,sidebarPosition:1,frontMatter:{sidebar_position:1},sidebar:"aboutSidebar",previous:{title:"\ud83c\udf70 FSD\u306b\u3064\u3044\u3066",permalink:"/ja/docs/about/"},next:{title:"\u30e2\u30c1\u30d9\u30fc\u30b7\u30e7\u30f3",permalink:"/ja/docs/about/motivation"}},d={},c=[{value:"\u76ee\u6a19",id:"goals",level:2},{value:"\u5e45\u5e83\u3044\u958b\u767a\u8005\u306b\u5bfe\u3059\u308b\u76f4\u611f\u7684\u306a\u660e\u78ba\u3055",id:"intuitive-clarity-for-a-wide-range-of-developers",level:3},{value:"\u65e5\u5e38\u7684\u306a\u554f\u984c\u306e\u89e3\u6c7a",id:"solving-everyday-problems",level:3},{value:"\u5236\u9650",id:"limitations",level:2},{value:"\u53c2\u7167",id:"see-also",level:2}];function a(e){const n={a:"a",blockquote:"blockquote",em:"em",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",p:"p",strong:"strong",ul:"ul",...(0,r.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.header,{children:(0,s.jsx)(n.h1,{id:"\u30df\u30c3\u30b7\u30e7\u30f3",children:"\u30df\u30c3\u30b7\u30e7\u30f3"})}),"\n",(0,s.jsx)(n.p,{children:"\u3053\u3053\u3067\u306f\u3001\u79c1\u305f\u3061\u304cFSD\u65b9\u6cd5\u8ad6\u3092\u958b\u767a\u3059\u308b\u969b\u306b\u5f93\u3046\u65b9\u6cd5\u8ad6\u9069\u7528\u306e\u5236\u9650\u3068\u76ee\u6a19\u306b\u3064\u3044\u3066\u8aac\u660e\u3057\u307e\u3059\u3002"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"\u79c1\u305f\u3061\u306f\u3001\u76ee\u6a19\u3092\u30a4\u30c7\u30aa\u30ed\u30ae\u30fc\u3068\u30b7\u30f3\u30d7\u30eb\u3055\u306e\u30d0\u30e9\u30f3\u30b9\u3068\u3057\u3066\u8003\u3048\u3066\u3044\u308b"}),"\n",(0,s.jsx)(n.li,{children:"\u79c1\u305f\u3061\u306f\u3001\u3059\u3079\u3066\u306e\u4eba\u306b\u9069\u3057\u305f\u9280\u306e\u5f3e\u4e38\u3092\u4f5c\u308b\u3053\u3068\u306f\u3067\u304d\u306a\u3044"}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"\u305d\u308c\u3067\u3082\u3001FSD\u65b9\u6cd5\u8ad6\u304c\u5e83\u7bc4\u306a\u958b\u767a\u8005\u306b\u3068\u3063\u3066\u8fd1\u304f\u3001\u30a2\u30af\u30bb\u30b9\u53ef\u80fd\u3067\u3042\u308b\u3053\u3068\u3092\u671b\u3093\u3067\u3044\u307e\u3059\u3002"})}),"\n",(0,s.jsx)(n.h2,{id:"goals",children:"\u76ee\u6a19"}),"\n",(0,s.jsx)(n.h3,{id:"intuitive-clarity-for-a-wide-range-of-developers",children:"\u5e45\u5e83\u3044\u958b\u767a\u8005\u306b\u5bfe\u3059\u308b\u76f4\u611f\u7684\u306a\u660e\u78ba\u3055"}),"\n",(0,s.jsx)(n.p,{children:"FSD\u65b9\u6cd5\u8ad6\u306f\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u30c1\u30fc\u30e0\u306e\u5927\u90e8\u5206\u306b\u3068\u3063\u3066\u30a2\u30af\u30bb\u30b9\u53ef\u80fd\u3067\u3042\u308b\u3079\u304d\u3067\u3059\u3002"}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.em,{children:"\u306a\u305c\u306a\u3089\u3001\u5c06\u6765\u306e\u3059\u3079\u3066\u306e\u30c4\u30fc\u30eb\u304c\u3042\u3063\u3066\u3082\u3001FSD\u65b9\u6cd5\u8ad6\u3092\u7406\u89e3\u3067\u304d\u308b\u306e\u306f\u7d4c\u9a13\u8c4a\u5bcc\u306a\u30b7\u30cb\u30a2\u3084\u30ea\u30fc\u30c0\u30fc\u3060\u3051\u3067\u306f\u4e0d\u5341\u5206\u3060\u304b\u3089\u3067\u3042\u308b"})}),"\n",(0,s.jsx)(n.h3,{id:"solving-everyday-problems",children:"\u65e5\u5e38\u7684\u306a\u554f\u984c\u306e\u89e3\u6c7a"}),"\n",(0,s.jsx)(n.p,{children:"FSD\u65b9\u6cd5\u8ad6\u306b\u306f\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u958b\u767a\u306b\u304a\u3051\u308b\u65e5\u5e38\u7684\u306a\u554f\u984c\u306e\u7406\u7531\u3068\u89e3\u6c7a\u7b56\u304c\u793a\u3055\u308c\u308b\u3079\u304d\u3067\u3059\u3002"}),"\n",(0,s.jsxs)(n.p,{children:["\u307e\u305f\u3001\u958b\u767a\u8005\u304c",(0,s.jsx)(n.em,{children:"\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u30fc\u306e\u7d4c\u9a13\u306b\u57fa\u3065\u3044\u305f"}),"\u30a2\u30d7\u30ed\u30fc\u30c1\u3092\u4f7f\u7528\u3067\u304d\u308b\u3088\u3046\u306b\u3057\u3001\u9577\u5e74\u306e\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u3084\u958b\u767a\u306e\u554f\u984c\u3092\u56de\u907f\u3067\u304d\u308b\u3088\u3046\u306b\u3059\u308b\u306b\u306f\u3001",(0,s.jsx)(n.strong,{children:"FSD\u65b9\u6cd5\u8ad6\u306f\u3053\u308c\u306b\u95a2\u9023\u3059\u308b\u30c4\u30fc\u30eb\uff08CLI\u3001\u30ea\u30f3\u30bf\u30fc\uff09\u3092\u63d0\u4f9b\u3059\u308b\u3053\u3068\u3082\u5fc5\u8981\u3067\u3059\u3002"})]}),"\n",(0,s.jsxs)(n.blockquote,{children:["\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.em,{children:"@sergeysova: \u60f3\u50cf\u3057\u3066\u307f\u3066\u304f\u3060\u3055\u3044\u3002\u958b\u767a\u8005\u304c\u65b9\u6cd5\u8ad6\u306b\u57fa\u3065\u3044\u3066\u30b3\u30fc\u30c9\u3092\u66f8\u3044\u3066\u3044\u308b\u3068\u304d\u3001\u958b\u767a\u8005\u306e\u76f4\u9762\u3057\u3066\u3044\u308b\u554f\u984c\u306f10\u500d\u5c11\u306a\u304f\u767a\u751f\u3057\u3066\u3044\u307e\u3059\u3002\u305d\u308c\u306f\u4ed6\u306e\u4eba\u3005\u304c\u591a\u304f\u306e\u554f\u984c\u306e\u89e3\u6c7a\u7b56\u3092\u8003\u3048\u51fa\u3057\u305f\u304b\u3089\u3001\u53ef\u80fd\u306b\u306a\u3063\u305f\u306e\u3067\u3059\u3002"})}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"limitations",children:"\u5236\u9650"}),"\n",(0,s.jsxs)(n.p,{children:["\u79c1\u305f\u3061\u306f",(0,s.jsx)(n.em,{children:"\u81ea\u5206\u305f\u3061\u306e\u898b\u89e3\u3092\u62bc\u3057\u4ed8\u3051\u305f\u304f\u3042\u308a\u307e\u305b\u3093"}),"\u304c\u3001\u540c\u6642\u306b",(0,s.jsx)(n.em,{children:"\u591a\u304f\u306e\u958b\u767a\u8005\u306e\u7fd2\u6163\u304c\u65e5\u3005\u306e\u958b\u767a\u306e\u59a8\u3052\u306b\u306a\u3063\u3066\u3044\u308b\u3053\u3068\u3092\u7406\u89e3\u3057\u3066\u3044\u307e\u3059\u3002"})]}),"\n",(0,s.jsxs)(n.p,{children:["\u3059\u3079\u3066\u306e\u958b\u767a\u8005\u306b\u306f\u30b7\u30b9\u30c6\u30e0\u8a2d\u8a08\u3068\u958b\u767a\u7d4c\u9a13\u30ec\u30d9\u30eb\u304c\u7570\u306a\u308b\u305f\u3081\u3001",(0,s.jsx)(n.strong,{children:"\u6b21\u306e\u3053\u3068\u3092\u7406\u89e3\u3059\u308b\u3053\u3068\u304c\u91cd\u8981\u3067\u3059\u3002"})]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["FSD\u65b9\u6cd5\u8ad6\u306f\u3001\u3059\u3079\u3066\u306e\u958b\u767a\u8005\u306b\u3068\u3063\u3066\u3001\u540c\u6642\u306b\u975e\u5e38\u306b\u30b7\u30f3\u30d7\u30eb\u3067\u3001\u975e\u5e38\u306b\u660e\u78ba\u306b\u3059\u308b\u306e\u306f\u4e0d\u53ef\u80fd","\n",(0,s.jsxs)(n.blockquote,{children:["\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.em,{children:"@sergeysova: \u4e00\u90e8\u306e\u6982\u5ff5\u306f\u3001\u554f\u984c\u306b\u76f4\u9762\u3057\u3001\u89e3\u6c7a\u306b\u6570\u5e74\u3092\u8cbb\u3084\u3055\u306a\u3044\u9650\u308a\u3001\u76f4\u611f\u7684\u306b\u7406\u89e3\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u306a\u3044\u3002"})}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.em,{children:"\u6570\u5b66\u306e\u4f8b \u2014 \u30b0\u30e9\u30d5\u7406\u8ad6\u3002"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.em,{children:"\u7269\u7406\u306e\u4f8b \u2014 \u91cf\u5b50\u529b\u5b66\u3002"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.em,{children:"\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u306e\u4f8b \u2014 \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u3002"})}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(n.li,{children:"\u30b7\u30f3\u30d7\u30eb\u3055\u3001\u62e1\u5f35\u6027\u306f\u3001\u5b9f\u73fe\u53ef\u80fd\u3067\u3042\u3063\u3066\u671b\u307e\u3057\u3044"}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"see-also",children:"\u53c2\u7167"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"/docs/about/understanding/architecture#problems",children:"\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u306e\u554f\u984c"})}),"\n"]})]})}function u(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(a,{...e})}):a(e)}},1100:(e,n,i)=>{i.d(n,{R:()=>l,x:()=>o});var s=i(758);const r={},t=s.createContext(r);function l(e){const n=s.useContext(t);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:l(e.components),s.createElement(t.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/ja/assets/js/165a9db9.966d9fb2.js b/ja/assets/js/165a9db9.204c30d2.js similarity index 99% rename from ja/assets/js/165a9db9.966d9fb2.js rename to ja/assets/js/165a9db9.204c30d2.js index a9e74808fe..53714e745b 100644 --- a/ja/assets/js/165a9db9.966d9fb2.js +++ b/ja/assets/js/165a9db9.204c30d2.js @@ -1 +1 @@ -"use strict";(self.webpackChunk_feature_sliced_documentation=self.webpackChunk_feature_sliced_documentation||[]).push([[6916],{1928:(e,n,i)=>{i.d(n,{Ay:()=>o,RM:()=>c});var t=i(6070),s=i(1100),r=(i(758),i(6783)),l=i(7765);const d=e=>{let{ticket:n}=e;const i=`https://github.com/feature-sliced/documentation/issues/${n}`;return(0,t.jsxs)("div",{children:[(0,t.jsx)("p",{children:(0,l.T)({id:"shared.wip.title"})}),(0,t.jsx)("p",{children:(0,l.T)({id:"shared.wip.subtitle"})}),(0,t.jsxs)("ul",{children:[(0,t.jsxs)("li",{children:[(0,l.T)({id:"shared.wip.var.feedback.base"}),(0,t.jsx)(r.A,{to:i,children:(0,l.T)({id:"shared.wip.var.feedback.link"})})]}),(0,t.jsxs)("li",{children:[(0,l.T)({id:"shared.wip.var.material.base"}),(0,t.jsx)(r.A,{to:"https://t.me/feature_sliced",children:(0,l.T)({id:"shared.wip.var.material.link"})})]}),(0,t.jsxs)("li",{children:[(0,l.T)({id:"shared.wip.var.contribute.base"}),(0,t.jsx)(r.A,{to:"https://github.com/feature-sliced/documentation/blob/master/CONTRIBUTING.md",children:(0,l.T)({id:"shared.wip.var.contribute.link"})})]})]}),(0,t.jsx)("br",{}),(0,t.jsx)("p",{children:(0,t.jsx)("i",{children:"\ud83c\udf70 Stay tuned!"})})]})},c=[];function a(e){const n={admonition:"admonition",...(0,s.R)(),...e.components};return(0,t.jsx)(n.admonition,{title:"WIP",type:"caution",children:(0,t.jsx)(d,{ticket:e.ticket})})}function o(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(a,{...e})}):a(e)}},486:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>a,contentTitle:()=>d,default:()=>u,frontMatter:()=>l,metadata:()=>c,toc:()=>o});var t=i(6070),s=i(1100),r=i(1928);const l={sidebar_class_name:"sidebar-item--wip",sidebar_position:3},d="\u4ee3\u66ff\u6848",c={id:"about/alternatives",title:"\u4ee3\u66ff\u6848",description:"\u30d3\u30c3\u30b0\u30dc\u30fc\u30eb\u30aa\u30d6\u30de\u30c3\u30c9",source:"@site/i18n/ja/docusaurus-plugin-content-docs/current/about/alternatives.mdx",sourceDirName:"about",slug:"/about/alternatives",permalink:"/ja/docs/about/alternatives",draft:!1,unlisted:!1,editUrl:"https://github.com/feature-sliced/documentation/edit/master/i18n/ja/docusaurus-plugin-content-docs/current/about/alternatives.mdx",tags:[],version:"current",lastUpdatedAt:1727607766e3,sidebarPosition:3,frontMatter:{sidebar_class_name:"sidebar-item--wip",sidebar_position:3},sidebar:"aboutSidebar",previous:{title:"\u30e2\u30c1\u30d9\u30fc\u30b7\u30e7\u30f3",permalink:"/ja/docs/about/motivation"},next:{title:"\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3",permalink:"/ja/docs/about/understanding/architecture"}},a={},o=[...r.RM,{value:"\u30d3\u30c3\u30b0\u30dc\u30fc\u30eb\u30aa\u30d6\u30de\u30c3\u30c9",id:"\u30d3\u30c3\u30b0\u30dc\u30fc\u30eb\u30aa\u30d6\u30de\u30c3\u30c9",level:2},...r.RM,{value:"\u30b9\u30de\u30fc\u30c8\uff06\u30c0\u30e0\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8",id:"\u30b9\u30de\u30fc\u30c8\u30c0\u30e0\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8",level:2},...r.RM,{value:"\u30c7\u30b6\u30a4\u30f3\u539f\u5247",id:"\u30c7\u30b6\u30a4\u30f3\u539f\u5247",level:2},...r.RM,{value:"DDD",id:"ddd",level:2},...r.RM,{value:"\u53c2\u7167",id:"see-also",level:2},{value:"\u30af\u30ea\u30fc\u30f3\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3",id:"\u30af\u30ea\u30fc\u30f3\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3",level:2},...r.RM,{value:"\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af",id:"\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af",level:2},...r.RM,{value:"Atomic Design",id:"atomic-design",level:2},{value:"\u3053\u308c\u306f\u4f55\u304b\uff1f",id:"\u3053\u308c\u306f\u4f55\u304b",level:3},{value:"\u30d5\u30ed\u30f3\u30c8\u30a8\u30f3\u30c9\u3067\u306e\u9069\u7528\u6027",id:"\u30d5\u30ed\u30f3\u30c8\u30a8\u30f3\u30c9\u3067\u306e\u9069\u7528\u6027",level:3},{value:"FSD\u3068\u306e\u7d71\u5408",id:"fsd\u3068\u306e\u7d71\u5408",level:3},{value:"Feature Driven",id:"feature-driven",level:2},...r.RM];function h(e){const n={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,s.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.header,{children:(0,t.jsx)(n.h1,{id:"\u4ee3\u66ff\u6848",children:"\u4ee3\u66ff\u6848"})}),"\n",(0,t.jsx)(r.Ay,{ticket:"62"}),"\n",(0,t.jsx)(n.h2,{id:"\u30d3\u30c3\u30b0\u30dc\u30fc\u30eb\u30aa\u30d6\u30de\u30c3\u30c9",children:"\u30d3\u30c3\u30b0\u30dc\u30fc\u30eb\u30aa\u30d6\u30de\u30c3\u30c9"}),"\n",(0,t.jsx)(r.Ay,{ticket:"258"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.a,{href:"https://thedomaindrivendesign.io/big-ball-of-mud/",children:"(\u8a18\u4e8b) DDD - Big Ball of mud"})}),"\n"]}),"\n",(0,t.jsx)(n.h2,{id:"\u30b9\u30de\u30fc\u30c8\u30c0\u30e0\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8",children:"\u30b9\u30de\u30fc\u30c8\uff06\u30c0\u30e0\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8"}),"\n",(0,t.jsx)(r.Ay,{ticket:"214"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.a,{href:"https://medium.com/@dan_abramov/smart-and-dumb-components-7ca2f9a7c7d0",children:"(\u8a18\u4e8b) Dan Abramov - Presentational and Container Components (TLDR: \u975e\u63a8\u5968)"})}),"\n"]}),"\n",(0,t.jsx)(n.h2,{id:"\u30c7\u30b6\u30a4\u30f3\u539f\u5247",children:"\u30c7\u30b6\u30a4\u30f3\u539f\u5247"}),"\n",(0,t.jsx)(r.Ay,{ticket:"59"}),"\n",(0,t.jsx)(n.h2,{id:"ddd",children:"DDD"}),"\n",(0,t.jsx)(r.Ay,{ticket:"1"}),"\n",(0,t.jsx)(n.h2,{id:"see-also",children:"\u53c2\u7167"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.a,{href:"https://herbertograca.com/2017/11/16/explicit-architecture-01-ddd-hexagonal-onion-clean-cqrs-how-i-put-it-all-together/",children:"(\u8a18\u4e8b) DDD, Hexagonal, Onion, Clean, CQRS, \u2026 How I put it all together"})}),"\n"]}),"\n",(0,t.jsx)(n.h2,{id:"\u30af\u30ea\u30fc\u30f3\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3",children:"\u30af\u30ea\u30fc\u30f3\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3"}),"\n",(0,t.jsx)(r.Ay,{ticket:"165"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.a,{href:"https://herbertograca.com/2017/11/16/explicit-architecture-01-ddd-hexagonal-onion-clean-cqrs-how-i-put-it-all-together/",children:"(\u8a18\u4e8b) DDD, Hexagonal, Onion, Clean, CQRS, \u2026 How I put it all together"})}),"\n"]}),"\n",(0,t.jsx)(n.h2,{id:"\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af",children:"\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af"}),"\n",(0,t.jsx)(r.Ay,{ticket:"58"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.a,{href:"/docs/about/motivation",children:"(\u8a18\u4e8b) FSD\u306e\u4f5c\u6210\u7406\u7531 (\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306b\u95a2\u3059\u308b\u65ad\u7247)"})}),"\n"]}),"\n",(0,t.jsx)(n.h2,{id:"atomic-design",children:"Atomic Design"}),"\n",(0,t.jsx)(n.h3,{id:"\u3053\u308c\u306f\u4f55\u304b",children:"\u3053\u308c\u306f\u4f55\u304b\uff1f"}),"\n",(0,t.jsx)(n.p,{children:"\u30a2\u30c8\u30df\u30c3\u30af\u30c7\u30b6\u30a4\u30f3\u3067\u306f\u3001\u8cac\u4efb\u306e\u7bc4\u56f2\u304c\u6a19\u6e96\u5316\u3055\u308c\u305f\u5c64\u306b\u5206\u304b\u308c\u3066\u3044\u307e\u3059\u3002"}),"\n",(0,t.jsxs)(n.p,{children:["\u30a2\u30c8\u30df\u30c3\u30af\u30c7\u30b6\u30a4\u30f3\u306f",(0,t.jsx)(n.strong,{children:"5\u3064\u306e\u5c64"}),"\u306b\u5206\u304b\u308c\u307e\u3059\uff08\u4e0a\u304b\u3089\u4e0b\u3078\uff09\u3002"]}),"\n",(0,t.jsxs)(n.ol,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"pages"})," - FSD\u306e",(0,t.jsx)(n.code,{children:"pages"}),"\u5c64\u3068\u540c\u69d8\u306e\u76ee\u7684\u3092\u6301\u3064\u3002"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"templates"})," - \u30b3\u30f3\u30c6\u30f3\u30c4\u306b\u4f9d\u5b58\u3057\u306a\u3044\u30da\u30fc\u30b8\u306e\u69cb\u9020\u3092\u5b9a\u7fa9\u3059\u308b\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u3002"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"organisms"})," - \u30d3\u30b8\u30cd\u30b9\u30ed\u30b8\u30c3\u30af\u3092\u6301\u3064\u5206\u5b50\u304b\u3089\u69cb\u6210\u3055\u308c\u308b\u30e2\u30b8\u30e5\u30fc\u30eb\u3002"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"molecules"})," - \u901a\u5e38\u3001\u30d3\u30b8\u30cd\u30b9\u30ed\u30b8\u30c3\u30af\u3092\u6301\u305f\u306a\u3044\u3088\u308a\u8907\u96d1\u306a\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u3002"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"atoms"})," - \u30d3\u30b8\u30cd\u30b9\u30ed\u30b8\u30c3\u30af\u3092\u6301\u305f\u306a\u3044UI\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u3002"]}),"\n"]}),"\n",(0,t.jsxs)(n.p,{children:["\u540c\u3058\u5c64\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u306f\u3001FSD\u306e\u3088\u3046\u306b\u4e0b\u306e\u5c64\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u3068\u3060\u3051\u76f8\u4e92\u4f5c\u7528\u3057\u3066\u3044\u307e\u3059\u3002\n\u3064\u307e\u308a\u3001\u5206\u5b50\uff08molecule\uff09\u306f\u539f\u5b50\uff08atom\uff09\u304b\u3089\u69cb\u7bc9\u3055\u308c\u3001\u751f\u547d\u4f53\uff08organism\uff09\u306f\u5206\u5b50\u304b\u3089\u3001\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\uff08template\uff09\u306f\u751f\u547d\u4f53\u304b\u3089\u3001\u30da\u30fc\u30b8\uff08page\uff09\u306f\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u304b\u3089\u69cb\u7bc9\u3055\u308c\u307e\u3059\u3002\n\u307e\u305f\u3001\u30a2\u30c8\u30df\u30c3\u30af\u30c7\u30b6\u30a4\u30f3\u306f\u30e2\u30b8\u30e5\u30fc\u30eb\u5185\u3067\u306e",(0,t.jsx)(n.strong,{children:"\u516c\u958bAPI"}),"\u306e\u4f7f\u7528\u3092\u524d\u63d0\u3068\u3057\u3066\u3044\u307e\u3059\u3002"]}),"\n",(0,t.jsx)(n.h3,{id:"\u30d5\u30ed\u30f3\u30c8\u30a8\u30f3\u30c9\u3067\u306e\u9069\u7528\u6027",children:"\u30d5\u30ed\u30f3\u30c8\u30a8\u30f3\u30c9\u3067\u306e\u9069\u7528\u6027"}),"\n",(0,t.jsx)(n.p,{children:"\u30a2\u30c8\u30df\u30c3\u30af\u30c7\u30b6\u30a4\u30f3\u306f\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u6bd4\u8f03\u7684\u3088\u304f\u898b\u3089\u308c\u307e\u3059\u3002\u30a2\u30c8\u30df\u30c3\u30af\u30c7\u30b6\u30a4\u30f3\u306f\u3001\u958b\u767a\u8005\u306e\u9593\u3068\u3044\u3046\u3088\u308a\u3001\u30a6\u30a7\u30d6\u30c7\u30b6\u30a4\u30ca\u30fc\u306e\u9593\u3067\u4eba\u6c17\u3067\u3059\u3002\u30a6\u30a7\u30d6\u30c7\u30b6\u30a4\u30ca\u30fc\u306f\u3001\u30b9\u30b1\u30fc\u30e9\u30d6\u30eb\u3067\u30e1\u30f3\u30c6\u30ca\u30f3\u30b9\u3057\u3084\u3059\u3044\u30c7\u30b6\u30a4\u30f3\u3092\u4f5c\u6210\u3059\u308b\u305f\u3081\u306b\u30a2\u30c8\u30df\u30c3\u30af\u30c7\u30b6\u30a4\u30f3\u3092\u3088\u304f\u4f7f\u7528\u3057\u3066\u3044\u307e\u3059\u3002\n\u958b\u767a\u3067\u306f\u3001\u30a2\u30c8\u30df\u30c3\u30af\u30c7\u30b6\u30a4\u30f3\u306f\u4ed6\u306e\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u8a2d\u8a08\u65b9\u6cd5\u8ad6\u3068\u6df7\u5408\u3055\u308c\u308b\u3053\u3068\u304c\u3088\u304f\u3042\u308a\u307e\u3059\u3002"}),"\n",(0,t.jsx)(n.p,{children:"\u3057\u304b\u3057\u3001\u30a2\u30c8\u30df\u30c3\u30af\u30c7\u30b6\u30a4\u30f3\u306fUI\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u3068\u305d\u306e\u69cb\u6210\u306b\u7126\u70b9\u3092\u5f53\u3066\u3066\u3044\u308b\u305f\u3081\u3001\n\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u5185\u3067\u30d3\u30b8\u30cd\u30b9\u30ed\u30b8\u30c3\u30af\u3092\u5b9f\u88c5\u3059\u308b\u554f\u984c\u304c\u767a\u751f\u3057\u3066\u3057\u307e\u3044\u307e\u3059\u3002"}),"\n",(0,t.jsx)(n.p,{children:"\u554f\u984c\u306f\u3001\u30a2\u30c8\u30df\u30c3\u30af\u30c7\u30b6\u30a4\u30f3\u304c\u30d3\u30b8\u30cd\u30b9\u30ed\u30b8\u30c3\u30af\u306e\u305f\u3081\u306e\u660e\u78ba\u306a\u8cac\u4efb\u30ec\u30d9\u30eb\u3092\u63d0\u4f9b\u3057\u3066\u3044\u306a\u3044\u305f\u3081\u3001\n\u30d3\u30b8\u30cd\u30b9\u30ed\u30b8\u30c3\u30af\u304c\u3055\u307e\u3056\u307e\u306a\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u3084\u30ec\u30d9\u30eb\u306b\u5206\u6563\u3055\u308c\u3001\u30e1\u30f3\u30c6\u30ca\u30f3\u30b9\u3084\u30c6\u30b9\u30c8\u304c\u8907\u96d1\u306b\u306a\u308b\u3053\u3068\u3067\u3059\u3002\n\u30d3\u30b8\u30cd\u30b9\u30ed\u30b8\u30c3\u30af\u306f\u66d6\u6627\u306b\u306a\u308a\u3001\u8cac\u4efb\u306e\u660e\u78ba\u306a\u5206\u96e2\u304c\u56f0\u96e3\u306b\u306a\u308a\u3001\u30b3\u30fc\u30c9\u304c\u30e2\u30b8\u30e5\u30fc\u30eb\u5316\u3055\u308c\u305a\u518d\u5229\u7528\u53ef\u80fd\u3067\u306a\u304f\u306a\u308a\u307e\u3059\u3002"}),"\n",(0,t.jsx)(n.h3,{id:"fsd\u3068\u306e\u7d71\u5408",children:"FSD\u3068\u306e\u7d71\u5408"}),"\n",(0,t.jsxs)(n.p,{children:["FSD\u306e\u6587\u8108\u3067\u306f\u3001\u30a2\u30c8\u30df\u30c3\u30af\u30c7\u30b6\u30a4\u30f3\u306e\u3044\u304f\u3064\u304b\u306e\u8981\u7d20\u3092\u4f7f\u7528\u3057\u3066\u67d4\u8edf\u3067\u30b9\u30b1\u30fc\u30e9\u30d6\u30eb\u306aUI\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u3092\u4f5c\u6210\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002 ",(0,t.jsx)(n.code,{children:"atoms"}),"\u3068",(0,t.jsx)(n.code,{children:"molecules"}),"\u306e\u5c64\u306f\u3001FSD\u306e",(0,t.jsx)(n.code,{children:"shared/ui"}),"\u306b\u5b9f\u88c5\u3067\u304d\u3001\u57fa\u672c\u7684\u306aUI\u8981\u7d20\u306e\u518d\u5229\u7528\u3068\u30e1\u30f3\u30c6\u30ca\u30f3\u30b9\u3092\u7c21\u7d20\u5316\u3057\u3066\u3044\u307e\u3059\u3002"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-sh",children:"\u251c\u2500\u2500 shared\n\u2502\xa0 \xa0\u251c\u2500\u2500 ui\xa0\n\u2502\xa0 \xa0\u2502\xa0 \xa0\u251c\u2500\u2500 atoms\n\u2502\xa0 \xa0\u2502\xa0 \xa0\u251c\u2500\u2500 molecules\n\u2502\xa0 \xa0...\n"})}),"\n",(0,t.jsx)(n.p,{children:"FSD\u3068\u30a2\u30c8\u30df\u30c3\u30af\u30c7\u30b6\u30a4\u30f3\u306e\u6bd4\u8f03\u306f\u3001\u4e21\u65b9\u306e\u8a2d\u8a08\u65b9\u6cd5\u8ad6\u304c\u30e2\u30b8\u30e5\u30fc\u30eb\u6027\u3068\u518d\u5229\u7528\u6027\u3092\u76ee\u6307\u3057\u3066\u3044\u308b\u3053\u3068\u3092\u793a\u3057\u3066\u3044\u307e\u3059\u304c\u3001\n\u7570\u306a\u308b\u5074\u9762\u306b\u7126\u70b9\u3092\u5f53\u3066\u3066\u3044\u307e\u3059\u3002\u30a2\u30c8\u30df\u30c3\u30af\u30c7\u30b6\u30a4\u30f3\u306f\u8996\u899a\u7684\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u3068\u305d\u306e\u69cb\u6210\u306b\u7126\u70b9\u3092\u5f53\u3066\u3066\u3044\u307e\u3059\u3002\nFSD\u306f\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u6a5f\u80fd\u3092\u72ec\u7acb\u3057\u305f\u30e2\u30b8\u30e5\u30fc\u30eb\u306b\u5206\u5272\u3057\u3001\u305d\u308c\u3089\u306e\u76f8\u4e92\u95a2\u4fc2\u306b\u7126\u70b9\u3092\u5f53\u3066\u3066\u3044\u307e\u3059\u3002"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.a,{href:"https://atomicdesign.bradfrost.com/table-of-contents/",children:"Atomic Design"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.a,{href:"https://youtu.be/Yi-A20x2dcA",children:"(\u52d5\u753b) Atomic Design: What is it and why is it important?"})}),"\n"]}),"\n",(0,t.jsx)(n.h2,{id:"feature-driven",children:"Feature Driven"}),"\n",(0,t.jsx)(r.Ay,{ticket:"219"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.a,{href:"https://youtu.be/BWAeYuWFHhs",children:"(\u8b1b\u6f14) Feature Driven Architecture - Oleg Isonen"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.a,{href:"https://github.com/feature-sliced/documentation/tree/rc/feature-driven",children:"Feature Driven-Short specification (from the point of view of FSD)"})}),"\n"]})]})}function u(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(h,{...e})}):h(e)}},1100:(e,n,i)=>{i.d(n,{R:()=>l,x:()=>d});var t=i(758);const s={},r=t.createContext(s);function l(e){const n=t.useContext(r);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:l(e.components),t.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunk_feature_sliced_documentation=self.webpackChunk_feature_sliced_documentation||[]).push([[6916],{1928:(e,n,i)=>{i.d(n,{Ay:()=>o,RM:()=>c});var t=i(6070),s=i(1100),r=(i(758),i(6783)),l=i(7765);const d=e=>{let{ticket:n}=e;const i=`https://github.com/feature-sliced/documentation/issues/${n}`;return(0,t.jsxs)("div",{children:[(0,t.jsx)("p",{children:(0,l.T)({id:"shared.wip.title"})}),(0,t.jsx)("p",{children:(0,l.T)({id:"shared.wip.subtitle"})}),(0,t.jsxs)("ul",{children:[(0,t.jsxs)("li",{children:[(0,l.T)({id:"shared.wip.var.feedback.base"}),(0,t.jsx)(r.A,{to:i,children:(0,l.T)({id:"shared.wip.var.feedback.link"})})]}),(0,t.jsxs)("li",{children:[(0,l.T)({id:"shared.wip.var.material.base"}),(0,t.jsx)(r.A,{to:"https://t.me/feature_sliced",children:(0,l.T)({id:"shared.wip.var.material.link"})})]}),(0,t.jsxs)("li",{children:[(0,l.T)({id:"shared.wip.var.contribute.base"}),(0,t.jsx)(r.A,{to:"https://github.com/feature-sliced/documentation/blob/master/CONTRIBUTING.md",children:(0,l.T)({id:"shared.wip.var.contribute.link"})})]})]}),(0,t.jsx)("br",{}),(0,t.jsx)("p",{children:(0,t.jsx)("i",{children:"\ud83c\udf70 Stay tuned!"})})]})},c=[];function a(e){const n={admonition:"admonition",...(0,s.R)(),...e.components};return(0,t.jsx)(n.admonition,{title:"WIP",type:"caution",children:(0,t.jsx)(d,{ticket:e.ticket})})}function o(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(a,{...e})}):a(e)}},486:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>a,contentTitle:()=>d,default:()=>u,frontMatter:()=>l,metadata:()=>c,toc:()=>o});var t=i(6070),s=i(1100),r=i(1928);const l={sidebar_class_name:"sidebar-item--wip",sidebar_position:3},d="\u4ee3\u66ff\u6848",c={id:"about/alternatives",title:"\u4ee3\u66ff\u6848",description:"\u30d3\u30c3\u30b0\u30dc\u30fc\u30eb\u30aa\u30d6\u30de\u30c3\u30c9",source:"@site/i18n/ja/docusaurus-plugin-content-docs/current/about/alternatives.mdx",sourceDirName:"about",slug:"/about/alternatives",permalink:"/ja/docs/about/alternatives",draft:!1,unlisted:!1,editUrl:"https://github.com/feature-sliced/documentation/edit/master/i18n/ja/docusaurus-plugin-content-docs/current/about/alternatives.mdx",tags:[],version:"current",lastUpdatedAt:1728325386e3,sidebarPosition:3,frontMatter:{sidebar_class_name:"sidebar-item--wip",sidebar_position:3},sidebar:"aboutSidebar",previous:{title:"\u30e2\u30c1\u30d9\u30fc\u30b7\u30e7\u30f3",permalink:"/ja/docs/about/motivation"},next:{title:"\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3",permalink:"/ja/docs/about/understanding/architecture"}},a={},o=[...r.RM,{value:"\u30d3\u30c3\u30b0\u30dc\u30fc\u30eb\u30aa\u30d6\u30de\u30c3\u30c9",id:"\u30d3\u30c3\u30b0\u30dc\u30fc\u30eb\u30aa\u30d6\u30de\u30c3\u30c9",level:2},...r.RM,{value:"\u30b9\u30de\u30fc\u30c8\uff06\u30c0\u30e0\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8",id:"\u30b9\u30de\u30fc\u30c8\u30c0\u30e0\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8",level:2},...r.RM,{value:"\u30c7\u30b6\u30a4\u30f3\u539f\u5247",id:"\u30c7\u30b6\u30a4\u30f3\u539f\u5247",level:2},...r.RM,{value:"DDD",id:"ddd",level:2},...r.RM,{value:"\u53c2\u7167",id:"see-also",level:2},{value:"\u30af\u30ea\u30fc\u30f3\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3",id:"\u30af\u30ea\u30fc\u30f3\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3",level:2},...r.RM,{value:"\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af",id:"\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af",level:2},...r.RM,{value:"Atomic Design",id:"atomic-design",level:2},{value:"\u3053\u308c\u306f\u4f55\u304b\uff1f",id:"\u3053\u308c\u306f\u4f55\u304b",level:3},{value:"\u30d5\u30ed\u30f3\u30c8\u30a8\u30f3\u30c9\u3067\u306e\u9069\u7528\u6027",id:"\u30d5\u30ed\u30f3\u30c8\u30a8\u30f3\u30c9\u3067\u306e\u9069\u7528\u6027",level:3},{value:"FSD\u3068\u306e\u7d71\u5408",id:"fsd\u3068\u306e\u7d71\u5408",level:3},{value:"Feature Driven",id:"feature-driven",level:2},...r.RM];function h(e){const n={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,s.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.header,{children:(0,t.jsx)(n.h1,{id:"\u4ee3\u66ff\u6848",children:"\u4ee3\u66ff\u6848"})}),"\n",(0,t.jsx)(r.Ay,{ticket:"62"}),"\n",(0,t.jsx)(n.h2,{id:"\u30d3\u30c3\u30b0\u30dc\u30fc\u30eb\u30aa\u30d6\u30de\u30c3\u30c9",children:"\u30d3\u30c3\u30b0\u30dc\u30fc\u30eb\u30aa\u30d6\u30de\u30c3\u30c9"}),"\n",(0,t.jsx)(r.Ay,{ticket:"258"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.a,{href:"https://thedomaindrivendesign.io/big-ball-of-mud/",children:"(\u8a18\u4e8b) DDD - Big Ball of mud"})}),"\n"]}),"\n",(0,t.jsx)(n.h2,{id:"\u30b9\u30de\u30fc\u30c8\u30c0\u30e0\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8",children:"\u30b9\u30de\u30fc\u30c8\uff06\u30c0\u30e0\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8"}),"\n",(0,t.jsx)(r.Ay,{ticket:"214"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.a,{href:"https://medium.com/@dan_abramov/smart-and-dumb-components-7ca2f9a7c7d0",children:"(\u8a18\u4e8b) Dan Abramov - Presentational and Container Components (TLDR: \u975e\u63a8\u5968)"})}),"\n"]}),"\n",(0,t.jsx)(n.h2,{id:"\u30c7\u30b6\u30a4\u30f3\u539f\u5247",children:"\u30c7\u30b6\u30a4\u30f3\u539f\u5247"}),"\n",(0,t.jsx)(r.Ay,{ticket:"59"}),"\n",(0,t.jsx)(n.h2,{id:"ddd",children:"DDD"}),"\n",(0,t.jsx)(r.Ay,{ticket:"1"}),"\n",(0,t.jsx)(n.h2,{id:"see-also",children:"\u53c2\u7167"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.a,{href:"https://herbertograca.com/2017/11/16/explicit-architecture-01-ddd-hexagonal-onion-clean-cqrs-how-i-put-it-all-together/",children:"(\u8a18\u4e8b) DDD, Hexagonal, Onion, Clean, CQRS, \u2026 How I put it all together"})}),"\n"]}),"\n",(0,t.jsx)(n.h2,{id:"\u30af\u30ea\u30fc\u30f3\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3",children:"\u30af\u30ea\u30fc\u30f3\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3"}),"\n",(0,t.jsx)(r.Ay,{ticket:"165"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.a,{href:"https://herbertograca.com/2017/11/16/explicit-architecture-01-ddd-hexagonal-onion-clean-cqrs-how-i-put-it-all-together/",children:"(\u8a18\u4e8b) DDD, Hexagonal, Onion, Clean, CQRS, \u2026 How I put it all together"})}),"\n"]}),"\n",(0,t.jsx)(n.h2,{id:"\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af",children:"\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af"}),"\n",(0,t.jsx)(r.Ay,{ticket:"58"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.a,{href:"/docs/about/motivation",children:"(\u8a18\u4e8b) FSD\u306e\u4f5c\u6210\u7406\u7531 (\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306b\u95a2\u3059\u308b\u65ad\u7247)"})}),"\n"]}),"\n",(0,t.jsx)(n.h2,{id:"atomic-design",children:"Atomic Design"}),"\n",(0,t.jsx)(n.h3,{id:"\u3053\u308c\u306f\u4f55\u304b",children:"\u3053\u308c\u306f\u4f55\u304b\uff1f"}),"\n",(0,t.jsx)(n.p,{children:"\u30a2\u30c8\u30df\u30c3\u30af\u30c7\u30b6\u30a4\u30f3\u3067\u306f\u3001\u8cac\u4efb\u306e\u7bc4\u56f2\u304c\u6a19\u6e96\u5316\u3055\u308c\u305f\u5c64\u306b\u5206\u304b\u308c\u3066\u3044\u307e\u3059\u3002"}),"\n",(0,t.jsxs)(n.p,{children:["\u30a2\u30c8\u30df\u30c3\u30af\u30c7\u30b6\u30a4\u30f3\u306f",(0,t.jsx)(n.strong,{children:"5\u3064\u306e\u5c64"}),"\u306b\u5206\u304b\u308c\u307e\u3059\uff08\u4e0a\u304b\u3089\u4e0b\u3078\uff09\u3002"]}),"\n",(0,t.jsxs)(n.ol,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"pages"})," - FSD\u306e",(0,t.jsx)(n.code,{children:"pages"}),"\u5c64\u3068\u540c\u69d8\u306e\u76ee\u7684\u3092\u6301\u3064\u3002"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"templates"})," - \u30b3\u30f3\u30c6\u30f3\u30c4\u306b\u4f9d\u5b58\u3057\u306a\u3044\u30da\u30fc\u30b8\u306e\u69cb\u9020\u3092\u5b9a\u7fa9\u3059\u308b\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u3002"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"organisms"})," - \u30d3\u30b8\u30cd\u30b9\u30ed\u30b8\u30c3\u30af\u3092\u6301\u3064\u5206\u5b50\u304b\u3089\u69cb\u6210\u3055\u308c\u308b\u30e2\u30b8\u30e5\u30fc\u30eb\u3002"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"molecules"})," - \u901a\u5e38\u3001\u30d3\u30b8\u30cd\u30b9\u30ed\u30b8\u30c3\u30af\u3092\u6301\u305f\u306a\u3044\u3088\u308a\u8907\u96d1\u306a\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u3002"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"atoms"})," - \u30d3\u30b8\u30cd\u30b9\u30ed\u30b8\u30c3\u30af\u3092\u6301\u305f\u306a\u3044UI\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u3002"]}),"\n"]}),"\n",(0,t.jsxs)(n.p,{children:["\u540c\u3058\u5c64\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u306f\u3001FSD\u306e\u3088\u3046\u306b\u4e0b\u306e\u5c64\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u3068\u3060\u3051\u76f8\u4e92\u4f5c\u7528\u3057\u3066\u3044\u307e\u3059\u3002\n\u3064\u307e\u308a\u3001\u5206\u5b50\uff08molecule\uff09\u306f\u539f\u5b50\uff08atom\uff09\u304b\u3089\u69cb\u7bc9\u3055\u308c\u3001\u751f\u547d\u4f53\uff08organism\uff09\u306f\u5206\u5b50\u304b\u3089\u3001\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\uff08template\uff09\u306f\u751f\u547d\u4f53\u304b\u3089\u3001\u30da\u30fc\u30b8\uff08page\uff09\u306f\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u304b\u3089\u69cb\u7bc9\u3055\u308c\u307e\u3059\u3002\n\u307e\u305f\u3001\u30a2\u30c8\u30df\u30c3\u30af\u30c7\u30b6\u30a4\u30f3\u306f\u30e2\u30b8\u30e5\u30fc\u30eb\u5185\u3067\u306e",(0,t.jsx)(n.strong,{children:"\u516c\u958bAPI"}),"\u306e\u4f7f\u7528\u3092\u524d\u63d0\u3068\u3057\u3066\u3044\u307e\u3059\u3002"]}),"\n",(0,t.jsx)(n.h3,{id:"\u30d5\u30ed\u30f3\u30c8\u30a8\u30f3\u30c9\u3067\u306e\u9069\u7528\u6027",children:"\u30d5\u30ed\u30f3\u30c8\u30a8\u30f3\u30c9\u3067\u306e\u9069\u7528\u6027"}),"\n",(0,t.jsx)(n.p,{children:"\u30a2\u30c8\u30df\u30c3\u30af\u30c7\u30b6\u30a4\u30f3\u306f\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u6bd4\u8f03\u7684\u3088\u304f\u898b\u3089\u308c\u307e\u3059\u3002\u30a2\u30c8\u30df\u30c3\u30af\u30c7\u30b6\u30a4\u30f3\u306f\u3001\u958b\u767a\u8005\u306e\u9593\u3068\u3044\u3046\u3088\u308a\u3001\u30a6\u30a7\u30d6\u30c7\u30b6\u30a4\u30ca\u30fc\u306e\u9593\u3067\u4eba\u6c17\u3067\u3059\u3002\u30a6\u30a7\u30d6\u30c7\u30b6\u30a4\u30ca\u30fc\u306f\u3001\u30b9\u30b1\u30fc\u30e9\u30d6\u30eb\u3067\u30e1\u30f3\u30c6\u30ca\u30f3\u30b9\u3057\u3084\u3059\u3044\u30c7\u30b6\u30a4\u30f3\u3092\u4f5c\u6210\u3059\u308b\u305f\u3081\u306b\u30a2\u30c8\u30df\u30c3\u30af\u30c7\u30b6\u30a4\u30f3\u3092\u3088\u304f\u4f7f\u7528\u3057\u3066\u3044\u307e\u3059\u3002\n\u958b\u767a\u3067\u306f\u3001\u30a2\u30c8\u30df\u30c3\u30af\u30c7\u30b6\u30a4\u30f3\u306f\u4ed6\u306e\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u8a2d\u8a08\u65b9\u6cd5\u8ad6\u3068\u6df7\u5408\u3055\u308c\u308b\u3053\u3068\u304c\u3088\u304f\u3042\u308a\u307e\u3059\u3002"}),"\n",(0,t.jsx)(n.p,{children:"\u3057\u304b\u3057\u3001\u30a2\u30c8\u30df\u30c3\u30af\u30c7\u30b6\u30a4\u30f3\u306fUI\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u3068\u305d\u306e\u69cb\u6210\u306b\u7126\u70b9\u3092\u5f53\u3066\u3066\u3044\u308b\u305f\u3081\u3001\n\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u5185\u3067\u30d3\u30b8\u30cd\u30b9\u30ed\u30b8\u30c3\u30af\u3092\u5b9f\u88c5\u3059\u308b\u554f\u984c\u304c\u767a\u751f\u3057\u3066\u3057\u307e\u3044\u307e\u3059\u3002"}),"\n",(0,t.jsx)(n.p,{children:"\u554f\u984c\u306f\u3001\u30a2\u30c8\u30df\u30c3\u30af\u30c7\u30b6\u30a4\u30f3\u304c\u30d3\u30b8\u30cd\u30b9\u30ed\u30b8\u30c3\u30af\u306e\u305f\u3081\u306e\u660e\u78ba\u306a\u8cac\u4efb\u30ec\u30d9\u30eb\u3092\u63d0\u4f9b\u3057\u3066\u3044\u306a\u3044\u305f\u3081\u3001\n\u30d3\u30b8\u30cd\u30b9\u30ed\u30b8\u30c3\u30af\u304c\u3055\u307e\u3056\u307e\u306a\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u3084\u30ec\u30d9\u30eb\u306b\u5206\u6563\u3055\u308c\u3001\u30e1\u30f3\u30c6\u30ca\u30f3\u30b9\u3084\u30c6\u30b9\u30c8\u304c\u8907\u96d1\u306b\u306a\u308b\u3053\u3068\u3067\u3059\u3002\n\u30d3\u30b8\u30cd\u30b9\u30ed\u30b8\u30c3\u30af\u306f\u66d6\u6627\u306b\u306a\u308a\u3001\u8cac\u4efb\u306e\u660e\u78ba\u306a\u5206\u96e2\u304c\u56f0\u96e3\u306b\u306a\u308a\u3001\u30b3\u30fc\u30c9\u304c\u30e2\u30b8\u30e5\u30fc\u30eb\u5316\u3055\u308c\u305a\u518d\u5229\u7528\u53ef\u80fd\u3067\u306a\u304f\u306a\u308a\u307e\u3059\u3002"}),"\n",(0,t.jsx)(n.h3,{id:"fsd\u3068\u306e\u7d71\u5408",children:"FSD\u3068\u306e\u7d71\u5408"}),"\n",(0,t.jsxs)(n.p,{children:["FSD\u306e\u6587\u8108\u3067\u306f\u3001\u30a2\u30c8\u30df\u30c3\u30af\u30c7\u30b6\u30a4\u30f3\u306e\u3044\u304f\u3064\u304b\u306e\u8981\u7d20\u3092\u4f7f\u7528\u3057\u3066\u67d4\u8edf\u3067\u30b9\u30b1\u30fc\u30e9\u30d6\u30eb\u306aUI\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u3092\u4f5c\u6210\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002 ",(0,t.jsx)(n.code,{children:"atoms"}),"\u3068",(0,t.jsx)(n.code,{children:"molecules"}),"\u306e\u5c64\u306f\u3001FSD\u306e",(0,t.jsx)(n.code,{children:"shared/ui"}),"\u306b\u5b9f\u88c5\u3067\u304d\u3001\u57fa\u672c\u7684\u306aUI\u8981\u7d20\u306e\u518d\u5229\u7528\u3068\u30e1\u30f3\u30c6\u30ca\u30f3\u30b9\u3092\u7c21\u7d20\u5316\u3057\u3066\u3044\u307e\u3059\u3002"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-sh",children:"\u251c\u2500\u2500 shared\n\u2502\xa0 \xa0\u251c\u2500\u2500 ui\xa0\n\u2502\xa0 \xa0\u2502\xa0 \xa0\u251c\u2500\u2500 atoms\n\u2502\xa0 \xa0\u2502\xa0 \xa0\u251c\u2500\u2500 molecules\n\u2502\xa0 \xa0...\n"})}),"\n",(0,t.jsx)(n.p,{children:"FSD\u3068\u30a2\u30c8\u30df\u30c3\u30af\u30c7\u30b6\u30a4\u30f3\u306e\u6bd4\u8f03\u306f\u3001\u4e21\u65b9\u306e\u8a2d\u8a08\u65b9\u6cd5\u8ad6\u304c\u30e2\u30b8\u30e5\u30fc\u30eb\u6027\u3068\u518d\u5229\u7528\u6027\u3092\u76ee\u6307\u3057\u3066\u3044\u308b\u3053\u3068\u3092\u793a\u3057\u3066\u3044\u307e\u3059\u304c\u3001\n\u7570\u306a\u308b\u5074\u9762\u306b\u7126\u70b9\u3092\u5f53\u3066\u3066\u3044\u307e\u3059\u3002\u30a2\u30c8\u30df\u30c3\u30af\u30c7\u30b6\u30a4\u30f3\u306f\u8996\u899a\u7684\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u3068\u305d\u306e\u69cb\u6210\u306b\u7126\u70b9\u3092\u5f53\u3066\u3066\u3044\u307e\u3059\u3002\nFSD\u306f\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u6a5f\u80fd\u3092\u72ec\u7acb\u3057\u305f\u30e2\u30b8\u30e5\u30fc\u30eb\u306b\u5206\u5272\u3057\u3001\u305d\u308c\u3089\u306e\u76f8\u4e92\u95a2\u4fc2\u306b\u7126\u70b9\u3092\u5f53\u3066\u3066\u3044\u307e\u3059\u3002"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.a,{href:"https://atomicdesign.bradfrost.com/table-of-contents/",children:"Atomic Design"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.a,{href:"https://youtu.be/Yi-A20x2dcA",children:"(\u52d5\u753b) Atomic Design: What is it and why is it important?"})}),"\n"]}),"\n",(0,t.jsx)(n.h2,{id:"feature-driven",children:"Feature Driven"}),"\n",(0,t.jsx)(r.Ay,{ticket:"219"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.a,{href:"https://youtu.be/BWAeYuWFHhs",children:"(\u8b1b\u6f14) Feature Driven Architecture - Oleg Isonen"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.a,{href:"https://github.com/feature-sliced/documentation/tree/rc/feature-driven",children:"Feature Driven-Short specification (from the point of view of FSD)"})}),"\n"]})]})}function u(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(h,{...e})}):h(e)}},1100:(e,n,i)=>{i.d(n,{R:()=>l,x:()=>d});var t=i(758);const s={},r=t.createContext(s);function l(e){const n=t.useContext(r);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:l(e.components),t.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/ja/assets/js/179fe0e3.23e3aaf9.js b/ja/assets/js/179fe0e3.a3bb1d3d.js similarity index 98% rename from ja/assets/js/179fe0e3.23e3aaf9.js rename to ja/assets/js/179fe0e3.a3bb1d3d.js index cd8c5e50af..4ddfd22280 100644 --- a/ja/assets/js/179fe0e3.23e3aaf9.js +++ b/ja/assets/js/179fe0e3.a3bb1d3d.js @@ -1 +1 @@ -"use strict";(self.webpackChunk_feature_sliced_documentation=self.webpackChunk_feature_sliced_documentation||[]).push([[8973],{1928:(e,t,n)=>{n.d(t,{Ay:()=>u,RM:()=>c});var i=n(6070),r=n(1100),o=(n(758),n(6783)),s=n(7765);const a=e=>{let{ticket:t}=e;const n=`https://github.com/feature-sliced/documentation/issues/${t}`;return(0,i.jsxs)("div",{children:[(0,i.jsx)("p",{children:(0,s.T)({id:"shared.wip.title"})}),(0,i.jsx)("p",{children:(0,s.T)({id:"shared.wip.subtitle"})}),(0,i.jsxs)("ul",{children:[(0,i.jsxs)("li",{children:[(0,s.T)({id:"shared.wip.var.feedback.base"}),(0,i.jsx)(o.A,{to:n,children:(0,s.T)({id:"shared.wip.var.feedback.link"})})]}),(0,i.jsxs)("li",{children:[(0,s.T)({id:"shared.wip.var.material.base"}),(0,i.jsx)(o.A,{to:"https://t.me/feature_sliced",children:(0,s.T)({id:"shared.wip.var.material.link"})})]}),(0,i.jsxs)("li",{children:[(0,s.T)({id:"shared.wip.var.contribute.base"}),(0,i.jsx)(o.A,{to:"https://github.com/feature-sliced/documentation/blob/master/CONTRIBUTING.md",children:(0,s.T)({id:"shared.wip.var.contribute.link"})})]})]}),(0,i.jsx)("br",{}),(0,i.jsx)("p",{children:(0,i.jsx)("i",{children:"\ud83c\udf70 Stay tuned!"})})]})},c=[];function d(e){const t={admonition:"admonition",...(0,r.R)(),...e.components};return(0,i.jsx)(t.admonition,{title:"WIP",type:"caution",children:(0,i.jsx)(a,{ticket:e.ticket})})}function u(e={}){const{wrapper:t}={...(0,r.R)(),...e.components};return t?(0,i.jsx)(t,{...e,children:(0,i.jsx)(d,{...e})}):d(e)}},258:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>d,contentTitle:()=>a,default:()=>p,frontMatter:()=>s,metadata:()=>c,toc:()=>u});var i=n(6070),r=n(1100),o=n(1928);const s={sidebar_position:4,sidebar_class_name:"sidebar-item--wip"},a="\u4f1a\u793e\u3067\u306e\u63a8\u9032",c={id:"about/promote/for-company",title:"\u4f1a\u793e\u3067\u306e\u63a8\u9032",description:"",source:"@site/i18n/ja/docusaurus-plugin-content-docs/current/about/promote/for-company.mdx",sourceDirName:"about/promote",slug:"/about/promote/for-company",permalink:"/ja/docs/about/promote/for-company",draft:!1,unlisted:!1,editUrl:"https://github.com/feature-sliced/documentation/edit/master/i18n/ja/docusaurus-plugin-content-docs/current/about/promote/for-company.mdx",tags:[],version:"current",lastUpdatedAt:1727607766e3,sidebarPosition:4,frontMatter:{sidebar_position:4,sidebar_class_name:"sidebar-item--wip"},sidebar:"aboutSidebar",previous:{title:"\u30c1\u30fc\u30e0\u3067\u306e\u63a8\u9032",permalink:"/ja/docs/about/promote/for-team"}},d={},u=[...o.RM];function l(e){const t={h1:"h1",header:"header",...(0,r.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(t.header,{children:(0,i.jsx)(t.h1,{id:"\u4f1a\u793e\u3067\u306e\u63a8\u9032",children:"\u4f1a\u793e\u3067\u306e\u63a8\u9032"})}),"\n",(0,i.jsx)(o.Ay,{ticket:"206"})]})}function p(e={}){const{wrapper:t}={...(0,r.R)(),...e.components};return t?(0,i.jsx)(t,{...e,children:(0,i.jsx)(l,{...e})}):l(e)}},1100:(e,t,n)=>{n.d(t,{R:()=>s,x:()=>a});var i=n(758);const r={},o=i.createContext(r);function s(e){const t=i.useContext(o);return i.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:s(e.components),i.createElement(o.Provider,{value:t},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunk_feature_sliced_documentation=self.webpackChunk_feature_sliced_documentation||[]).push([[8973],{1928:(e,t,n)=>{n.d(t,{Ay:()=>u,RM:()=>c});var i=n(6070),r=n(1100),o=(n(758),n(6783)),s=n(7765);const a=e=>{let{ticket:t}=e;const n=`https://github.com/feature-sliced/documentation/issues/${t}`;return(0,i.jsxs)("div",{children:[(0,i.jsx)("p",{children:(0,s.T)({id:"shared.wip.title"})}),(0,i.jsx)("p",{children:(0,s.T)({id:"shared.wip.subtitle"})}),(0,i.jsxs)("ul",{children:[(0,i.jsxs)("li",{children:[(0,s.T)({id:"shared.wip.var.feedback.base"}),(0,i.jsx)(o.A,{to:n,children:(0,s.T)({id:"shared.wip.var.feedback.link"})})]}),(0,i.jsxs)("li",{children:[(0,s.T)({id:"shared.wip.var.material.base"}),(0,i.jsx)(o.A,{to:"https://t.me/feature_sliced",children:(0,s.T)({id:"shared.wip.var.material.link"})})]}),(0,i.jsxs)("li",{children:[(0,s.T)({id:"shared.wip.var.contribute.base"}),(0,i.jsx)(o.A,{to:"https://github.com/feature-sliced/documentation/blob/master/CONTRIBUTING.md",children:(0,s.T)({id:"shared.wip.var.contribute.link"})})]})]}),(0,i.jsx)("br",{}),(0,i.jsx)("p",{children:(0,i.jsx)("i",{children:"\ud83c\udf70 Stay tuned!"})})]})},c=[];function d(e){const t={admonition:"admonition",...(0,r.R)(),...e.components};return(0,i.jsx)(t.admonition,{title:"WIP",type:"caution",children:(0,i.jsx)(a,{ticket:e.ticket})})}function u(e={}){const{wrapper:t}={...(0,r.R)(),...e.components};return t?(0,i.jsx)(t,{...e,children:(0,i.jsx)(d,{...e})}):d(e)}},258:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>d,contentTitle:()=>a,default:()=>p,frontMatter:()=>s,metadata:()=>c,toc:()=>u});var i=n(6070),r=n(1100),o=n(1928);const s={sidebar_position:4,sidebar_class_name:"sidebar-item--wip"},a="\u4f1a\u793e\u3067\u306e\u63a8\u9032",c={id:"about/promote/for-company",title:"\u4f1a\u793e\u3067\u306e\u63a8\u9032",description:"",source:"@site/i18n/ja/docusaurus-plugin-content-docs/current/about/promote/for-company.mdx",sourceDirName:"about/promote",slug:"/about/promote/for-company",permalink:"/ja/docs/about/promote/for-company",draft:!1,unlisted:!1,editUrl:"https://github.com/feature-sliced/documentation/edit/master/i18n/ja/docusaurus-plugin-content-docs/current/about/promote/for-company.mdx",tags:[],version:"current",lastUpdatedAt:1728325386e3,sidebarPosition:4,frontMatter:{sidebar_position:4,sidebar_class_name:"sidebar-item--wip"},sidebar:"aboutSidebar",previous:{title:"\u30c1\u30fc\u30e0\u3067\u306e\u63a8\u9032",permalink:"/ja/docs/about/promote/for-team"}},d={},u=[...o.RM];function l(e){const t={h1:"h1",header:"header",...(0,r.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(t.header,{children:(0,i.jsx)(t.h1,{id:"\u4f1a\u793e\u3067\u306e\u63a8\u9032",children:"\u4f1a\u793e\u3067\u306e\u63a8\u9032"})}),"\n",(0,i.jsx)(o.Ay,{ticket:"206"})]})}function p(e={}){const{wrapper:t}={...(0,r.R)(),...e.components};return t?(0,i.jsx)(t,{...e,children:(0,i.jsx)(l,{...e})}):l(e)}},1100:(e,t,n)=>{n.d(t,{R:()=>s,x:()=>a});var i=n(758);const r={},o=i.createContext(r);function s(e){const t=i.useContext(o);return i.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:s(e.components),i.createElement(o.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/ja/assets/js/1ef93b0e.a0a8141b.js b/ja/assets/js/1ef93b0e.168c9b4b.js similarity index 98% rename from ja/assets/js/1ef93b0e.a0a8141b.js rename to ja/assets/js/1ef93b0e.168c9b4b.js index 091e82ce63..f1077ac8c9 100644 --- a/ja/assets/js/1ef93b0e.a0a8141b.js +++ b/ja/assets/js/1ef93b0e.168c9b4b.js @@ -1 +1 @@ -"use strict";(self.webpackChunk_feature_sliced_documentation=self.webpackChunk_feature_sliced_documentation||[]).push([[2900],{1928:(t,e,i)=>{i.d(e,{Ay:()=>l,RM:()=>c});var n=i(6070),r=i(1100),a=(i(758),i(6783)),o=i(7765);const s=t=>{let{ticket:e}=t;const i=`https://github.com/feature-sliced/documentation/issues/${e}`;return(0,n.jsxs)("div",{children:[(0,n.jsx)("p",{children:(0,o.T)({id:"shared.wip.title"})}),(0,n.jsx)("p",{children:(0,o.T)({id:"shared.wip.subtitle"})}),(0,n.jsxs)("ul",{children:[(0,n.jsxs)("li",{children:[(0,o.T)({id:"shared.wip.var.feedback.base"}),(0,n.jsx)(a.A,{to:i,children:(0,o.T)({id:"shared.wip.var.feedback.link"})})]}),(0,n.jsxs)("li",{children:[(0,o.T)({id:"shared.wip.var.material.base"}),(0,n.jsx)(a.A,{to:"https://t.me/feature_sliced",children:(0,o.T)({id:"shared.wip.var.material.link"})})]}),(0,n.jsxs)("li",{children:[(0,o.T)({id:"shared.wip.var.contribute.base"}),(0,n.jsx)(a.A,{to:"https://github.com/feature-sliced/documentation/blob/master/CONTRIBUTING.md",children:(0,o.T)({id:"shared.wip.var.contribute.link"})})]})]}),(0,n.jsx)("br",{}),(0,n.jsx)("p",{children:(0,n.jsx)("i",{children:"\ud83c\udf70 Stay tuned!"})})]})},c=[];function d(t){const e={admonition:"admonition",...(0,r.R)(),...t.components};return(0,n.jsx)(e.admonition,{title:"WIP",type:"caution",children:(0,n.jsx)(s,{ticket:t.ticket})})}function l(t={}){const{wrapper:e}={...(0,r.R)(),...t.components};return e?(0,n.jsx)(e,{...t,children:(0,n.jsx)(d,{...t})}):d(t)}},1095:(t,e,i)=>{i.r(e),i.d(e,{assets:()=>d,contentTitle:()=>s,default:()=>p,frontMatter:()=>o,metadata:()=>c,toc:()=>l});var n=i(6070),r=i(1100),a=i(1928);const o={sidebar_position:2,sidebar_class_name:"sidebar-item--wip"},s="\u90e8\u5206\u7684\u306a\u9069\u7528",c={id:"about/promote/partial-application",title:"\u90e8\u5206\u7684\u306a\u9069\u7528",description:"",source:"@site/i18n/ja/docusaurus-plugin-content-docs/current/about/promote/partial-application.mdx",sourceDirName:"about/promote",slug:"/about/promote/partial-application",permalink:"/ja/docs/about/promote/partial-application",draft:!1,unlisted:!1,editUrl:"https://github.com/feature-sliced/documentation/edit/master/i18n/ja/docusaurus-plugin-content-docs/current/about/promote/partial-application.mdx",tags:[],version:"current",lastUpdatedAt:1727607766e3,sidebarPosition:2,frontMatter:{sidebar_position:2,sidebar_class_name:"sidebar-item--wip"},sidebar:"aboutSidebar",previous:{title:"\u7d71\u5408\u306e\u5074\u9762",permalink:"/ja/docs/about/promote/integration"},next:{title:"\u30c1\u30fc\u30e0\u3067\u306e\u63a8\u9032",permalink:"/ja/docs/about/promote/for-team"}},d={},l=[...a.RM];function u(t){const e={h1:"h1",header:"header",...(0,r.R)(),...t.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(e.header,{children:(0,n.jsx)(e.h1,{id:"\u90e8\u5206\u7684\u306a\u9069\u7528",children:"\u90e8\u5206\u7684\u306a\u9069\u7528"})}),"\n",(0,n.jsx)(a.Ay,{ticket:"199"})]})}function p(t={}){const{wrapper:e}={...(0,r.R)(),...t.components};return e?(0,n.jsx)(e,{...t,children:(0,n.jsx)(u,{...t})}):u(t)}},1100:(t,e,i)=>{i.d(e,{R:()=>o,x:()=>s});var n=i(758);const r={},a=n.createContext(r);function o(t){const e=n.useContext(a);return n.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function s(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(r):t.components||r:o(t.components),n.createElement(a.Provider,{value:e},t.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunk_feature_sliced_documentation=self.webpackChunk_feature_sliced_documentation||[]).push([[2900],{1928:(t,e,i)=>{i.d(e,{Ay:()=>l,RM:()=>c});var n=i(6070),r=i(1100),a=(i(758),i(6783)),o=i(7765);const s=t=>{let{ticket:e}=t;const i=`https://github.com/feature-sliced/documentation/issues/${e}`;return(0,n.jsxs)("div",{children:[(0,n.jsx)("p",{children:(0,o.T)({id:"shared.wip.title"})}),(0,n.jsx)("p",{children:(0,o.T)({id:"shared.wip.subtitle"})}),(0,n.jsxs)("ul",{children:[(0,n.jsxs)("li",{children:[(0,o.T)({id:"shared.wip.var.feedback.base"}),(0,n.jsx)(a.A,{to:i,children:(0,o.T)({id:"shared.wip.var.feedback.link"})})]}),(0,n.jsxs)("li",{children:[(0,o.T)({id:"shared.wip.var.material.base"}),(0,n.jsx)(a.A,{to:"https://t.me/feature_sliced",children:(0,o.T)({id:"shared.wip.var.material.link"})})]}),(0,n.jsxs)("li",{children:[(0,o.T)({id:"shared.wip.var.contribute.base"}),(0,n.jsx)(a.A,{to:"https://github.com/feature-sliced/documentation/blob/master/CONTRIBUTING.md",children:(0,o.T)({id:"shared.wip.var.contribute.link"})})]})]}),(0,n.jsx)("br",{}),(0,n.jsx)("p",{children:(0,n.jsx)("i",{children:"\ud83c\udf70 Stay tuned!"})})]})},c=[];function d(t){const e={admonition:"admonition",...(0,r.R)(),...t.components};return(0,n.jsx)(e.admonition,{title:"WIP",type:"caution",children:(0,n.jsx)(s,{ticket:t.ticket})})}function l(t={}){const{wrapper:e}={...(0,r.R)(),...t.components};return e?(0,n.jsx)(e,{...t,children:(0,n.jsx)(d,{...t})}):d(t)}},1095:(t,e,i)=>{i.r(e),i.d(e,{assets:()=>d,contentTitle:()=>s,default:()=>p,frontMatter:()=>o,metadata:()=>c,toc:()=>l});var n=i(6070),r=i(1100),a=i(1928);const o={sidebar_position:2,sidebar_class_name:"sidebar-item--wip"},s="\u90e8\u5206\u7684\u306a\u9069\u7528",c={id:"about/promote/partial-application",title:"\u90e8\u5206\u7684\u306a\u9069\u7528",description:"",source:"@site/i18n/ja/docusaurus-plugin-content-docs/current/about/promote/partial-application.mdx",sourceDirName:"about/promote",slug:"/about/promote/partial-application",permalink:"/ja/docs/about/promote/partial-application",draft:!1,unlisted:!1,editUrl:"https://github.com/feature-sliced/documentation/edit/master/i18n/ja/docusaurus-plugin-content-docs/current/about/promote/partial-application.mdx",tags:[],version:"current",lastUpdatedAt:1728325386e3,sidebarPosition:2,frontMatter:{sidebar_position:2,sidebar_class_name:"sidebar-item--wip"},sidebar:"aboutSidebar",previous:{title:"\u7d71\u5408\u306e\u5074\u9762",permalink:"/ja/docs/about/promote/integration"},next:{title:"\u30c1\u30fc\u30e0\u3067\u306e\u63a8\u9032",permalink:"/ja/docs/about/promote/for-team"}},d={},l=[...a.RM];function u(t){const e={h1:"h1",header:"header",...(0,r.R)(),...t.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(e.header,{children:(0,n.jsx)(e.h1,{id:"\u90e8\u5206\u7684\u306a\u9069\u7528",children:"\u90e8\u5206\u7684\u306a\u9069\u7528"})}),"\n",(0,n.jsx)(a.Ay,{ticket:"199"})]})}function p(t={}){const{wrapper:e}={...(0,r.R)(),...t.components};return e?(0,n.jsx)(e,{...t,children:(0,n.jsx)(u,{...t})}):u(t)}},1100:(t,e,i)=>{i.d(e,{R:()=>o,x:()=>s});var n=i(758);const r={},a=n.createContext(r);function o(t){const e=n.useContext(a);return n.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function s(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(r):t.components||r:o(t.components),n.createElement(a.Provider,{value:e},t.children)}}}]); \ No newline at end of file diff --git a/ja/assets/js/2b049514.af726dcb.js b/ja/assets/js/2b049514.f02ded29.js similarity index 98% rename from ja/assets/js/2b049514.af726dcb.js rename to ja/assets/js/2b049514.f02ded29.js index f7e76b26af..0d479f75e6 100644 --- a/ja/assets/js/2b049514.af726dcb.js +++ b/ja/assets/js/2b049514.f02ded29.js @@ -1 +1 @@ -"use strict";(self.webpackChunk_feature_sliced_documentation=self.webpackChunk_feature_sliced_documentation||[]).push([[4838],{1928:(e,t,s)=>{s.d(t,{Ay:()=>l,RM:()=>c});var n=s(6070),i=s(1100),r=(s(758),s(6783)),a=s(7765);const d=e=>{let{ticket:t}=e;const s=`https://github.com/feature-sliced/documentation/issues/${t}`;return(0,n.jsxs)("div",{children:[(0,n.jsx)("p",{children:(0,a.T)({id:"shared.wip.title"})}),(0,n.jsx)("p",{children:(0,a.T)({id:"shared.wip.subtitle"})}),(0,n.jsxs)("ul",{children:[(0,n.jsxs)("li",{children:[(0,a.T)({id:"shared.wip.var.feedback.base"}),(0,n.jsx)(r.A,{to:s,children:(0,a.T)({id:"shared.wip.var.feedback.link"})})]}),(0,n.jsxs)("li",{children:[(0,a.T)({id:"shared.wip.var.material.base"}),(0,n.jsx)(r.A,{to:"https://t.me/feature_sliced",children:(0,a.T)({id:"shared.wip.var.material.link"})})]}),(0,n.jsxs)("li",{children:[(0,a.T)({id:"shared.wip.var.contribute.base"}),(0,n.jsx)(r.A,{to:"https://github.com/feature-sliced/documentation/blob/master/CONTRIBUTING.md",children:(0,a.T)({id:"shared.wip.var.contribute.link"})})]})]}),(0,n.jsx)("br",{}),(0,n.jsx)("p",{children:(0,n.jsx)("i",{children:"\ud83c\udf70 Stay tuned!"})})]})},c=[];function o(e){const t={admonition:"admonition",...(0,i.R)(),...e.components};return(0,n.jsx)(t.admonition,{title:"WIP",type:"caution",children:(0,n.jsx)(d,{ticket:e.ticket})})}function l(e={}){const{wrapper:t}={...(0,i.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(o,{...e})}):o(e)}},6140:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>o,contentTitle:()=>d,default:()=>p,frontMatter:()=>a,metadata:()=>c,toc:()=>l});var n=s(6070),i=s(1100),r=s(1928);const a={sidebar_class_name:"sidebar-item--wip",unlisted:!0},d="\u30c7\u30b9\u30af\u30c8\u30c3\u30d7/\u30bf\u30c3\u30c1\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0",c={id:"guides/examples/platforms",title:"\u30c7\u30b9\u30af\u30c8\u30c3\u30d7/\u30bf\u30c3\u30c1\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0",description:"",source:"@site/i18n/ja/docusaurus-plugin-content-docs/current/guides/examples/platforms.mdx",sourceDirName:"guides/examples",slug:"/guides/examples/platforms",permalink:"/ja/docs/guides/examples/platforms",draft:!1,unlisted:!0,editUrl:"https://github.com/feature-sliced/documentation/edit/master/i18n/ja/docusaurus-plugin-content-docs/current/guides/examples/platforms.mdx",tags:[],version:"current",lastUpdatedAt:1727607766e3,frontMatter:{sidebar_class_name:"sidebar-item--wip",unlisted:!0},sidebar:"guidesSidebar"},o={},l=[...r.RM];function u(e){const t={h1:"h1",header:"header",...(0,i.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.header,{children:(0,n.jsx)(t.h1,{id:"\u30c7\u30b9\u30af\u30c8\u30c3\u30d7\u30bf\u30c3\u30c1\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0",children:"\u30c7\u30b9\u30af\u30c8\u30c3\u30d7/\u30bf\u30c3\u30c1\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0"})}),"\n",(0,n.jsx)(r.Ay,{ticket:"198"})]})}function p(e={}){const{wrapper:t}={...(0,i.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(u,{...e})}):u(e)}},1100:(e,t,s)=>{s.d(t,{R:()=>a,x:()=>d});var n=s(758);const i={},r=n.createContext(i);function a(e){const t=n.useContext(r);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function d(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:a(e.components),n.createElement(r.Provider,{value:t},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunk_feature_sliced_documentation=self.webpackChunk_feature_sliced_documentation||[]).push([[4838],{1928:(e,t,s)=>{s.d(t,{Ay:()=>l,RM:()=>c});var n=s(6070),i=s(1100),r=(s(758),s(6783)),a=s(7765);const d=e=>{let{ticket:t}=e;const s=`https://github.com/feature-sliced/documentation/issues/${t}`;return(0,n.jsxs)("div",{children:[(0,n.jsx)("p",{children:(0,a.T)({id:"shared.wip.title"})}),(0,n.jsx)("p",{children:(0,a.T)({id:"shared.wip.subtitle"})}),(0,n.jsxs)("ul",{children:[(0,n.jsxs)("li",{children:[(0,a.T)({id:"shared.wip.var.feedback.base"}),(0,n.jsx)(r.A,{to:s,children:(0,a.T)({id:"shared.wip.var.feedback.link"})})]}),(0,n.jsxs)("li",{children:[(0,a.T)({id:"shared.wip.var.material.base"}),(0,n.jsx)(r.A,{to:"https://t.me/feature_sliced",children:(0,a.T)({id:"shared.wip.var.material.link"})})]}),(0,n.jsxs)("li",{children:[(0,a.T)({id:"shared.wip.var.contribute.base"}),(0,n.jsx)(r.A,{to:"https://github.com/feature-sliced/documentation/blob/master/CONTRIBUTING.md",children:(0,a.T)({id:"shared.wip.var.contribute.link"})})]})]}),(0,n.jsx)("br",{}),(0,n.jsx)("p",{children:(0,n.jsx)("i",{children:"\ud83c\udf70 Stay tuned!"})})]})},c=[];function o(e){const t={admonition:"admonition",...(0,i.R)(),...e.components};return(0,n.jsx)(t.admonition,{title:"WIP",type:"caution",children:(0,n.jsx)(d,{ticket:e.ticket})})}function l(e={}){const{wrapper:t}={...(0,i.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(o,{...e})}):o(e)}},6140:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>o,contentTitle:()=>d,default:()=>p,frontMatter:()=>a,metadata:()=>c,toc:()=>l});var n=s(6070),i=s(1100),r=s(1928);const a={sidebar_class_name:"sidebar-item--wip",unlisted:!0},d="\u30c7\u30b9\u30af\u30c8\u30c3\u30d7/\u30bf\u30c3\u30c1\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0",c={id:"guides/examples/platforms",title:"\u30c7\u30b9\u30af\u30c8\u30c3\u30d7/\u30bf\u30c3\u30c1\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0",description:"",source:"@site/i18n/ja/docusaurus-plugin-content-docs/current/guides/examples/platforms.mdx",sourceDirName:"guides/examples",slug:"/guides/examples/platforms",permalink:"/ja/docs/guides/examples/platforms",draft:!1,unlisted:!0,editUrl:"https://github.com/feature-sliced/documentation/edit/master/i18n/ja/docusaurus-plugin-content-docs/current/guides/examples/platforms.mdx",tags:[],version:"current",lastUpdatedAt:1728325386e3,frontMatter:{sidebar_class_name:"sidebar-item--wip",unlisted:!0},sidebar:"guidesSidebar"},o={},l=[...r.RM];function u(e){const t={h1:"h1",header:"header",...(0,i.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.header,{children:(0,n.jsx)(t.h1,{id:"\u30c7\u30b9\u30af\u30c8\u30c3\u30d7\u30bf\u30c3\u30c1\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0",children:"\u30c7\u30b9\u30af\u30c8\u30c3\u30d7/\u30bf\u30c3\u30c1\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0"})}),"\n",(0,n.jsx)(r.Ay,{ticket:"198"})]})}function p(e={}){const{wrapper:t}={...(0,i.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(u,{...e})}):u(e)}},1100:(e,t,s)=>{s.d(t,{R:()=>a,x:()=>d});var n=s(758);const i={},r=n.createContext(i);function a(e){const t=n.useContext(r);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function d(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:a(e.components),n.createElement(r.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/ja/assets/js/32d45827.0a305c07.js b/ja/assets/js/32d45827.c43baede.js similarity index 99% rename from ja/assets/js/32d45827.0a305c07.js rename to ja/assets/js/32d45827.c43baede.js index 913e1f15cd..47e3935d6d 100644 --- a/ja/assets/js/32d45827.0a305c07.js +++ b/ja/assets/js/32d45827.c43baede.js @@ -1 +1 @@ -"use strict";(self.webpackChunk_feature_sliced_documentation=self.webpackChunk_feature_sliced_documentation||[]).push([[2810],{7946:(A,o,t)=>{t.d(o,{Ay:()=>C,RM:()=>U});var e=t(6070),g=t(1100),s=t(5988);const U=[];function F(A){return(0,e.jsx)(s.A,{...A})}function C(A={}){const{wrapper:o}={...(0,g.R)(),...A.components};return o?(0,e.jsx)(o,{...A,children:(0,e.jsx)(F,{...A})}):F(A)}},5672:(A,o,t)=>{t.r(o),t.d(o,{assets:()=>B,contentTitle:()=>F,default:()=>Q,frontMatter:()=>U,metadata:()=>C,toc:()=>K});var e=t(6070),g=t(1100),s=t(7946);t(6783);const U={sidebar_position:1,slug:"/",pagination_next:"get-started/index"},F="\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8",C={id:"intro",title:"\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8",description:"feature-sliced-banner",source:"@site/i18n/ja/docusaurus-plugin-content-docs/current/intro.mdx",sourceDirName:".",slug:"/",permalink:"/ja/docs/",draft:!1,unlisted:!1,editUrl:"https://github.com/feature-sliced/documentation/edit/master/i18n/ja/docusaurus-plugin-content-docs/current/intro.mdx",tags:[],version:"current",lastUpdatedAt:1727607766e3,sidebarPosition:1,frontMatter:{sidebar_position:1,slug:"/",pagination_next:"get-started/index"},next:{title:"\ud83d\ude80 \u30af\u30a4\u30c3\u30af\u30b9\u30bf\u30fc\u30c8",permalink:"/ja/docs/get-started/"}},B={},K=[...s.RM,...s.RM,...s.RM,...s.RM,...s.RM,...s.RM,...s.RM];function n(A){const o={h1:"h1",header:"header",img:"img",p:"p",strong:"strong",...(0,g.R)(),...A.components};return(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)(o.header,{children:(0,e.jsx)(o.h1,{id:"\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8",children:"\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8"})}),"\n",(0,e.jsx)(o.p,{children:(0,e.jsx)(o.img,{alt:"feature-sliced-banner",src:t(1589).A+"",width:"1400",height:"320"})}),"\n",(0,e.jsxs)(o.p,{children:[(0,e.jsx)(o.strong,{children:"Feature-Sliced Design"})," (FSD) \u3068\u306f\u3001\u30d5\u30ed\u30f3\u30c8\u30a8\u30f3\u30c9\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u8a2d\u8a08\u65b9\u6cd5\u8ad6\u3067\u3059\u3002\u7c21\u5358\u306b\u8a00\u3048\u3070\u3001\u30b3\u30fc\u30c9\u3092\u6574\u7406\u3059\u308b\u305f\u3081\u306e\u30eb\u30fc\u30eb\u3068\u898f\u7d04\u306e\u96c6\u5927\u6210\u3067\u3059\u3002FSD\u306e\u4e3b\u306a\u76ee\u7684\u306f\u3001\u30d3\u30b8\u30cd\u30b9\u8981\u4ef6\u304c\u7d76\u3048\u305a\u5909\u5316\u3059\u308b\u4e2d\u3067\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u3088\u308a\u7406\u89e3\u3057\u3084\u3059\u304f\u3001\u69cb\u9020\u5316\u3055\u308c\u305f\u3082\u306e\u306b\u3059\u308b\u3053\u3068\u3067\u3059\u3002"]}),"\n","\n",(0,e.jsx)(s.Ay,{theme:"primary",Icon:"\ud83c\udf70",title:"FSD\u306b\u521d\u3081\u3066\u89e6\u308c\u308b\u65b9\u3078",description:"\u65b9\u6cd5\u8ad6\u306e\u57fa\u672c\u3068\u7c21\u5358\u306a\u6982\u8981\u3092\u5b66\u3073\u307e\u3057\u3087\u3046",to:"/docs/get-started/overview"}),"\n",(0,e.jsx)("br",{}),"\n",(0,e.jsx)(s.Ay,{theme:"mini",title:"\ud83d\ude80 \u30af\u30a4\u30c3\u30af\u30b9\u30bf\u30fc\u30c8",description:"\u57fa\u672c\u6982\u5ff5\u3068\u69cb\u9020\u306e\u8aac\u660e\u3001React\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u8a73\u7d30\u306a\u89e3\u8aac",to:"/docs/get-started",tags:["\u57fa\u672c","\u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb","\u30e2\u30c1\u30d9\u30fc\u30b7\u30e7\u30f3"]}),"\n",(0,e.jsx)(s.Ay,{theme:"mini",title:"\ud83c\udfaf \u30ac\u30a4\u30c9",description:"Feature-Sliced Design\u306e\u5b9f\u8df5\u7684\u306a\u30ac\u30a4\u30c9\u3068\u4f8b",to:"/docs/guides",tags:["v1","\u30ec\u30ac\u30b7\u30fc","\u4f8b"]}),"\n",(0,e.jsx)(s.Ay,{theme:"mini",title:"\ud83d\udcda \u53c2\u8003\u66f8",description:"\u91cd\u8981\u306a\u6982\u5ff5\u3068\u60c5\u5831",to:"/docs/reference",tags:["\u30e6\u30cb\u30c3\u30c8","\u5206\u96e2","\u516c\u958bAPI"]}),"\n",(0,e.jsx)(s.Ay,{theme:"mini",title:"\ud83c\udf70 FSD\u306b\u3064\u3044\u3066",description:"FSD\u306e\u54f2\u5b66\u3001\u76ee\u7684\u3001\u73fe\u4ee3\u306e\u30d5\u30ed\u30f3\u30c8\u30a8\u30f3\u30c9\u306b\u304a\u3051\u308b\u4f4d\u7f6e\u4ed8\u3051",to:"/docs/about",tags:["\u30df\u30c3\u30b7\u30e7\u30f3","\u30d7\u30ed\u30e2\u30fc\u30b7\u30e7\u30f3 & \u7d71\u5408"]}),"\n",(0,e.jsx)(s.Ay,{theme:"mini",title:"\ud83d\udcab \u30b3\u30df\u30e5\u30cb\u30c6\u30a3",description:"\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u304c\u63d0\u4f9b\u3059\u308b\u30ea\u30bd\u30fc\u30b9\u3068\u8ffd\u52a0\u8cc7\u6599",to:"/community",tags:["Awesome","\u30c1\u30fc\u30e0","\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3078\u306e\u53c2\u52a0"]}),"\n",(0,e.jsx)(s.Ay,{theme:"mini",title:"\ud83d\udee0 \u5b9f\u88c5\u4f8b",description:"Feature-Sliced Design\u306b\u57fa\u3065\u3044\u3066\u8a2d\u8a08\u3055\u308c\u305f\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u4e00\u89a7",to:"/examples"})]})}function Q(A={}){const{wrapper:o}={...(0,g.R)(),...A.components};return o?(0,e.jsx)(o,{...A,children:(0,e.jsx)(n,{...A})}):n(A)}},5988:(A,o,t)=>{t.d(o,{Y:()=>F,A:()=>B});t(758);var e=t(3526),g=t(6783);const s={root:"root_GfON",rootDisabled:"rootDisabled_SFUB",details:"details_xxkR",detailsTags:"detailsTags_uTQx",icon:"icon_ciqP",title:"title_pSH5",description:"description__Fep",miniTheme:"miniTheme_ePfp",primaryTheme:"primaryTheme_CilO",defaultTheme:"defaultTheme_j3I8"};var U=t(6070);const F=A=>{const{title:o,description:t,to:F,Icon:B,tags:K,className:n,disabled:Q,theme:i="default"}=A;return(0,U.jsxs)(g.A,{className:(0,e.A)(s.root,n,Q&&s.rootDisabled,s[`${i}Theme`]),to:F,children:[(0,U.jsx)(C,{Icon:B}),(0,U.jsxs)("div",{className:s.details,children:[(0,U.jsxs)("div",{className:s.detailsMain,children:[(0,U.jsx)("span",{className:s.title,children:o}),(0,U.jsx)("p",{className:s.description,children:t})]}),K&&(0,U.jsx)("div",{className:s.detailsTags,children:K.join(" \u2022 ")})]})]})},C=A=>{let{Icon:o}=A;return o?"string"==typeof o?(0,U.jsx)("span",{className:s.icon,children:o}):(0,U.jsx)(o,{className:s.icon}):null},B=F},1589:(A,o,t)=>{t.d(o,{A:()=>e});const e="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAoHBwkHBgoJCAkLCwoMDxkQDw4ODx4WFxIZJCAmJSMgIyIoLTkwKCo2KyIjMkQyNjs9QEBAJjBGS0U+Sjk/QD3/2wBDAQsLCw8NDx0QEB09KSMpPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT3/wgARCAFABXgDAREAAhEBAxEB/8QAGgABAQADAQEAAAAAAAAAAAAAAAEDBAUGAv/EABkBAQEAAwEAAAAAAAAAAAAAAAABAgMEBf/aAAwDAQACEAMQAAAA8V0+cAoAAAKAAACgAAAoAoAAUAFAAUACgAAAFoAAAUAAoCgCooJQFAUAAoCgChAAAVQFgC0AAAAAAKAAAUAUAAAKAAAAAAAAAAAAAAAHx5moAKAAACgAAAoAAAKAKAAFABQAFAAoAAABaAAAFAAKAoAqKCUBQFAAKAoAoQAAFUBYAtAAAAAACgAAFAFAAACgAAAAAAAAAAAAAAPjzNQACgAAAoAAAKAAACgCgABQAUABQAKAAAAWgAABQACgKAKiglAUBQACgKAKEAABVAWALQAAAAAAoAABQBQAAAoAAAAAAAAAAAAAAY/M1UAAUAAAFAAABQAAAUAUAAKACgAKABQAAAC0AAAKAAUBQBUUEoCgKAAUBQBQgAAKoCwBaAAAAAAFAAAKAKAAAFAAAAAAAAAAAAAAY/M1CgACgAAAoAAAKAAACgCgABQAUABQAKAAAAWgAABQACgKAKiglAUBQACgKAKEAABVAWALQAAAAAAoAABQBQAAAoAAAAAAAAAAAAAY/M1AUAAUAAAFAAABQAAAUAUAAKACgAKABQAAAC0AAAKAAUBQBUUEoCgKAAUBQBQgAAKoCwBaAAAAAAFAAAKAKAAAFAAAAAAAAAAAAAY/M1ACgACgAAAoAAAKAAACgCgABQAUABQAKAAAAWgAABQACgKAKiglAUBQACgKAKEAABVAWALQAAAAAAoAABQBQAAAoAAAAAAAAAAAAY/M1AAUAAUAAAFAAABQAAAUAUAAKACgAKABQAAAC0AAAKAAUBQBUUEoCgKAAUBQBQgAAKoCwBaAAAAAAFAAAKAKAAAFAAAAAAAAAAAAY/M1AACgACgAAAoAAAKAAACgCgABQAUABQAKAAAAWgAABQACgKAKiglAUBQACgKAKEAABVAWALQAAAAAAoAABQBQAAAoAAAAAAAAAAAY/M1AAAUAAUAAAFAAABQAAAUAUAAKACgAKABQAAAC0AAAKAAUBQBUUEoCgKAAUBQBQgAAKoCwBaAAAAAAFAAAKAKAAAFAAAAAAAAAAAY/M1AAACgACgAAAoAAAKAAACgCgABQAUABQAKAAAAWgAABQACgKAKiglAUBQACgKAKEAABVAWALQAAAAAAoAABQBQAAAoAAAAAAAAAAY/M1AAAAUAAUAAAFAAABQAAAUAUAAKACgAKABQAAAC0AAAKAAUBQBUUEoCgKAAUBQBQgAAKoCwBaAAAAAAFAAAKAKAAAFAAAAAAAAAAY/M1AAAACgACgAAAoAAAKAAACgCgABQAUABQAKAAAAWgAABQACgKAKiglAUBQACgKAKEAABVAWALQAAAAAAoAABQBQAAAoAAAAAAAAAY/M1AAAAAUAAUAAAFAAABQAAAUAUAAKACgAKABQAAAy3Dcz0iWhaIoVq4bcWOQCtzLRksUVRYauGzFMslx3sueKULcMz1cdoCgKAKEAABVAWALQAAAAAAoAABQBQAAAoAAAAAAAADH5moAAAAAUAAUAAAFAAABQAAAUAUAAKACgAKABQAAHR2cvqunyIylsuUuUtjKWy3zvJ387TvAHq+ryN3PTLlLZcpbGXnuXu5uro3sub1u/xZcpbLlGXKw6/Pc/ogBQFAFCAAAqgLAFoAAAAAAUAAAoAoAAAUAAAAAAAAMfmagAAAAAKAAKAAACgAAAoAAAKAKAAFABQAFAAoAAbmeju7+CKtlsVcostW8fm6dPXt2stPf3edLYq5S0stlpeRo6tLXt2rp7+7zVsWXJbFlpfP83djmQUBQBQgAAKoCwBaAAAAAAFAAAKAKAAAFAAAAAAAAY/M1AAAAAACgACgAAAoAAAKAAACgCgABQAUABQAKAA2stXY3cS2LLYq2LLS8zRv1dezZy1dndwy0stLLSy2LzdPRq4Z57r7W3gLLVsVbFW8Xn68cyAUBQBQgAAKoCwBaAAAAAAFAAAKAKAAAFAAAAAAADH5moAAAAAACgACgAAAoAAAKAAACgCgABQAUABQAKAHT28vrevyJcpbLl5bj9Tl6ekAAdDZzew6/GlylsuUuUt1cd3jvP8AUoBvZ8/serxZcpbLlLlLZcpcpcvOcfdy9G8BQFAFCAAAqgLAFoAAAAAAUAAAoAoAAAUAAAAAABj8zUAAAAAAAKAAKAAACgAAAoAAAKAKAAFABQAFAAoDZy1dffyFlpcMz+GQlpdHTtwYZfVma4djfxy0sti45lxufqFBny19ndxRlKLLSy0st52nfq68wAoCgChAAAVQFgC0AAAAAAKAAAUAUAAAKAAAAAAGPzNQAAAAAAAFAAFAAABQAAAUAAAFAFAACgAoACgAUN7Zo9D0+fLZciy2XKWxZcuJx9Olp2Aeu7vIjJbLYywTPzfF3AU28tXo+nzJclsWWy5S0ylvG5enQ1bQAFAUAUIAACqAsAWgAAAAABQAACgCgAABQAAAAAGPzNQAAAAAAAAoAAoAAAKAAACgAAAoAoAAUAFAAUACt7Zo9B1cEuRZbLlFlq5S3icXRpadgA9D18G3s1y5S2WmXmuDrxzIbeer0fT5y2LLlLYq5S2W8bl6dHRsUAAoCgChAAAVQFgC0AAAAAAKAAAUAUAAAKAAAAAGPzNQAAAAAAAAFAAFAAABQAAAUAAAFAFAACgAoACgA2c9fW6OUsti4pl8TILZbpaNmDDIAdfo5c2eJZathzefdgxy+Zc+WHY3ca2Ktiy0stW87Rt1tWYUAAoCgChAAAVQFgC0AAAAAAKAAAUAUAAAKAAAAAx+ZqAAAAAAAAAFAAFAAABQAAAUAAAFAFAACgAoACgHS3c/qu/zZbLlLl5ng7uZz7wAtAA9X6Hm727XLlLYy+blLl57z+nm8+ze2aPXdvly2XKXKXKWxl83KXLgcPTzObaAoABQFAFCAAAqgLAFoAAAAAAUAAAoAoAAAUAAAAMfmagAAAAAAAAAKAAKAAACgAAAoAAAKAKAAFABQAFBs56+t080VbF5nPv1deYAC3Yy19bo5lolpZatirebzbNbVlnzw7G/klyKqWxZaXkcm/4gFAUAAoCgChAAAVQFgC0AAAAAAKAAAUAUAAAKAAAAx+ZqAAAAAAAAAAFAAFAAABQAAAUAAAFAFAACgAoACm3s1dnq5VsWW8jl6NTVsAAGzsw7fTxrZaZS2WxVst5fJt1NOWxnr7vTxy5RVstirZbw+Lox4qAoCgAFAUAUIAACqAsAWgAAAAABQAACgCgAABQAAAx+ZqAAAAAAAAAAAoAAoAAAKAAACgAAAoAoAAUAFAAdDdp9J3cMuUtly8/wdXP0bQABu7dXpu/hiy5S2XKW4MM/MeX1KA3Nmr0/dwS2MpbLlzdG7h8XQqKCUBQFAAKAoAoQAAFUBYAtAAAAAACgAAFAFAAACgAAMfmagAAAAAAAAAABQABQAAAUAAAFAAABQBQAAoAKAGXLHa2YBRdXXnjxoAAyWbW3WFoiq+ZdTTmFD7uO3s1qKqLjxy19eQVFBKAoCgAFAUAUIAACqAsAWgAAAAABQAACgCgAABQAAx+ZqAAAAAAAAAAAAoAAoAAAKAAACgAAAoAoAAUAFAAUACgAAAFoAAAUAAoCgCooJQFAUAAoCgChAAAVQFgC0AAAAAAKAAAUAUAAAKAAx+ZqAAAAAAAAAAAAFAAFAAABQAAAUAAAFAFAACgAoACgAUAAAAtAAACgAFAUAVFBKAoCgAFAUAUIAACqAsAWgAAAAABQAACgCgAABQAx+ZqAAAAAAAAAAAAAoAAoAAAKAAACgAAAoAoAAUAFAAUACgAAAFoAAAUAAoCgCooJQFAUAAoCgChAAAVQFgC0AAAAAAKAAAUAUAAAKAx+ZqAAAAAAAAAAAAAFAAFAAABQAAAUAAAFAFAACgAoACgAUAAAAtAAACgAFAUAVFBKAoCgAFAUAUIAACqAsAWgAAAAABQAACgCgAABQx+ZqAAAAAAAAAAAAAAoAAoAAAKAAACgAAAoAoAAUAFAAUACgAAAFoAAAUAAoCgCooJQFAUAAoCgChAAAVQFgC0AAAAAAKAAAUAUAAAKx+ZqAAAAAAAAAAAAAAFAAFAAABQAAAUAAAFAFAACgAoACgAUAAAAtAAACgAFAUAVFBKAoCgAFAUAUIAACqAsAWgAAAAABQAACgCgAADH5uoAAAAAAAAAAAAAACgACgAAAoAAAKAAACgCgABQAUABQAKAAAAWgAABQACgKAKiglAUBQACgKAKEAABVAWALQAAAAAAoAABQBQAAMfm6gAAAAAAAAAAAAAABQABQAAAUAAAFAAABQBQAAoAKAAoAFAAAALQAAAoABQFAFRQSgKAoABQFAFCAAAqgLAFoAAAAAAUAAAoAoAAx+bqAAAAAAAAAAAAAAAAoAAoAAAKAAACgAAAoAoAAUAFAAUACgAAAFoAAAUAAoCgCooJQFAUAAoCgChAAAVQFgC0AAAAAAKAAAUAUADH5uoAAAAAAAAAAAAAAAAUAAUAAAFAAABQAAAUAUAAKACgAKABQAAAC0AAAKAAUBQBUUEoCgKAAUBQBQgAAKoCwBaAAAAAAFAAAKAKAMfm6gAAAAAAAAAAAAAAAAKAAKAAACgAAAoAAAKAKAAFABQAFAAoAAABaAAAFAAKAoAqKCUBQFAAKAoAoQAAFUBYAtAAAAAACgAAFAFAx+bqAAAAAAAAAAAAAAAAAFAAFAAABQAAAUAAAFAFAACgAoACgAUAAAAtAAACgAFAUAVFBKAoCgAFAUAUIAACqAsAWgAAAAABQAACgCjH5uoAAAAAAAAAAAAAAAAACgACgAAAoAAAKAAACgCgABQAUABQAKAAAAWgAABQACgKAKiglAUBQACgKAKEAABVAWALQAAAAAAoAABQBf/EACgQAAIBBAEEAgIDAQEAAAAAAAAEAwIFFRYBERIUIBNwEDUGIbAwNP/aAAgBAQABCAD/ABKVlpW5uIoMBcTAXEwNxMDcTBXAwVwMHcDBvmEfGFpVZfjm9ILQ61DTLDgriYK4GDuBg3zCPmEfGFpVJOycggkZmpihwFxMDcTA3EwVwMFcBm2tJx8Vz/SFhlohulFcuRTMimZFMyChkFDIKGQUPPVPPVL5LRM/3R+lldWitMNEmQUMgoZBQyCh56p56pfZaJn+KoizSURXaCuTIpmRTMioZBQyChf2oJ0aKYvpC1J0PPUwyawoawoayqayqa0qa2qa2qa4qa6qXNShJv4oy2K0OvxwSawoawoayoayqa0qa2qa4qa4sa6sXROhJriKMtq1Dj8UEmsKGsqGsqmtKmtqmtqmuKmuqjMfELUsdP0bbXPAcpnNpNpNoNoNnNnNmNmNlLg55zPy/i3teE7HObSbSbQbObObMbKbKbIXB3zmOJfwgz4Tsc5tJtBtBs5sxsxspshPXzMxJL9Hfx79tQdODpwdODpwfyH9n72H9zAdODpwdODpwdODpwXHjjHMetk/cQHTg6cHTg6cHTg6cHTg6cHTgv8A/wC+jp9GW+GdhumhbE3YxN2MVdjFXUksL01XdLrjRrrRrzJrzI2pWnN8UhHJXFXxXHkHDE3YxV2MVdTF3Uxd0GLdcY15K5fRGKWZyOODE3YxN2MVdjFXUxd1MXdDGXQxl0MZcy4QTwT8Us/RlnZiUuFMs2et5nUDOoGcQM4gZtAzaJmkTNIl2Yjac74fznUDOoGcQM4gZtAcu6cqc1FHpa541rjFLLnUDOoGdQM4gZxAzaJmkTNImZSLwzE03TXD9GWdaJq4UxTYK3mDQMGgYRAwiBhUDComGRMMiXZeJZzsh9LXalGbdFLNhEDCIGFRMKiYZEYo4jZlop/FrhjZuMUUuCQMGgYNAwiBhEDComFRMMiYdIu60SrVNEP0Zb5pl26a1stdjK3Uyt1MpdCS+uxVdsuwtGwsmwMmfZG2q3Jvlk9EX34E6KIMpdDKXQyl0MnczJ3MkVallrr5kiriq7ZBKWWFuiuDK3Uyt1MpdTKXQyl0MpdDJ3MydzMlch+eeefipj6MsH7Wg7uDu4O7g68F/wD2P/Ky88YiE7uDu4O7g68HXg68F9/t/j8WX9tAd3B3cHdwd3B3cHdwdeDrwdeC/f29R9G29Tzm6YTWjWjWzWy4J+Cz8Xuir5rlEBrPBrJrZrhrhrprxrxr4+p4U/Ef4SW8tuOE1o1o1w1w10101414mo5hnkj+jrY1Qk7TNJsaxsaxsSxsKxc26HW/lj9rczSo9HNXsaxsaxsSxsKxsKxsCxn1zPrmeXLk3Q4zxJGW9ilR6OavY1jY1jYljYVjYFjYFzPrmfXGJOJWJZKfo2yx0S3KimTwVTwVTwVTwVS9RURP9sftZ6KJbpDRJ4Kp4Kp4Kp4Kp4Sp4Sw6ovQlNVT6WmimS5w0V+CqeCqeCqeCqeEqXteGJOiqP6QXYkVl4khzT5mnzMvGZeJ2JWZO+b2gnkWmplizT5mnzMvGZeMw8Zh0rujctFVFfpDNWvLTLFmnzNPmZeMy8Zh4nfYao4om/wAS3//EADMQAAEDBAAFAgMHBQEBAAAAAAEAAgMEEaLREpGSk+EQICFRcBMiMUFScbFTYoGwsjBh/9oACAEBAAk/AP8ASUt4nn8rgKnzbtU+bdqnzbtU+bdqnzbtU+bdqnzbtQZt2oM27TeF1r2uD7YeJjvwPE3ap827VPm3ap827UGbdqDNu1Bm3aZwute1wfRvE934BU+bdqnzbtU+bdqnzbtU+bdqLgaTa/ED9EXtY2x+LlVQ9YVVD1hVUPWFVQ9YVTD1hVMPWFUw9YVTD1hVMPWE9r28AF2+2eJrhxXBcP1FVUPWFUw9YVTD1hVMPWFUw9YVTF1hPa8cAF2m/wA/Rwa0E3J/Yqqh6wqqHrCqoesKph6wqmHrCmY8iQGzXX/I/REuDSCbtUs3MaUs3MaUs3MaUs3MaUk3MaUk3MaUk3MaUkvMaUkvMIuI4Qfj6Ehr73t/8BKlm5jSlm5jSkm5jSkm5jSkm5jSkm5jSkm5jSkl5jSkl5jSLiC0H73oSGvveylm5jSlm5jSkm5jSkm5jSkm5jSkm5jSkl5hSS8wr2Y8tH+D9DmcdgRa9lR5+FR5+FR5+FSZ+FSZ+FS5+FS5+FS5+FS5+Ezg+AFr39GcfBf7t7XuCFR5+FR5+FR5+FSZ+FSZ+FSZ+FSZ+FS5+FS5+Ezgs3hte/ozj4L/AHb2VHn4VHn4VJn4VJn4VJn4VJn4VJn4VLn4Tbcbi63yufod+lyAQQCAX6B7/wC7/koIIIIIL+m72/M/wUEEEAgPQIIL+mP5P0Nk+zksbOuQq8916rz3XKuPdcq491ynY93zc4lSQ8zpSRczpSRczpSRczpFpda/w9HuY4fg5psVVz9wqvPdcq491yrj3XKuPdcq491yqy5jWkuH2jjce1/BIb2de1lXHuvVee65Vx7rlXHuuVce65Vp7rlWnuuVae65Vp7rlL9o8tuDxE/C5+f0NdwsAKnwdpT4O0p8HaU+DtKfB2lPg7SmwdpTYOU2BTuJvCB7J8HaU+DtKfB2lPg7SnwdpS3c5hAHCfabMbe5/wAFT4O0p8HaU+DtKfB2lPg7SnwdpTYOU2DlNgU7iaGAfL8z9DW8TCCoM3bUGbtqDN21Bm7agzdtQ5u2oc3bUOblDmdpvC3hB9sXE917niPzKgzdtQZu2oM3bUObtqHM7Qs1ryBz9RxMde/JQZu2oM3bUGbtqDN21Bm7agzdtQ5u2ocyocym8LSwE8z9DY/tJLGzbEqhPacqE9pyoj2nKiPacoGMd8nNIUcXI7UcXI7UcXI7TIuR2g0G1vh7aUvjF7O4HH81RHtOVEe05UR7TlRHtOVGe05U0t3Ek2YUxzD8nC3ozjkF7Nte6oT2nKhPacqI9pyoj2nKiPacqI9pyoj2nKjPacqM9tyj+zfw2tYj4fQ39LkUUUV+gf8Al/d/0UUUUUfT9A/k+nzP8FFFFFFFFFFf0x/J+hr+C4Jva6q8PKq8PKqsPKqsPKfx/AG9re9/Bx3+Nr2sLqqw8qqw8qqw8qqw8qqw8qqw8qqw8qqw8qpw8p/Hdt72t6P4OP8ANVeHlVeHlVWHlVWHlVWHlVWHlVWHlVWHlOvwOLb/ADt9DgS0Aj4KOXkNqOXkNqOXkNqOXkNoOA4QPj7wS1t72/YhRy8htRy8htRy8htRy8htRyqOVRy8go5UyRBwHCB8fQEtbe9lHLyCjl5Dajl5BRy8go5eQUcqjl5DajlX4PeXDn9DmNe2x+BVND0BU0XQFTRdAVPF0BMaxvAPgB72hzTe4P7FU0PQFTRdAVPF0BU8XQFTxdAVPF0BQxghhsQ0e1oc03uD+xVND0BU8XQFTxdAVPF0BU8XQFExh4wLtbb8j9EXcLx+drqfBulPg3SnwbpT4N0ncTrWva3vdwvb+BU+DdKfBulPg3SnwbpT4N0p8G6U12uFiOEe13C9v4FT4N0p8G6U+DdKfBulPg3Sk4mg3tYD/SXf/8QAJBEAAgICAgEFAQEBAAAAAAAAAAIBEwMUERIgBBAhMnAwMbD/2gAIAQIBAQgA/wCJTETPxFbFTFTlTlTlLlLlLlLjLKzxPhCNMcxWxU5U5U5U5S4yys8SR8nRjoxWxWxWxKTHzP4hjnhjsp3U7qd1O6ndTup3U7qZ5iX+PDG0Qp2U7qd1O6ndTupnmJb4E/07QdoO0HaDsplmJX8RRe08FKlClClCmuprqa6msprKZUhG4gSO08FMFMFKlMFClClCmuprqZUhJ4gWOZ4KoKoKoKYKVKVKFKFGjiZj8ORus8l5ebBsGwbJsmybRkfu3PsrdZ5Li4vLy82DYNk2TI/eefZZ4nktLi4uLy8vNgmeZ5/DsP28c/388X2jzf6T44/t/L1H2/DUiZniK8hVkKshVlKHn/dZjWc1XNVx0lJ4kieDuxXkK8hVkKshVlGx5IiZnwXmZ+OjlbleQryFeQryFWQqyFWUyKyzw34ZiaFbmbkLkLkL0L8ZfjL8ZsYzYxmd4d+V97kLkLkLkL0HzJKzEeCTENzNqFqFqFyFyFyFyFyF6Gd4ZuY/DMSwzcTShQhQhQhRjNfGa+M18Zr4zOkI/EeGLErLEzShQhQhRjNfGNHDTHukctxNSFSFKFKFKFCFCFCFGMzpCNxH4ZjmYnmLcpblLcpblJ9Q8f7tObTm25tuZMkvPM+CO8LxFuUtyluUtyl2UlHmeSYmPiRJmJ+LMhZkLMhZkLchblLcpblLcplZmnlvwzB9/H1P3/lg+kefqvv7YvvH8vVff8Nxp3bg1TVNU1TKnRuPNF7NwaxrGqapqmoahqGmZsdbceyL2ng1zXNY1jWNU1TUGjrMx+HYnhG5nZU2kNpDaQzPDtzHljbq0TOypsqbKGyhtIbSG2htobaGfJGRuYEbq3M7CmwpsKbKmypsobSG0g88tM/h2CIl+JrQrQrQqQ9SsQ/EeWGIl4ia0K0K0K0KkKkMmNISZ8cUcvBWpWpWpWhWh6lFVPj8QVpWeYvyGxkNjIbGQZ5eeW8laVnmL8hfkL8hsZDYyGxkJz5JjifBZlZ5i9y/IX5C/IX5BsrvHDf8S3//xAAdEQEBAAICAwEAAAAAAAAAAAABAAIgMHAQgLAR/9oACAECAQk/APiVERERERuRERHAdJszMzMzuzMzOjMzPqERERERGhEREREaEREREen7M2U6OjMzMzszMzMzZT0czMzMzOrMzM7MzMzMz0eRERERG5ERGpEREREdHljY2MRERsWNjY2NjDoRERY2NjYx+enrMzwszMzM2U+WZmZmekSI4zwRERxEdIERHCREREbERER0kzM8LMzMzszMzPxLv//EACYRAAICAgEEAgIDAQAAAAAAAAACAQMTFBEEEBIgM3AxMhUhMLD/2gAIAQMBAQgA/wCJS9i1x5Nu0G5SbdJt0m1UbVRs1GzUbFYrw0cx6P1NaT4tt0m3SbVRs1GzUbFYjw8cqO6ovk27QbtBuUm3SbdIlyWTwv0h1iy1UxGCwwWGGww2GFzE5FTmJyKnOniYTifTqana2ZjDYYbDC5FTmJyKnOmiYTiTqllqWiMFpgsIosMNhhsOjrZXmZ+kOotmpPKN+w3rDesN1zcc3HNtzac2XKnl15kvsmuuXjfsN+w3rDdc3HNxzbc2nNpyl5deZL7Jrrlo37DfsN6w3rDdc3HNtzbcSeVifo6+rKniaBoGiaRpGmaZqGqVp4Rx2uryJKH8eaBomiaRpmmahqlaeEcdrq8iSh/HmgaBomkaRpmoLHjER9HdZ8U9o79J8fv1fwyQR61fvHr1fwsQR/h036/RtzKqcvnoM9BnoM1IvU1x+NpDZU2FM6iNDRzBMQ0cThrM9BnoM1JmpMtItlczER6WsqpMtsdOZ6DPQZ6DNSZqTNSZajLUVsrRyv0Z1CS9fiuraatprWGtYa9hgsMDmFzC5UsqvE99W01rTWsNew17BKXhomfS9JeuVXUtNW01bTWsNaw17DA5gcwuUrKrxP0Z1Dyicrs2mzabFhsWGewzuZnMzmVyuZleZ9LrnV5iNiwz2GewzOZnF/Ed72lK5mNq02bTZtNiwz2GewzOZnMzlTS0cz9GWqrLw2CkwUmGkw1EdOk/jXUwKYFMKir4xx62VVs0y2Gow1GKoxVmOshliOCJ57WKrJMNgoMFJgpMNJhqMVRirMdZjrEiIj+vozqvjkiDgiO3T/p/lf8AJPaIIjtEdqv17dR8UkQcER2iCIIgiO1X6/Rtr+C+Rtm0bJslb+cc+9j+CyxuG2bRsmwZzOZjKK3MdrH8FljbNs2jZNg2DOZiJ5j6OtSXXiNVjWY1mNditZVeJ9rUl0lY1HNVjWY12MDGBjDJikxSJHEdrUl0lY1HNVjWY1mNdjAxhYwyRHEfR18zCf1kc83IdjzYpmZX3umYSeMjmRyHY82PNiGYRp59bpmEnjI5kch2PNiHYpmZn6RZYaOJwVmFDChiQhYX+o9mWGjicFZgrMKGFDEhjUhFj1ZYaOJwVmCswoYUMSCoq/j/AIlv/8QAIxEBAQEAAgEDBQEBAAAAAAAAAQACIKFwETCxECExgLBBkf/aAAgBAwEJPwD+JT+LXTa+Z+ZmZmeT95+ZmZn6/i102um18z8zPhEstlstlssMRHIstlhhiOGWy2Wy2WP88JBBBBBERxCCCCCIjiEEEEEER4PfS11atWrVqZnhrq1atWrVqZ4a6tdWrVq1an9Pj1LHRZ6LPRZ6I9jJ/wAs9Fnos9Fnos9WeJ6ljosdFnos9Fnos9WerNmPBxEREREcSIiI5ERERER4PZmZmZnkzMzPFmZmZmfBz6Frstdlru1PtP3tWrUzP1fQtdlrstd2rVqZn9PsxEezmIiIiI4ZsxEREeEH3H3GfCzMz7LMzM82ZmfCZER7JEREcyIiP4l//9k="},1100:(A,o,t)=>{t.d(o,{R:()=>U,x:()=>F});var e=t(758);const g={},s=e.createContext(g);function U(A){const o=e.useContext(s);return e.useMemo((function(){return"function"==typeof A?A(o):{...o,...A}}),[o,A])}function F(A){let o;return o=A.disableParentContext?"function"==typeof A.components?A.components(g):A.components||g:U(A.components),e.createElement(s.Provider,{value:o},A.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunk_feature_sliced_documentation=self.webpackChunk_feature_sliced_documentation||[]).push([[2810],{7946:(A,o,t)=>{t.d(o,{Ay:()=>C,RM:()=>U});var e=t(6070),g=t(1100),s=t(5988);const U=[];function F(A){return(0,e.jsx)(s.A,{...A})}function C(A={}){const{wrapper:o}={...(0,g.R)(),...A.components};return o?(0,e.jsx)(o,{...A,children:(0,e.jsx)(F,{...A})}):F(A)}},5672:(A,o,t)=>{t.r(o),t.d(o,{assets:()=>B,contentTitle:()=>F,default:()=>Q,frontMatter:()=>U,metadata:()=>C,toc:()=>K});var e=t(6070),g=t(1100),s=t(7946);t(6783);const U={sidebar_position:1,slug:"/",pagination_next:"get-started/index"},F="\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8",C={id:"intro",title:"\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8",description:"feature-sliced-banner",source:"@site/i18n/ja/docusaurus-plugin-content-docs/current/intro.mdx",sourceDirName:".",slug:"/",permalink:"/ja/docs/",draft:!1,unlisted:!1,editUrl:"https://github.com/feature-sliced/documentation/edit/master/i18n/ja/docusaurus-plugin-content-docs/current/intro.mdx",tags:[],version:"current",lastUpdatedAt:1728325386e3,sidebarPosition:1,frontMatter:{sidebar_position:1,slug:"/",pagination_next:"get-started/index"},next:{title:"\ud83d\ude80 \u30af\u30a4\u30c3\u30af\u30b9\u30bf\u30fc\u30c8",permalink:"/ja/docs/get-started/"}},B={},K=[...s.RM,...s.RM,...s.RM,...s.RM,...s.RM,...s.RM,...s.RM];function n(A){const o={h1:"h1",header:"header",img:"img",p:"p",strong:"strong",...(0,g.R)(),...A.components};return(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)(o.header,{children:(0,e.jsx)(o.h1,{id:"\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8",children:"\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8"})}),"\n",(0,e.jsx)(o.p,{children:(0,e.jsx)(o.img,{alt:"feature-sliced-banner",src:t(1589).A+"",width:"1400",height:"320"})}),"\n",(0,e.jsxs)(o.p,{children:[(0,e.jsx)(o.strong,{children:"Feature-Sliced Design"})," (FSD) \u3068\u306f\u3001\u30d5\u30ed\u30f3\u30c8\u30a8\u30f3\u30c9\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u8a2d\u8a08\u65b9\u6cd5\u8ad6\u3067\u3059\u3002\u7c21\u5358\u306b\u8a00\u3048\u3070\u3001\u30b3\u30fc\u30c9\u3092\u6574\u7406\u3059\u308b\u305f\u3081\u306e\u30eb\u30fc\u30eb\u3068\u898f\u7d04\u306e\u96c6\u5927\u6210\u3067\u3059\u3002FSD\u306e\u4e3b\u306a\u76ee\u7684\u306f\u3001\u30d3\u30b8\u30cd\u30b9\u8981\u4ef6\u304c\u7d76\u3048\u305a\u5909\u5316\u3059\u308b\u4e2d\u3067\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u3088\u308a\u7406\u89e3\u3057\u3084\u3059\u304f\u3001\u69cb\u9020\u5316\u3055\u308c\u305f\u3082\u306e\u306b\u3059\u308b\u3053\u3068\u3067\u3059\u3002"]}),"\n","\n",(0,e.jsx)(s.Ay,{theme:"primary",Icon:"\ud83c\udf70",title:"FSD\u306b\u521d\u3081\u3066\u89e6\u308c\u308b\u65b9\u3078",description:"\u65b9\u6cd5\u8ad6\u306e\u57fa\u672c\u3068\u7c21\u5358\u306a\u6982\u8981\u3092\u5b66\u3073\u307e\u3057\u3087\u3046",to:"/docs/get-started/overview"}),"\n",(0,e.jsx)("br",{}),"\n",(0,e.jsx)(s.Ay,{theme:"mini",title:"\ud83d\ude80 \u30af\u30a4\u30c3\u30af\u30b9\u30bf\u30fc\u30c8",description:"\u57fa\u672c\u6982\u5ff5\u3068\u69cb\u9020\u306e\u8aac\u660e\u3001React\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u8a73\u7d30\u306a\u89e3\u8aac",to:"/docs/get-started",tags:["\u57fa\u672c","\u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb","\u30e2\u30c1\u30d9\u30fc\u30b7\u30e7\u30f3"]}),"\n",(0,e.jsx)(s.Ay,{theme:"mini",title:"\ud83c\udfaf \u30ac\u30a4\u30c9",description:"Feature-Sliced Design\u306e\u5b9f\u8df5\u7684\u306a\u30ac\u30a4\u30c9\u3068\u4f8b",to:"/docs/guides",tags:["v1","\u30ec\u30ac\u30b7\u30fc","\u4f8b"]}),"\n",(0,e.jsx)(s.Ay,{theme:"mini",title:"\ud83d\udcda \u53c2\u8003\u66f8",description:"\u91cd\u8981\u306a\u6982\u5ff5\u3068\u60c5\u5831",to:"/docs/reference",tags:["\u30e6\u30cb\u30c3\u30c8","\u5206\u96e2","\u516c\u958bAPI"]}),"\n",(0,e.jsx)(s.Ay,{theme:"mini",title:"\ud83c\udf70 FSD\u306b\u3064\u3044\u3066",description:"FSD\u306e\u54f2\u5b66\u3001\u76ee\u7684\u3001\u73fe\u4ee3\u306e\u30d5\u30ed\u30f3\u30c8\u30a8\u30f3\u30c9\u306b\u304a\u3051\u308b\u4f4d\u7f6e\u4ed8\u3051",to:"/docs/about",tags:["\u30df\u30c3\u30b7\u30e7\u30f3","\u30d7\u30ed\u30e2\u30fc\u30b7\u30e7\u30f3 & \u7d71\u5408"]}),"\n",(0,e.jsx)(s.Ay,{theme:"mini",title:"\ud83d\udcab \u30b3\u30df\u30e5\u30cb\u30c6\u30a3",description:"\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u304c\u63d0\u4f9b\u3059\u308b\u30ea\u30bd\u30fc\u30b9\u3068\u8ffd\u52a0\u8cc7\u6599",to:"/community",tags:["Awesome","\u30c1\u30fc\u30e0","\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3078\u306e\u53c2\u52a0"]}),"\n",(0,e.jsx)(s.Ay,{theme:"mini",title:"\ud83d\udee0 \u5b9f\u88c5\u4f8b",description:"Feature-Sliced Design\u306b\u57fa\u3065\u3044\u3066\u8a2d\u8a08\u3055\u308c\u305f\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u4e00\u89a7",to:"/examples"})]})}function Q(A={}){const{wrapper:o}={...(0,g.R)(),...A.components};return o?(0,e.jsx)(o,{...A,children:(0,e.jsx)(n,{...A})}):n(A)}},5988:(A,o,t)=>{t.d(o,{Y:()=>F,A:()=>B});t(758);var e=t(3526),g=t(6783);const s={root:"root_GfON",rootDisabled:"rootDisabled_SFUB",details:"details_xxkR",detailsTags:"detailsTags_uTQx",icon:"icon_ciqP",title:"title_pSH5",description:"description__Fep",miniTheme:"miniTheme_ePfp",primaryTheme:"primaryTheme_CilO",defaultTheme:"defaultTheme_j3I8"};var U=t(6070);const F=A=>{const{title:o,description:t,to:F,Icon:B,tags:K,className:n,disabled:Q,theme:i="default"}=A;return(0,U.jsxs)(g.A,{className:(0,e.A)(s.root,n,Q&&s.rootDisabled,s[`${i}Theme`]),to:F,children:[(0,U.jsx)(C,{Icon:B}),(0,U.jsxs)("div",{className:s.details,children:[(0,U.jsxs)("div",{className:s.detailsMain,children:[(0,U.jsx)("span",{className:s.title,children:o}),(0,U.jsx)("p",{className:s.description,children:t})]}),K&&(0,U.jsx)("div",{className:s.detailsTags,children:K.join(" \u2022 ")})]})]})},C=A=>{let{Icon:o}=A;return o?"string"==typeof o?(0,U.jsx)("span",{className:s.icon,children:o}):(0,U.jsx)(o,{className:s.icon}):null},B=F},1589:(A,o,t)=>{t.d(o,{A:()=>e});const e="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAoHBwkHBgoJCAkLCwoMDxkQDw4ODx4WFxIZJCAmJSMgIyIoLTkwKCo2KyIjMkQyNjs9QEBAJjBGS0U+Sjk/QD3/2wBDAQsLCw8NDx0QEB09KSMpPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT3/wgARCAFABXgDAREAAhEBAxEB/8QAGgABAQADAQEAAAAAAAAAAAAAAAEDBAUGAv/EABkBAQEAAwEAAAAAAAAAAAAAAAABAgMEBf/aAAwDAQACEAMQAAAA8V0+cAoAAAKAAACgAAAoAoAAUAFAAUACgAAAFoAAAUAAoCgCooJQFAUAAoCgChAAAVQFgC0AAAAAAKAAAUAUAAAKAAAAAAAAAAAAAAAHx5moAKAAACgAAAoAAAKAKAAFABQAFAAoAAABaAAAFAAKAoAqKCUBQFAAKAoAoQAAFUBYAtAAAAAACgAAFAFAAACgAAAAAAAAAAAAAAPjzNQACgAAAoAAAKAAACgCgABQAUABQAKAAAAWgAABQACgKAKiglAUBQACgKAKEAABVAWALQAAAAAAoAABQBQAAAoAAAAAAAAAAAAAAY/M1UAAUAAAFAAABQAAAUAUAAKACgAKABQAAAC0AAAKAAUBQBUUEoCgKAAUBQBQgAAKoCwBaAAAAAAFAAAKAKAAAFAAAAAAAAAAAAAAY/M1CgACgAAAoAAAKAAACgCgABQAUABQAKAAAAWgAABQACgKAKiglAUBQACgKAKEAABVAWALQAAAAAAoAABQBQAAAoAAAAAAAAAAAAAY/M1AUAAUAAAFAAABQAAAUAUAAKACgAKABQAAAC0AAAKAAUBQBUUEoCgKAAUBQBQgAAKoCwBaAAAAAAFAAAKAKAAAFAAAAAAAAAAAAAY/M1ACgACgAAAoAAAKAAACgCgABQAUABQAKAAAAWgAABQACgKAKiglAUBQACgKAKEAABVAWALQAAAAAAoAABQBQAAAoAAAAAAAAAAAAY/M1AAUAAUAAAFAAABQAAAUAUAAKACgAKABQAAAC0AAAKAAUBQBUUEoCgKAAUBQBQgAAKoCwBaAAAAAAFAAAKAKAAAFAAAAAAAAAAAAY/M1AACgACgAAAoAAAKAAACgCgABQAUABQAKAAAAWgAABQACgKAKiglAUBQACgKAKEAABVAWALQAAAAAAoAABQBQAAAoAAAAAAAAAAAY/M1AAAUAAUAAAFAAABQAAAUAUAAKACgAKABQAAAC0AAAKAAUBQBUUEoCgKAAUBQBQgAAKoCwBaAAAAAAFAAAKAKAAAFAAAAAAAAAAAY/M1AAACgACgAAAoAAAKAAACgCgABQAUABQAKAAAAWgAABQACgKAKiglAUBQACgKAKEAABVAWALQAAAAAAoAABQBQAAAoAAAAAAAAAAY/M1AAAAUAAUAAAFAAABQAAAUAUAAKACgAKABQAAAC0AAAKAAUBQBUUEoCgKAAUBQBQgAAKoCwBaAAAAAAFAAAKAKAAAFAAAAAAAAAAY/M1AAAACgACgAAAoAAAKAAACgCgABQAUABQAKAAAAWgAABQACgKAKiglAUBQACgKAKEAABVAWALQAAAAAAoAABQBQAAAoAAAAAAAAAY/M1AAAAAUAAUAAAFAAABQAAAUAUAAKACgAKABQAAAy3Dcz0iWhaIoVq4bcWOQCtzLRksUVRYauGzFMslx3sueKULcMz1cdoCgKAKEAABVAWALQAAAAAAoAABQBQAAAoAAAAAAAADH5moAAAAAUAAUAAAFAAABQAAAUAUAAKACgAKABQAAHR2cvqunyIylsuUuUtjKWy3zvJ387TvAHq+ryN3PTLlLZcpbGXnuXu5uro3sub1u/xZcpbLlGXKw6/Pc/ogBQFAFCAAAqgLAFoAAAAAAUAAAoAoAAAUAAAAAAAAMfmagAAAAAKAAKAAACgAAAoAAAKAKAAFABQAFAAoAAbmeju7+CKtlsVcostW8fm6dPXt2stPf3edLYq5S0stlpeRo6tLXt2rp7+7zVsWXJbFlpfP83djmQUBQBQgAAKoCwBaAAAAAAFAAAKAKAAAFAAAAAAAAY/M1AAAAAACgACgAAAoAAAKAAACgCgABQAUABQAKAA2stXY3cS2LLYq2LLS8zRv1dezZy1dndwy0stLLSy2LzdPRq4Z57r7W3gLLVsVbFW8Xn68cyAUBQBQgAAKoCwBaAAAAAAFAAAKAKAAAFAAAAAAADH5moAAAAAACgACgAAAoAAAKAAACgCgABQAUABQAKAHT28vrevyJcpbLl5bj9Tl6ekAAdDZzew6/GlylsuUuUt1cd3jvP8AUoBvZ8/serxZcpbLlLlLZcpcpcvOcfdy9G8BQFAFCAAAqgLAFoAAAAAAUAAAoAoAAAUAAAAAABj8zUAAAAAAAKAAKAAACgAAAoAAAKAKAAFABQAFAAoDZy1dffyFlpcMz+GQlpdHTtwYZfVma4djfxy0sti45lxufqFBny19ndxRlKLLSy0st52nfq68wAoCgChAAAVQFgC0AAAAAAKAAAUAUAAAKAAAAAAGPzNQAAAAAAAFAAFAAABQAAAUAAAFAFAACgAoACgAUN7Zo9D0+fLZciy2XKWxZcuJx9Olp2Aeu7vIjJbLYywTPzfF3AU28tXo+nzJclsWWy5S0ylvG5enQ1bQAFAUAUIAACqAsAWgAAAAABQAACgCgAABQAAAAAGPzNQAAAAAAAAoAAoAAAKAAACgAAAoAoAAUAFAAUACt7Zo9B1cEuRZbLlFlq5S3icXRpadgA9D18G3s1y5S2WmXmuDrxzIbeer0fT5y2LLlLYq5S2W8bl6dHRsUAAoCgChAAAVQFgC0AAAAAAKAAAUAUAAAKAAAAAGPzNQAAAAAAAAFAAFAAABQAAAUAAAFAFAACgAoACgA2c9fW6OUsti4pl8TILZbpaNmDDIAdfo5c2eJZathzefdgxy+Zc+WHY3ca2Ktiy0stW87Rt1tWYUAAoCgChAAAVQFgC0AAAAAAKAAAUAUAAAKAAAAAx+ZqAAAAAAAAAFAAFAAABQAAAUAAAFAFAACgAoACgHS3c/qu/zZbLlLl5ng7uZz7wAtAA9X6Hm727XLlLYy+blLl57z+nm8+ze2aPXdvly2XKXKXKWxl83KXLgcPTzObaAoABQFAFCAAAqgLAFoAAAAAAUAAAoAoAAAUAAAAMfmagAAAAAAAAAKAAKAAACgAAAoAAAKAKAAFABQAFBs56+t080VbF5nPv1deYAC3Yy19bo5lolpZatirebzbNbVlnzw7G/klyKqWxZaXkcm/4gFAUAAoCgChAAAVQFgC0AAAAAAKAAAUAUAAAKAAAAx+ZqAAAAAAAAAAFAAFAAABQAAAUAAAFAFAACgAoACm3s1dnq5VsWW8jl6NTVsAAGzsw7fTxrZaZS2WxVst5fJt1NOWxnr7vTxy5RVstirZbw+Lox4qAoCgAFAUAUIAACqAsAWgAAAAABQAACgCgAABQAAAx+ZqAAAAAAAAAAAoAAoAAAKAAACgAAAoAoAAUAFAAdDdp9J3cMuUtly8/wdXP0bQABu7dXpu/hiy5S2XKW4MM/MeX1KA3Nmr0/dwS2MpbLlzdG7h8XQqKCUBQFAAKAoAoQAAFUBYAtAAAAAACgAAFAFAAACgAAMfmagAAAAAAAAAABQABQAAAUAAAFAAABQBQAAoAKAGXLHa2YBRdXXnjxoAAyWbW3WFoiq+ZdTTmFD7uO3s1qKqLjxy19eQVFBKAoCgAFAUAUIAACqAsAWgAAAAABQAACgCgAABQAAx+ZqAAAAAAAAAAAAoAAoAAAKAAACgAAAoAoAAUAFAAUACgAAAFoAAAUAAoCgCooJQFAUAAoCgChAAAVQFgC0AAAAAAKAAAUAUAAAKAAx+ZqAAAAAAAAAAAAFAAFAAABQAAAUAAAFAFAACgAoACgAUAAAAtAAACgAFAUAVFBKAoCgAFAUAUIAACqAsAWgAAAAABQAACgCgAABQAx+ZqAAAAAAAAAAAAAoAAoAAAKAAACgAAAoAoAAUAFAAUACgAAAFoAAAUAAoCgCooJQFAUAAoCgChAAAVQFgC0AAAAAAKAAAUAUAAAKAx+ZqAAAAAAAAAAAAAFAAFAAABQAAAUAAAFAFAACgAoACgAUAAAAtAAACgAFAUAVFBKAoCgAFAUAUIAACqAsAWgAAAAABQAACgCgAABQx+ZqAAAAAAAAAAAAAAoAAoAAAKAAACgAAAoAoAAUAFAAUACgAAAFoAAAUAAoCgCooJQFAUAAoCgChAAAVQFgC0AAAAAAKAAAUAUAAAKx+ZqAAAAAAAAAAAAAAFAAFAAABQAAAUAAAFAFAACgAoACgAUAAAAtAAACgAFAUAVFBKAoCgAFAUAUIAACqAsAWgAAAAABQAACgCgAADH5uoAAAAAAAAAAAAAACgACgAAAoAAAKAAACgCgABQAUABQAKAAAAWgAABQACgKAKiglAUBQACgKAKEAABVAWALQAAAAAAoAABQBQAAMfm6gAAAAAAAAAAAAAABQABQAAAUAAAFAAABQBQAAoAKAAoAFAAAALQAAAoABQFAFRQSgKAoABQFAFCAAAqgLAFoAAAAAAUAAAoAoAAx+bqAAAAAAAAAAAAAAAAoAAoAAAKAAACgAAAoAoAAUAFAAUACgAAAFoAAAUAAoCgCooJQFAUAAoCgChAAAVQFgC0AAAAAAKAAAUAUADH5uoAAAAAAAAAAAAAAAAUAAUAAAFAAABQAAAUAUAAKACgAKABQAAAC0AAAKAAUBQBUUEoCgKAAUBQBQgAAKoCwBaAAAAAAFAAAKAKAMfm6gAAAAAAAAAAAAAAAAKAAKAAACgAAAoAAAKAKAAFABQAFAAoAAABaAAAFAAKAoAqKCUBQFAAKAoAoQAAFUBYAtAAAAAACgAAFAFAx+bqAAAAAAAAAAAAAAAAAFAAFAAABQAAAUAAAFAFAACgAoACgAUAAAAtAAACgAFAUAVFBKAoCgAFAUAUIAACqAsAWgAAAAABQAACgCjH5uoAAAAAAAAAAAAAAAAACgACgAAAoAAAKAAACgCgABQAUABQAKAAAAWgAABQACgKAKiglAUBQACgKAKEAABVAWALQAAAAAAoAABQBf/EACgQAAIBBAEEAgIDAQEAAAAAAAAEAwIFFRYBERIUIBNwEDUGIbAwNP/aAAgBAQABCAD/ABKVlpW5uIoMBcTAXEwNxMDcTBXAwVwMHcDBvmEfGFpVZfjm9ILQ61DTLDgriYK4GDuBg3zCPmEfGFpVJOycggkZmpihwFxMDcTA3EwVwMFcBm2tJx8Vz/SFhlohulFcuRTMimZFMyChkFDIKGQUPPVPPVL5LRM/3R+lldWitMNEmQUMgoZBQyCh56p56pfZaJn+KoizSURXaCuTIpmRTMioZBQyChf2oJ0aKYvpC1J0PPUwyawoawoayqayqa0qa2qa2qa4qa6qXNShJv4oy2K0OvxwSawoawoayoayqa0qa2qa4qa4sa6sXROhJriKMtq1Dj8UEmsKGsqGsqmtKmtqmtqmuKmuqjMfELUsdP0bbXPAcpnNpNpNoNoNnNnNmNmNlLg55zPy/i3teE7HObSbSbQbObObMbKbKbIXB3zmOJfwgz4Tsc5tJtBtBs5sxsxspshPXzMxJL9Hfx79tQdODpwdODpwfyH9n72H9zAdODpwdODpwdODpwXHjjHMetk/cQHTg6cHTg6cHTg6cHTg6cHTgv8A/wC+jp9GW+GdhumhbE3YxN2MVdjFXUksL01XdLrjRrrRrzJrzI2pWnN8UhHJXFXxXHkHDE3YxV2MVdTF3Uxd0GLdcY15K5fRGKWZyOODE3YxN2MVdjFXUxd1MXdDGXQxl0MZcy4QTwT8Us/RlnZiUuFMs2et5nUDOoGcQM4gZtAzaJmkTNIl2Yjac74fznUDOoGcQM4gZtAcu6cqc1FHpa541rjFLLnUDOoGdQM4gZxAzaJmkTNImZSLwzE03TXD9GWdaJq4UxTYK3mDQMGgYRAwiBhUDComGRMMiXZeJZzsh9LXalGbdFLNhEDCIGFRMKiYZEYo4jZlop/FrhjZuMUUuCQMGgYNAwiBhEDComFRMMiYdIu60SrVNEP0Zb5pl26a1stdjK3Uyt1MpdCS+uxVdsuwtGwsmwMmfZG2q3Jvlk9EX34E6KIMpdDKXQyl0MnczJ3MkVallrr5kiriq7ZBKWWFuiuDK3Uyt1MpdTKXQyl0MpdDJ3MydzMlch+eeefipj6MsH7Wg7uDu4O7g68F/wD2P/Ky88YiE7uDu4O7g68HXg68F9/t/j8WX9tAd3B3cHdwd3B3cHdwdeDrwdeC/f29R9G29Tzm6YTWjWjWzWy4J+Cz8Xuir5rlEBrPBrJrZrhrhrprxrxr4+p4U/Ef4SW8tuOE1o1o1w1w10101414mo5hnkj+jrY1Qk7TNJsaxsaxsSxsKxc26HW/lj9rczSo9HNXsaxsaxsSxsKxsKxsCxn1zPrmeXLk3Q4zxJGW9ilR6OavY1jY1jYljYVjYFjYFzPrmfXGJOJWJZKfo2yx0S3KimTwVTwVTwVTwVS9RURP9sftZ6KJbpDRJ4Kp4Kp4Kp4Kp4Sp4Sw6ovQlNVT6WmimS5w0V+CqeCqeCqeCqeEqXteGJOiqP6QXYkVl4khzT5mnzMvGZeJ2JWZO+b2gnkWmplizT5mnzMvGZeMw8Zh0rujctFVFfpDNWvLTLFmnzNPmZeMy8Zh4nfYao4om/wAS3//EADMQAAEDBAAFAgMHBQEBAAAAAAEAAgMEEaLREpGSk+EQICFRcBMiMUFScbFTYoGwsjBh/9oACAEBAAk/AP8ASUt4nn8rgKnzbtU+bdqnzbtU+bdqnzbtU+bdqnzbtQZt2oM27TeF1r2uD7YeJjvwPE3ap827VPm3ap827UGbdqDNu1Bm3aZwute1wfRvE934BU+bdqnzbtU+bdqnzbtU+bdqLgaTa/ED9EXtY2x+LlVQ9YVVD1hVUPWFVQ9YVTD1hVMPWFUw9YVTD1hVMPWE9r28AF2+2eJrhxXBcP1FVUPWFUw9YVTD1hVMPWFUw9YVTF1hPa8cAF2m/wA/Rwa0E3J/Yqqh6wqqHrCqoesKph6wqmHrCmY8iQGzXX/I/REuDSCbtUs3MaUs3MaUs3MaUs3MaUk3MaUk3MaUk3MaUkvMaUkvMIuI4Qfj6Ehr73t/8BKlm5jSlm5jSkm5jSkm5jSkm5jSkm5jSkm5jSkl5jSkl5jSLiC0H73oSGvveylm5jSlm5jSkm5jSkm5jSkm5jSkm5jSkl5hSS8wr2Y8tH+D9DmcdgRa9lR5+FR5+FR5+FSZ+FSZ+FS5+FS5+FS5+FS5+Ezg+AFr39GcfBf7t7XuCFR5+FR5+FR5+FSZ+FSZ+FSZ+FSZ+FS5+FS5+Ezgs3hte/ozj4L/AHb2VHn4VHn4VJn4VJn4VJn4VJn4VJn4VLn4Tbcbi63yufod+lyAQQCAX6B7/wC7/koIIIIIL+m72/M/wUEEEAgPQIIL+mP5P0Nk+zksbOuQq8916rz3XKuPdcq491ynY93zc4lSQ8zpSRczpSRczpSRczpFpda/w9HuY4fg5psVVz9wqvPdcq491yrj3XKuPdcq491yqy5jWkuH2jjce1/BIb2de1lXHuvVee65Vx7rlXHuuVce65Vp7rlWnuuVae65Vp7rlL9o8tuDxE/C5+f0NdwsAKnwdpT4O0p8HaU+DtKfB2lPg7SmwdpTYOU2BTuJvCB7J8HaU+DtKfB2lPg7SnwdpS3c5hAHCfabMbe5/wAFT4O0p8HaU+DtKfB2lPg7SnwdpTYOU2DlNgU7iaGAfL8z9DW8TCCoM3bUGbtqDN21Bm7agzdtQ5u2oc3bUOblDmdpvC3hB9sXE917niPzKgzdtQZu2oM3bUObtqHM7Qs1ryBz9RxMde/JQZu2oM3bUGbtqDN21Bm7agzdtQ5u2ocyocym8LSwE8z9DY/tJLGzbEqhPacqE9pyoj2nKiPacoGMd8nNIUcXI7UcXI7UcXI7TIuR2g0G1vh7aUvjF7O4HH81RHtOVEe05UR7TlRHtOVGe05U0t3Ek2YUxzD8nC3ozjkF7Nte6oT2nKhPacqI9pyoj2nKiPacqI9pyoj2nKjPacqM9tyj+zfw2tYj4fQ39LkUUUV+gf8Al/d/0UUUUUfT9A/k+nzP8FFFFFFFFFFf0x/J+hr+C4Jva6q8PKq8PKqsPKqsPKfx/AG9re9/Bx3+Nr2sLqqw8qqw8qqw8qqw8qqw8qqw8qqw8qqw8qpw8p/Hdt72t6P4OP8ANVeHlVeHlVWHlVWHlVWHlVWHlVWHlVWHlOvwOLb/ADt9DgS0Aj4KOXkNqOXkNqOXkNqOXkNoOA4QPj7wS1t72/YhRy8htRy8htRy8htRy8htRyqOVRy8go5UyRBwHCB8fQEtbe9lHLyCjl5Dajl5BRy8go5eQUcqjl5DajlX4PeXDn9DmNe2x+BVND0BU0XQFTRdAVPF0BMaxvAPgB72hzTe4P7FU0PQFTRdAVPF0BU8XQFTxdAVPF0BQxghhsQ0e1oc03uD+xVND0BU8XQFTxdAVPF0BU8XQFExh4wLtbb8j9EXcLx+drqfBulPg3SnwbpT4N0ncTrWva3vdwvb+BU+DdKfBulPg3SnwbpT4N0p8G6U12uFiOEe13C9v4FT4N0p8G6U+DdKfBulPg3Sk4mg3tYD/SXf/8QAJBEAAgICAgEFAQEBAAAAAAAAAAIBEwMUERIgBBAhMnAwMbD/2gAIAQIBAQgA/wCJTETPxFbFTFTlTlTlLlLlLlLjLKzxPhCNMcxWxU5U5U5U5S4yys8SR8nRjoxWxWxWxKTHzP4hjnhjsp3U7qd1O6ndTup3U7qZ5iX+PDG0Qp2U7qd1O6ndTupnmJb4E/07QdoO0HaDsplmJX8RRe08FKlClClCmuprqa6msprKZUhG4gSO08FMFMFKlMFClClCmuprqZUhJ4gWOZ4KoKoKoKYKVKVKFKFGjiZj8ORus8l5ebBsGwbJsmybRkfu3PsrdZ5Li4vLy82DYNk2TI/eefZZ4nktLi4uLy8vNgmeZ5/DsP28c/388X2jzf6T44/t/L1H2/DUiZniK8hVkKshVlKHn/dZjWc1XNVx0lJ4kieDuxXkK8hVkKshVlGx5IiZnwXmZ+OjlbleQryFeQryFWQqyFWUyKyzw34ZiaFbmbkLkLkL0L8ZfjL8ZsYzYxmd4d+V97kLkLkLkL0HzJKzEeCTENzNqFqFqFyFyFyFyFyF6Gd4ZuY/DMSwzcTShQhQhQhRjNfGa+M18Zr4zOkI/EeGLErLEzShQhQhRjNfGNHDTHukctxNSFSFKFKFKFCFCFCFGMzpCNxH4ZjmYnmLcpblLcpblJ9Q8f7tObTm25tuZMkvPM+CO8LxFuUtyluUtyl2UlHmeSYmPiRJmJ+LMhZkLMhZkLchblLcpblLcplZmnlvwzB9/H1P3/lg+kefqvv7YvvH8vVff8Nxp3bg1TVNU1TKnRuPNF7NwaxrGqapqmoahqGmZsdbceyL2ng1zXNY1jWNU1TUGjrMx+HYnhG5nZU2kNpDaQzPDtzHljbq0TOypsqbKGyhtIbSG2htobaGfJGRuYEbq3M7CmwpsKbKmypsobSG0g88tM/h2CIl+JrQrQrQqQ9SsQ/EeWGIl4ia0K0K0K0KkKkMmNISZ8cUcvBWpWpWpWhWh6lFVPj8QVpWeYvyGxkNjIbGQZ5eeW8laVnmL8hfkL8hsZDYyGxkJz5JjifBZlZ5i9y/IX5C/IX5BsrvHDf8S3//xAAdEQEBAAICAwEAAAAAAAAAAAABAAIgMHAQgLAR/9oACAECAQk/APiVERERERuRERHAdJszMzMzuzMzOjMzPqERERERGhEREREaEREREen7M2U6OjMzMzszMzMzZT0czMzMzOrMzM7MzMzMz0eRERERG5ERGpEREREdHljY2MRERsWNjY2NjDoRERY2NjYx+enrMzwszMzM2U+WZmZmekSI4zwRERxEdIERHCREREbERER0kzM8LMzMzszMzPxLv//EACYRAAICAgEEAgIDAQAAAAAAAAACAQMTFBEEEBIgM3AxMhUhMLD/2gAIAQMBAQgA/wCJS9i1x5Nu0G5SbdJt0m1UbVRs1GzUbFYrw0cx6P1NaT4tt0m3SbVRs1GzUbFYjw8cqO6ovk27QbtBuUm3SbdIlyWTwv0h1iy1UxGCwwWGGww2GFzE5FTmJyKnOniYTifTqana2ZjDYYbDC5FTmJyKnOmiYTiTqllqWiMFpgsIosMNhhsOjrZXmZ+kOotmpPKN+w3rDesN1zcc3HNtzac2XKnl15kvsmuuXjfsN+w3rDdc3HNxzbc2nNpyl5deZL7Jrrlo37DfsN6w3rDdc3HNtzbcSeVifo6+rKniaBoGiaRpGmaZqGqVp4Rx2uryJKH8eaBomiaRpmmahqlaeEcdrq8iSh/HmgaBomkaRpmoLHjER9HdZ8U9o79J8fv1fwyQR61fvHr1fwsQR/h036/RtzKqcvnoM9BnoM1IvU1x+NpDZU2FM6iNDRzBMQ0cThrM9BnoM1JmpMtItlczER6WsqpMtsdOZ6DPQZ6DNSZqTNSZajLUVsrRyv0Z1CS9fiuraatprWGtYa9hgsMDmFzC5UsqvE99W01rTWsNew17BKXhomfS9JeuVXUtNW01bTWsNaw17DA5gcwuUrKrxP0Z1Dyicrs2mzabFhsWGewzuZnMzmVyuZleZ9LrnV5iNiwz2GewzOZnF/Ed72lK5mNq02bTZtNiwz2GewzOZnMzlTS0cz9GWqrLw2CkwUmGkw1EdOk/jXUwKYFMKir4xx62VVs0y2Gow1GKoxVmOshliOCJ57WKrJMNgoMFJgpMNJhqMVRirMdZjrEiIj+vozqvjkiDgiO3T/p/lf8AJPaIIjtEdqv17dR8UkQcER2iCIIgiO1X6/Rtr+C+Rtm0bJslb+cc+9j+CyxuG2bRsmwZzOZjKK3MdrH8FljbNs2jZNg2DOZiJ5j6OtSXXiNVjWY1mNditZVeJ9rUl0lY1HNVjWY12MDGBjDJikxSJHEdrUl0lY1HNVjWY1mNdjAxhYwyRHEfR18zCf1kc83IdjzYpmZX3umYSeMjmRyHY82PNiGYRp59bpmEnjI5kch2PNiHYpmZn6RZYaOJwVmFDChiQhYX+o9mWGjicFZgrMKGFDEhjUhFj1ZYaOJwVmCswoYUMSCoq/j/AIlv/8QAIxEBAQEAAgEDBQEBAAAAAAAAAQACIKFwETCxECExgLBBkf/aAAgBAwEJPwD+JT+LXTa+Z+ZmZmeT95+ZmZn6/i102um18z8zPhEstlstlssMRHIstlhhiOGWy2Wy2WP88JBBBBBERxCCCCCIjiEEEEEER4PfS11atWrVqZnhrq1atWrVqZ4a6tdWrVq1an9Pj1LHRZ6LPRZ6I9jJ/wAs9Fnos9Fnos9WeJ6ljosdFnos9Fnos9WerNmPBxEREREcSIiI5ERERER4PZmZmZnkzMzPFmZmZmfBz6Frstdlru1PtP3tWrUzP1fQtdlrstd2rVqZn9PsxEezmIiIiI4ZsxEREeEH3H3GfCzMz7LMzM82ZmfCZER7JEREcyIiP4l//9k="},1100:(A,o,t)=>{t.d(o,{R:()=>U,x:()=>F});var e=t(758);const g={},s=e.createContext(g);function U(A){const o=e.useContext(s);return e.useMemo((function(){return"function"==typeof A?A(o):{...o,...A}}),[o,A])}function F(A){let o;return o=A.disableParentContext?"function"==typeof A.components?A.components(g):A.components||g:U(A.components),e.createElement(s.Provider,{value:o},A.children)}}}]); \ No newline at end of file diff --git a/ja/assets/js/384f90b7.8478e974.js b/ja/assets/js/384f90b7.c8d702d1.js similarity index 98% rename from ja/assets/js/384f90b7.8478e974.js rename to ja/assets/js/384f90b7.c8d702d1.js index 50c788698b..5baa6a9864 100644 --- a/ja/assets/js/384f90b7.8478e974.js +++ b/ja/assets/js/384f90b7.c8d702d1.js @@ -1 +1 @@ -"use strict";(self.webpackChunk_feature_sliced_documentation=self.webpackChunk_feature_sliced_documentation||[]).push([[8038],{7957:(n,e,t)=>{t.r(e),t.d(e,{assets:()=>a,contentTitle:()=>o,default:()=>l,frontMatter:()=>i,metadata:()=>d,toc:()=>c});var s=t(6070),r=t(1100);const i={sidebar_position:3,sidebar_label:"\u77e5\u8b58\u306e\u7a2e\u985e"},o="\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u304a\u3051\u308b\u77e5\u8b58\u306e\u7a2e\u985e",d={id:"about/understanding/knowledge-types",title:"\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u304a\u3051\u308b\u77e5\u8b58\u306e\u7a2e\u985e",description:"\u3069\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u3082\u4ee5\u4e0b\u306e\u300c\u77e5\u8b58\u306e\u7a2e\u985e\u300d\u304c\u5b58\u5728\u3057\u307e\u3059\u3002",source:"@site/i18n/ja/docusaurus-plugin-content-docs/current/about/understanding/knowledge-types.md",sourceDirName:"about/understanding",slug:"/about/understanding/knowledge-types",permalink:"/ja/docs/about/understanding/knowledge-types",draft:!1,unlisted:!1,editUrl:"https://github.com/feature-sliced/documentation/edit/master/i18n/ja/docusaurus-plugin-content-docs/current/about/understanding/knowledge-types.md",tags:[],version:"current",lastUpdatedAt:1727607766e3,sidebarPosition:3,frontMatter:{sidebar_position:3,sidebar_label:"\u77e5\u8b58\u306e\u7a2e\u985e"},sidebar:"aboutSidebar",previous:{title:"\u30cb\u30fc\u30ba\u306e\u7406\u89e3\u3068\u8ab2\u984c\u306e\u5b9a\u7fa9\u306b\u3064\u3044\u3066",permalink:"/ja/docs/about/understanding/needs-driven"},next:{title:"\u30cd\u30fc\u30df\u30f3\u30b0",permalink:"/ja/docs/about/understanding/naming"}},a={},c=[];function u(n){const e={admonition:"admonition",br:"br",h1:"h1",header:"header",li:"li",p:"p",strong:"strong",ul:"ul",...(0,r.R)(),...n.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(e.header,{children:(0,s.jsx)(e.h1,{id:"\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u304a\u3051\u308b\u77e5\u8b58\u306e\u7a2e\u985e",children:"\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u304a\u3051\u308b\u77e5\u8b58\u306e\u7a2e\u985e"})}),"\n",(0,s.jsx)(e.p,{children:"\u3069\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u3082\u4ee5\u4e0b\u306e\u300c\u77e5\u8b58\u306e\u7a2e\u985e\u300d\u304c\u5b58\u5728\u3057\u307e\u3059\u3002"}),"\n",(0,s.jsxs)(e.ul,{children:["\n",(0,s.jsxs)(e.li,{children:["\n",(0,s.jsxs)(e.p,{children:[(0,s.jsx)(e.strong,{children:"\u57fa\u790e\u77e5\u8b58"}),(0,s.jsx)(e.br,{}),"\n","\u6642\u9593\u3068\u3068\u3082\u306b\u3042\u307e\u308a\u5909\u308f\u3089\u306a\u3044\u77e5\u8b58\u3002\u4f8b\u3048\u3070\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3001\u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u30b5\u30a4\u30a8\u30f3\u30b9\u3001\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u3084\u305d\u306eAPI\u306e\u52d5\u4f5c\u30e1\u30ab\u30cb\u30ba\u30e0\u306a\u3069\u3002"]}),"\n"]}),"\n",(0,s.jsxs)(e.li,{children:["\n",(0,s.jsxs)(e.p,{children:[(0,s.jsx)(e.strong,{children:"\u6280\u8853\u30b9\u30bf\u30c3\u30af"}),(0,s.jsx)(e.br,{}),"\n","\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u4f7f\u7528\u3055\u308c\u308b\u6280\u8853\u7684\u89e3\u6c7a\u7b56\u306e\u30bb\u30c3\u30c8\u306b\u95a2\u3059\u308b\u77e5\u8b58\u3002\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u3001\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3001\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u542b\u3080\u3002"]}),"\n"]}),"\n",(0,s.jsxs)(e.li,{children:["\n",(0,s.jsxs)(e.p,{children:[(0,s.jsx)(e.strong,{children:"\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u77e5\u8b58"}),(0,s.jsx)(e.br,{}),"\n","\u73fe\u5728\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u7279\u6709\u3067\u3042\u308a\u3001\u4ed6\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u306f\u5f79\u306b\u7acb\u305f\u306a\u3044\u77e5\u8b58\u3002\u3053\u306e\u77e5\u8b58\u306f\u65b0\u3057\u3044\u30c1\u30fc\u30e0\u30e1\u30f3\u30d0\u30fc\u304c\u52b9\u679c\u7684\u306b\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u8ca2\u732e\u3059\u308b\u305f\u3081\u306b\u5fc5\u8981\u3067\u3042\u308b\u3002"]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(e.admonition,{type:"note",children:(0,s.jsxs)(e.p,{children:[(0,s.jsx)(e.strong,{children:"Feature-Sliced Design"}),"\u306f\u300c\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u77e5\u8b58\u300d\u3078\u306e\u4f9d\u5b58\u3092\u6e1b\u3089\u3057\u3001\u3088\u308a\u591a\u304f\u306e\u8cac\u4efb\u3092\u5f15\u304d\u53d7\u3051\u3001\u65b0\u3057\u3044\u30c1\u30fc\u30e0\u30e1\u30f3\u30d0\u30fc\u306e\u30aa\u30f3\u30dc\u30fc\u30c7\u30a3\u30f3\u30b0\u3092\u5bb9\u6613\u306b\u3059\u308b\u3053\u3068\u3092\u76ee\u6307\u3057\u3066\u3044\u308b\u3002"]})})]})}function l(n={}){const{wrapper:e}={...(0,r.R)(),...n.components};return e?(0,s.jsx)(e,{...n,children:(0,s.jsx)(u,{...n})}):u(n)}},1100:(n,e,t)=>{t.d(e,{R:()=>o,x:()=>d});var s=t(758);const r={},i=s.createContext(r);function o(n){const e=s.useContext(i);return s.useMemo((function(){return"function"==typeof n?n(e):{...e,...n}}),[e,n])}function d(n){let e;return e=n.disableParentContext?"function"==typeof n.components?n.components(r):n.components||r:o(n.components),s.createElement(i.Provider,{value:e},n.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunk_feature_sliced_documentation=self.webpackChunk_feature_sliced_documentation||[]).push([[8038],{7957:(n,e,t)=>{t.r(e),t.d(e,{assets:()=>a,contentTitle:()=>o,default:()=>l,frontMatter:()=>i,metadata:()=>d,toc:()=>c});var s=t(6070),r=t(1100);const i={sidebar_position:3,sidebar_label:"\u77e5\u8b58\u306e\u7a2e\u985e"},o="\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u304a\u3051\u308b\u77e5\u8b58\u306e\u7a2e\u985e",d={id:"about/understanding/knowledge-types",title:"\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u304a\u3051\u308b\u77e5\u8b58\u306e\u7a2e\u985e",description:"\u3069\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u3082\u4ee5\u4e0b\u306e\u300c\u77e5\u8b58\u306e\u7a2e\u985e\u300d\u304c\u5b58\u5728\u3057\u307e\u3059\u3002",source:"@site/i18n/ja/docusaurus-plugin-content-docs/current/about/understanding/knowledge-types.md",sourceDirName:"about/understanding",slug:"/about/understanding/knowledge-types",permalink:"/ja/docs/about/understanding/knowledge-types",draft:!1,unlisted:!1,editUrl:"https://github.com/feature-sliced/documentation/edit/master/i18n/ja/docusaurus-plugin-content-docs/current/about/understanding/knowledge-types.md",tags:[],version:"current",lastUpdatedAt:1728325386e3,sidebarPosition:3,frontMatter:{sidebar_position:3,sidebar_label:"\u77e5\u8b58\u306e\u7a2e\u985e"},sidebar:"aboutSidebar",previous:{title:"\u30cb\u30fc\u30ba\u306e\u7406\u89e3\u3068\u8ab2\u984c\u306e\u5b9a\u7fa9\u306b\u3064\u3044\u3066",permalink:"/ja/docs/about/understanding/needs-driven"},next:{title:"\u30cd\u30fc\u30df\u30f3\u30b0",permalink:"/ja/docs/about/understanding/naming"}},a={},c=[];function u(n){const e={admonition:"admonition",br:"br",h1:"h1",header:"header",li:"li",p:"p",strong:"strong",ul:"ul",...(0,r.R)(),...n.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(e.header,{children:(0,s.jsx)(e.h1,{id:"\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u304a\u3051\u308b\u77e5\u8b58\u306e\u7a2e\u985e",children:"\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u304a\u3051\u308b\u77e5\u8b58\u306e\u7a2e\u985e"})}),"\n",(0,s.jsx)(e.p,{children:"\u3069\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u3082\u4ee5\u4e0b\u306e\u300c\u77e5\u8b58\u306e\u7a2e\u985e\u300d\u304c\u5b58\u5728\u3057\u307e\u3059\u3002"}),"\n",(0,s.jsxs)(e.ul,{children:["\n",(0,s.jsxs)(e.li,{children:["\n",(0,s.jsxs)(e.p,{children:[(0,s.jsx)(e.strong,{children:"\u57fa\u790e\u77e5\u8b58"}),(0,s.jsx)(e.br,{}),"\n","\u6642\u9593\u3068\u3068\u3082\u306b\u3042\u307e\u308a\u5909\u308f\u3089\u306a\u3044\u77e5\u8b58\u3002\u4f8b\u3048\u3070\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3001\u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u30b5\u30a4\u30a8\u30f3\u30b9\u3001\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u3084\u305d\u306eAPI\u306e\u52d5\u4f5c\u30e1\u30ab\u30cb\u30ba\u30e0\u306a\u3069\u3002"]}),"\n"]}),"\n",(0,s.jsxs)(e.li,{children:["\n",(0,s.jsxs)(e.p,{children:[(0,s.jsx)(e.strong,{children:"\u6280\u8853\u30b9\u30bf\u30c3\u30af"}),(0,s.jsx)(e.br,{}),"\n","\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u4f7f\u7528\u3055\u308c\u308b\u6280\u8853\u7684\u89e3\u6c7a\u7b56\u306e\u30bb\u30c3\u30c8\u306b\u95a2\u3059\u308b\u77e5\u8b58\u3002\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u8a00\u8a9e\u3001\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3001\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u542b\u3080\u3002"]}),"\n"]}),"\n",(0,s.jsxs)(e.li,{children:["\n",(0,s.jsxs)(e.p,{children:[(0,s.jsx)(e.strong,{children:"\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u77e5\u8b58"}),(0,s.jsx)(e.br,{}),"\n","\u73fe\u5728\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u7279\u6709\u3067\u3042\u308a\u3001\u4ed6\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u306f\u5f79\u306b\u7acb\u305f\u306a\u3044\u77e5\u8b58\u3002\u3053\u306e\u77e5\u8b58\u306f\u65b0\u3057\u3044\u30c1\u30fc\u30e0\u30e1\u30f3\u30d0\u30fc\u304c\u52b9\u679c\u7684\u306b\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u8ca2\u732e\u3059\u308b\u305f\u3081\u306b\u5fc5\u8981\u3067\u3042\u308b\u3002"]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(e.admonition,{type:"note",children:(0,s.jsxs)(e.p,{children:[(0,s.jsx)(e.strong,{children:"Feature-Sliced Design"}),"\u306f\u300c\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u77e5\u8b58\u300d\u3078\u306e\u4f9d\u5b58\u3092\u6e1b\u3089\u3057\u3001\u3088\u308a\u591a\u304f\u306e\u8cac\u4efb\u3092\u5f15\u304d\u53d7\u3051\u3001\u65b0\u3057\u3044\u30c1\u30fc\u30e0\u30e1\u30f3\u30d0\u30fc\u306e\u30aa\u30f3\u30dc\u30fc\u30c7\u30a3\u30f3\u30b0\u3092\u5bb9\u6613\u306b\u3059\u308b\u3053\u3068\u3092\u76ee\u6307\u3057\u3066\u3044\u308b\u3002"]})})]})}function l(n={}){const{wrapper:e}={...(0,r.R)(),...n.components};return e?(0,s.jsx)(e,{...n,children:(0,s.jsx)(u,{...n})}):u(n)}},1100:(n,e,t)=>{t.d(e,{R:()=>o,x:()=>d});var s=t(758);const r={},i=s.createContext(r);function o(n){const e=s.useContext(i);return s.useMemo((function(){return"function"==typeof n?n(e):{...e,...n}}),[e,n])}function d(n){let e;return e=n.disableParentContext?"function"==typeof n.components?n.components(r):n.components||r:o(n.components),s.createElement(i.Provider,{value:e},n.children)}}}]); \ No newline at end of file diff --git a/ja/assets/js/40b15635.383c5b29.js b/ja/assets/js/40b15635.55157806.js similarity index 99% rename from ja/assets/js/40b15635.383c5b29.js rename to ja/assets/js/40b15635.55157806.js index 31cb0e0f6c..ade3f45c72 100644 --- a/ja/assets/js/40b15635.383c5b29.js +++ b/ja/assets/js/40b15635.55157806.js @@ -1 +1 @@ -"use strict";(self.webpackChunk_feature_sliced_documentation=self.webpackChunk_feature_sliced_documentation||[]).push([[1957],{2219:(e,n,r)=>{r.r(n),r.d(n,{assets:()=>c,contentTitle:()=>l,default:()=>h,frontMatter:()=>i,metadata:()=>t,toc:()=>o});var d=r(6070),s=r(1100);const i={},l="\u30d6\u30e9\u30f3\u30c9\u30ac\u30a4\u30c9\u30e9\u30a4\u30f3",t={id:"branding",title:"\u30d6\u30e9\u30f3\u30c9\u30ac\u30a4\u30c9\u30e9\u30a4\u30f3",description:"FSD\u306e\u30d3\u30b8\u30e5\u30a2\u30eb\u30a2\u30a4\u30c7\u30f3\u30c6\u30a3\u30c6\u30a3\u306f\u3001\u305d\u306e\u30b3\u30a2\u30b3\u30f3\u30bb\u30d7\u30c8\u3067\u3042\u308b Layered\u3001Sliced self-contained parts\u3001Parts & Compose\u3001Segmented \u306b\u57fa\u3065\u3044\u3066\u3044\u307e\u3059\u3002\u3057\u304b\u3057\u3001\u79c1\u305f\u3061\u306fFSD\u306e\u54f2\u5b66\u3092\u53cd\u6620\u3057\u3001\u7c21\u5358\u306b\u8a8d\u8b58\u3067\u304d\u308b\u7f8e\u3057\u3044\u30a2\u30a4\u30c7\u30f3\u30c6\u30a3\u30c6\u30a3\u3092\u76ee\u6307\u3057\u3066\u3044\u307e\u3059\u3002",source:"@site/i18n/ja/docusaurus-plugin-content-docs/current/branding.md",sourceDirName:".",slug:"/branding",permalink:"/ja/docs/branding",draft:!1,unlisted:!1,editUrl:"https://github.com/feature-sliced/documentation/edit/master/i18n/ja/docusaurus-plugin-content-docs/current/branding.md",tags:[],version:"current",lastUpdatedAt:1727607766e3,frontMatter:{}},c={},o=[{value:"\u540d\u524d",id:"title",level:2},{value:"\u7d75\u6587\u5b57",id:"emojii",level:2},{value:"\u30ed\u30b4\u3068\u30ab\u30e9\u30fc\u30d1\u30ec\u30c3\u30c8",id:"logo--palettte",level:2},{value:"\u30d0\u30ca\u30fc\u3068\u30b9\u30ad\u30fc\u30e0",id:"banners--schemes",level:2},{value:"\u30bd\u30fc\u30b7\u30e3\u30eb\u30d7\u30ec\u30d3\u30e5\u30fc",id:"\u30bd\u30fc\u30b7\u30e3\u30eb\u30d7\u30ec\u30d3\u30e5\u30fc",level:2},{value:"\u30d7\u30ec\u30bc\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8",id:"presentation-template",level:2},{value:"\u53c2\u7167",id:"see-also",level:2}];function a(e){const n={a:"a",admonition:"admonition",blockquote:"blockquote",code:"code",em:"em",h1:"h1",h2:"h2",header:"header",li:"li",p:"p",strong:"strong",ul:"ul",...(0,s.R)(),...e.components};return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(n.header,{children:(0,d.jsx)(n.h1,{id:"\u30d6\u30e9\u30f3\u30c9\u30ac\u30a4\u30c9\u30e9\u30a4\u30f3",children:"\u30d6\u30e9\u30f3\u30c9\u30ac\u30a4\u30c9\u30e9\u30a4\u30f3"})}),"\n",(0,d.jsxs)(n.p,{children:["FSD\u306e\u30d3\u30b8\u30e5\u30a2\u30eb\u30a2\u30a4\u30c7\u30f3\u30c6\u30a3\u30c6\u30a3\u306f\u3001\u305d\u306e\u30b3\u30a2\u30b3\u30f3\u30bb\u30d7\u30c8\u3067\u3042\u308b ",(0,d.jsx)(n.code,{children:"Layered"}),"\u3001",(0,d.jsx)(n.code,{children:"Sliced self-contained parts"}),"\u3001",(0,d.jsx)(n.code,{children:"Parts & Compose"}),"\u3001",(0,d.jsx)(n.code,{children:"Segmented"})," \u306b\u57fa\u3065\u3044\u3066\u3044\u307e\u3059\u3002\u3057\u304b\u3057\u3001\u79c1\u305f\u3061\u306fFSD\u306e\u54f2\u5b66\u3092\u53cd\u6620\u3057\u3001\u7c21\u5358\u306b\u8a8d\u8b58\u3067\u304d\u308b\u7f8e\u3057\u3044\u30a2\u30a4\u30c7\u30f3\u30c6\u30a3\u30c6\u30a3\u3092\u76ee\u6307\u3057\u3066\u3044\u307e\u3059\u3002"]}),"\n",(0,d.jsxs)(n.p,{children:[(0,d.jsx)(n.strong,{children:"FSD\u306e\u30a2\u30a4\u30c7\u30f3\u30c6\u30a3\u30c6\u30a3\u3092\u300c\u305d\u306e\u307e\u307e\u300d\u5909\u66f4\u305b\u305a\u306b\u3001\u79c1\u305f\u3061\u306e\u30a2\u30bb\u30c3\u30c8\u3092\u4f7f\u3063\u3066\u5feb\u9069\u306b\u3054\u5229\u7528\u304f\u3060\u3055\u3044\u3002"})," \u3053\u306e\u30d6\u30e9\u30f3\u30c9\u30ac\u30a4\u30c9\u306f\u3001FSD\u306e\u30a2\u30a4\u30c7\u30f3\u30c6\u30a3\u30c6\u30a3\u3092\u6b63\u3057\u304f\u4f7f\u7528\u3059\u308b\u624b\u52a9\u3051\u3092\u3057\u307e\u3059\u3002"]}),"\n",(0,d.jsxs)(n.admonition,{title:"\u4e92\u63db\u6027",type:"caution",children:[(0,d.jsxs)(n.p,{children:["FSD\u306f\u4ee5\u524d\u3001",(0,d.jsx)(n.a,{href:"https://drive.google.com/drive/folders/11Y-3qZ_C9jOFoW2UbSp11YasOhw4yBdl?usp=sharing",children:"\u5225\u306e\u30ec\u30ac\u30b7\u30fc\u30a2\u30a4\u30c7\u30f3\u30c6\u30a3\u30c6\u30a3"}),"\u3092\u6301\u3063\u3066\u3044\u307e\u3057\u305f\u3002\u53e4\u3044\u30c7\u30b6\u30a4\u30f3\u306f\u3001FSD\u306e\u4e3b\u8981\u306a\u30b3\u30f3\u30bb\u30d7\u30c8\u3092\u53cd\u6620\u3057\u3066\u3044\u307e\u305b\u3093\u3067\u3057\u305f\u3002\u307e\u305f\u3001\u3053\u308c\u306f\u7c97\u3044\u30c9\u30e9\u30d5\u30c8\u3068\u3057\u3066\u4f5c\u6210\u3055\u308c\u3001\u66f4\u65b0\u3055\u308c\u308b\u3079\u304d\u3082\u306e\u3067\u3057\u305f\u3002"]}),(0,d.jsxs)(n.p,{children:["\u30d6\u30e9\u30f3\u30c9\u306e\u4e92\u63db\u6027\u3068\u9577\u671f\u7684\u306a\u4f7f\u7528\u306e\u305f\u3081\u306b\u3001\u79c1\u305f\u3061\u306f2021\u5e74\u304b\u30892022\u5e74\u306b\u304b\u3051\u3066\u614e\u91cd\u306b\u30ea\u30d6\u30e9\u30f3\u30c7\u30a3\u30f3\u30b0\u306b\u53d6\u308a\u7d44\u307f\u307e\u3057\u305f\u3002",(0,d.jsx)(n.strong,{children:"FSD\u306e\u30a2\u30a4\u30c7\u30f3\u30c6\u30a3\u30c6\u30a3\u3092\u4f7f\u7528\u3059\u308b\u969b\u306b\u81ea\u4fe1\u3092\u6301\u3066\u308b\u3088\u3046\u306b\ud83c\udf70"})]}),(0,d.jsx)(n.p,{children:(0,d.jsx)(n.em,{children:"\u53e4\u3044\u30a2\u30a4\u30c7\u30f3\u30c6\u30a3\u30c6\u30a3\u3067\u306f\u306a\u304f\u3001\u6700\u65b0\u306e\u30a2\u30a4\u30c7\u30f3\u30c6\u30a3\u30c6\u30a3\u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044\uff01"})})]}),"\n",(0,d.jsx)(n.h2,{id:"title",children:"\u540d\u524d"}),"\n",(0,d.jsxs)(n.ul,{children:["\n",(0,d.jsxs)(n.li,{children:["\u2705 ",(0,d.jsx)(n.strong,{children:"\u6b63\u3057\u3044:"})," ",(0,d.jsx)(n.code,{children:"Feature-Sliced Design"}),"\u3001",(0,d.jsx)(n.code,{children:"FSD"})]}),"\n",(0,d.jsxs)(n.li,{children:["\u274c ",(0,d.jsx)(n.strong,{children:"\u9593\u9055\u3063\u3066\u3044\u308b:"})," ",(0,d.jsx)(n.code,{children:"Feature-Sliced"}),"\u3001",(0,d.jsx)(n.code,{children:"Feature Sliced"}),"\u3001",(0,d.jsx)(n.code,{children:"FeatureSliced"}),"\u3001",(0,d.jsx)(n.code,{children:"feature-sliced"}),"\u3001",(0,d.jsx)(n.code,{children:"feature sliced"}),"\u3001",(0,d.jsx)(n.code,{children:"FS"})]}),"\n"]}),"\n",(0,d.jsx)(n.h2,{id:"emojii",children:"\u7d75\u6587\u5b57"}),"\n",(0,d.jsx)(n.p,{children:"\u30b1\u30fc\u30ad\u306e\u30a4\u30e1\u30fc\u30b8 \ud83c\udf70 \u306fFSD\u306e\u4e3b\u8981\u306a\u30b3\u30f3\u30bb\u30d7\u30c8\u3092\u3088\u304f\u53cd\u6620\u3057\u3066\u3044\u308b\u305f\u3081\u3001\u79c1\u305f\u3061\u306e\u30d6\u30e9\u30f3\u30c9\u7d75\u6587\u5b57\u3068\u3057\u3066\u9078\u3070\u308c\u307e\u3057\u305f\u3002"}),"\n",(0,d.jsxs)(n.blockquote,{children:["\n",(0,d.jsxs)(n.p,{children:["\u4f8b: ",(0,d.jsx)(n.em,{children:'"\ud83c\udf70 \u30d5\u30ed\u30f3\u30c8\u30a8\u30f3\u30c9\u7528\u306e\u306e\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u30c7\u30b6\u30a4\u30f3\u8a2d\u8a08\u65b9\u6cd5\u8ad6"'})]}),"\n"]}),"\n",(0,d.jsx)(n.h2,{id:"logo--palettte",children:"\u30ed\u30b4\u3068\u30ab\u30e9\u30fc\u30d1\u30ec\u30c3\u30c8"}),"\n",(0,d.jsxs)(n.p,{children:["FSD\u306b\u306f\u7570\u306a\u308b\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u7528\u306e\u3044\u304f\u3064\u304b\u306e\u30ed\u30b4\u30d0\u30ea\u30a8\u30fc\u30b7\u30e7\u30f3\u304c\u3042\u308a\u307e\u3059\u304c\u3001",(0,d.jsx)(n.strong,{children:"primary"}),"\u306e\u4f7f\u7528\u304c\u63a8\u5968\u3055\u308c\u307e\u3059\u3002"]}),"\n",(0,d.jsxs)("table",{style:{textAlign:"center"},children:[(0,d.jsxs)("tr",{children:[(0,d.jsx)("td",{children:"\u30c6\u30fc\u30de"}),(0,d.jsxs)("td",{children:["\u30ed\u30b4 ",(0,d.jsx)("sub",{style:{color:"gray",display:"block"},children:"(Ctrl/Cmd + Click\u3067\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9)"})]}),(0,d.jsx)("td",{children:"\u4f7f\u7528\u6cd5"})]}),(0,d.jsxs)("tr",{children:[(0,d.jsxs)("td",{style:{color:"#FFF",background:"linear-gradient(135deg, rgba(41,190,220,1) 0%, rgba(81,122,237,1) 100%)"},children:["primary ",(0,d.jsx)("br",{})," (#29BEDC, #517AED)"]}),(0,d.jsx)("td",{children:(0,d.jsx)("a",{href:"/img/brand/logo-primary.png",download:!0,children:(0,d.jsx)("img",{src:"/img/brand/logo-primary.png",height:"130",alt:"logo-primary"})})}),(0,d.jsx)("td",{children:"\u307b\u3068\u3093\u3069\u306e\u5834\u5408\u306b\u63a8\u5968\u3055\u308c\u307e\u3059"})]}),(0,d.jsxs)("tr",{children:[(0,d.jsxs)("td",{style:{color:"#FFF",background:"#3193FF"},children:["flat ",(0,d.jsx)("br",{})," (#3193FF)"]}),(0,d.jsx)("td",{children:(0,d.jsx)("a",{href:"/img/brand/logo-flat.png",download:!0,children:(0,d.jsx)("img",{src:"/img/brand/logo-flat.png",height:"130",alt:"logo-flat"})})}),(0,d.jsx)("td",{children:"\u5358\u8272\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u7528"})]}),(0,d.jsxs)("tr",{children:[(0,d.jsxs)("td",{style:{color:"#000",background:"#FFF"},children:["monochrome ",(0,d.jsx)("br",{})," (#FFF)"]}),(0,d.jsx)("td",{style:{color:"#000",background:"#242526"},children:(0,d.jsx)("a",{href:"/img/brand/logo-monochrome.png",download:!0,children:(0,d.jsx)("img",{src:"/img/brand/logo-monochrome.png",height:"130",alt:"logo-monocrhome"})})}),(0,d.jsx)("td",{children:"\u767d\u9ed2\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u7528"})]}),(0,d.jsxs)("tr",{children:[(0,d.jsxs)("td",{style:{color:"#FFF",background:"#3193FF"},children:["square ",(0,d.jsx)("br",{})," (#3193FF)"]}),(0,d.jsx)("td",{children:(0,d.jsx)("a",{href:"/img/brand/logo-square.png",download:!0,children:(0,d.jsx)("img",{src:"/img/brand/logo-square.png",height:"130",alt:"logo-square"})})}),(0,d.jsx)("td",{children:"\u6b63\u65b9\u5f62\u30b5\u30a4\u30ba\u7528"})]})]}),"\n",(0,d.jsx)(n.h2,{id:"banners--schemes",children:"\u30d0\u30ca\u30fc\u3068\u30b9\u30ad\u30fc\u30e0"}),"\n",(0,d.jsx)("a",{href:"/img/brand/banner-primary.jpg",download:!0,children:(0,d.jsx)("img",{src:"/img/brand/banner-primary.jpg",height:"256",alt:"banner-primary"})}),"\n",(0,d.jsx)("a",{href:"/img/brand/banner-monochrome.jpg",download:!0,children:(0,d.jsx)("img",{src:"/img/brand/banner-monochrome.jpg",height:"256",alt:"banner-monochrome"})}),"\n",(0,d.jsx)(n.h2,{id:"\u30bd\u30fc\u30b7\u30e3\u30eb\u30d7\u30ec\u30d3\u30e5\u30fc",children:"\u30bd\u30fc\u30b7\u30e3\u30eb\u30d7\u30ec\u30d3\u30e5\u30fc"}),"\n",(0,d.jsx)(n.p,{children:"\u4f5c\u696d\u4e2d..."}),"\n",(0,d.jsx)(n.h2,{id:"presentation-template",children:"\u30d7\u30ec\u30bc\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8"}),"\n",(0,d.jsx)(n.p,{children:"\u4f5c\u696d\u4e2d..."}),"\n",(0,d.jsx)(n.h2,{id:"see-also",children:"\u53c2\u7167"}),"\n",(0,d.jsxs)(n.ul,{children:["\n",(0,d.jsx)(n.li,{children:(0,d.jsx)(n.a,{href:"https://github.com/feature-sliced/documentation/discussions/399",children:"\u30c7\u30a3\u30b9\u30ab\u30c3\u30b7\u30e7\u30f3 (github)"})}),"\n",(0,d.jsx)(n.li,{children:(0,d.jsx)(n.a,{href:"https://www.figma.com/file/RPphccpoeasVB0lMpZwPVR/FSD-Brand?node-id=0%3A1",children:"\u30ea\u30d6\u30e9\u30f3\u30c7\u30a3\u30f3\u30b0\u306e\u6b74\u53f2\u3068\u53c2\u8003\u8cc7\u6599 (figma)"})}),"\n",(0,d.jsx)(n.li,{children:(0,d.jsx)(n.a,{href:"https://rebrand-sliced.netlify.app/en/",children:"\u30ea\u30d6\u30e9\u30f3\u30c7\u30a3\u30f3\u30b0\u30c7\u30e2"})}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,d.jsx)(n,{...e,children:(0,d.jsx)(a,{...e})}):a(e)}},1100:(e,n,r)=>{r.d(n,{R:()=>l,x:()=>t});var d=r(758);const s={},i=d.createContext(s);function l(e){const n=d.useContext(i);return d.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function t(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:l(e.components),d.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunk_feature_sliced_documentation=self.webpackChunk_feature_sliced_documentation||[]).push([[1957],{2219:(e,n,r)=>{r.r(n),r.d(n,{assets:()=>c,contentTitle:()=>l,default:()=>h,frontMatter:()=>i,metadata:()=>t,toc:()=>o});var d=r(6070),s=r(1100);const i={},l="\u30d6\u30e9\u30f3\u30c9\u30ac\u30a4\u30c9\u30e9\u30a4\u30f3",t={id:"branding",title:"\u30d6\u30e9\u30f3\u30c9\u30ac\u30a4\u30c9\u30e9\u30a4\u30f3",description:"FSD\u306e\u30d3\u30b8\u30e5\u30a2\u30eb\u30a2\u30a4\u30c7\u30f3\u30c6\u30a3\u30c6\u30a3\u306f\u3001\u305d\u306e\u30b3\u30a2\u30b3\u30f3\u30bb\u30d7\u30c8\u3067\u3042\u308b Layered\u3001Sliced self-contained parts\u3001Parts & Compose\u3001Segmented \u306b\u57fa\u3065\u3044\u3066\u3044\u307e\u3059\u3002\u3057\u304b\u3057\u3001\u79c1\u305f\u3061\u306fFSD\u306e\u54f2\u5b66\u3092\u53cd\u6620\u3057\u3001\u7c21\u5358\u306b\u8a8d\u8b58\u3067\u304d\u308b\u7f8e\u3057\u3044\u30a2\u30a4\u30c7\u30f3\u30c6\u30a3\u30c6\u30a3\u3092\u76ee\u6307\u3057\u3066\u3044\u307e\u3059\u3002",source:"@site/i18n/ja/docusaurus-plugin-content-docs/current/branding.md",sourceDirName:".",slug:"/branding",permalink:"/ja/docs/branding",draft:!1,unlisted:!1,editUrl:"https://github.com/feature-sliced/documentation/edit/master/i18n/ja/docusaurus-plugin-content-docs/current/branding.md",tags:[],version:"current",lastUpdatedAt:1728325386e3,frontMatter:{}},c={},o=[{value:"\u540d\u524d",id:"title",level:2},{value:"\u7d75\u6587\u5b57",id:"emojii",level:2},{value:"\u30ed\u30b4\u3068\u30ab\u30e9\u30fc\u30d1\u30ec\u30c3\u30c8",id:"logo--palettte",level:2},{value:"\u30d0\u30ca\u30fc\u3068\u30b9\u30ad\u30fc\u30e0",id:"banners--schemes",level:2},{value:"\u30bd\u30fc\u30b7\u30e3\u30eb\u30d7\u30ec\u30d3\u30e5\u30fc",id:"\u30bd\u30fc\u30b7\u30e3\u30eb\u30d7\u30ec\u30d3\u30e5\u30fc",level:2},{value:"\u30d7\u30ec\u30bc\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8",id:"presentation-template",level:2},{value:"\u53c2\u7167",id:"see-also",level:2}];function a(e){const n={a:"a",admonition:"admonition",blockquote:"blockquote",code:"code",em:"em",h1:"h1",h2:"h2",header:"header",li:"li",p:"p",strong:"strong",ul:"ul",...(0,s.R)(),...e.components};return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(n.header,{children:(0,d.jsx)(n.h1,{id:"\u30d6\u30e9\u30f3\u30c9\u30ac\u30a4\u30c9\u30e9\u30a4\u30f3",children:"\u30d6\u30e9\u30f3\u30c9\u30ac\u30a4\u30c9\u30e9\u30a4\u30f3"})}),"\n",(0,d.jsxs)(n.p,{children:["FSD\u306e\u30d3\u30b8\u30e5\u30a2\u30eb\u30a2\u30a4\u30c7\u30f3\u30c6\u30a3\u30c6\u30a3\u306f\u3001\u305d\u306e\u30b3\u30a2\u30b3\u30f3\u30bb\u30d7\u30c8\u3067\u3042\u308b ",(0,d.jsx)(n.code,{children:"Layered"}),"\u3001",(0,d.jsx)(n.code,{children:"Sliced self-contained parts"}),"\u3001",(0,d.jsx)(n.code,{children:"Parts & Compose"}),"\u3001",(0,d.jsx)(n.code,{children:"Segmented"})," \u306b\u57fa\u3065\u3044\u3066\u3044\u307e\u3059\u3002\u3057\u304b\u3057\u3001\u79c1\u305f\u3061\u306fFSD\u306e\u54f2\u5b66\u3092\u53cd\u6620\u3057\u3001\u7c21\u5358\u306b\u8a8d\u8b58\u3067\u304d\u308b\u7f8e\u3057\u3044\u30a2\u30a4\u30c7\u30f3\u30c6\u30a3\u30c6\u30a3\u3092\u76ee\u6307\u3057\u3066\u3044\u307e\u3059\u3002"]}),"\n",(0,d.jsxs)(n.p,{children:[(0,d.jsx)(n.strong,{children:"FSD\u306e\u30a2\u30a4\u30c7\u30f3\u30c6\u30a3\u30c6\u30a3\u3092\u300c\u305d\u306e\u307e\u307e\u300d\u5909\u66f4\u305b\u305a\u306b\u3001\u79c1\u305f\u3061\u306e\u30a2\u30bb\u30c3\u30c8\u3092\u4f7f\u3063\u3066\u5feb\u9069\u306b\u3054\u5229\u7528\u304f\u3060\u3055\u3044\u3002"})," \u3053\u306e\u30d6\u30e9\u30f3\u30c9\u30ac\u30a4\u30c9\u306f\u3001FSD\u306e\u30a2\u30a4\u30c7\u30f3\u30c6\u30a3\u30c6\u30a3\u3092\u6b63\u3057\u304f\u4f7f\u7528\u3059\u308b\u624b\u52a9\u3051\u3092\u3057\u307e\u3059\u3002"]}),"\n",(0,d.jsxs)(n.admonition,{title:"\u4e92\u63db\u6027",type:"caution",children:[(0,d.jsxs)(n.p,{children:["FSD\u306f\u4ee5\u524d\u3001",(0,d.jsx)(n.a,{href:"https://drive.google.com/drive/folders/11Y-3qZ_C9jOFoW2UbSp11YasOhw4yBdl?usp=sharing",children:"\u5225\u306e\u30ec\u30ac\u30b7\u30fc\u30a2\u30a4\u30c7\u30f3\u30c6\u30a3\u30c6\u30a3"}),"\u3092\u6301\u3063\u3066\u3044\u307e\u3057\u305f\u3002\u53e4\u3044\u30c7\u30b6\u30a4\u30f3\u306f\u3001FSD\u306e\u4e3b\u8981\u306a\u30b3\u30f3\u30bb\u30d7\u30c8\u3092\u53cd\u6620\u3057\u3066\u3044\u307e\u305b\u3093\u3067\u3057\u305f\u3002\u307e\u305f\u3001\u3053\u308c\u306f\u7c97\u3044\u30c9\u30e9\u30d5\u30c8\u3068\u3057\u3066\u4f5c\u6210\u3055\u308c\u3001\u66f4\u65b0\u3055\u308c\u308b\u3079\u304d\u3082\u306e\u3067\u3057\u305f\u3002"]}),(0,d.jsxs)(n.p,{children:["\u30d6\u30e9\u30f3\u30c9\u306e\u4e92\u63db\u6027\u3068\u9577\u671f\u7684\u306a\u4f7f\u7528\u306e\u305f\u3081\u306b\u3001\u79c1\u305f\u3061\u306f2021\u5e74\u304b\u30892022\u5e74\u306b\u304b\u3051\u3066\u614e\u91cd\u306b\u30ea\u30d6\u30e9\u30f3\u30c7\u30a3\u30f3\u30b0\u306b\u53d6\u308a\u7d44\u307f\u307e\u3057\u305f\u3002",(0,d.jsx)(n.strong,{children:"FSD\u306e\u30a2\u30a4\u30c7\u30f3\u30c6\u30a3\u30c6\u30a3\u3092\u4f7f\u7528\u3059\u308b\u969b\u306b\u81ea\u4fe1\u3092\u6301\u3066\u308b\u3088\u3046\u306b\ud83c\udf70"})]}),(0,d.jsx)(n.p,{children:(0,d.jsx)(n.em,{children:"\u53e4\u3044\u30a2\u30a4\u30c7\u30f3\u30c6\u30a3\u30c6\u30a3\u3067\u306f\u306a\u304f\u3001\u6700\u65b0\u306e\u30a2\u30a4\u30c7\u30f3\u30c6\u30a3\u30c6\u30a3\u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044\uff01"})})]}),"\n",(0,d.jsx)(n.h2,{id:"title",children:"\u540d\u524d"}),"\n",(0,d.jsxs)(n.ul,{children:["\n",(0,d.jsxs)(n.li,{children:["\u2705 ",(0,d.jsx)(n.strong,{children:"\u6b63\u3057\u3044:"})," ",(0,d.jsx)(n.code,{children:"Feature-Sliced Design"}),"\u3001",(0,d.jsx)(n.code,{children:"FSD"})]}),"\n",(0,d.jsxs)(n.li,{children:["\u274c ",(0,d.jsx)(n.strong,{children:"\u9593\u9055\u3063\u3066\u3044\u308b:"})," ",(0,d.jsx)(n.code,{children:"Feature-Sliced"}),"\u3001",(0,d.jsx)(n.code,{children:"Feature Sliced"}),"\u3001",(0,d.jsx)(n.code,{children:"FeatureSliced"}),"\u3001",(0,d.jsx)(n.code,{children:"feature-sliced"}),"\u3001",(0,d.jsx)(n.code,{children:"feature sliced"}),"\u3001",(0,d.jsx)(n.code,{children:"FS"})]}),"\n"]}),"\n",(0,d.jsx)(n.h2,{id:"emojii",children:"\u7d75\u6587\u5b57"}),"\n",(0,d.jsx)(n.p,{children:"\u30b1\u30fc\u30ad\u306e\u30a4\u30e1\u30fc\u30b8 \ud83c\udf70 \u306fFSD\u306e\u4e3b\u8981\u306a\u30b3\u30f3\u30bb\u30d7\u30c8\u3092\u3088\u304f\u53cd\u6620\u3057\u3066\u3044\u308b\u305f\u3081\u3001\u79c1\u305f\u3061\u306e\u30d6\u30e9\u30f3\u30c9\u7d75\u6587\u5b57\u3068\u3057\u3066\u9078\u3070\u308c\u307e\u3057\u305f\u3002"}),"\n",(0,d.jsxs)(n.blockquote,{children:["\n",(0,d.jsxs)(n.p,{children:["\u4f8b: ",(0,d.jsx)(n.em,{children:'"\ud83c\udf70 \u30d5\u30ed\u30f3\u30c8\u30a8\u30f3\u30c9\u7528\u306e\u306e\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u30c7\u30b6\u30a4\u30f3\u8a2d\u8a08\u65b9\u6cd5\u8ad6"'})]}),"\n"]}),"\n",(0,d.jsx)(n.h2,{id:"logo--palettte",children:"\u30ed\u30b4\u3068\u30ab\u30e9\u30fc\u30d1\u30ec\u30c3\u30c8"}),"\n",(0,d.jsxs)(n.p,{children:["FSD\u306b\u306f\u7570\u306a\u308b\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u7528\u306e\u3044\u304f\u3064\u304b\u306e\u30ed\u30b4\u30d0\u30ea\u30a8\u30fc\u30b7\u30e7\u30f3\u304c\u3042\u308a\u307e\u3059\u304c\u3001",(0,d.jsx)(n.strong,{children:"primary"}),"\u306e\u4f7f\u7528\u304c\u63a8\u5968\u3055\u308c\u307e\u3059\u3002"]}),"\n",(0,d.jsxs)("table",{style:{textAlign:"center"},children:[(0,d.jsxs)("tr",{children:[(0,d.jsx)("td",{children:"\u30c6\u30fc\u30de"}),(0,d.jsxs)("td",{children:["\u30ed\u30b4 ",(0,d.jsx)("sub",{style:{color:"gray",display:"block"},children:"(Ctrl/Cmd + Click\u3067\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9)"})]}),(0,d.jsx)("td",{children:"\u4f7f\u7528\u6cd5"})]}),(0,d.jsxs)("tr",{children:[(0,d.jsxs)("td",{style:{color:"#FFF",background:"linear-gradient(135deg, rgba(41,190,220,1) 0%, rgba(81,122,237,1) 100%)"},children:["primary ",(0,d.jsx)("br",{})," (#29BEDC, #517AED)"]}),(0,d.jsx)("td",{children:(0,d.jsx)("a",{href:"/img/brand/logo-primary.png",download:!0,children:(0,d.jsx)("img",{src:"/img/brand/logo-primary.png",height:"130",alt:"logo-primary"})})}),(0,d.jsx)("td",{children:"\u307b\u3068\u3093\u3069\u306e\u5834\u5408\u306b\u63a8\u5968\u3055\u308c\u307e\u3059"})]}),(0,d.jsxs)("tr",{children:[(0,d.jsxs)("td",{style:{color:"#FFF",background:"#3193FF"},children:["flat ",(0,d.jsx)("br",{})," (#3193FF)"]}),(0,d.jsx)("td",{children:(0,d.jsx)("a",{href:"/img/brand/logo-flat.png",download:!0,children:(0,d.jsx)("img",{src:"/img/brand/logo-flat.png",height:"130",alt:"logo-flat"})})}),(0,d.jsx)("td",{children:"\u5358\u8272\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u7528"})]}),(0,d.jsxs)("tr",{children:[(0,d.jsxs)("td",{style:{color:"#000",background:"#FFF"},children:["monochrome ",(0,d.jsx)("br",{})," (#FFF)"]}),(0,d.jsx)("td",{style:{color:"#000",background:"#242526"},children:(0,d.jsx)("a",{href:"/img/brand/logo-monochrome.png",download:!0,children:(0,d.jsx)("img",{src:"/img/brand/logo-monochrome.png",height:"130",alt:"logo-monocrhome"})})}),(0,d.jsx)("td",{children:"\u767d\u9ed2\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u7528"})]}),(0,d.jsxs)("tr",{children:[(0,d.jsxs)("td",{style:{color:"#FFF",background:"#3193FF"},children:["square ",(0,d.jsx)("br",{})," (#3193FF)"]}),(0,d.jsx)("td",{children:(0,d.jsx)("a",{href:"/img/brand/logo-square.png",download:!0,children:(0,d.jsx)("img",{src:"/img/brand/logo-square.png",height:"130",alt:"logo-square"})})}),(0,d.jsx)("td",{children:"\u6b63\u65b9\u5f62\u30b5\u30a4\u30ba\u7528"})]})]}),"\n",(0,d.jsx)(n.h2,{id:"banners--schemes",children:"\u30d0\u30ca\u30fc\u3068\u30b9\u30ad\u30fc\u30e0"}),"\n",(0,d.jsx)("a",{href:"/img/brand/banner-primary.jpg",download:!0,children:(0,d.jsx)("img",{src:"/img/brand/banner-primary.jpg",height:"256",alt:"banner-primary"})}),"\n",(0,d.jsx)("a",{href:"/img/brand/banner-monochrome.jpg",download:!0,children:(0,d.jsx)("img",{src:"/img/brand/banner-monochrome.jpg",height:"256",alt:"banner-monochrome"})}),"\n",(0,d.jsx)(n.h2,{id:"\u30bd\u30fc\u30b7\u30e3\u30eb\u30d7\u30ec\u30d3\u30e5\u30fc",children:"\u30bd\u30fc\u30b7\u30e3\u30eb\u30d7\u30ec\u30d3\u30e5\u30fc"}),"\n",(0,d.jsx)(n.p,{children:"\u4f5c\u696d\u4e2d..."}),"\n",(0,d.jsx)(n.h2,{id:"presentation-template",children:"\u30d7\u30ec\u30bc\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8"}),"\n",(0,d.jsx)(n.p,{children:"\u4f5c\u696d\u4e2d..."}),"\n",(0,d.jsx)(n.h2,{id:"see-also",children:"\u53c2\u7167"}),"\n",(0,d.jsxs)(n.ul,{children:["\n",(0,d.jsx)(n.li,{children:(0,d.jsx)(n.a,{href:"https://github.com/feature-sliced/documentation/discussions/399",children:"\u30c7\u30a3\u30b9\u30ab\u30c3\u30b7\u30e7\u30f3 (github)"})}),"\n",(0,d.jsx)(n.li,{children:(0,d.jsx)(n.a,{href:"https://www.figma.com/file/RPphccpoeasVB0lMpZwPVR/FSD-Brand?node-id=0%3A1",children:"\u30ea\u30d6\u30e9\u30f3\u30c7\u30a3\u30f3\u30b0\u306e\u6b74\u53f2\u3068\u53c2\u8003\u8cc7\u6599 (figma)"})}),"\n",(0,d.jsx)(n.li,{children:(0,d.jsx)(n.a,{href:"https://rebrand-sliced.netlify.app/en/",children:"\u30ea\u30d6\u30e9\u30f3\u30c7\u30a3\u30f3\u30b0\u30c7\u30e2"})}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,d.jsx)(n,{...e,children:(0,d.jsx)(a,{...e})}):a(e)}},1100:(e,n,r)=>{r.d(n,{R:()=>l,x:()=>t});var d=r(758);const s={},i=d.createContext(s);function l(e){const n=d.useContext(i);return d.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function t(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:l(e.components),d.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/ja/assets/js/419904cc.751756fe.js b/ja/assets/js/419904cc.665903d5.js similarity index 99% rename from ja/assets/js/419904cc.751756fe.js rename to ja/assets/js/419904cc.665903d5.js index c2fd3caf18..48c0c412a0 100644 --- a/ja/assets/js/419904cc.751756fe.js +++ b/ja/assets/js/419904cc.665903d5.js @@ -1 +1 @@ -"use strict";(self.webpackChunk_feature_sliced_documentation=self.webpackChunk_feature_sliced_documentation||[]).push([[6778],{9300:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>o,default:()=>u,frontMatter:()=>r,metadata:()=>a,toc:()=>d});var s=t(6070),i=t(1100);const r={sidebar_position:10},o="React Query\u3068\u306e\u4f75\u7528",a={id:"guides/tech/with-react-query",title:"React Query\u3068\u306e\u4f75\u7528",description:"\u30ad\u30fc\u3092\u3069\u3053\u306b\u7f6e\u304f\u304b\u554f\u984c",source:"@site/i18n/ja/docusaurus-plugin-content-docs/current/guides/tech/with-react-query.mdx",sourceDirName:"guides/tech",slug:"/guides/tech/with-react-query",permalink:"/ja/docs/guides/tech/with-react-query",draft:!1,unlisted:!1,editUrl:"https://github.com/feature-sliced/documentation/edit/master/i18n/ja/docusaurus-plugin-content-docs/current/guides/tech/with-react-query.mdx",tags:[],version:"current",lastUpdatedAt:1727607766e3,sidebarPosition:10,frontMatter:{sidebar_position:10},sidebar:"guidesSidebar",previous:{title:"NuxtJS\u3068\u306e\u4f75\u7528",permalink:"/ja/docs/guides/tech/with-nuxtjs"},next:{title:"SvelteKit\u3068\u306e\u4f75\u7528",permalink:"/ja/docs/guides/tech/with-sveltekit"}},l={},d=[{value:"\u30ad\u30fc\u3092\u3069\u3053\u306b\u7f6e\u304f\u304b\u554f\u984c",id:"\u30ad\u30fc\u3092\u3069\u3053\u306b\u7f6e\u304f\u304b\u554f\u984c",level:2},{value:"\u89e3\u6c7a\u7b56 - \u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u3054\u3068\u306b\u5206\u5272\u3059\u308b",id:"\u89e3\u6c7a\u7b56---\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u3054\u3068\u306b\u5206\u5272\u3059\u308b",level:3},{value:"\u4ee3\u66ff\u6848 \u2014 \u30af\u30a8\u30ea\u3092\u516c\u958b\u3067\u4fdd\u5b58\u3059\u308b",id:"\u4ee3\u66ff\u6848--\u30af\u30a8\u30ea\u3092\u516c\u958b\u3067\u4fdd\u5b58\u3059\u308b",level:3},{value:"\u554f\u984c\u300c\u30df\u30e5\u30fc\u30c6\u30fc\u30b7\u30e7\u30f3\u306f\u3069\u3053\u306b\uff1f\u300d",id:"\u554f\u984c\u30df\u30e5\u30fc\u30c6\u30fc\u30b7\u30e7\u30f3\u306f\u3069\u3053\u306b",level:2},{value:"1. \u4f7f\u7528\u5834\u6240\u306e\u8fd1\u304f\u306bAPI\u30bb\u30b0\u30e1\u30f3\u30c8\u306b\u30ab\u30b9\u30bf\u30e0\u30d5\u30c3\u30af\u3092\u5b9a\u7fa9\u3059\u308b",id:"1-\u4f7f\u7528\u5834\u6240\u306e\u8fd1\u304f\u306bapi\u30bb\u30b0\u30e1\u30f3\u30c8\u306b\u30ab\u30b9\u30bf\u30e0\u30d5\u30c3\u30af\u3092\u5b9a\u7fa9\u3059\u308b",level:3},{value:"2. \u5225\u306e\u5834\u6240\uff08Shared\u5c64\u3084Entities\u5c64\uff09\u306b\u30df\u30e5\u30fc\u30c6\u30fc\u30b7\u30e7\u30f3\u95a2\u6570\u3092\u5b9a\u7fa9\u3057\u3001\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u5185\u3067useMutation\u3092\u76f4\u63a5\u4f7f\u7528\u3059\u308b",id:"2-\u5225\u306e\u5834\u6240shared\u5c64\u3084entities\u5c64\u306b\u30df\u30e5\u30fc\u30c6\u30fc\u30b7\u30e7\u30f3\u95a2\u6570\u3092\u5b9a\u7fa9\u3057\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u5185\u3067usemutation\u3092\u76f4\u63a5\u4f7f\u7528\u3059\u308b",level:3},{value:"\u30af\u30a8\u30ea\u306e\u7d44\u7e54\u5316",id:"\u30af\u30a8\u30ea\u306e\u7d44\u7e54\u5316",level:2},{value:"\u30af\u30a8\u30ea\u30d5\u30a1\u30af\u30c8\u30ea\u30fc",id:"\u30af\u30a8\u30ea\u30d5\u30a1\u30af\u30c8\u30ea\u30fc",level:3},{value:"1. \u30af\u30a8\u30ea\u30d5\u30a1\u30af\u30c8\u30ea\u30fc\u306e\u4f5c\u6210",id:"1-\u30af\u30a8\u30ea\u30d5\u30a1\u30af\u30c8\u30ea\u30fc\u306e\u4f5c\u6210",level:3},{value:"2. \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u30b3\u30fc\u30c9\u3067\u306e\u30af\u30a8\u30ea\u30d5\u30a1\u30af\u30c8\u30ea\u30fc\u306e\u9069\u7528",id:"2-\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u30b3\u30fc\u30c9\u3067\u306e\u30af\u30a8\u30ea\u30d5\u30a1\u30af\u30c8\u30ea\u30fc\u306e\u9069\u7528",level:3},{value:"\u30af\u30a8\u30ea\u30d5\u30a1\u30af\u30c8\u30ea\u30fc\u3092\u4f7f\u7528\u3059\u308b\u5229\u70b9",id:"\u30af\u30a8\u30ea\u30d5\u30a1\u30af\u30c8\u30ea\u30fc\u3092\u4f7f\u7528\u3059\u308b\u5229\u70b9",level:3},{value:"\u30da\u30fc\u30b8\u30cd\u30fc\u30b7\u30e7\u30f3",id:"\u30da\u30fc\u30b8\u30cd\u30fc\u30b7\u30e7\u30f3",level:2},{value:"1. getPosts\u95a2\u6570\u306e\u4f5c\u6210",id:"1-getposts\u95a2\u6570\u306e\u4f5c\u6210",level:3},{value:"2. \u30da\u30fc\u30b8\u30cd\u30fc\u30b7\u30e7\u30f3\u7528\u306e\u30af\u30a8\u30ea\u30d5\u30a1\u30af\u30c8\u30ea\u30fc",id:"2-\u30da\u30fc\u30b8\u30cd\u30fc\u30b7\u30e7\u30f3\u7528\u306e\u30af\u30a8\u30ea\u30d5\u30a1\u30af\u30c8\u30ea\u30fc",level:3},{value:"3. \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u30b3\u30fc\u30c9\u3067\u306e\u4f7f\u7528",id:"3-\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u30b3\u30fc\u30c9\u3067\u306e\u4f7f\u7528",level:3},{value:"\u30af\u30a8\u30ea\u7ba1\u7406\u7528\u306eQueryProvider",id:"\u30af\u30a8\u30ea\u7ba1\u7406\u7528\u306equeryprovider",level:2},{value:"1. QueryProvider\u306e\u4f5c\u6210",id:"1-queryprovider\u306e\u4f5c\u6210",level:3},{value:"2. QueryClient\u306e\u4f5c\u6210",id:"2-queryclient\u306e\u4f5c\u6210",level:3},{value:"\u30b3\u30fc\u30c9\u751f\u6210",id:"\u30b3\u30fc\u30c9\u751f\u6210",level:2},{value:"RQ\u306e\u6574\u7406\u306b\u95a2\u3059\u308b\u8ffd\u52a0\u306e\u30a2\u30c9\u30d0\u30a4\u30b9",id:"rq\u306e\u6574\u7406\u306b\u95a2\u3059\u308b\u8ffd\u52a0\u306e\u30a2\u30c9\u30d0\u30a4\u30b9",level:2},{value:"API\u30af\u30e9\u30a4\u30a2\u30f3\u30c8",id:"api\u30af\u30e9\u30a4\u30a2\u30f3\u30c8",level:3},{value:"\u53c2\u7167",id:"see-also",level:2}];function c(e){const n={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,i.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.header,{children:(0,s.jsx)(n.h1,{id:"react-query\u3068\u306e\u4f75\u7528",children:"React Query\u3068\u306e\u4f75\u7528"})}),"\n",(0,s.jsx)(n.h2,{id:"\u30ad\u30fc\u3092\u3069\u3053\u306b\u7f6e\u304f\u304b\u554f\u984c",children:"\u30ad\u30fc\u3092\u3069\u3053\u306b\u7f6e\u304f\u304b\u554f\u984c"}),"\n",(0,s.jsx)(n.h3,{id:"\u89e3\u6c7a\u7b56---\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u3054\u3068\u306b\u5206\u5272\u3059\u308b",children:"\u89e3\u6c7a\u7b56 - \u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u3054\u3068\u306b\u5206\u5272\u3059\u308b"}),"\n",(0,s.jsx)(n.p,{children:"\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u3059\u3067\u306b\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u306e\u5206\u5272\u304c\u3042\u308a\u3001\u5404\u30af\u30a8\u30ea\u304c1\u3064\u306e\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u306b\u5bfe\u5fdc\u3057\u3066\u3044\u308b\u5834\u5408\u3001\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u3054\u3068\u306b\u5206\u5272\u3059\u308b\u306e\u304c\u6700\u826f\u3067\u3059\u3002\u3053\u306e\u5834\u5408\u3001\u6b21\u306e\u69cb\u9020\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3092\u304a\u52e7\u3081\u3057\u307e\u3059\u3002"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-sh",children:"\u2514\u2500\u2500 src/ #\n \u251c\u2500\u2500 app/ #\n | ... #\n \u251c\u2500\u2500 pages/ #\n | ... #\n \u251c\u2500\u2500 entities/ #\n | \u251c\u2500\u2500 {entity}/ #\n | ... \u2514\u2500\u2500 api/ #\n | \u251c\u2500\u2500 `{entity}.query` # \u30af\u30a8\u30ea\u30d5\u30a1\u30af\u30c8\u30ea\u30fc\u3001\u30ad\u30fc\u3068\u95a2\u6570\u304c\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u308b\n | \u251c\u2500\u2500 `get-{entity}` # \u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u3092\u53d6\u5f97\u3059\u308b\u95a2\u6570\n | \u251c\u2500\u2500 `create-{entity}` # \u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u3092\u4f5c\u6210\u3059\u308b\u95a2\u6570\n | \u251c\u2500\u2500 `update-{entity}` # \u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u66f4\u65b0\u3059\u308b\u95a2\u6570\n | \u251c\u2500\u2500 `delete-{entity}` # \u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u524a\u9664\u3059\u308b\u95a2\u6570\n | ... #\n | #\n \u251c\u2500\u2500 features/ #\n | ... #\n \u251c\u2500\u2500 widgets/ #\n | ... #\n \u2514\u2500\u2500 shared/ #\n ... #\n"})}),"\n",(0,s.jsxs)(n.p,{children:["\u3082\u3057\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u9593\u306b\u95a2\u4fc2\u304c\u3042\u308b\u5834\u5408\uff08\u4f8b\u3048\u3070\u3001\u300c\u56fd\u300d\u306e\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u306b\u300c\u90fd\u5e02\u300d\u306e\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u4e00\u89a7\u30d5\u30a3\u30fc\u30eb\u30c9\u304c\u3042\u308b\u5834\u5408\uff09\u3001",(0,s.jsx)(n.code,{children:"@x"})," \u30a2\u30ce\u30c6\u30fc\u30b7\u30e7\u30f3\u3092\u4f7f\u7528\u3057\u305f\u7d44\u7e54\u7684\u306a\u30af\u30ed\u30b9\u30a4\u30f3\u30dd\u30fc\u30c8\u306e",(0,s.jsx)(n.a,{href:"https://github.com/feature-sliced/documentation/discussions/390#discussioncomment-5570073",children:"\u5b9f\u9a13\u7684\u30a2\u30d7\u30ed\u30fc\u30c1"}),"\u3092\u5229\u7528\u3059\u308b\u304b\u3001\u4ee5\u4e0b\u306e\u4ee3\u66ff\u6848\u3092\u691c\u8a0e\u3067\u304d\u307e\u3059\u3002"]}),"\n",(0,s.jsx)(n.h3,{id:"\u4ee3\u66ff\u6848--\u30af\u30a8\u30ea\u3092\u516c\u958b\u3067\u4fdd\u5b58\u3059\u308b",children:"\u4ee3\u66ff\u6848 \u2014 \u30af\u30a8\u30ea\u3092\u516c\u958b\u3067\u4fdd\u5b58\u3059\u308b"}),"\n",(0,s.jsx)(n.p,{children:"\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u3054\u3068\u306e\u5206\u5272\u304c\u9069\u3055\u306a\u3044\u5834\u5408\u3001\u6b21\u306e\u69cb\u9020\u3092\u8003\u616e\u3067\u304d\u307e\u3059\u3002"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-sh",children:"\u2514\u2500\u2500 src/ #\n ... #\n \u2514\u2500\u2500 shared/ #\n \u251c\u2500\u2500 api/ #\n ... \u251c\u2500\u2500 `queries` # \u30af\u30a8\u30ea\u30d5\u30a1\u30af\u30c8\u30ea\u30fc\n | \u251c\u2500\u2500 `document.ts` #\n | \u251c\u2500\u2500 `background-jobs.ts` #\n | ... #\n \u2514\u2500\u2500 index.ts #\n"})}),"\n",(0,s.jsxs)(n.p,{children:["\u6b21\u306b\u3001",(0,s.jsx)(n.code,{children:"@/shared/api/index.ts"}),"\u306b"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-ts",metastring:'title="@/shared/api/index.ts"',children:'export { documentQueries } from "./queries/document";\n'})}),"\n",(0,s.jsx)(n.h2,{id:"\u554f\u984c\u30df\u30e5\u30fc\u30c6\u30fc\u30b7\u30e7\u30f3\u306f\u3069\u3053\u306b",children:"\u554f\u984c\u300c\u30df\u30e5\u30fc\u30c6\u30fc\u30b7\u30e7\u30f3\u306f\u3069\u3053\u306b\uff1f\u300d"}),"\n",(0,s.jsx)(n.p,{children:"\u30df\u30e5\u30fc\u30c6\u30fc\u30b7\u30e7\u30f3\u3092\u30af\u30a8\u30ea\u3068\u6df7\u5408\u3059\u308b\u3053\u3068\u306f\u63a8\u5968\u3055\u308c\u307e\u305b\u3093\u30022\u3064\u306e\u9078\u629e\u80a2\u304c\u8003\u3048\u3089\u308c\u307e\u3059\u3002"}),"\n",(0,s.jsx)(n.h3,{id:"1-\u4f7f\u7528\u5834\u6240\u306e\u8fd1\u304f\u306bapi\u30bb\u30b0\u30e1\u30f3\u30c8\u306b\u30ab\u30b9\u30bf\u30e0\u30d5\u30c3\u30af\u3092\u5b9a\u7fa9\u3059\u308b",children:"1. \u4f7f\u7528\u5834\u6240\u306e\u8fd1\u304f\u306bAPI\u30bb\u30b0\u30e1\u30f3\u30c8\u306b\u30ab\u30b9\u30bf\u30e0\u30d5\u30c3\u30af\u3092\u5b9a\u7fa9\u3059\u308b"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-tsx",metastring:'title="@/features/update-post/api/use-update-title.ts"',children:"export const useUpdateTitle = () => {\n const queryClient = useQueryClient();\n\n return useMutation({\n mutationFn: ({ id, newTitle }) =>\n apiClient\n .patch(`/posts/${id}`, { title: newTitle })\n .then((data) => console.log(data)),\n\n onSuccess: (newPost) => {\n queryClient.setQueryData(postsQueries.ids(id), newPost);\n },\n });\n};\n"})}),"\n",(0,s.jsxs)(n.h3,{id:"2-\u5225\u306e\u5834\u6240shared\u5c64\u3084entities\u5c64\u306b\u30df\u30e5\u30fc\u30c6\u30fc\u30b7\u30e7\u30f3\u95a2\u6570\u3092\u5b9a\u7fa9\u3057\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u5185\u3067usemutation\u3092\u76f4\u63a5\u4f7f\u7528\u3059\u308b",children:["2. \u5225\u306e\u5834\u6240\uff08Shared\u5c64\u3084Entities\u5c64\uff09\u306b\u30df\u30e5\u30fc\u30c6\u30fc\u30b7\u30e7\u30f3\u95a2\u6570\u3092\u5b9a\u7fa9\u3057\u3001\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u5185\u3067",(0,s.jsx)(n.code,{children:"useMutation"}),"\u3092\u76f4\u63a5\u4f7f\u7528\u3059\u308b"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-tsx",children:"const { mutateAsync, isPending } = useMutation({\n mutationFn: postApi.createPost,\n});\n"})}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-tsx",metastring:'title="@/pages/post-create/ui/post-create-page.tsx"',children:'export const CreatePost = () => {\n const { classes } = useStyles();\n const [title, setTitle] = useState("");\n\n const { mutate, isPending } = useMutation({\n mutationFn: postApi.createPost,\n });\n\n const handleChange = (e: ChangeEvent) =>\n setTitle(e.target.value);\n const handleSubmit = (e: FormEvent) => {\n e.preventDefault();\n mutate({ title, userId: DEFAULT_USER_ID });\n };\n\n return (\n
\n \n \n Create\n \n \n );\n};\n'})}),"\n",(0,s.jsx)(n.h2,{id:"\u30af\u30a8\u30ea\u306e\u7d44\u7e54\u5316",children:"\u30af\u30a8\u30ea\u306e\u7d44\u7e54\u5316"}),"\n",(0,s.jsx)(n.h3,{id:"\u30af\u30a8\u30ea\u30d5\u30a1\u30af\u30c8\u30ea\u30fc",children:"\u30af\u30a8\u30ea\u30d5\u30a1\u30af\u30c8\u30ea\u30fc"}),"\n",(0,s.jsx)(n.p,{children:"\u3053\u306e\u30ac\u30a4\u30c9\u3067\u306f\u3001\u30af\u30a8\u30ea\u30d5\u30a1\u30af\u30c8\u30ea\u30fc\u306e\u4f7f\u3044\u65b9\u306b\u3064\u3044\u3066\u8aac\u660e\u3057\u307e\u3059\u3002"}),"\n",(0,s.jsx)(n.admonition,{type:"note",children:(0,s.jsx)(n.p,{children:"\u30af\u30a8\u30ea\u30d5\u30a1\u30af\u30c8\u30ea\u30fc\u3068\u306f\u3001JS\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u3053\u3068\u3067\u3001\u305d\u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u30ad\u30fc\u306e\u5024\u304c\u30af\u30a8\u30ea\u30ad\u30fc\u4e00\u89a7\u3092\u8fd4\u3059\u95a2\u6570\u3067\u3042\u308b\u3002"})}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-ts",children:'const keyFactory = {\n all: () => ["entity"],\n lists: () => [...postQueries.all(), "list"],\n};\n'})}),"\n",(0,s.jsxs)(n.admonition,{type:"info",children:[(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"queryOptions"})," - react-query@v5\u306b\u7d44\u307f\u8fbc\u307e\u308c\u305f\u30e6\u30fc\u30c6\u30a3\u30ea\u30c6\u30a3\uff08\u30aa\u30d7\u30b7\u30e7\u30f3\uff09"]}),(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-ts",children:"queryOptions({\n queryKey,\n ...options,\n});\n"})}),(0,s.jsxs)(n.p,{children:["\u3088\u308a\u9ad8\u3044\u578b\u5b89\u5168\u6027\u3068\u5c06\u6765\u306ereact-query\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u3068\u306e\u4e92\u63db\u6027\u3092\u78ba\u4fdd\u3057\u3001\u30af\u30a8\u30ea\u306e\u95a2\u6570\u3084\u30ad\u30fc\u3078\u306e\u30a2\u30af\u30bb\u30b9\u3092\u7c21\u7d20\u5316\u3059\u308b\u305f\u3081\u306b\u3001",(0,s.jsx)(n.code,{children:"@tanstack/react-query"}),"\u306e",(0,s.jsx)(n.code,{children:"queryOptions"}),"\u95a2\u6570\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u308b",(0,s.jsx)(n.a,{href:"https://tkdodo.eu/blog/the-query-options-api#queryoptions",children:"(\u8a73\u7d30\u306f\u3053\u3061\u3089)"}),"\u3002"]})]}),"\n",(0,s.jsx)(n.h3,{id:"1-\u30af\u30a8\u30ea\u30d5\u30a1\u30af\u30c8\u30ea\u30fc\u306e\u4f5c\u6210",children:"1. \u30af\u30a8\u30ea\u30d5\u30a1\u30af\u30c8\u30ea\u30fc\u306e\u4f5c\u6210"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-tsx",metastring:'title="@/entities/post/api/post.queries.ts"',children:'import { keepPreviousData, queryOptions } from "@tanstack/react-query";\nimport { getPosts } from "./get-posts";\nimport { getDetailPost } from "./get-detail-post";\nimport { PostDetailQuery } from "./query/post.query";\n\nexport const postQueries = {\n all: () => ["posts"],\n\n lists: () => [...postQueries.all(), "list"],\n list: (page: number, limit: number) =>\n queryOptions({\n queryKey: [...postQueries.lists(), page, limit],\n queryFn: () => getPosts(page, limit),\n placeholderData: keepPreviousData,\n }),\n\n details: () => [...postQueries.all(), "detail"],\n detail: (query?: PostDetailQuery) =>\n queryOptions({\n queryKey: [...postQueries.details(), query?.id],\n queryFn: () => getDetailPost({ id: query?.id }),\n staleTime: 5000,\n }),\n};\n'})}),"\n",(0,s.jsx)(n.h3,{id:"2-\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u30b3\u30fc\u30c9\u3067\u306e\u30af\u30a8\u30ea\u30d5\u30a1\u30af\u30c8\u30ea\u30fc\u306e\u9069\u7528",children:"2. \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u30b3\u30fc\u30c9\u3067\u306e\u30af\u30a8\u30ea\u30d5\u30a1\u30af\u30c8\u30ea\u30fc\u306e\u9069\u7528"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-tsx",children:'import { useParams } from "react-router-dom";\nimport { postApi } from "@/entities/post";\nimport { useQuery } from "@tanstack/react-query";\n\ntype Params = {\n postId: string;\n};\n\nexport const PostPage = () => {\n const { postId } = useParams();\n const id = parseInt(postId || "");\n const {\n data: post,\n error,\n isLoading,\n isError,\n } = useQuery(postApi.postQueries.detail({ id }));\n\n if (isLoading) {\n return
Loading...
;\n }\n\n if (isError || !post) {\n return <>{error?.message};\n }\n\n return (\n
\n

Post id: {post.id}

\n
\n

{post.title}

\n
\n

{post.body}

\n
\n
\n
Owner: {post.userId}
\n
\n );\n};\n'})}),"\n",(0,s.jsx)(n.h3,{id:"\u30af\u30a8\u30ea\u30d5\u30a1\u30af\u30c8\u30ea\u30fc\u3092\u4f7f\u7528\u3059\u308b\u5229\u70b9",children:"\u30af\u30a8\u30ea\u30d5\u30a1\u30af\u30c8\u30ea\u30fc\u3092\u4f7f\u7528\u3059\u308b\u5229\u70b9"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"\u30af\u30a8\u30ea\u306e\u69cb\u9020\u5316:"})," \u30d5\u30a1\u30af\u30c8\u30ea\u30fc\u306f\u3059\u3079\u3066\u306eAPI\u30af\u30a8\u30ea\u30921\u304b\u6240\u306b\u6574\u7406\u3057\u3001\u30b3\u30fc\u30c9\u3092\u3088\u308a\u8aad\u307f\u3084\u3059\u304f\u3001\u4fdd\u5b88\u3057\u3084\u3059\u304f\u3057\u3066\u3044\u308b"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"\u30af\u30a8\u30ea\u3068\u30ad\u30fc\u3078\u306e\u4fbf\u5229\u306a\u30a2\u30af\u30bb\u30b9:"})," \u30d5\u30a1\u30af\u30c8\u30ea\u30fc\u306f\u3055\u307e\u3056\u307e\u306a\u30bf\u30a4\u30d7\u306e\u30af\u30a8\u30ea\u3068\u305d\u306e\u30ad\u30fc\u3078\u306e\u4fbf\u5229\u306a\u30e1\u30bd\u30c3\u30c9\u3092\u63d0\u4f9b\u3057\u3066\u3044\u308b"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"\u30af\u30a8\u30ea\u306e\u518d\u30d5\u30a7\u30c3\u30c1\u6a5f\u80fd:"})," \u30d5\u30a1\u30af\u30c8\u30ea\u30fc\u306f\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u3055\u307e\u3056\u307e\u306a\u90e8\u5206\u3067\u30af\u30a8\u30ea\u30ad\u30fc\u3092\u5909\u66f4\u3059\u308b\u3053\u3068\u306a\u304f\u3001\u7c21\u5358\u306b\u518d\u30d5\u30a7\u30c3\u30c1\u3092\u884c\u3046\u3053\u3068\u3092\u53ef\u80fd\u306b\u3057\u3066\u3044\u308b"]}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"\u30da\u30fc\u30b8\u30cd\u30fc\u30b7\u30e7\u30f3",children:"\u30da\u30fc\u30b8\u30cd\u30fc\u30b7\u30e7\u30f3"}),"\n",(0,s.jsxs)(n.p,{children:["\u3053\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001\u30da\u30fc\u30b8\u30cd\u30fc\u30b7\u30e7\u30f3\u3092\u4f7f\u7528\u3057\u3066\u6295\u7a3f\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u3092\u53d6\u5f97\u3059\u308b\u305f\u3081\u306eAPI\u30af\u30a8\u30ea\u3092\u884c\u3046",(0,s.jsx)(n.code,{children:"getPosts"}),"\u95a2\u6570\u306e\u4f8b\u3092\u6319\u3052\u307e\u3059\u3002"]}),"\n",(0,s.jsxs)(n.h3,{id:"1-getposts\u95a2\u6570\u306e\u4f5c\u6210",children:["1. ",(0,s.jsx)(n.code,{children:"getPosts"}),"\u95a2\u6570\u306e\u4f5c\u6210"]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"getPosts"}),"\u95a2\u6570\u306f\u3001API\u30bb\u30b0\u30e1\u30f3\u30c8\u5185\u306e",(0,s.jsx)(n.code,{children:"get-posts.ts"}),"\u30d5\u30a1\u30a4\u30eb\u306b\u3042\u308a\u307e\u3059\u3002"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-tsx",metastring:'title="@/pages/post-feed/api/get-posts.ts"',children:'import { apiClient } from "@/shared/api/base";\n\nimport { PostWithPaginationDto } from "./dto/post-with-pagination.dto";\nimport { PostQuery } from "./query/post.query";\nimport { mapPost } from "./mapper/map-post";\nimport { PostWithPagination } from "../model/post-with-pagination";\n\nconst calculatePostPage = (totalCount: number, limit: number) =>\n Math.floor(totalCount / limit);\n\nexport const getPosts = async (\n page: number,\n limit: number,\n): Promise => {\n const skip = page * limit;\n const query: PostQuery = { skip, limit };\n const result = await apiClient.get("/posts", query);\n\n return {\n posts: result.posts.map((post) => mapPost(post)),\n limit: result.limit,\n skip: result.skip,\n total: result.total,\n totalPages: calculatePostPage(result.total, limit),\n };\n};\n'})}),"\n",(0,s.jsx)(n.h3,{id:"2-\u30da\u30fc\u30b8\u30cd\u30fc\u30b7\u30e7\u30f3\u7528\u306e\u30af\u30a8\u30ea\u30d5\u30a1\u30af\u30c8\u30ea\u30fc",children:"2. \u30da\u30fc\u30b8\u30cd\u30fc\u30b7\u30e7\u30f3\u7528\u306e\u30af\u30a8\u30ea\u30d5\u30a1\u30af\u30c8\u30ea\u30fc"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"postQueries"}),"\u30af\u30a8\u30ea\u30d5\u30a1\u30af\u30c8\u30ea\u30fc\u306f\u3001\u6295\u7a3f\u306b\u95a2\u3059\u308b\u3055\u307e\u3056\u307e\u306a\u30af\u30a8\u30ea\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u5b9a\u7fa9\u3057\u3001\u4e8b\u524d\u306b\u5b9a\u7fa9\u3055\u308c\u305f\u30da\u30fc\u30b8\u3068\u30ea\u30df\u30c3\u30c8\u3092\u4f7f\u7528\u3057\u3066\u6295\u7a3f\u4e00\u89a7\u3092\u53d6\u5f97\u3059\u308b\u30af\u30a8\u30ea\u3092\u542b\u307f\u307e\u3059\u3002"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-tsx",children:'import { keepPreviousData, queryOptions } from "@tanstack/react-query";\nimport { getPosts } from "./get-posts";\n\nexport const postQueries = {\n all: () => ["posts"],\n lists: () => [...postQueries.all(), "list"],\n list: (page: number, limit: number) =>\n queryOptions({\n queryKey: [...postQueries.lists(), page, limit],\n queryFn: () => getPosts(page, limit),\n placeholderData: keepPreviousData,\n }),\n};\n'})}),"\n",(0,s.jsx)(n.h3,{id:"3-\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u30b3\u30fc\u30c9\u3067\u306e\u4f7f\u7528",children:"3. \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u30b3\u30fc\u30c9\u3067\u306e\u4f7f\u7528"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-tsx",metastring:'title="@/pages/home/ui/index.tsx"',children:'export const HomePage = () => {\n const itemsOnScreen = DEFAULT_ITEMS_ON_SCREEN;\n const [page, setPage] = usePageParam(DEFAULT_PAGE);\n const { data, isFetching, isLoading } = useQuery(\n postApi.postQueries.list(page, itemsOnScreen),\n );\n return (\n <>\n setPage(page)}\n page={page}\n count={data?.totalPages}\n variant="outlined"\n color="primary"\n />\n \n \n );\n};\n'})}),"\n",(0,s.jsx)(n.admonition,{type:"note",children:(0,s.jsx)(n.p,{children:"\u4f8b\u306f\u7c21\u7565\u5316\u3055\u308c\u3066\u3044\u308b\u3002"})}),"\n",(0,s.jsxs)(n.h2,{id:"\u30af\u30a8\u30ea\u7ba1\u7406\u7528\u306equeryprovider",children:["\u30af\u30a8\u30ea\u7ba1\u7406\u7528\u306e",(0,s.jsx)(n.code,{children:"QueryProvider"})]}),"\n",(0,s.jsxs)(n.p,{children:["\u3053\u306e\u30ac\u30a4\u30c9\u3067\u306f\u3001",(0,s.jsx)(n.code,{children:"QueryProvider"}),"\u3092\u3069\u306e\u3088\u3046\u306b\u69cb\u6210\u3059\u308b\u3079\u304d\u304b\u3092\u8aac\u660e\u3057\u307e\u3059\u3002"]}),"\n",(0,s.jsxs)(n.h3,{id:"1-queryprovider\u306e\u4f5c\u6210",children:["1. ",(0,s.jsx)(n.code,{children:"QueryProvider"}),"\u306e\u4f5c\u6210"]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"query-provider.tsx"}),"\u30d5\u30a1\u30a4\u30eb\u306f",(0,s.jsx)(n.code,{children:"@/app/providers/query-provider.tsx"}),"\u306b\u3042\u308a\u307e\u3059\u3002"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-tsx",metastring:'title="@/app/providers/query-provider.tsx"',children:'import { QueryClient, QueryClientProvider } from "@tanstack/react-query";\nimport { ReactQueryDevtools } from "@tanstack/react-query-devtools";\nimport { ReactNode } from "react";\n\ntype Props = {\n children: ReactNode;\n client: QueryClient;\n};\n\nexport const QueryProvider = ({ client, children }: Props) => {\n return (\n \n {children}\n \n \n );\n};\n'})}),"\n",(0,s.jsxs)(n.h3,{id:"2-queryclient\u306e\u4f5c\u6210",children:["2. ",(0,s.jsx)(n.code,{children:"QueryClient"}),"\u306e\u4f5c\u6210"]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"QueryClient"}),"\u306fAPI\u30af\u30a8\u30ea\u3092\u7ba1\u7406\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u308b\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3067\u3059\u3002",(0,s.jsx)(n.code,{children:"query-client.ts"}),"\u30d5\u30a1\u30a4\u30eb\u306f",(0,s.jsx)(n.code,{children:"@/shared/api/query-client.ts"}),"\u306b\u3042\u308a\u307e\u3059\u3002",(0,s.jsx)(n.code,{children:"QueryClient"}),"\u306f\u30af\u30a8\u30ea\u30ad\u30e3\u30c3\u30b7\u30f3\u30b0\u7528\u306e\u7279\u5b9a\u306e\u8a2d\u5b9a\u3067\u4f5c\u6210\u3055\u308c\u307e\u3059\u3002"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-tsx",metastring:'title="@/shared/api/query-client.ts"',children:'import { QueryClient } from "@tanstack/react-query";\n\nexport const queryClient = new QueryClient({\n defaultOptions: {\n queries: {\n staleTime: 5 * 60 * 1000,\n gcTime: 5 * 60 * 1000,\n },\n },\n});\n'})}),"\n",(0,s.jsx)(n.h2,{id:"\u30b3\u30fc\u30c9\u751f\u6210",children:"\u30b3\u30fc\u30c9\u751f\u6210"}),"\n",(0,s.jsxs)(n.p,{children:["\u81ea\u52d5\u30b3\u30fc\u30c9\u751f\u6210\u306e\u305f\u3081\u306e\u30c4\u30fc\u30eb\u304c\u5b58\u5728\u3057\u307e\u3059\u304c\u3001\u3053\u308c\u3089\u306f\u4e0a\u8a18\u306e\u3088\u3046\u306b\u8a2d\u5b9a\u53ef\u80fd\u306a\u3082\u306e\u3068\u6bd4\u8f03\u3057\u3066\u67d4\u8edf\u6027\u304c\u4f4e\u3044\u3067\u3059\u3002Swagger\u30d5\u30a1\u30a4\u30eb\u304c\u9069\u5207\u306b\u69cb\u9020\u5316\u3055\u308c\u3066\u3044\u308b\u5834\u5408\u3001\u3053\u308c\u3089\u306e\u30c4\u30fc\u30eb\u306e1\u3064\u3092\u4f7f\u7528\u3057\u3066",(0,s.jsx)(n.code,{children:"@/shared/api"}),"\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u5185\u306e\u3059\u3079\u3066\u306e\u30b3\u30fc\u30c9\u3092\u751f\u6210\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002"]}),"\n",(0,s.jsx)(n.h2,{id:"rq\u306e\u6574\u7406\u306b\u95a2\u3059\u308b\u8ffd\u52a0\u306e\u30a2\u30c9\u30d0\u30a4\u30b9",children:"RQ\u306e\u6574\u7406\u306b\u95a2\u3059\u308b\u8ffd\u52a0\u306e\u30a2\u30c9\u30d0\u30a4\u30b9"}),"\n",(0,s.jsx)(n.h3,{id:"api\u30af\u30e9\u30a4\u30a2\u30f3\u30c8",children:"API\u30af\u30e9\u30a4\u30a2\u30f3\u30c8"}),"\n",(0,s.jsx)(n.p,{children:"\u5171\u6709\u5c64\u3067\u3042\u308bshared\u5c64\u3067\u30ab\u30b9\u30bf\u30e0\u306eAPI\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u30af\u30e9\u30b9\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3067\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u5185\u3067\u306eAPI\u8a2d\u5b9a\u3084API\u64cd\u4f5c\u3092\u6a19\u6e96\u5316\u3067\u304d\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u30ed\u30b0\u8a18\u9332\u3001\u30d8\u30c3\u30c0\u30fc\u3001\u304a\u3088\u3073\u30c7\u30fc\u30bf\u4ea4\u63db\u5f62\u5f0f\uff08\u4f8b: JSON\u3084XML\uff09\u3092\u4e00\u5143\u7ba1\u7406\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u3053\u306e\u30a2\u30d7\u30ed\u30fc\u30c1\u306b\u3088\u308a\u3001API\u3068\u306e\u9023\u643a\u306e\u5909\u66f4\u3084\u66f4\u65b0\u304c\u7c21\u5358\u306b\u306a\u308a\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30e1\u30f3\u30c6\u30ca\u30f3\u30b9\u3084\u958b\u767a\u304c\u5bb9\u6613\u306b\u306a\u308a\u307e\u3059\u3002"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-tsx",metastring:'title="@/shared/api/api-client.ts"',children:'import { API_URL } from "@/shared/config";\n\nexport class ApiClient {\n private baseUrl: string;\n\n constructor(url: string) {\n this.baseUrl = url;\n }\n\n async handleResponse(response: Response): Promise {\n if (!response.ok) {\n throw new Error(`HTTP error! Status: ${response.status}`);\n }\n\n try {\n return await response.json();\n } catch (error) {\n throw new Error("Error parsing JSON response");\n }\n }\n\n public async get(\n endpoint: string,\n queryParams?: Record,\n ): Promise {\n const url = new URL(endpoint, this.baseUrl);\n\n if (queryParams) {\n Object.entries(queryParams).forEach(([key, value]) => {\n url.searchParams.append(key, value.toString());\n });\n }\n const response = await fetch(url.toString(), {\n method: "GET",\n headers: {\n "Content-Type": "application/json",\n },\n });\n\n return this.handleResponse(response);\n }\n\n public async post>(\n endpoint: string,\n body: TData,\n ): Promise {\n const response = await fetch(`${this.baseUrl}${endpoint}`, {\n method: "POST",\n headers: {\n "Content-Type": "application/json",\n },\n body: JSON.stringify(body),\n });\n\n return this.handleResponse(response);\n }\n}\n\nexport const apiClient = new ApiClient(API_URL);\n'})}),"\n",(0,s.jsx)(n.h2,{id:"see-also",children:"\u53c2\u7167"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://tkdodo.eu/blog/the-query-options-api",children:"The Query Options API"})}),"\n"]})]})}function u(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(c,{...e})}):c(e)}},1100:(e,n,t)=>{t.d(n,{R:()=>o,x:()=>a});var s=t(758);const i={},r=s.createContext(i);function o(e){const n=s.useContext(r);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:o(e.components),s.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunk_feature_sliced_documentation=self.webpackChunk_feature_sliced_documentation||[]).push([[6778],{9300:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>o,default:()=>u,frontMatter:()=>r,metadata:()=>a,toc:()=>d});var s=t(6070),i=t(1100);const r={sidebar_position:10},o="React Query\u3068\u306e\u4f75\u7528",a={id:"guides/tech/with-react-query",title:"React Query\u3068\u306e\u4f75\u7528",description:"\u30ad\u30fc\u3092\u3069\u3053\u306b\u7f6e\u304f\u304b\u554f\u984c",source:"@site/i18n/ja/docusaurus-plugin-content-docs/current/guides/tech/with-react-query.mdx",sourceDirName:"guides/tech",slug:"/guides/tech/with-react-query",permalink:"/ja/docs/guides/tech/with-react-query",draft:!1,unlisted:!1,editUrl:"https://github.com/feature-sliced/documentation/edit/master/i18n/ja/docusaurus-plugin-content-docs/current/guides/tech/with-react-query.mdx",tags:[],version:"current",lastUpdatedAt:1728325386e3,sidebarPosition:10,frontMatter:{sidebar_position:10},sidebar:"guidesSidebar",previous:{title:"NuxtJS\u3068\u306e\u4f75\u7528",permalink:"/ja/docs/guides/tech/with-nuxtjs"},next:{title:"SvelteKit\u3068\u306e\u4f75\u7528",permalink:"/ja/docs/guides/tech/with-sveltekit"}},l={},d=[{value:"\u30ad\u30fc\u3092\u3069\u3053\u306b\u7f6e\u304f\u304b\u554f\u984c",id:"\u30ad\u30fc\u3092\u3069\u3053\u306b\u7f6e\u304f\u304b\u554f\u984c",level:2},{value:"\u89e3\u6c7a\u7b56 - \u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u3054\u3068\u306b\u5206\u5272\u3059\u308b",id:"\u89e3\u6c7a\u7b56---\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u3054\u3068\u306b\u5206\u5272\u3059\u308b",level:3},{value:"\u4ee3\u66ff\u6848 \u2014 \u30af\u30a8\u30ea\u3092\u516c\u958b\u3067\u4fdd\u5b58\u3059\u308b",id:"\u4ee3\u66ff\u6848--\u30af\u30a8\u30ea\u3092\u516c\u958b\u3067\u4fdd\u5b58\u3059\u308b",level:3},{value:"\u554f\u984c\u300c\u30df\u30e5\u30fc\u30c6\u30fc\u30b7\u30e7\u30f3\u306f\u3069\u3053\u306b\uff1f\u300d",id:"\u554f\u984c\u30df\u30e5\u30fc\u30c6\u30fc\u30b7\u30e7\u30f3\u306f\u3069\u3053\u306b",level:2},{value:"1. \u4f7f\u7528\u5834\u6240\u306e\u8fd1\u304f\u306bAPI\u30bb\u30b0\u30e1\u30f3\u30c8\u306b\u30ab\u30b9\u30bf\u30e0\u30d5\u30c3\u30af\u3092\u5b9a\u7fa9\u3059\u308b",id:"1-\u4f7f\u7528\u5834\u6240\u306e\u8fd1\u304f\u306bapi\u30bb\u30b0\u30e1\u30f3\u30c8\u306b\u30ab\u30b9\u30bf\u30e0\u30d5\u30c3\u30af\u3092\u5b9a\u7fa9\u3059\u308b",level:3},{value:"2. \u5225\u306e\u5834\u6240\uff08Shared\u5c64\u3084Entities\u5c64\uff09\u306b\u30df\u30e5\u30fc\u30c6\u30fc\u30b7\u30e7\u30f3\u95a2\u6570\u3092\u5b9a\u7fa9\u3057\u3001\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u5185\u3067useMutation\u3092\u76f4\u63a5\u4f7f\u7528\u3059\u308b",id:"2-\u5225\u306e\u5834\u6240shared\u5c64\u3084entities\u5c64\u306b\u30df\u30e5\u30fc\u30c6\u30fc\u30b7\u30e7\u30f3\u95a2\u6570\u3092\u5b9a\u7fa9\u3057\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u5185\u3067usemutation\u3092\u76f4\u63a5\u4f7f\u7528\u3059\u308b",level:3},{value:"\u30af\u30a8\u30ea\u306e\u7d44\u7e54\u5316",id:"\u30af\u30a8\u30ea\u306e\u7d44\u7e54\u5316",level:2},{value:"\u30af\u30a8\u30ea\u30d5\u30a1\u30af\u30c8\u30ea\u30fc",id:"\u30af\u30a8\u30ea\u30d5\u30a1\u30af\u30c8\u30ea\u30fc",level:3},{value:"1. \u30af\u30a8\u30ea\u30d5\u30a1\u30af\u30c8\u30ea\u30fc\u306e\u4f5c\u6210",id:"1-\u30af\u30a8\u30ea\u30d5\u30a1\u30af\u30c8\u30ea\u30fc\u306e\u4f5c\u6210",level:3},{value:"2. \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u30b3\u30fc\u30c9\u3067\u306e\u30af\u30a8\u30ea\u30d5\u30a1\u30af\u30c8\u30ea\u30fc\u306e\u9069\u7528",id:"2-\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u30b3\u30fc\u30c9\u3067\u306e\u30af\u30a8\u30ea\u30d5\u30a1\u30af\u30c8\u30ea\u30fc\u306e\u9069\u7528",level:3},{value:"\u30af\u30a8\u30ea\u30d5\u30a1\u30af\u30c8\u30ea\u30fc\u3092\u4f7f\u7528\u3059\u308b\u5229\u70b9",id:"\u30af\u30a8\u30ea\u30d5\u30a1\u30af\u30c8\u30ea\u30fc\u3092\u4f7f\u7528\u3059\u308b\u5229\u70b9",level:3},{value:"\u30da\u30fc\u30b8\u30cd\u30fc\u30b7\u30e7\u30f3",id:"\u30da\u30fc\u30b8\u30cd\u30fc\u30b7\u30e7\u30f3",level:2},{value:"1. getPosts\u95a2\u6570\u306e\u4f5c\u6210",id:"1-getposts\u95a2\u6570\u306e\u4f5c\u6210",level:3},{value:"2. \u30da\u30fc\u30b8\u30cd\u30fc\u30b7\u30e7\u30f3\u7528\u306e\u30af\u30a8\u30ea\u30d5\u30a1\u30af\u30c8\u30ea\u30fc",id:"2-\u30da\u30fc\u30b8\u30cd\u30fc\u30b7\u30e7\u30f3\u7528\u306e\u30af\u30a8\u30ea\u30d5\u30a1\u30af\u30c8\u30ea\u30fc",level:3},{value:"3. \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u30b3\u30fc\u30c9\u3067\u306e\u4f7f\u7528",id:"3-\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u30b3\u30fc\u30c9\u3067\u306e\u4f7f\u7528",level:3},{value:"\u30af\u30a8\u30ea\u7ba1\u7406\u7528\u306eQueryProvider",id:"\u30af\u30a8\u30ea\u7ba1\u7406\u7528\u306equeryprovider",level:2},{value:"1. QueryProvider\u306e\u4f5c\u6210",id:"1-queryprovider\u306e\u4f5c\u6210",level:3},{value:"2. QueryClient\u306e\u4f5c\u6210",id:"2-queryclient\u306e\u4f5c\u6210",level:3},{value:"\u30b3\u30fc\u30c9\u751f\u6210",id:"\u30b3\u30fc\u30c9\u751f\u6210",level:2},{value:"RQ\u306e\u6574\u7406\u306b\u95a2\u3059\u308b\u8ffd\u52a0\u306e\u30a2\u30c9\u30d0\u30a4\u30b9",id:"rq\u306e\u6574\u7406\u306b\u95a2\u3059\u308b\u8ffd\u52a0\u306e\u30a2\u30c9\u30d0\u30a4\u30b9",level:2},{value:"API\u30af\u30e9\u30a4\u30a2\u30f3\u30c8",id:"api\u30af\u30e9\u30a4\u30a2\u30f3\u30c8",level:3},{value:"\u53c2\u7167",id:"see-also",level:2}];function c(e){const n={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,i.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.header,{children:(0,s.jsx)(n.h1,{id:"react-query\u3068\u306e\u4f75\u7528",children:"React Query\u3068\u306e\u4f75\u7528"})}),"\n",(0,s.jsx)(n.h2,{id:"\u30ad\u30fc\u3092\u3069\u3053\u306b\u7f6e\u304f\u304b\u554f\u984c",children:"\u30ad\u30fc\u3092\u3069\u3053\u306b\u7f6e\u304f\u304b\u554f\u984c"}),"\n",(0,s.jsx)(n.h3,{id:"\u89e3\u6c7a\u7b56---\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u3054\u3068\u306b\u5206\u5272\u3059\u308b",children:"\u89e3\u6c7a\u7b56 - \u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u3054\u3068\u306b\u5206\u5272\u3059\u308b"}),"\n",(0,s.jsx)(n.p,{children:"\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u3059\u3067\u306b\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u306e\u5206\u5272\u304c\u3042\u308a\u3001\u5404\u30af\u30a8\u30ea\u304c1\u3064\u306e\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u306b\u5bfe\u5fdc\u3057\u3066\u3044\u308b\u5834\u5408\u3001\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u3054\u3068\u306b\u5206\u5272\u3059\u308b\u306e\u304c\u6700\u826f\u3067\u3059\u3002\u3053\u306e\u5834\u5408\u3001\u6b21\u306e\u69cb\u9020\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3092\u304a\u52e7\u3081\u3057\u307e\u3059\u3002"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-sh",children:"\u2514\u2500\u2500 src/ #\n \u251c\u2500\u2500 app/ #\n | ... #\n \u251c\u2500\u2500 pages/ #\n | ... #\n \u251c\u2500\u2500 entities/ #\n | \u251c\u2500\u2500 {entity}/ #\n | ... \u2514\u2500\u2500 api/ #\n | \u251c\u2500\u2500 `{entity}.query` # \u30af\u30a8\u30ea\u30d5\u30a1\u30af\u30c8\u30ea\u30fc\u3001\u30ad\u30fc\u3068\u95a2\u6570\u304c\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u308b\n | \u251c\u2500\u2500 `get-{entity}` # \u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u3092\u53d6\u5f97\u3059\u308b\u95a2\u6570\n | \u251c\u2500\u2500 `create-{entity}` # \u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u3092\u4f5c\u6210\u3059\u308b\u95a2\u6570\n | \u251c\u2500\u2500 `update-{entity}` # \u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u66f4\u65b0\u3059\u308b\u95a2\u6570\n | \u251c\u2500\u2500 `delete-{entity}` # \u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u524a\u9664\u3059\u308b\u95a2\u6570\n | ... #\n | #\n \u251c\u2500\u2500 features/ #\n | ... #\n \u251c\u2500\u2500 widgets/ #\n | ... #\n \u2514\u2500\u2500 shared/ #\n ... #\n"})}),"\n",(0,s.jsxs)(n.p,{children:["\u3082\u3057\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u9593\u306b\u95a2\u4fc2\u304c\u3042\u308b\u5834\u5408\uff08\u4f8b\u3048\u3070\u3001\u300c\u56fd\u300d\u306e\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u306b\u300c\u90fd\u5e02\u300d\u306e\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u4e00\u89a7\u30d5\u30a3\u30fc\u30eb\u30c9\u304c\u3042\u308b\u5834\u5408\uff09\u3001",(0,s.jsx)(n.code,{children:"@x"})," \u30a2\u30ce\u30c6\u30fc\u30b7\u30e7\u30f3\u3092\u4f7f\u7528\u3057\u305f\u7d44\u7e54\u7684\u306a\u30af\u30ed\u30b9\u30a4\u30f3\u30dd\u30fc\u30c8\u306e",(0,s.jsx)(n.a,{href:"https://github.com/feature-sliced/documentation/discussions/390#discussioncomment-5570073",children:"\u5b9f\u9a13\u7684\u30a2\u30d7\u30ed\u30fc\u30c1"}),"\u3092\u5229\u7528\u3059\u308b\u304b\u3001\u4ee5\u4e0b\u306e\u4ee3\u66ff\u6848\u3092\u691c\u8a0e\u3067\u304d\u307e\u3059\u3002"]}),"\n",(0,s.jsx)(n.h3,{id:"\u4ee3\u66ff\u6848--\u30af\u30a8\u30ea\u3092\u516c\u958b\u3067\u4fdd\u5b58\u3059\u308b",children:"\u4ee3\u66ff\u6848 \u2014 \u30af\u30a8\u30ea\u3092\u516c\u958b\u3067\u4fdd\u5b58\u3059\u308b"}),"\n",(0,s.jsx)(n.p,{children:"\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u3054\u3068\u306e\u5206\u5272\u304c\u9069\u3055\u306a\u3044\u5834\u5408\u3001\u6b21\u306e\u69cb\u9020\u3092\u8003\u616e\u3067\u304d\u307e\u3059\u3002"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-sh",children:"\u2514\u2500\u2500 src/ #\n ... #\n \u2514\u2500\u2500 shared/ #\n \u251c\u2500\u2500 api/ #\n ... \u251c\u2500\u2500 `queries` # \u30af\u30a8\u30ea\u30d5\u30a1\u30af\u30c8\u30ea\u30fc\n | \u251c\u2500\u2500 `document.ts` #\n | \u251c\u2500\u2500 `background-jobs.ts` #\n | ... #\n \u2514\u2500\u2500 index.ts #\n"})}),"\n",(0,s.jsxs)(n.p,{children:["\u6b21\u306b\u3001",(0,s.jsx)(n.code,{children:"@/shared/api/index.ts"}),"\u306b"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-ts",metastring:'title="@/shared/api/index.ts"',children:'export { documentQueries } from "./queries/document";\n'})}),"\n",(0,s.jsx)(n.h2,{id:"\u554f\u984c\u30df\u30e5\u30fc\u30c6\u30fc\u30b7\u30e7\u30f3\u306f\u3069\u3053\u306b",children:"\u554f\u984c\u300c\u30df\u30e5\u30fc\u30c6\u30fc\u30b7\u30e7\u30f3\u306f\u3069\u3053\u306b\uff1f\u300d"}),"\n",(0,s.jsx)(n.p,{children:"\u30df\u30e5\u30fc\u30c6\u30fc\u30b7\u30e7\u30f3\u3092\u30af\u30a8\u30ea\u3068\u6df7\u5408\u3059\u308b\u3053\u3068\u306f\u63a8\u5968\u3055\u308c\u307e\u305b\u3093\u30022\u3064\u306e\u9078\u629e\u80a2\u304c\u8003\u3048\u3089\u308c\u307e\u3059\u3002"}),"\n",(0,s.jsx)(n.h3,{id:"1-\u4f7f\u7528\u5834\u6240\u306e\u8fd1\u304f\u306bapi\u30bb\u30b0\u30e1\u30f3\u30c8\u306b\u30ab\u30b9\u30bf\u30e0\u30d5\u30c3\u30af\u3092\u5b9a\u7fa9\u3059\u308b",children:"1. \u4f7f\u7528\u5834\u6240\u306e\u8fd1\u304f\u306bAPI\u30bb\u30b0\u30e1\u30f3\u30c8\u306b\u30ab\u30b9\u30bf\u30e0\u30d5\u30c3\u30af\u3092\u5b9a\u7fa9\u3059\u308b"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-tsx",metastring:'title="@/features/update-post/api/use-update-title.ts"',children:"export const useUpdateTitle = () => {\n const queryClient = useQueryClient();\n\n return useMutation({\n mutationFn: ({ id, newTitle }) =>\n apiClient\n .patch(`/posts/${id}`, { title: newTitle })\n .then((data) => console.log(data)),\n\n onSuccess: (newPost) => {\n queryClient.setQueryData(postsQueries.ids(id), newPost);\n },\n });\n};\n"})}),"\n",(0,s.jsxs)(n.h3,{id:"2-\u5225\u306e\u5834\u6240shared\u5c64\u3084entities\u5c64\u306b\u30df\u30e5\u30fc\u30c6\u30fc\u30b7\u30e7\u30f3\u95a2\u6570\u3092\u5b9a\u7fa9\u3057\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u5185\u3067usemutation\u3092\u76f4\u63a5\u4f7f\u7528\u3059\u308b",children:["2. \u5225\u306e\u5834\u6240\uff08Shared\u5c64\u3084Entities\u5c64\uff09\u306b\u30df\u30e5\u30fc\u30c6\u30fc\u30b7\u30e7\u30f3\u95a2\u6570\u3092\u5b9a\u7fa9\u3057\u3001\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u5185\u3067",(0,s.jsx)(n.code,{children:"useMutation"}),"\u3092\u76f4\u63a5\u4f7f\u7528\u3059\u308b"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-tsx",children:"const { mutateAsync, isPending } = useMutation({\n mutationFn: postApi.createPost,\n});\n"})}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-tsx",metastring:'title="@/pages/post-create/ui/post-create-page.tsx"',children:'export const CreatePost = () => {\n const { classes } = useStyles();\n const [title, setTitle] = useState("");\n\n const { mutate, isPending } = useMutation({\n mutationFn: postApi.createPost,\n });\n\n const handleChange = (e: ChangeEvent) =>\n setTitle(e.target.value);\n const handleSubmit = (e: FormEvent) => {\n e.preventDefault();\n mutate({ title, userId: DEFAULT_USER_ID });\n };\n\n return (\n
\n \n \n Create\n \n \n );\n};\n'})}),"\n",(0,s.jsx)(n.h2,{id:"\u30af\u30a8\u30ea\u306e\u7d44\u7e54\u5316",children:"\u30af\u30a8\u30ea\u306e\u7d44\u7e54\u5316"}),"\n",(0,s.jsx)(n.h3,{id:"\u30af\u30a8\u30ea\u30d5\u30a1\u30af\u30c8\u30ea\u30fc",children:"\u30af\u30a8\u30ea\u30d5\u30a1\u30af\u30c8\u30ea\u30fc"}),"\n",(0,s.jsx)(n.p,{children:"\u3053\u306e\u30ac\u30a4\u30c9\u3067\u306f\u3001\u30af\u30a8\u30ea\u30d5\u30a1\u30af\u30c8\u30ea\u30fc\u306e\u4f7f\u3044\u65b9\u306b\u3064\u3044\u3066\u8aac\u660e\u3057\u307e\u3059\u3002"}),"\n",(0,s.jsx)(n.admonition,{type:"note",children:(0,s.jsx)(n.p,{children:"\u30af\u30a8\u30ea\u30d5\u30a1\u30af\u30c8\u30ea\u30fc\u3068\u306f\u3001JS\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u3053\u3068\u3067\u3001\u305d\u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u30ad\u30fc\u306e\u5024\u304c\u30af\u30a8\u30ea\u30ad\u30fc\u4e00\u89a7\u3092\u8fd4\u3059\u95a2\u6570\u3067\u3042\u308b\u3002"})}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-ts",children:'const keyFactory = {\n all: () => ["entity"],\n lists: () => [...postQueries.all(), "list"],\n};\n'})}),"\n",(0,s.jsxs)(n.admonition,{type:"info",children:[(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"queryOptions"})," - react-query@v5\u306b\u7d44\u307f\u8fbc\u307e\u308c\u305f\u30e6\u30fc\u30c6\u30a3\u30ea\u30c6\u30a3\uff08\u30aa\u30d7\u30b7\u30e7\u30f3\uff09"]}),(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-ts",children:"queryOptions({\n queryKey,\n ...options,\n});\n"})}),(0,s.jsxs)(n.p,{children:["\u3088\u308a\u9ad8\u3044\u578b\u5b89\u5168\u6027\u3068\u5c06\u6765\u306ereact-query\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u3068\u306e\u4e92\u63db\u6027\u3092\u78ba\u4fdd\u3057\u3001\u30af\u30a8\u30ea\u306e\u95a2\u6570\u3084\u30ad\u30fc\u3078\u306e\u30a2\u30af\u30bb\u30b9\u3092\u7c21\u7d20\u5316\u3059\u308b\u305f\u3081\u306b\u3001",(0,s.jsx)(n.code,{children:"@tanstack/react-query"}),"\u306e",(0,s.jsx)(n.code,{children:"queryOptions"}),"\u95a2\u6570\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u308b",(0,s.jsx)(n.a,{href:"https://tkdodo.eu/blog/the-query-options-api#queryoptions",children:"(\u8a73\u7d30\u306f\u3053\u3061\u3089)"}),"\u3002"]})]}),"\n",(0,s.jsx)(n.h3,{id:"1-\u30af\u30a8\u30ea\u30d5\u30a1\u30af\u30c8\u30ea\u30fc\u306e\u4f5c\u6210",children:"1. \u30af\u30a8\u30ea\u30d5\u30a1\u30af\u30c8\u30ea\u30fc\u306e\u4f5c\u6210"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-tsx",metastring:'title="@/entities/post/api/post.queries.ts"',children:'import { keepPreviousData, queryOptions } from "@tanstack/react-query";\nimport { getPosts } from "./get-posts";\nimport { getDetailPost } from "./get-detail-post";\nimport { PostDetailQuery } from "./query/post.query";\n\nexport const postQueries = {\n all: () => ["posts"],\n\n lists: () => [...postQueries.all(), "list"],\n list: (page: number, limit: number) =>\n queryOptions({\n queryKey: [...postQueries.lists(), page, limit],\n queryFn: () => getPosts(page, limit),\n placeholderData: keepPreviousData,\n }),\n\n details: () => [...postQueries.all(), "detail"],\n detail: (query?: PostDetailQuery) =>\n queryOptions({\n queryKey: [...postQueries.details(), query?.id],\n queryFn: () => getDetailPost({ id: query?.id }),\n staleTime: 5000,\n }),\n};\n'})}),"\n",(0,s.jsx)(n.h3,{id:"2-\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u30b3\u30fc\u30c9\u3067\u306e\u30af\u30a8\u30ea\u30d5\u30a1\u30af\u30c8\u30ea\u30fc\u306e\u9069\u7528",children:"2. \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u30b3\u30fc\u30c9\u3067\u306e\u30af\u30a8\u30ea\u30d5\u30a1\u30af\u30c8\u30ea\u30fc\u306e\u9069\u7528"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-tsx",children:'import { useParams } from "react-router-dom";\nimport { postApi } from "@/entities/post";\nimport { useQuery } from "@tanstack/react-query";\n\ntype Params = {\n postId: string;\n};\n\nexport const PostPage = () => {\n const { postId } = useParams();\n const id = parseInt(postId || "");\n const {\n data: post,\n error,\n isLoading,\n isError,\n } = useQuery(postApi.postQueries.detail({ id }));\n\n if (isLoading) {\n return
Loading...
;\n }\n\n if (isError || !post) {\n return <>{error?.message};\n }\n\n return (\n
\n

Post id: {post.id}

\n
\n

{post.title}

\n
\n

{post.body}

\n
\n
\n
Owner: {post.userId}
\n
\n );\n};\n'})}),"\n",(0,s.jsx)(n.h3,{id:"\u30af\u30a8\u30ea\u30d5\u30a1\u30af\u30c8\u30ea\u30fc\u3092\u4f7f\u7528\u3059\u308b\u5229\u70b9",children:"\u30af\u30a8\u30ea\u30d5\u30a1\u30af\u30c8\u30ea\u30fc\u3092\u4f7f\u7528\u3059\u308b\u5229\u70b9"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"\u30af\u30a8\u30ea\u306e\u69cb\u9020\u5316:"})," \u30d5\u30a1\u30af\u30c8\u30ea\u30fc\u306f\u3059\u3079\u3066\u306eAPI\u30af\u30a8\u30ea\u30921\u304b\u6240\u306b\u6574\u7406\u3057\u3001\u30b3\u30fc\u30c9\u3092\u3088\u308a\u8aad\u307f\u3084\u3059\u304f\u3001\u4fdd\u5b88\u3057\u3084\u3059\u304f\u3057\u3066\u3044\u308b"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"\u30af\u30a8\u30ea\u3068\u30ad\u30fc\u3078\u306e\u4fbf\u5229\u306a\u30a2\u30af\u30bb\u30b9:"})," \u30d5\u30a1\u30af\u30c8\u30ea\u30fc\u306f\u3055\u307e\u3056\u307e\u306a\u30bf\u30a4\u30d7\u306e\u30af\u30a8\u30ea\u3068\u305d\u306e\u30ad\u30fc\u3078\u306e\u4fbf\u5229\u306a\u30e1\u30bd\u30c3\u30c9\u3092\u63d0\u4f9b\u3057\u3066\u3044\u308b"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"\u30af\u30a8\u30ea\u306e\u518d\u30d5\u30a7\u30c3\u30c1\u6a5f\u80fd:"})," \u30d5\u30a1\u30af\u30c8\u30ea\u30fc\u306f\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u3055\u307e\u3056\u307e\u306a\u90e8\u5206\u3067\u30af\u30a8\u30ea\u30ad\u30fc\u3092\u5909\u66f4\u3059\u308b\u3053\u3068\u306a\u304f\u3001\u7c21\u5358\u306b\u518d\u30d5\u30a7\u30c3\u30c1\u3092\u884c\u3046\u3053\u3068\u3092\u53ef\u80fd\u306b\u3057\u3066\u3044\u308b"]}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"\u30da\u30fc\u30b8\u30cd\u30fc\u30b7\u30e7\u30f3",children:"\u30da\u30fc\u30b8\u30cd\u30fc\u30b7\u30e7\u30f3"}),"\n",(0,s.jsxs)(n.p,{children:["\u3053\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001\u30da\u30fc\u30b8\u30cd\u30fc\u30b7\u30e7\u30f3\u3092\u4f7f\u7528\u3057\u3066\u6295\u7a3f\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u3092\u53d6\u5f97\u3059\u308b\u305f\u3081\u306eAPI\u30af\u30a8\u30ea\u3092\u884c\u3046",(0,s.jsx)(n.code,{children:"getPosts"}),"\u95a2\u6570\u306e\u4f8b\u3092\u6319\u3052\u307e\u3059\u3002"]}),"\n",(0,s.jsxs)(n.h3,{id:"1-getposts\u95a2\u6570\u306e\u4f5c\u6210",children:["1. ",(0,s.jsx)(n.code,{children:"getPosts"}),"\u95a2\u6570\u306e\u4f5c\u6210"]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"getPosts"}),"\u95a2\u6570\u306f\u3001API\u30bb\u30b0\u30e1\u30f3\u30c8\u5185\u306e",(0,s.jsx)(n.code,{children:"get-posts.ts"}),"\u30d5\u30a1\u30a4\u30eb\u306b\u3042\u308a\u307e\u3059\u3002"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-tsx",metastring:'title="@/pages/post-feed/api/get-posts.ts"',children:'import { apiClient } from "@/shared/api/base";\n\nimport { PostWithPaginationDto } from "./dto/post-with-pagination.dto";\nimport { PostQuery } from "./query/post.query";\nimport { mapPost } from "./mapper/map-post";\nimport { PostWithPagination } from "../model/post-with-pagination";\n\nconst calculatePostPage = (totalCount: number, limit: number) =>\n Math.floor(totalCount / limit);\n\nexport const getPosts = async (\n page: number,\n limit: number,\n): Promise => {\n const skip = page * limit;\n const query: PostQuery = { skip, limit };\n const result = await apiClient.get("/posts", query);\n\n return {\n posts: result.posts.map((post) => mapPost(post)),\n limit: result.limit,\n skip: result.skip,\n total: result.total,\n totalPages: calculatePostPage(result.total, limit),\n };\n};\n'})}),"\n",(0,s.jsx)(n.h3,{id:"2-\u30da\u30fc\u30b8\u30cd\u30fc\u30b7\u30e7\u30f3\u7528\u306e\u30af\u30a8\u30ea\u30d5\u30a1\u30af\u30c8\u30ea\u30fc",children:"2. \u30da\u30fc\u30b8\u30cd\u30fc\u30b7\u30e7\u30f3\u7528\u306e\u30af\u30a8\u30ea\u30d5\u30a1\u30af\u30c8\u30ea\u30fc"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"postQueries"}),"\u30af\u30a8\u30ea\u30d5\u30a1\u30af\u30c8\u30ea\u30fc\u306f\u3001\u6295\u7a3f\u306b\u95a2\u3059\u308b\u3055\u307e\u3056\u307e\u306a\u30af\u30a8\u30ea\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u5b9a\u7fa9\u3057\u3001\u4e8b\u524d\u306b\u5b9a\u7fa9\u3055\u308c\u305f\u30da\u30fc\u30b8\u3068\u30ea\u30df\u30c3\u30c8\u3092\u4f7f\u7528\u3057\u3066\u6295\u7a3f\u4e00\u89a7\u3092\u53d6\u5f97\u3059\u308b\u30af\u30a8\u30ea\u3092\u542b\u307f\u307e\u3059\u3002"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-tsx",children:'import { keepPreviousData, queryOptions } from "@tanstack/react-query";\nimport { getPosts } from "./get-posts";\n\nexport const postQueries = {\n all: () => ["posts"],\n lists: () => [...postQueries.all(), "list"],\n list: (page: number, limit: number) =>\n queryOptions({\n queryKey: [...postQueries.lists(), page, limit],\n queryFn: () => getPosts(page, limit),\n placeholderData: keepPreviousData,\n }),\n};\n'})}),"\n",(0,s.jsx)(n.h3,{id:"3-\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u30b3\u30fc\u30c9\u3067\u306e\u4f7f\u7528",children:"3. \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u30b3\u30fc\u30c9\u3067\u306e\u4f7f\u7528"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-tsx",metastring:'title="@/pages/home/ui/index.tsx"',children:'export const HomePage = () => {\n const itemsOnScreen = DEFAULT_ITEMS_ON_SCREEN;\n const [page, setPage] = usePageParam(DEFAULT_PAGE);\n const { data, isFetching, isLoading } = useQuery(\n postApi.postQueries.list(page, itemsOnScreen),\n );\n return (\n <>\n setPage(page)}\n page={page}\n count={data?.totalPages}\n variant="outlined"\n color="primary"\n />\n \n \n );\n};\n'})}),"\n",(0,s.jsx)(n.admonition,{type:"note",children:(0,s.jsx)(n.p,{children:"\u4f8b\u306f\u7c21\u7565\u5316\u3055\u308c\u3066\u3044\u308b\u3002"})}),"\n",(0,s.jsxs)(n.h2,{id:"\u30af\u30a8\u30ea\u7ba1\u7406\u7528\u306equeryprovider",children:["\u30af\u30a8\u30ea\u7ba1\u7406\u7528\u306e",(0,s.jsx)(n.code,{children:"QueryProvider"})]}),"\n",(0,s.jsxs)(n.p,{children:["\u3053\u306e\u30ac\u30a4\u30c9\u3067\u306f\u3001",(0,s.jsx)(n.code,{children:"QueryProvider"}),"\u3092\u3069\u306e\u3088\u3046\u306b\u69cb\u6210\u3059\u308b\u3079\u304d\u304b\u3092\u8aac\u660e\u3057\u307e\u3059\u3002"]}),"\n",(0,s.jsxs)(n.h3,{id:"1-queryprovider\u306e\u4f5c\u6210",children:["1. ",(0,s.jsx)(n.code,{children:"QueryProvider"}),"\u306e\u4f5c\u6210"]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"query-provider.tsx"}),"\u30d5\u30a1\u30a4\u30eb\u306f",(0,s.jsx)(n.code,{children:"@/app/providers/query-provider.tsx"}),"\u306b\u3042\u308a\u307e\u3059\u3002"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-tsx",metastring:'title="@/app/providers/query-provider.tsx"',children:'import { QueryClient, QueryClientProvider } from "@tanstack/react-query";\nimport { ReactQueryDevtools } from "@tanstack/react-query-devtools";\nimport { ReactNode } from "react";\n\ntype Props = {\n children: ReactNode;\n client: QueryClient;\n};\n\nexport const QueryProvider = ({ client, children }: Props) => {\n return (\n \n {children}\n \n \n );\n};\n'})}),"\n",(0,s.jsxs)(n.h3,{id:"2-queryclient\u306e\u4f5c\u6210",children:["2. ",(0,s.jsx)(n.code,{children:"QueryClient"}),"\u306e\u4f5c\u6210"]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"QueryClient"}),"\u306fAPI\u30af\u30a8\u30ea\u3092\u7ba1\u7406\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u308b\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3067\u3059\u3002",(0,s.jsx)(n.code,{children:"query-client.ts"}),"\u30d5\u30a1\u30a4\u30eb\u306f",(0,s.jsx)(n.code,{children:"@/shared/api/query-client.ts"}),"\u306b\u3042\u308a\u307e\u3059\u3002",(0,s.jsx)(n.code,{children:"QueryClient"}),"\u306f\u30af\u30a8\u30ea\u30ad\u30e3\u30c3\u30b7\u30f3\u30b0\u7528\u306e\u7279\u5b9a\u306e\u8a2d\u5b9a\u3067\u4f5c\u6210\u3055\u308c\u307e\u3059\u3002"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-tsx",metastring:'title="@/shared/api/query-client.ts"',children:'import { QueryClient } from "@tanstack/react-query";\n\nexport const queryClient = new QueryClient({\n defaultOptions: {\n queries: {\n staleTime: 5 * 60 * 1000,\n gcTime: 5 * 60 * 1000,\n },\n },\n});\n'})}),"\n",(0,s.jsx)(n.h2,{id:"\u30b3\u30fc\u30c9\u751f\u6210",children:"\u30b3\u30fc\u30c9\u751f\u6210"}),"\n",(0,s.jsxs)(n.p,{children:["\u81ea\u52d5\u30b3\u30fc\u30c9\u751f\u6210\u306e\u305f\u3081\u306e\u30c4\u30fc\u30eb\u304c\u5b58\u5728\u3057\u307e\u3059\u304c\u3001\u3053\u308c\u3089\u306f\u4e0a\u8a18\u306e\u3088\u3046\u306b\u8a2d\u5b9a\u53ef\u80fd\u306a\u3082\u306e\u3068\u6bd4\u8f03\u3057\u3066\u67d4\u8edf\u6027\u304c\u4f4e\u3044\u3067\u3059\u3002Swagger\u30d5\u30a1\u30a4\u30eb\u304c\u9069\u5207\u306b\u69cb\u9020\u5316\u3055\u308c\u3066\u3044\u308b\u5834\u5408\u3001\u3053\u308c\u3089\u306e\u30c4\u30fc\u30eb\u306e1\u3064\u3092\u4f7f\u7528\u3057\u3066",(0,s.jsx)(n.code,{children:"@/shared/api"}),"\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u5185\u306e\u3059\u3079\u3066\u306e\u30b3\u30fc\u30c9\u3092\u751f\u6210\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002"]}),"\n",(0,s.jsx)(n.h2,{id:"rq\u306e\u6574\u7406\u306b\u95a2\u3059\u308b\u8ffd\u52a0\u306e\u30a2\u30c9\u30d0\u30a4\u30b9",children:"RQ\u306e\u6574\u7406\u306b\u95a2\u3059\u308b\u8ffd\u52a0\u306e\u30a2\u30c9\u30d0\u30a4\u30b9"}),"\n",(0,s.jsx)(n.h3,{id:"api\u30af\u30e9\u30a4\u30a2\u30f3\u30c8",children:"API\u30af\u30e9\u30a4\u30a2\u30f3\u30c8"}),"\n",(0,s.jsx)(n.p,{children:"\u5171\u6709\u5c64\u3067\u3042\u308bshared\u5c64\u3067\u30ab\u30b9\u30bf\u30e0\u306eAPI\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u30af\u30e9\u30b9\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3067\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u5185\u3067\u306eAPI\u8a2d\u5b9a\u3084API\u64cd\u4f5c\u3092\u6a19\u6e96\u5316\u3067\u304d\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u30ed\u30b0\u8a18\u9332\u3001\u30d8\u30c3\u30c0\u30fc\u3001\u304a\u3088\u3073\u30c7\u30fc\u30bf\u4ea4\u63db\u5f62\u5f0f\uff08\u4f8b: JSON\u3084XML\uff09\u3092\u4e00\u5143\u7ba1\u7406\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u3053\u306e\u30a2\u30d7\u30ed\u30fc\u30c1\u306b\u3088\u308a\u3001API\u3068\u306e\u9023\u643a\u306e\u5909\u66f4\u3084\u66f4\u65b0\u304c\u7c21\u5358\u306b\u306a\u308a\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30e1\u30f3\u30c6\u30ca\u30f3\u30b9\u3084\u958b\u767a\u304c\u5bb9\u6613\u306b\u306a\u308a\u307e\u3059\u3002"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-tsx",metastring:'title="@/shared/api/api-client.ts"',children:'import { API_URL } from "@/shared/config";\n\nexport class ApiClient {\n private baseUrl: string;\n\n constructor(url: string) {\n this.baseUrl = url;\n }\n\n async handleResponse(response: Response): Promise {\n if (!response.ok) {\n throw new Error(`HTTP error! Status: ${response.status}`);\n }\n\n try {\n return await response.json();\n } catch (error) {\n throw new Error("Error parsing JSON response");\n }\n }\n\n public async get(\n endpoint: string,\n queryParams?: Record,\n ): Promise {\n const url = new URL(endpoint, this.baseUrl);\n\n if (queryParams) {\n Object.entries(queryParams).forEach(([key, value]) => {\n url.searchParams.append(key, value.toString());\n });\n }\n const response = await fetch(url.toString(), {\n method: "GET",\n headers: {\n "Content-Type": "application/json",\n },\n });\n\n return this.handleResponse(response);\n }\n\n public async post>(\n endpoint: string,\n body: TData,\n ): Promise {\n const response = await fetch(`${this.baseUrl}${endpoint}`, {\n method: "POST",\n headers: {\n "Content-Type": "application/json",\n },\n body: JSON.stringify(body),\n });\n\n return this.handleResponse(response);\n }\n}\n\nexport const apiClient = new ApiClient(API_URL);\n'})}),"\n",(0,s.jsx)(n.h2,{id:"see-also",children:"\u53c2\u7167"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://tkdodo.eu/blog/the-query-options-api",children:"The Query Options API"})}),"\n"]})]})}function u(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(c,{...e})}):c(e)}},1100:(e,n,t)=>{t.d(n,{R:()=>o,x:()=>a});var s=t(758);const i={},r=s.createContext(i);function o(e){const n=s.useContext(r);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:o(e.components),s.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/ja/assets/js/43481703.fa5355bf.js b/ja/assets/js/43481703.7a66fd45.js similarity index 98% rename from ja/assets/js/43481703.fa5355bf.js rename to ja/assets/js/43481703.7a66fd45.js index 325b14fb79..dbfe5dd0a4 100644 --- a/ja/assets/js/43481703.fa5355bf.js +++ b/ja/assets/js/43481703.7a66fd45.js @@ -1 +1 @@ -"use strict";(self.webpackChunk_feature_sliced_documentation=self.webpackChunk_feature_sliced_documentation||[]).push([[971],{1928:(e,t,n)=>{n.d(t,{Ay:()=>u,RM:()=>o});var i=n(6070),s=n(1100),r=(n(758),n(6783)),a=n(7765);const d=e=>{let{ticket:t}=e;const n=`https://github.com/feature-sliced/documentation/issues/${t}`;return(0,i.jsxs)("div",{children:[(0,i.jsx)("p",{children:(0,a.T)({id:"shared.wip.title"})}),(0,i.jsx)("p",{children:(0,a.T)({id:"shared.wip.subtitle"})}),(0,i.jsxs)("ul",{children:[(0,i.jsxs)("li",{children:[(0,a.T)({id:"shared.wip.var.feedback.base"}),(0,i.jsx)(r.A,{to:n,children:(0,a.T)({id:"shared.wip.var.feedback.link"})})]}),(0,i.jsxs)("li",{children:[(0,a.T)({id:"shared.wip.var.material.base"}),(0,i.jsx)(r.A,{to:"https://t.me/feature_sliced",children:(0,a.T)({id:"shared.wip.var.material.link"})})]}),(0,i.jsxs)("li",{children:[(0,a.T)({id:"shared.wip.var.contribute.base"}),(0,i.jsx)(r.A,{to:"https://github.com/feature-sliced/documentation/blob/master/CONTRIBUTING.md",children:(0,a.T)({id:"shared.wip.var.contribute.link"})})]})]}),(0,i.jsx)("br",{}),(0,i.jsx)("p",{children:(0,i.jsx)("i",{children:"\ud83c\udf70 Stay tuned!"})})]})},o=[];function c(e){const t={admonition:"admonition",...(0,s.R)(),...e.components};return(0,i.jsx)(t.admonition,{title:"WIP",type:"caution",children:(0,i.jsx)(d,{ticket:e.ticket})})}function u(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,i.jsx)(t,{...e,children:(0,i.jsx)(c,{...e})}):c(e)}},1132:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>d,default:()=>p,frontMatter:()=>a,metadata:()=>o,toc:()=>u});var i=n(6070),s=n(1100),r=n(1928);const a={sidebar_position:5,sidebar_class_name:"sidebar-item--wip"},d="\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u306e\u30b7\u30b0\u30ca\u30eb",o={id:"about/understanding/signals",title:"\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u306e\u30b7\u30b0\u30ca\u30eb",description:"",source:"@site/i18n/ja/docusaurus-plugin-content-docs/current/about/understanding/signals.mdx",sourceDirName:"about/understanding",slug:"/about/understanding/signals",permalink:"/ja/docs/about/understanding/signals",draft:!1,unlisted:!1,editUrl:"https://github.com/feature-sliced/documentation/edit/master/i18n/ja/docusaurus-plugin-content-docs/current/about/understanding/signals.mdx",tags:[],version:"current",lastUpdatedAt:1727607766e3,sidebarPosition:5,frontMatter:{sidebar_position:5,sidebar_class_name:"sidebar-item--wip"},sidebar:"aboutSidebar",previous:{title:"\u30cd\u30fc\u30df\u30f3\u30b0",permalink:"/ja/docs/about/understanding/naming"},next:{title:"\u62bd\u8c61\u5316",permalink:"/ja/docs/about/understanding/abstractions"}},c={},u=[...r.RM];function l(e){const t={h1:"h1",header:"header",...(0,s.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(t.header,{children:(0,i.jsx)(t.h1,{id:"\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u306e\u30b7\u30b0\u30ca\u30eb",children:"\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u306e\u30b7\u30b0\u30ca\u30eb"})}),"\n",(0,i.jsx)(r.Ay,{ticket:"194"})]})}function p(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,i.jsx)(t,{...e,children:(0,i.jsx)(l,{...e})}):l(e)}},1100:(e,t,n)=>{n.d(t,{R:()=>a,x:()=>d});var i=n(758);const s={},r=i.createContext(s);function a(e){const t=i.useContext(r);return i.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function d(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:a(e.components),i.createElement(r.Provider,{value:t},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunk_feature_sliced_documentation=self.webpackChunk_feature_sliced_documentation||[]).push([[971],{1928:(e,t,n)=>{n.d(t,{Ay:()=>u,RM:()=>o});var i=n(6070),s=n(1100),r=(n(758),n(6783)),a=n(7765);const d=e=>{let{ticket:t}=e;const n=`https://github.com/feature-sliced/documentation/issues/${t}`;return(0,i.jsxs)("div",{children:[(0,i.jsx)("p",{children:(0,a.T)({id:"shared.wip.title"})}),(0,i.jsx)("p",{children:(0,a.T)({id:"shared.wip.subtitle"})}),(0,i.jsxs)("ul",{children:[(0,i.jsxs)("li",{children:[(0,a.T)({id:"shared.wip.var.feedback.base"}),(0,i.jsx)(r.A,{to:n,children:(0,a.T)({id:"shared.wip.var.feedback.link"})})]}),(0,i.jsxs)("li",{children:[(0,a.T)({id:"shared.wip.var.material.base"}),(0,i.jsx)(r.A,{to:"https://t.me/feature_sliced",children:(0,a.T)({id:"shared.wip.var.material.link"})})]}),(0,i.jsxs)("li",{children:[(0,a.T)({id:"shared.wip.var.contribute.base"}),(0,i.jsx)(r.A,{to:"https://github.com/feature-sliced/documentation/blob/master/CONTRIBUTING.md",children:(0,a.T)({id:"shared.wip.var.contribute.link"})})]})]}),(0,i.jsx)("br",{}),(0,i.jsx)("p",{children:(0,i.jsx)("i",{children:"\ud83c\udf70 Stay tuned!"})})]})},o=[];function c(e){const t={admonition:"admonition",...(0,s.R)(),...e.components};return(0,i.jsx)(t.admonition,{title:"WIP",type:"caution",children:(0,i.jsx)(d,{ticket:e.ticket})})}function u(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,i.jsx)(t,{...e,children:(0,i.jsx)(c,{...e})}):c(e)}},1132:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>d,default:()=>p,frontMatter:()=>a,metadata:()=>o,toc:()=>u});var i=n(6070),s=n(1100),r=n(1928);const a={sidebar_position:5,sidebar_class_name:"sidebar-item--wip"},d="\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u306e\u30b7\u30b0\u30ca\u30eb",o={id:"about/understanding/signals",title:"\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u306e\u30b7\u30b0\u30ca\u30eb",description:"",source:"@site/i18n/ja/docusaurus-plugin-content-docs/current/about/understanding/signals.mdx",sourceDirName:"about/understanding",slug:"/about/understanding/signals",permalink:"/ja/docs/about/understanding/signals",draft:!1,unlisted:!1,editUrl:"https://github.com/feature-sliced/documentation/edit/master/i18n/ja/docusaurus-plugin-content-docs/current/about/understanding/signals.mdx",tags:[],version:"current",lastUpdatedAt:1728325386e3,sidebarPosition:5,frontMatter:{sidebar_position:5,sidebar_class_name:"sidebar-item--wip"},sidebar:"aboutSidebar",previous:{title:"\u30cd\u30fc\u30df\u30f3\u30b0",permalink:"/ja/docs/about/understanding/naming"},next:{title:"\u62bd\u8c61\u5316",permalink:"/ja/docs/about/understanding/abstractions"}},c={},u=[...r.RM];function l(e){const t={h1:"h1",header:"header",...(0,s.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(t.header,{children:(0,i.jsx)(t.h1,{id:"\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u306e\u30b7\u30b0\u30ca\u30eb",children:"\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u306e\u30b7\u30b0\u30ca\u30eb"})}),"\n",(0,i.jsx)(r.Ay,{ticket:"194"})]})}function p(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,i.jsx)(t,{...e,children:(0,i.jsx)(l,{...e})}):l(e)}},1100:(e,t,n)=>{n.d(t,{R:()=>a,x:()=>d});var i=n(758);const s={},r=i.createContext(s);function a(e){const t=i.useContext(r);return i.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function d(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:a(e.components),i.createElement(r.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/ja/assets/js/44843890.26a031cf.js b/ja/assets/js/44843890.74a3b667.js similarity index 97% rename from ja/assets/js/44843890.26a031cf.js rename to ja/assets/js/44843890.74a3b667.js index 72de6aa3eb..3cfc3ab96c 100644 --- a/ja/assets/js/44843890.26a031cf.js +++ b/ja/assets/js/44843890.74a3b667.js @@ -1 +1 @@ -"use strict";(self.webpackChunk_feature_sliced_documentation=self.webpackChunk_feature_sliced_documentation||[]).push([[3705],{1928:(e,i,s)=>{s.d(i,{Ay:()=>u,RM:()=>a});var t=s(6070),n=s(1100),r=(s(758),s(6783)),d=s(7765);const o=e=>{let{ticket:i}=e;const s=`https://github.com/feature-sliced/documentation/issues/${i}`;return(0,t.jsxs)("div",{children:[(0,t.jsx)("p",{children:(0,d.T)({id:"shared.wip.title"})}),(0,t.jsx)("p",{children:(0,d.T)({id:"shared.wip.subtitle"})}),(0,t.jsxs)("ul",{children:[(0,t.jsxs)("li",{children:[(0,d.T)({id:"shared.wip.var.feedback.base"}),(0,t.jsx)(r.A,{to:s,children:(0,d.T)({id:"shared.wip.var.feedback.link"})})]}),(0,t.jsxs)("li",{children:[(0,d.T)({id:"shared.wip.var.material.base"}),(0,t.jsx)(r.A,{to:"https://t.me/feature_sliced",children:(0,d.T)({id:"shared.wip.var.material.link"})})]}),(0,t.jsxs)("li",{children:[(0,d.T)({id:"shared.wip.var.contribute.base"}),(0,t.jsx)(r.A,{to:"https://github.com/feature-sliced/documentation/blob/master/CONTRIBUTING.md",children:(0,d.T)({id:"shared.wip.var.contribute.link"})})]})]}),(0,t.jsx)("br",{}),(0,t.jsx)("p",{children:(0,t.jsx)("i",{children:"\ud83c\udf70 Stay tuned!"})})]})},a=[];function c(e){const i={admonition:"admonition",...(0,n.R)(),...e.components};return(0,t.jsx)(i.admonition,{title:"WIP",type:"caution",children:(0,t.jsx)(o,{ticket:e.ticket})})}function u(e={}){const{wrapper:i}={...(0,n.R)(),...e.components};return i?(0,t.jsx)(i,{...e,children:(0,t.jsx)(c,{...e})}):c(e)}},4135:(e,i,s)=>{s.r(i),s.d(i,{assets:()=>c,contentTitle:()=>o,default:()=>p,frontMatter:()=>d,metadata:()=>a,toc:()=>u});var t=s(6070),n=s(1100),r=s(1928);const d={sidebar_position:3,sidebar_class_name:"sidebar-item--wip"},o="\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0",a={id:"guides/issues/routes",title:"\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0",description:"\u72b6\u6cc1",source:"@site/i18n/ja/docusaurus-plugin-content-docs/current/guides/issues/routes.mdx",sourceDirName:"guides/issues",slug:"/guides/issues/routes",permalink:"/ja/docs/guides/issues/routes",draft:!1,unlisted:!1,editUrl:"https://github.com/feature-sliced/documentation/edit/master/i18n/ja/docusaurus-plugin-content-docs/current/guides/issues/routes.mdx",tags:[],version:"current",lastUpdatedAt:1727607766e3,sidebarPosition:3,frontMatter:{sidebar_position:3,sidebar_class_name:"sidebar-item--wip"},sidebar:"guidesSidebar",previous:{title:"\u30c7\u30bb\u30b0\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3",permalink:"/ja/docs/guides/issues/desegmented"},next:{title:"\u30af\u30ed\u30b9\u30a4\u30f3\u30dd\u30fc\u30c8",permalink:"/ja/docs/guides/issues/cross-imports"}},c={},u=[...r.RM,{value:"\u72b6\u6cc1",id:"situation",level:2},{value:"\u554f\u984c",id:"problem",level:2},{value:"\u7121\u8996\u3059\u308b\u5834\u5408",id:"if-you-ignore-it",level:2},{value:"\u89e3\u6c7a\u7b56",id:"solution",level:2}];function l(e){const i={code:"code",h1:"h1",h2:"h2",header:"header",p:"p",pre:"pre",...(0,n.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(i.header,{children:(0,t.jsx)(i.h1,{id:"\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0",children:"\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0"})}),"\n",(0,t.jsx)(r.Ay,{ticket:"169"}),"\n",(0,t.jsx)(i.h2,{id:"situation",children:"\u72b6\u6cc1"}),"\n",(0,t.jsx)(i.p,{children:"\u30da\u30fc\u30b8\u3078\u306eURL\u304c\u3001pages\u5c64\u3088\u308a\u4e0b\u306e\u5c64\u306b\u30cf\u30fc\u30c9\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u3055\u308c\u3066\u3044\u307e\u3059\u3002"}),"\n",(0,t.jsx)(i.pre,{children:(0,t.jsx)(i.code,{className:"language-tsx",metastring:'title="entities/post/card"',children:"\n\n \n ...\n\n"})}),"\n",(0,t.jsx)(i.h2,{id:"problem",children:"\u554f\u984c"}),"\n",(0,t.jsx)(i.p,{children:"URL\u304c\u30da\u30fc\u30b8\u5c64\u306b\u96c6\u4e2d\u3057\u3066\u304a\u3089\u305a\u3001\u8cac\u4efb\u7bc4\u56f2\u306b\u304a\u3044\u3066\u9069\u5207\u306a\u5834\u6240\u306b\u914d\u7f6e\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002"}),"\n",(0,t.jsx)(i.h2,{id:"if-you-ignore-it",children:"\u7121\u8996\u3059\u308b\u5834\u5408"}),"\n",(0,t.jsx)(i.p,{children:"URL\u3092\u5909\u66f4\u3059\u308b\u969b\u306b\u3001URL\uff08\u304a\u3088\u3073URL/\u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u306e\u30ed\u30b8\u30c3\u30af\uff09\u304cpages\u5c64\u4ee5\u5916\u306e\u3059\u3079\u3066\u306e\u5c64\u306b\u5b58\u5728\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308b\u3053\u3068\u3092\u8003\u616e\u3057\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002"}),"\n",(0,t.jsx)(i.p,{children:"\u307e\u305f\u3001\u3053\u308c\u306f\u5358\u7d14\u306a\u5546\u54c1\u30ab\u30fc\u30c9\u3067\u3055\u3048\u3001\u30da\u30fc\u30b8\u304b\u3089\u306e\u4e00\u90e8\u306e\u8cac\u4efb\u3092\u5f15\u304d\u53d7\u3051\u308b\u3053\u3068\u3092\u610f\u5473\u3057\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u5168\u4f53\u306b\u30ed\u30b8\u30c3\u30af\u304c\u5206\u6563\u3057\u3066\u3057\u307e\u3044\u307e\u3059\u3002"}),"\n",(0,t.jsx)(i.h2,{id:"solution",children:"\u89e3\u6c7a\u7b56"}),"\n",(0,t.jsx)(i.p,{children:"URL\u3084\u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u306e\u51e6\u7406\u3092\u30da\u30fc\u30b8\u5c64\u304a\u3088\u3073\u305d\u308c\u4ee5\u4e0a\u306e\u5c64\u3067\u5b9a\u7fa9\u3059\u308b\u3053\u3068\u3067\u3059\u3002"}),"\n",(0,t.jsx)(i.p,{children:"URL\u3092\u4e0b\u5c64\u306e\u5c64\u306b\u306f\u3001\u30b3\u30f3\u30dd\u30b8\u30b7\u30e7\u30f3/\u30d7\u30ed\u30d1\u30c6\u30a3/\u30d5\u30a1\u30af\u30c8\u30ea\u30fc\u3092\u901a\u3058\u3066\u6e21\u3059\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002"})]})}function p(e={}){const{wrapper:i}={...(0,n.R)(),...e.components};return i?(0,t.jsx)(i,{...e,children:(0,t.jsx)(l,{...e})}):l(e)}},1100:(e,i,s)=>{s.d(i,{R:()=>d,x:()=>o});var t=s(758);const n={},r=t.createContext(n);function d(e){const i=t.useContext(r);return t.useMemo((function(){return"function"==typeof e?e(i):{...i,...e}}),[i,e])}function o(e){let i;return i=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:d(e.components),t.createElement(r.Provider,{value:i},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunk_feature_sliced_documentation=self.webpackChunk_feature_sliced_documentation||[]).push([[3705],{1928:(e,i,s)=>{s.d(i,{Ay:()=>u,RM:()=>a});var t=s(6070),n=s(1100),r=(s(758),s(6783)),d=s(7765);const o=e=>{let{ticket:i}=e;const s=`https://github.com/feature-sliced/documentation/issues/${i}`;return(0,t.jsxs)("div",{children:[(0,t.jsx)("p",{children:(0,d.T)({id:"shared.wip.title"})}),(0,t.jsx)("p",{children:(0,d.T)({id:"shared.wip.subtitle"})}),(0,t.jsxs)("ul",{children:[(0,t.jsxs)("li",{children:[(0,d.T)({id:"shared.wip.var.feedback.base"}),(0,t.jsx)(r.A,{to:s,children:(0,d.T)({id:"shared.wip.var.feedback.link"})})]}),(0,t.jsxs)("li",{children:[(0,d.T)({id:"shared.wip.var.material.base"}),(0,t.jsx)(r.A,{to:"https://t.me/feature_sliced",children:(0,d.T)({id:"shared.wip.var.material.link"})})]}),(0,t.jsxs)("li",{children:[(0,d.T)({id:"shared.wip.var.contribute.base"}),(0,t.jsx)(r.A,{to:"https://github.com/feature-sliced/documentation/blob/master/CONTRIBUTING.md",children:(0,d.T)({id:"shared.wip.var.contribute.link"})})]})]}),(0,t.jsx)("br",{}),(0,t.jsx)("p",{children:(0,t.jsx)("i",{children:"\ud83c\udf70 Stay tuned!"})})]})},a=[];function c(e){const i={admonition:"admonition",...(0,n.R)(),...e.components};return(0,t.jsx)(i.admonition,{title:"WIP",type:"caution",children:(0,t.jsx)(o,{ticket:e.ticket})})}function u(e={}){const{wrapper:i}={...(0,n.R)(),...e.components};return i?(0,t.jsx)(i,{...e,children:(0,t.jsx)(c,{...e})}):c(e)}},4135:(e,i,s)=>{s.r(i),s.d(i,{assets:()=>c,contentTitle:()=>o,default:()=>p,frontMatter:()=>d,metadata:()=>a,toc:()=>u});var t=s(6070),n=s(1100),r=s(1928);const d={sidebar_position:3,sidebar_class_name:"sidebar-item--wip"},o="\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0",a={id:"guides/issues/routes",title:"\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0",description:"\u72b6\u6cc1",source:"@site/i18n/ja/docusaurus-plugin-content-docs/current/guides/issues/routes.mdx",sourceDirName:"guides/issues",slug:"/guides/issues/routes",permalink:"/ja/docs/guides/issues/routes",draft:!1,unlisted:!1,editUrl:"https://github.com/feature-sliced/documentation/edit/master/i18n/ja/docusaurus-plugin-content-docs/current/guides/issues/routes.mdx",tags:[],version:"current",lastUpdatedAt:1728325386e3,sidebarPosition:3,frontMatter:{sidebar_position:3,sidebar_class_name:"sidebar-item--wip"},sidebar:"guidesSidebar",previous:{title:"\u30c7\u30bb\u30b0\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3",permalink:"/ja/docs/guides/issues/desegmented"},next:{title:"\u30af\u30ed\u30b9\u30a4\u30f3\u30dd\u30fc\u30c8",permalink:"/ja/docs/guides/issues/cross-imports"}},c={},u=[...r.RM,{value:"\u72b6\u6cc1",id:"situation",level:2},{value:"\u554f\u984c",id:"problem",level:2},{value:"\u7121\u8996\u3059\u308b\u5834\u5408",id:"if-you-ignore-it",level:2},{value:"\u89e3\u6c7a\u7b56",id:"solution",level:2}];function l(e){const i={code:"code",h1:"h1",h2:"h2",header:"header",p:"p",pre:"pre",...(0,n.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(i.header,{children:(0,t.jsx)(i.h1,{id:"\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0",children:"\u30eb\u30fc\u30c6\u30a3\u30f3\u30b0"})}),"\n",(0,t.jsx)(r.Ay,{ticket:"169"}),"\n",(0,t.jsx)(i.h2,{id:"situation",children:"\u72b6\u6cc1"}),"\n",(0,t.jsx)(i.p,{children:"\u30da\u30fc\u30b8\u3078\u306eURL\u304c\u3001pages\u5c64\u3088\u308a\u4e0b\u306e\u5c64\u306b\u30cf\u30fc\u30c9\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u3055\u308c\u3066\u3044\u307e\u3059\u3002"}),"\n",(0,t.jsx)(i.pre,{children:(0,t.jsx)(i.code,{className:"language-tsx",metastring:'title="entities/post/card"',children:"\n\n \n ...\n\n"})}),"\n",(0,t.jsx)(i.h2,{id:"problem",children:"\u554f\u984c"}),"\n",(0,t.jsx)(i.p,{children:"URL\u304c\u30da\u30fc\u30b8\u5c64\u306b\u96c6\u4e2d\u3057\u3066\u304a\u3089\u305a\u3001\u8cac\u4efb\u7bc4\u56f2\u306b\u304a\u3044\u3066\u9069\u5207\u306a\u5834\u6240\u306b\u914d\u7f6e\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002"}),"\n",(0,t.jsx)(i.h2,{id:"if-you-ignore-it",children:"\u7121\u8996\u3059\u308b\u5834\u5408"}),"\n",(0,t.jsx)(i.p,{children:"URL\u3092\u5909\u66f4\u3059\u308b\u969b\u306b\u3001URL\uff08\u304a\u3088\u3073URL/\u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u306e\u30ed\u30b8\u30c3\u30af\uff09\u304cpages\u5c64\u4ee5\u5916\u306e\u3059\u3079\u3066\u306e\u5c64\u306b\u5b58\u5728\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308b\u3053\u3068\u3092\u8003\u616e\u3057\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002"}),"\n",(0,t.jsx)(i.p,{children:"\u307e\u305f\u3001\u3053\u308c\u306f\u5358\u7d14\u306a\u5546\u54c1\u30ab\u30fc\u30c9\u3067\u3055\u3048\u3001\u30da\u30fc\u30b8\u304b\u3089\u306e\u4e00\u90e8\u306e\u8cac\u4efb\u3092\u5f15\u304d\u53d7\u3051\u308b\u3053\u3068\u3092\u610f\u5473\u3057\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u5168\u4f53\u306b\u30ed\u30b8\u30c3\u30af\u304c\u5206\u6563\u3057\u3066\u3057\u307e\u3044\u307e\u3059\u3002"}),"\n",(0,t.jsx)(i.h2,{id:"solution",children:"\u89e3\u6c7a\u7b56"}),"\n",(0,t.jsx)(i.p,{children:"URL\u3084\u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u306e\u51e6\u7406\u3092\u30da\u30fc\u30b8\u5c64\u304a\u3088\u3073\u305d\u308c\u4ee5\u4e0a\u306e\u5c64\u3067\u5b9a\u7fa9\u3059\u308b\u3053\u3068\u3067\u3059\u3002"}),"\n",(0,t.jsx)(i.p,{children:"URL\u3092\u4e0b\u5c64\u306e\u5c64\u306b\u306f\u3001\u30b3\u30f3\u30dd\u30b8\u30b7\u30e7\u30f3/\u30d7\u30ed\u30d1\u30c6\u30a3/\u30d5\u30a1\u30af\u30c8\u30ea\u30fc\u3092\u901a\u3058\u3066\u6e21\u3059\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002"})]})}function p(e={}){const{wrapper:i}={...(0,n.R)(),...e.components};return i?(0,t.jsx)(i,{...e,children:(0,t.jsx)(l,{...e})}):l(e)}},1100:(e,i,s)=>{s.d(i,{R:()=>d,x:()=>o});var t=s(758);const n={},r=t.createContext(n);function d(e){const i=t.useContext(r);return t.useMemo((function(){return"function"==typeof e?e(i):{...i,...e}}),[i,e])}function o(e){let i;return i=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:d(e.components),t.createElement(r.Provider,{value:i},e.children)}}}]); \ No newline at end of file diff --git a/ja/assets/js/45dd4bf3.af1ba6d7.js b/ja/assets/js/45dd4bf3.945c3c38.js similarity index 99% rename from ja/assets/js/45dd4bf3.af1ba6d7.js rename to ja/assets/js/45dd4bf3.945c3c38.js index acbe658087..a9ab572730 100644 --- a/ja/assets/js/45dd4bf3.af1ba6d7.js +++ b/ja/assets/js/45dd4bf3.945c3c38.js @@ -1 +1 @@ -"use strict";(self.webpackChunk_feature_sliced_documentation=self.webpackChunk_feature_sliced_documentation||[]).push([[1705],{4157:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>o,contentTitle:()=>d,default:()=>p,frontMatter:()=>i,metadata:()=>c,toc:()=>a});var s=t(6070),r=t(1100);const i={sidebar_position:2},d="\u578b",c={id:"guides/examples/types",title:"\u578b",description:"\u3053\u306e\u30ac\u30a4\u30c9\u3067\u306f\u3001TypeScript\u306e\u3088\u3046\u306a\u578b\u4ed8\u304d\u8a00\u8a9e\u306e\u30c7\u30fc\u30bf\u306e\u578b\u3068\u3001\u305d\u308c\u304cFSD\u306b\u3069\u306e\u3088\u3046\u306b\u9069\u5408\u3059\u308b\u304b\u306b\u3064\u3044\u3066\u8aac\u660e\u3057\u307e\u3059\u3002",source:"@site/i18n/ja/docusaurus-plugin-content-docs/current/guides/examples/types.md",sourceDirName:"guides/examples",slug:"/guides/examples/types",permalink:"/ja/docs/guides/examples/types",draft:!1,unlisted:!1,editUrl:"https://github.com/feature-sliced/documentation/edit/master/i18n/ja/docusaurus-plugin-content-docs/current/guides/examples/types.md",tags:[],version:"current",lastUpdatedAt:1727607766e3,sidebarPosition:2,frontMatter:{sidebar_position:2},sidebar:"guidesSidebar",previous:{title:"\u8a8d\u8a3c",permalink:"/ja/docs/guides/examples/auth"},next:{title:"\u30da\u30fc\u30b8\u30ec\u30a4\u30a2\u30a6\u30c8",permalink:"/ja/docs/guides/examples/page-layout"}},o={},a=[{value:"\u30e6\u30fc\u30c6\u30a3\u30ea\u30c6\u30a3\u578b",id:"\u30e6\u30fc\u30c6\u30a3\u30ea\u30c6\u30a3\u578b",level:2},{value:"\u30d3\u30b8\u30cd\u30b9\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u3068\u76f8\u4e92\u53c2\u7167",id:"\u30d3\u30b8\u30cd\u30b9\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u3068\u76f8\u4e92\u53c2\u7167",level:2},{value:"\u30c7\u30fc\u30bf\u8ee2\u9001\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\uff08DTO\uff09\u3068\u30de\u30c3\u30d1\u30fc",id:"data-transfer-objects-and-mappers",level:2},{value:"DTO\u3092\u3069\u3053\u306b\u7f6e\u304f\u304b",id:"dto\u3092\u3069\u3053\u306b\u7f6e\u304f\u304b",level:3},{value:"\u30de\u30c3\u30d1\u30fc\u3092\u3069\u3053\u306b\u7f6e\u304f\u304b",id:"\u30de\u30c3\u30d1\u30fc\u3092\u3069\u3053\u306b\u7f6e\u304f\u304b",level:3},{value:"\u30cd\u30b9\u30c8\u3055\u308c\u305fDTO\u3092\u3069\u3046\u6271\u3046\u304b",id:"\u30cd\u30b9\u30c8\u3055\u308c\u305fdto\u3092\u3069\u3046\u6271\u3046\u304b",level:3},{value:"\u30b0\u30ed\u30fc\u30d0\u30eb\u306e\u578b\u3068Redux",id:"\u30b0\u30ed\u30fc\u30d0\u30eb\u306e\u578b\u3068redux",level:2},{value:"\u578b\u306e\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\u30b9\u30ad\u30fc\u30de\u3068Zod",id:"\u578b\u306e\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\u30b9\u30ad\u30fc\u30de\u3068zod",level:2},{value:"\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u306e\u30d7\u30ed\u30c3\u30d7\u30b9\u3068\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u306e\u578b\u4ed8\u3051",id:"\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u306e\u30d7\u30ed\u30c3\u30d7\u30b9\u3068\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u306e\u578b\u4ed8\u3051",level:2},{value:"\u74b0\u5883\u5ba3\u8a00\u30d5\u30a1\u30a4\u30eb\uff08*.d.ts\uff09",id:"\u74b0\u5883\u5ba3\u8a00\u30d5\u30a1\u30a4\u30ebdts",level:2},{value:"\u578b\u306e\u81ea\u52d5\u751f\u6210",id:"\u578b\u306e\u81ea\u52d5\u751f\u6210",level:2}];function l(e){const n={a:"a",admonition:"admonition",blockquote:"blockquote",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,r.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.header,{children:(0,s.jsx)(n.h1,{id:"\u578b",children:"\u578b"})}),"\n",(0,s.jsx)(n.p,{children:"\u3053\u306e\u30ac\u30a4\u30c9\u3067\u306f\u3001TypeScript\u306e\u3088\u3046\u306a\u578b\u4ed8\u304d\u8a00\u8a9e\u306e\u30c7\u30fc\u30bf\u306e\u578b\u3068\u3001\u305d\u308c\u304cFSD\u306b\u3069\u306e\u3088\u3046\u306b\u9069\u5408\u3059\u308b\u304b\u306b\u3064\u3044\u3066\u8aac\u660e\u3057\u307e\u3059\u3002"}),"\n",(0,s.jsx)(n.admonition,{type:"info",children:(0,s.jsx)(n.p,{children:"\u3042\u306a\u305f\u306e\u8cea\u554f\u304c\u3053\u306e\u30ac\u30a4\u30c9\u306b\u306a\u3044\u5834\u5408\u306f\u3001\u3053\u306e\u8a18\u4e8b\u306b\u30d5\u30a3\u30fc\u30c9\u30d0\u30c3\u30af\u3092\u6b8b\u3057\u3066\u8cea\u554f\u3092\u6295\u7a3f\u3057\u3066\u304f\u3060\u3055\u3044\uff08\u53f3\u5074\u306e\u9752\u3044\u30dc\u30bf\u30f3\uff09\u3001\u79c1\u305f\u3061\u306f\u3053\u306e\u30ac\u30a4\u30c9\u3092\u62e1\u5f35\u3059\u308b\u53ef\u80fd\u6027\u3092\u691c\u8a0e\u3057\u307e\u3059\uff01"})}),"\n",(0,s.jsx)(n.h2,{id:"\u30e6\u30fc\u30c6\u30a3\u30ea\u30c6\u30a3\u578b",children:"\u30e6\u30fc\u30c6\u30a3\u30ea\u30c6\u30a3\u578b"}),"\n",(0,s.jsx)(n.p,{children:"\u30e6\u30fc\u30c6\u30a3\u30ea\u30c6\u30a3\u578b\u306f\u3001\u7279\u306b\u610f\u5473\u3092\u6301\u305f\u305a\u3001\u901a\u5e38\u306f\u4ed6\u306e\u578b\u3068\u4e00\u7dd2\u306b\u4f7f\u7528\u3055\u308c\u308b\u578b\u3067\u3059\u3002\u4f8b\u3048\u3070"}),"\n",(0,s.jsxs)("figure",{children:[(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-ts",children:"type ArrayValues = T[number];\n"})}),(0,s.jsx)("figcaption",{children:(0,s.jsxs)(n.p,{children:["\u51fa\u5178: ",(0,s.jsx)(n.a,{href:"https://github.com/sindresorhus/type-fest/blob/main/source/array-values.d.ts",children:"https://github.com/sindresorhus/type-fest/blob/main/source/array-values.d.ts"})]})})]}),"\n",(0,s.jsxs)(n.p,{children:["\u30e6\u30fc\u30c6\u30a3\u30ea\u30c6\u30a3\u578b\u3092\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306b\u8ffd\u52a0\u3059\u308b\u306b\u306f\u3001",(0,s.jsx)(n.a,{href:"https://github.com/sindresorhus/type-fest",children:(0,s.jsx)(n.code,{children:"type-fest"})}),"\u306e\u3088\u3046\u306a\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u304b\u3001",(0,s.jsx)(n.code,{children:"shared/lib"}),"\u306b\u72ec\u81ea\u306e\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002\u5fc5\u305a\u3001\u65b0\u3057\u3044\u578b\u3092\u3053\u306e\u30e9\u30a4\u30d6\u30e9\u30ea\u306b\u8ffd\u52a0\u3067\u304d\u308b\u304b\u3001\u3067\u304d\u306a\u3044\u304b\u3092\u660e\u78ba\u306b\u793a\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u4f8b\u3048\u3070\u3001",(0,s.jsx)(n.code,{children:"shared/lib/utility-types"}),"\u3068\u540d\u4ed8\u3051\u3001\u305d\u306e\u4e2d\u306b\u30e6\u30fc\u30c6\u30a3\u30ea\u30c6\u30a3\u578b\u304c\u3042\u306a\u305f\u306e\u30c1\u30fc\u30e0\u306e\u7406\u89e3\u306b\u304a\u3044\u3066\u4f55\u3067\u3042\u308b\u304b\u3092\u8aac\u660e\u3059\u308bREADME\u30d5\u30a1\u30a4\u30eb\u3092\u8ffd\u52a0\u3057\u3066\u304f\u3060\u3055\u3044\u3002"]}),"\n",(0,s.jsx)(n.p,{children:"\u30e6\u30fc\u30c6\u30a3\u30ea\u30c6\u30a3\u578b\u306e\u518d\u5229\u7528\u306e\u53ef\u80fd\u6027\u3092\u904e\u5927\u8a55\u4fa1\u3057\u306a\u3044\u3067\u304f\u3060\u3055\u3044\u3002\u518d\u5229\u7528\u53ef\u80fd\u3067\u3042\u308b\u304b\u3089\u3068\u3044\u3063\u3066\u3001\u5fc5\u305a\u3057\u3082\u518d\u5229\u7528\u3055\u308c\u308b\u308f\u3051\u3067\u306f\u306a\u304f\u3001\u3057\u305f\u304c\u3063\u3066\u3059\u3079\u3066\u306e\u30e6\u30fc\u30c6\u30a3\u30ea\u30c6\u30a3\u578b\u304cShared\u5c64\u306b\u5b58\u5728\u3059\u308b\u5fc5\u8981\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u4e00\u90e8\u306e\u30e6\u30fc\u30c6\u30a3\u30ea\u30c6\u30a3\u578b\u306f\u3001\u4f7f\u7528\u3055\u308c\u308b\u5834\u6240\u306e\u8fd1\u304f\u306b\u7f6e\u304f\u3079\u304d\u3067\u3059\u3002"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["\ud83d\udcc2 pages","\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["\ud83d\udcc2 home","\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["\ud83d\udcc2 api","\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"\ud83d\udcc4 ArrayValues.ts (\u30e6\u30fc\u30c6\u30a3\u30ea\u30c6\u30a3\u578b)"}),"\n",(0,s.jsx)(n.li,{children:"\ud83d\udcc4 getMemoryUsageMetrics.ts (\u3053\u306e\u30e6\u30fc\u30c6\u30a3\u30ea\u30c6\u30a3\u3092\u4f7f\u7528\u3059\u308b\u30b3\u30fc\u30c9)"}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(n.admonition,{type:"warning",children:(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"shared/types"}),"\u30d5\u30a9\u30eb\u30c0\u30fc\u3092\u4f5c\u6210\u3057\u305f\u308a\u3001\u30b9\u30e9\u30a4\u30b9\u306b",(0,s.jsx)(n.code,{children:"types"}),"\u30bb\u30b0\u30e1\u30f3\u30c8\u3092\u8ffd\u52a0\u3059\u308b\u8a98\u60d1\u306b\u8ca0\u3051\u306a\u3044\u3067\u304f\u3060\u3055\u3044\u3002\u300c\u578b\u300d\u3068\u3044\u3046\u30ab\u30c6\u30b4\u30ea\u306f\u300c\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u300d\u3084\u300c\u30d5\u30c3\u30af\u300d\u3068\u540c\u69d8\u306b\u3001\u5185\u5bb9\u3092\u8aac\u660e\u3059\u308b\u3082\u306e\u3067\u3042\u308a\u3001\u76ee\u7684\u3092\u793a\u3059\u3082\u306e\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u30bb\u30b0\u30e1\u30f3\u30c8\u306f\u30b3\u30fc\u30c9\u306e\u76ee\u7684\u3092\u8aac\u660e\u3059\u308b\u3079\u304d\u3067\u3042\u308a\u3001\u305d\u306e\u672c\u8cea\u3092\u8aac\u660e\u3059\u308b\u3079\u304d\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002"]})}),"\n",(0,s.jsx)(n.h2,{id:"\u30d3\u30b8\u30cd\u30b9\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u3068\u76f8\u4e92\u53c2\u7167",children:"\u30d3\u30b8\u30cd\u30b9\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u3068\u76f8\u4e92\u53c2\u7167"}),"\n",(0,s.jsx)(n.p,{children:"\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3067\u6700\u3082\u91cd\u8981\u306a\u578b\u306e\u4e00\u3064\u306f\u3001\u30d3\u30b8\u30cd\u30b9\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u306e\u578b\u3001\u3064\u307e\u308a\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u304c\u6271\u3046\u5b9f\u969b\u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3067\u3059\u3002\u4f8b\u3048\u3070\u3001\u30aa\u30f3\u30e9\u30a4\u30f3\u97f3\u697d\u30b5\u30fc\u30d3\u30b9\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3067\u306f\u3001\u30d3\u30b8\u30cd\u30b9\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u3068\u3057\u3066\u300c\u66f2\u300d(song)\u3084\u300c\u30a2\u30eb\u30d0\u30e0\u300d(album)\u306a\u3069\u304c\u3042\u308a\u307e\u3059\u3002"}),"\n",(0,s.jsx)(n.p,{children:"\u30d3\u30b8\u30cd\u30b9\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u306f\u3001\u3057\u3070\u3057\u3070\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u304b\u3089\u63d0\u4f9b\u3055\u308c\u308b\u305f\u3081\u3001\u6700\u521d\u306e\u30b9\u30c6\u30c3\u30d7\u306f\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u306e\u30ec\u30b9\u30dd\u30f3\u30b9\u3092\u578b\u4ed8\u3051\u3059\u308b\u3053\u3068\u3067\u3059\u3002\u5404\u30a8\u30f3\u30c9\u30dd\u30a4\u30f3\u30c8\u306b\u5bfe\u3057\u3066\u30ea\u30af\u30a8\u30b9\u30c8\u95a2\u6570\u3092\u6301\u3061\u3001\u305d\u306e\u95a2\u6570\u306e\u547c\u3073\u51fa\u3057\u7d50\u679c\u3092\u578b\u4ed8\u3051\u3059\u308b\u306e\u304c\u4fbf\u5229\u3067\u3059\u3002\u578b\u306e\u5b89\u5168\u6027\u3092\u9ad8\u3081\u308b\u305f\u3081\u306b\u3001Zod\u306e\u3088\u3046\u306a\u30b9\u30ad\u30fc\u30de\u691c\u8a3c\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u901a\u3058\u3066\u7d50\u679c\u3092\u901a\u904e\u3055\u305b\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002"}),"\n",(0,s.jsx)(n.p,{children:"\u4f8b\u3048\u3070\u3001\u3059\u3079\u3066\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u3092Shared\u5c64\u306b\u4fdd\u5b58\u3057\u3066\u3044\u308b\u5834\u5408\u3001\u6b21\u306e\u3088\u3046\u306b\u3067\u304d\u307e\u3059\u3002"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-ts",metastring:'title="shared/api/songs.ts"',children:"import type { Artist } from \"./artists\";\n\ninterface Song {\n id: number;\n title: string;\n artists: Array;\n}\n\nexport function listSongs() {\n return fetch('/api/songs').then((res) => res.json() as Promise>);\n}\n"})}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"Song"}),"\u578b\u304c\u4ed6\u306e",(0,s.jsx)(n.code,{children:"Artist"}),"\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u3092\u53c2\u7167\u3057\u3066\u3044\u308b\u3053\u3068\u306b\u6c17\u4ed8\u304f\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002\u3053\u308c\u306f\u30ea\u30af\u30a8\u30b9\u30c8\u3092Shared\u5c64\u306b\u4fdd\u5b58\u3059\u308b\u5229\u70b9\u3067\u3059\u3002\u5b9f\u969b\u306e\u578b\u304c\u76f8\u4e92\u306b\u53c2\u7167\u3055\u308c\u308b\u3053\u3068\u304c\u591a\u3044\u3067\u3059\u3002\u3053\u306e\u95a2\u6570\u3092",(0,s.jsx)(n.code,{children:"entities/song/api"}),"\u306b\u7f6e\u3044\u305f\u5834\u5408\u3001",(0,s.jsx)(n.code,{children:"entities/artist"}),"\u304b\u3089",(0,s.jsx)(n.code,{children:"Artist"}),"\u3092\u5358\u7d14\u306b\u30a4\u30f3\u30dd\u30fc\u30c8\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002\u306a\u305c\u306a\u3089\u3001FSD\u306f\u30b9\u30e9\u30a4\u30b9\u9593\u306e\u30af\u30ed\u30b9\u30a4\u30f3\u30dd\u30fc\u30c8\u3092",(0,s.jsx)(n.a,{href:"/docs/reference/layers#import-rule-on-layers",children:"\u30ec\u30a4\u30e4\u30fc\u306e\u30a4\u30f3\u30dd\u30fc\u30c8\u30eb\u30fc\u30eb"}),"\u306b\u3088\u3063\u3066\u5236\u9650\u3057\u3066\u3044\u308b\u304b\u3089\u3067\u3059\u3002"]}),"\n",(0,s.jsxs)(n.blockquote,{children:["\n",(0,s.jsx)(n.p,{children:"\u30b9\u30e9\u30a4\u30b9\u5185\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u306f\u3001\u4e0b\u5c64\u306b\u3042\u308b\u30b9\u30e9\u30a4\u30b9\u306e\u307f\u3092\u30a4\u30f3\u30dd\u30fc\u30c8\u3067\u304d\u308b\u3002"}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"\u3053\u306e\u554f\u984c\u3092\u89e3\u6c7a\u3059\u308b\u65b9\u6cd5\u306f2\u3064\u3042\u308a\u307e\u3059\u3002"}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"\u578b\u3092\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u5316\u3059\u308b"}),"\n\u578b\u304c\u4ed6\u306e\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u3068\u63a5\u7d9a\u3059\u308b\u305f\u3081\u306e\u30b9\u30ed\u30c3\u30c8\u3068\u3057\u3066\u578b\u5f15\u6570\u3092\u53d7\u3051\u53d6\u308b\u3088\u3046\u306b\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u3055\u3089\u306b\u3001\u3053\u308c\u3089\u306e\u30b9\u30ed\u30c3\u30c8\u306b\u5236\u7d04\u3092\u8ab2\u3059\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002\u4f8b\u3048\u3070"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-ts",metastring:'title="entities/song/model/song.ts"',children:"interface Song {\n id: number;\n title: string;\n artists: Array;\n}\n"})}),"\n",(0,s.jsxs)(n.p,{children:["\u3053\u308c\u306f\u3044\u304f\u3064\u304b\u306e\u578b\u306b\u5bfe\u3057\u3066\u306f\u3046\u307e\u304f\u6a5f\u80fd\u3057\u307e\u3059\u304c\u3001\u6a5f\u80fd\u3057\u306a\u3044\u30b1\u30fc\u30b9\u3082\u3042\u308a\u307e\u3059\u3002",(0,s.jsx)(n.code,{children:"Cart = { items: Array }"}),"\u306e\u3088\u3046\u306a\u5358\u7d14\u306a\u578b\u306f\u3001\u4efb\u610f\u306e\u30d7\u30ed\u30c0\u30af\u30c8\u578b\u3067\u7c21\u5358\u306b\u6a5f\u80fd\u3055\u305b\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u3057\u304b\u3057\u3001",(0,s.jsx)(n.code,{children:"Country"}),"\u3068",(0,s.jsx)(n.code,{children:"City"}),"\u306e\u3088\u3046\u306a\u3088\u308a\u95a2\u9023\u6027\u306e\u9ad8\u3044\u578b\u306f\u3001\u5206\u96e2\u3059\u308b\u306e\u304c\u96e3\u3057\u3044\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"\u30af\u30ed\u30b9\u30a4\u30f3\u30dd\u30fc\u30c8\u3059\u308b\uff08\u6b63\u3057\u304f\uff09"}),"\nFSD\u5185\u3067\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u9593\u306e\u30af\u30ed\u30b9\u30a4\u30f3\u30dd\u30fc\u30c8\u3092\u884c\u3046\u306b\u306f\u3001\u5404\u30b9\u30e9\u30a4\u30b9\u5c02\u7528\u306e\u7279\u5225\u306e\u516c\u958bAPI\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001",(0,s.jsx)(n.code,{children:"song"}),"\uff08\u66f2\uff09\u3001",(0,s.jsx)(n.code,{children:"artist"}),"\uff08\u30a2\u30fc\u30c6\u30a3\u30b9\u30c8\uff09\u3001",(0,s.jsx)(n.code,{children:"playlist"}),"\uff08\u30d7\u30ec\u30a4\u30ea\u30b9\u30c8\uff09\u306e\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u304c\u3042\u308a\u3001\u5f8c\u8005\u306e2\u3064\u304c",(0,s.jsx)(n.code,{children:"song"}),"\u3092\u53c2\u7167\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u5834\u5408\u3001",(0,s.jsx)(n.code,{children:"@x"}),"\u30ce\u30fc\u30c6\u30fc\u30b7\u30e7\u30f3\u3092\u901a\u3058\u3066",(0,s.jsx)(n.code,{children:"song"}),"\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u5185\u306b2\u3064\u306e\u7279\u5225\u306a\u516c\u958bAPI\u3092\u4f5c\u6210\u3067\u304d\u307e\u3059\u3002"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["\ud83d\udcc2 entities","\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["\ud83d\udcc2 song","\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["\ud83d\udcc2 @x","\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["\ud83d\udcc4 artist.ts (\u516c\u958bAPI\u3001",(0,s.jsx)(n.code,{children:"artist"}),"\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u3092\u30a4\u30f3\u30dd\u30fc\u30c8\u3059\u308b)"]}),"\n",(0,s.jsxs)(n.li,{children:["\ud83d\udcc4 playlist.ts (\u516c\u958bAPI\u3001",(0,s.jsx)(n.code,{children:"playlist"}),"\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u3092\u30a4\u30f3\u30dd\u30fc\u30c8\u3059\u308b)"]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(n.li,{children:"\ud83d\udcc4 index.ts (\u901a\u5e38\u306e\u516c\u958bAPI)"}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"\ud83d\udcc4 entities/song/@x/artist.ts"}),"\u30d5\u30a1\u30a4\u30eb\u306e\u5185\u5bb9\u306f\u3001",(0,s.jsx)(n.code,{children:"\ud83d\udcc4 entities/song/index.ts"}),"\u3068\u4f3c\u3066\u3044\u307e\u3059\u3002"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-ts",metastring:'title="entities/song/@x/artist.ts"',children:'export type { Song } from "../model/song.ts";\n'})}),"\n",(0,s.jsxs)(n.p,{children:["\u305d\u306e\u5f8c\u3001",(0,s.jsx)(n.code,{children:"\ud83d\udcc4 entities/artist/model/artist.ts"}),"\u306f\u6b21\u306e\u3088\u3046\u306b",(0,s.jsx)(n.code,{children:"Song"}),"\u3092\u30a4\u30f3\u30dd\u30fc\u30c8\u3067\u304d\u307e\u3059\u3002"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-ts",metastring:'title="entities/artist/model/artist.ts"',children:'import type { Song } from "entities/song/@x/artist";\n\nexport interface Artist {\n name: string;\n songs: Array;\n}\n'})}),"\n",(0,s.jsx)(n.p,{children:"\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u9593\u306e\u660e\u793a\u7684\u306a\u95a2\u4fc2\u3092\u6301\u3064\u3053\u3068\u3067\u3001\u4f9d\u5b58\u95a2\u4fc2\u3092\u6b63\u78ba\u306b\u5236\u5fa1\u3057\u3001\u30c9\u30e1\u30a4\u30f3\u306e\u5206\u96e2\u3092\u5341\u5206\u306b\u4fdd\u3064\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002"}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"data-transfer-objects-and-mappers",children:"\u30c7\u30fc\u30bf\u8ee2\u9001\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\uff08DTO\uff09\u3068\u30de\u30c3\u30d1\u30fc"}),"\n",(0,s.jsx)(n.p,{children:"\u30c7\u30fc\u30bf\u8ee2\u9001\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3001\u307e\u305f\u306fDTO\uff08Data Transfer Object\uff09\u306f\u3001\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u304b\u3089\u9001\u4fe1\u3055\u308c\u308b\u30c7\u30fc\u30bf\u306e\u5f62\u5f0f\u3092\u8aac\u660e\u3059\u308b\u7528\u8a9e\u3067\u3059\u3002\u6642\u306b\u306fDTO\u3092\u305d\u306e\u307e\u307e\u4f7f\u7528\u3067\u304d\u307e\u3059\u304c\u3001\u6642\u306b\u306f\u305d\u306e\u5f62\u5f0f\u304c\u30d5\u30ed\u30f3\u30c8\u30a8\u30f3\u30c9\u306b\u3068\u3063\u3066\u4e0d\u4fbf\u306a\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u3053\u3067\u30de\u30c3\u30d1\u30fc\u304c\u5f79\u7acb\u3061\u307e\u3059\u3002\u30de\u30c3\u30d1\u30fc\u306f\u3001DTO\u3092\u3088\u308a\u4f7f\u3044\u3084\u3059\u3044\u5f62\u5f0f\u306b\u5909\u63db\u3059\u308b\u95a2\u6570\u3067\u3059\u3002"}),"\n",(0,s.jsx)(n.h3,{id:"dto\u3092\u3069\u3053\u306b\u7f6e\u304f\u304b",children:"DTO\u3092\u3069\u3053\u306b\u7f6e\u304f\u304b"}),"\n",(0,s.jsx)(n.p,{children:"\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u306e\u578b\u304c\u5225\u306e\u30d1\u30c3\u30b1\u30fc\u30b8\u306b\u3042\u308b\u5834\u5408\uff08\u4f8b\u3048\u3070\u3001\u30d5\u30ed\u30f3\u30c8\u30a8\u30f3\u30c9\u3068\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u9593\u3067\u30b3\u30fc\u30c9\u3092\u5171\u6709\u3057\u3066\u3044\u308b\u5834\u5408\uff09\u3001\u305d\u3053\u304b\u3089DTO\u3092\u30a4\u30f3\u30dd\u30fc\u30c8\u3059\u308b\u3060\u3051\u3067\u6e08\u307f\u307e\u3059\u3002\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u3068\u30d5\u30ed\u30f3\u30c8\u30a8\u30f3\u30c9\u9593\u3067\u30b3\u30fc\u30c9\u3092\u5171\u6709\u3057\u3066\u3044\u306a\u3044\u5834\u5408\u3001DTO\u3092\u30d5\u30ed\u30f3\u30c8\u30a8\u30f3\u30c9\u30b3\u30fc\u30c9\u306e\u3069\u3053\u304b\u306b\u4fdd\u5b58\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u306e\u5834\u5408\u306b\u3064\u3044\u3066\u306f\u4ee5\u4e0b\u3067\u8aac\u660e\u3057\u307e\u3059\u3002"}),"\n",(0,s.jsxs)(n.p,{children:["\u30ea\u30af\u30a8\u30b9\u30c8\u95a2\u6570\u3092",(0,s.jsx)(n.code,{children:"shared/api"}),"\u306b\u4fdd\u5b58\u3057\u3066\u3044\u308b\u5834\u5408\u3001\u305d\u306e\u95a2\u6570\u3067\u4f7f\u7528\u3059\u308bDTO\u3082\u3001\u3061\u3087\u3046\u3069\u305d\u306e\u95a2\u6570\u306e\u8fd1\u304f\u306b\u914d\u7f6e\u3059\u308b\u3079\u304d\u3067\u3059\u3002"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-ts",metastring:'title="shared/api/songs.ts"',children:'import type { ArtistDTO } from "./artists";\n\ninterface SongDTO {\n id: number;\n title: string;\n artist_ids: Array;\n}\n\nexport function listSongs() {\n return fetch(\'/api/songs\').then((res) => res.json() as Promise>);\n}\n'})}),"\n",(0,s.jsx)(n.p,{children:"\u524d\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u8ff0\u3079\u305f\u3088\u3046\u306b\u3001\u30ea\u30af\u30a8\u30b9\u30c8\u3068DTO\u3092Shared\u5c64\u306b\u4fdd\u5b58\u3059\u308b\u5229\u70b9\u306f\u3001\u4ed6\u306eDTO\u3092\u53c2\u7167\u3067\u304d\u308b\u3053\u3068\u3067\u3059\u3002"}),"\n",(0,s.jsx)(n.h3,{id:"\u30de\u30c3\u30d1\u30fc\u3092\u3069\u3053\u306b\u7f6e\u304f\u304b",children:"\u30de\u30c3\u30d1\u30fc\u3092\u3069\u3053\u306b\u7f6e\u304f\u304b"}),"\n",(0,s.jsxs)(n.p,{children:["\u30de\u30c3\u30d1\u30fc\u306f\u3001DTO\u3092\u5909\u63db\u3059\u308b\u305f\u3081\u306e\u95a2\u6570\u3067\u3042\u308a\u3001\u3057\u305f\u304c\u3063\u3066DTO\u306e\u5b9a\u7fa9\u306e\u8fd1\u304f\u306b\u7f6e\u304f\u3079\u304d\u3067\u3059\u3002\u5b9f\u969b\u306b\u306f\u3001\u30ea\u30af\u30a8\u30b9\u30c8\u3068DTO\u304c",(0,s.jsx)(n.code,{children:"shared/api"}),"\u306b\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u308b\u5834\u5408\u3001\u30de\u30c3\u30d1\u30fc\u3082\u305d\u3053\u306b\u7f6e\u304f\u3079\u304d\u3067\u3059\u3002"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-ts",metastring:'title="shared/api/songs.ts"',children:'import type { ArtistDTO } from "./artists";\n\ninterface SongDTO {\n id: number;\n title: string;\n disc_no: number;\n artist_ids: Array;\n}\n\ninterface Song {\n id: string;\n title: string;\n /** \u66f2\u306e\u5b8c\u5168\u306a\u30bf\u30a4\u30c8\u30eb\u3001\u30c7\u30a3\u30b9\u30af\u756a\u53f7\u3092\u542b\u3080\u3002 */\n fullTitle: string;\n artistIds: Array;\n}\n\nfunction adaptSongDTO(dto: SongDTO): Song {\n return {\n id: String(dto.id),\n title: dto.title,\n fullTitle: `${dto.disc_no} / ${dto.title}`,\n artistIds: dto.artist_ids.map(String),\n };\n}\n\nexport function listSongs() {\n return fetch(\'/api/songs\').then(async (res) => (await res.json()).map(adaptSongDTO));\n}\n'})}),"\n",(0,s.jsx)(n.p,{children:"\u30ea\u30af\u30a8\u30b9\u30c8\u3068\u30b9\u30c8\u30ec\u30fc\u30b8\u304c\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u30b9\u30e9\u30a4\u30b9\u306b\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u308b\u5834\u5408\u3001\u3053\u306e\u3059\u3079\u3066\u306e\u30b3\u30fc\u30c9\u306f\u305d\u3053\u306b\u7f6e\u304f\u3079\u304d\u3067\u3042\u308a\u3001\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u9593\u306e\u30af\u30ed\u30b9\u30a4\u30f3\u30dd\u30fc\u30c8\u306e\u5236\u9650\u3092\u8003\u616e\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-ts",metastring:'title="entities/song/api/dto.ts"',children:'import type { ArtistDTO } from "entities/artist/@x/song";\n\nexport interface SongDTO {\n id: number;\n title: string;\n disc_no: number;\n artist_ids: Array;\n}\n'})}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-ts",metastring:'title="entities/song/api/mapper.ts"',children:'import type { SongDTO } from "./dto";\n\nexport interface Song {\n id: string;\n title: string;\n /** \u66f2\u306e\u5b8c\u5168\u306a\u30bf\u30a4\u30c8\u30eb\u3001\u30c7\u30a3\u30b9\u30af\u756a\u53f7\u3092\u542b\u3080\u3002 */\n fullTitle: string;\n artistIds: Array;\n}\n\nexport function adaptSongDTO(dto: SongDTO): Song {\n return {\n id: String(dto.id),\n title: dto.title,\n fullTitle: `${dto.disc_no} / ${dto.title}`,\n artistIds: dto.artist_ids.map(String),\n };\n}\n'})}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-ts",metastring:'title="entities/song/api/listSongs.ts"',children:"import { adaptSongDTO } from \"./mapper\";\n\nexport function listSongs() {\n return fetch('/api/songs').then(async (res) => (await res.json()).map(adaptSongDTO));\n}\n"})}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-ts",metastring:'title="entities/song/model/songs.ts"',children:'import { createSlice, createEntityAdapter } from "@reduxjs/toolkit";\n\nimport { listSongs } from "../api/listSongs";\n\nexport const fetchSongs = createAsyncThunk(\'songs/fetchSongs\', listSongs);\n\nconst songAdapter = createEntityAdapter();\nconst songsSlice = createSlice({\n name: "songs",\n initialState: songAdapter.getInitialState(),\n reducers: {},\n extraReducers: (builder) => {\n builder.addCase(fetchSongs.fulfilled, (state, action) => {\n songAdapter.upsertMany(state, action.payload);\n })\n },\n});\n'})}),"\n",(0,s.jsx)(n.h3,{id:"\u30cd\u30b9\u30c8\u3055\u308c\u305fdto\u3092\u3069\u3046\u6271\u3046\u304b",children:"\u30cd\u30b9\u30c8\u3055\u308c\u305fDTO\u3092\u3069\u3046\u6271\u3046\u304b"}),"\n",(0,s.jsxs)(n.p,{children:["\u6700\u3082\u554f\u984c\u3068\u306a\u308b\u306e\u306f\u3001\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u304b\u3089\u306e\u30ec\u30b9\u30dd\u30f3\u30b9\u304c\u8907\u6570\u306e\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u3092\u542b\u3080\u5834\u5408\u3067\u3059\u3002\u4f8b\u3048\u3070\u3001\u66f2\u304c\u30a2\u30fc\u30c6\u30a3\u30b9\u30c8\u306eID\u3060\u3051\u3067\u306a\u304f\u3001\u30a2\u30fc\u30c6\u30a3\u30b9\u30c8\u306e\u30c7\u30fc\u30bf\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u5168\u4f53\u3092\u542b\u3080\u5834\u5408\u3067\u3059\u3002\u3053\u306e\u5834\u5408\u3001\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u306f\u4e92\u3044\u306b\u77e5\u3089\u306a\u3044\u308f\u3051\u306b\u306f\u3044\u304d\u307e\u305b\u3093\uff08\u30c7\u30fc\u30bf\u3092\u6368\u3066\u305f\u308a\u3001\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u30c1\u30fc\u30e0\u3068\u771f\u5263\u306b\u8a71\u3057\u5408\u3044\u305f\u304f\u306a\u3044\u5834\u5408\u3092\u9664\u3044\u3066\uff09\u3002\u30b9\u30e9\u30a4\u30b9\u9593\u306e\u6697\u9ed9\u7684\u306a\u95a2\u4fc2\u306e\u89e3\u6c7a\u7b56\u3092\u8003\u3048\u308b\u306e\u3067\u306f\u306a\u304f\u3001",(0,s.jsx)(n.code,{children:"@x"}),"\u30ce\u30fc\u30c6\u30fc\u30b7\u30e7\u30f3\u3092\u901a\u3058\u3066\u660e\u793a\u7684\u306a\u30af\u30ed\u30b9\u30a4\u30f3\u30dd\u30fc\u30c8\u3092\u9078\u3076\u3079\u304d\u3067\u3059\u3002Redux Toolkit\u3092\u4f7f\u7528\u3057\u3066\u3053\u308c\u3092\u5b9f\u88c5\u3059\u308b\u65b9\u6cd5\u306f\u6b21\u306e\u3068\u304a\u308a\u3067\u3059\u3002"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-ts",metastring:'title="entities/song/model/songs.ts"',children:"import {\n createSlice,\n createEntityAdapter,\n createAsyncThunk,\n createSelector,\n} from '@reduxjs/toolkit'\nimport { normalize, schema } from 'normalizr'\n\nimport { getSong } from \"../api/getSong\";\n\n// normalizr\u3067\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u306e\u30b9\u30ad\u30fc\u30de\u3092\u5ba3\u8a00\nexport const artistEntity = new schema.Entity('artists')\nexport const songEntity = new schema.Entity('songs', {\n artists: [artistEntity],\n})\n\nconst songAdapter = createEntityAdapter()\n\nexport const fetchSong = createAsyncThunk(\n 'songs/fetchSong',\n async (id: string) => {\n const data = await getSong(id)\n // \u30c7\u30fc\u30bf\u3092\u6b63\u898f\u5316\u3057\u3066\u3001\u30ea\u30c7\u30e5\u30fc\u30b5\u30fc\u304c\u4e88\u6e2c\u53ef\u80fd\u306a\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u30ed\u30fc\u30c9\u3067\u304d\u308b\u3088\u3046\u306b\u3057\u307e\u3059\u3002\u4f8b\u3048\u3070\n // `action.payload = { songs: {}, artists: {} }`\n const normalized = normalize(data, songEntity)\n return normalized.entities\n }\n)\n\nexport const slice = createSlice({\n name: 'songs',\n initialState: songAdapter.getInitialState(),\n reducers: {},\n extraReducers: (builder) => {\n builder.addCase(fetchSong.fulfilled, (state, action) => {\n songAdapter.upsertMany(state, action.payload.songs)\n })\n },\n})\n\nconst reducer = slice.reducer\nexport default reducer\n"})}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-ts",metastring:'title="entities/song/@x/artist.ts"',children:'export { fetchSong } from "../model/songs";\n'})}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-ts",metastring:'title="entities/artist/model/artists.ts"',children:"import { createSlice, createEntityAdapter } from '@reduxjs/toolkit'\n\nimport { fetchSong } from 'entities/song/@x/artist'\n\nconst artistAdapter = createEntityAdapter()\n\nexport const slice = createSlice({\n name: 'users',\n initialState: artistAdapter.getInitialState(),\n reducers: {},\n extraReducers: (builder) => {\n builder.addCase(fetchSong.fulfilled, (state, action) => {\n // \u3053\u3053\u3067\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u304b\u3089\u306e\u540c\u3058\u30ec\u30b9\u30dd\u30f3\u30b9\u3092\u51e6\u7406\u3057\u3001\u30e6\u30fc\u30b6\u30fc\u3092\u8ffd\u52a0\u3057\u307e\u3059\n usersAdapter.upsertMany(state, action.payload.users)\n })\n },\n})\n\nconst reducer = slice.reducer\nexport default reducer\n"})}),"\n",(0,s.jsx)(n.p,{children:"\u3053\u308c\u306f\u30b9\u30e9\u30a4\u30b9\u306e\u5206\u96e2\u306e\u5229\u70b9\u3092\u5c11\u3057\u5236\u9650\u3057\u307e\u3059\u304c\u3001\u79c1\u305f\u3061\u304c\u5236\u5fa1\u3067\u304d\u306a\u3044\u3053\u308c\u3089\u306e2\u3064\u306e\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u9593\u306e\u95a2\u4fc2\u3092\u660e\u78ba\u306b\u793a\u3057\u307e\u3059\u3002\u3053\u308c\u3089\u306e\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u304c\u30ea\u30d5\u30a1\u30af\u30bf\u30ea\u30f3\u30b0\u3055\u308c\u308b\u5834\u5408\u3001\u540c\u6642\u306b\u30ea\u30d5\u30a1\u30af\u30bf\u30ea\u30f3\u30b0\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002"}),"\n",(0,s.jsx)(n.h2,{id:"\u30b0\u30ed\u30fc\u30d0\u30eb\u306e\u578b\u3068redux",children:"\u30b0\u30ed\u30fc\u30d0\u30eb\u306e\u578b\u3068Redux"}),"\n",(0,s.jsx)(n.p,{children:"\u30b0\u30ed\u30fc\u30d0\u30eb\u306e\u578b\u3068\u306f\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u5168\u4f53\u3067\u4f7f\u7528\u3055\u308c\u308b\u578b\u306e\u3053\u3068\u3067\u3059\u3002\u30b0\u30ed\u30fc\u30d0\u30eb\u306e\u578b\u306b\u306f\u3001\u5fc5\u8981\u306a\u60c5\u5831\u306b\u5fdc\u3058\u30662\u7a2e\u985e\u304c\u3042\u308a\u307e\u3059\u3002"}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsx)(n.li,{children:"\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306b\u7279\u6709\u306e\u60c5\u5831\u3092\u6301\u305f\u306a\u3044\u30e6\u30cb\u30d0\u30fc\u30b5\u30eb\u578b"}),"\n",(0,s.jsx)(n.li,{children:"\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u5168\u4f53\u306b\u3064\u3044\u3066\u77e5\u308b\u5fc5\u8981\u304c\u3042\u308b\u578b"}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["\u6700\u521d\u306e\u30b1\u30fc\u30b9\u306f\u7c21\u5358\u306b\u89e3\u6c7a\u3067\u304d\u307e\u3059\u3002\u578b\u3092Shared\u5c64\u306e\u9069\u5207\u306a\u30bb\u30b0\u30e1\u30f3\u30c8\u306b\u7f6e\u304f\u3060\u3051\u3067\u3059\u3002\u4f8b\u3048\u3070\u3001\u5206\u6790\u7528\u306e\u30b0\u30ed\u30fc\u30d0\u30eb\u5909\u6570\u306e\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\u304c\u3042\u308b\u5834\u5408\u3001\u305d\u308c\u3092",(0,s.jsx)(n.code,{children:"shared/analytics"}),"\u306b\u7f6e\u304f\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002"]}),"\n",(0,s.jsx)(n.admonition,{type:"warning",children:(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"shared/types"}),"\u30d5\u30a9\u30eb\u30c0\u30fc\u3092\u4f5c\u6210\u3059\u308b\u3053\u3068\u306f\u907f\u3051\u3066\u304f\u3060\u3055\u3044\u3002\u3053\u308c\u306f\u300c\u578b\u3067\u3042\u308b\u300d\u3068\u3044\u3046\u7279\u6027\u306b\u57fa\u3065\u3044\u3066\u7121\u95a2\u4fc2\u306a\u3082\u306e\u3092\u30b0\u30eb\u30fc\u30d7\u5316\u3059\u308b\u3060\u3051\u3067\u3042\u308a\u3001\u3053\u306e\u7279\u6027\u306f\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u5185\u3067\u30b3\u30fc\u30c9\u3092\u691c\u7d22\u3059\u308b\u969b\u306b\u306f\u901a\u5e38\u7121\u610f\u5473\u3067\u3059\u3002"]})}),"\n",(0,s.jsx)(n.p,{children:"2\u756a\u76ee\u306e\u30b1\u30fc\u30b9\u306f\u3001RTK\u306a\u3057\u3067Redux\u3092\u4f7f\u7528\u3057\u3066\u3044\u308b\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u3088\u304f\u898b\u3089\u308c\u307e\u3059\u3002\u6700\u7d42\u7684\u306a\u30b9\u30c8\u30a2\u306e\u578b\u306f\u3001\u3059\u3079\u3066\u306e\u30ea\u30c7\u30e5\u30fc\u30b5\u30fc\u3092\u7d50\u5408\u3057\u305f\u5f8c\u306b\u306e\u307f\u5229\u7528\u53ef\u80fd\u3067\u3059\u304c\u3001\u3053\u306e\u30b9\u30c8\u30a2\u306e\u578b\u306f\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3067\u4f7f\u7528\u3055\u308c\u308b\u30bb\u30ec\u30af\u30bf\u30fc\u306b\u5fc5\u8981\u3067\u3059\u3002\u4f8b\u3048\u3070\u3001\u4ee5\u4e0b\u306fRedux\u3067\u306e\u30b9\u30c8\u30a2\u306e\u5178\u578b\u7684\u306a\u5b9a\u7fa9\u3067\u3059\u3002"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-ts",metastring:'title="app/store/index.ts"',children:'import { combineReducers, rootReducer } from "redux";\n\nimport { songReducer } from "entities/song";\nimport { artistReducer } from "entities/artist";\n\nconst rootReducer = combineReducers(songReducer, artistReducer);\n\nconst store = createStore(rootReducer);\n\ntype RootState = ReturnType;\ntype AppDispatch = typeof store.dispatch;\n'})}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"shared/store"}),"\u306b\u578b\u4ed8\u3051\u3055\u308c\u305f",(0,s.jsx)(n.code,{children:"useAppDispatch"}),"\u3068",(0,s.jsx)(n.code,{children:"useAppSelector"}),"\u306e\u30d5\u30c3\u30af\u3092\u6301\u3064\u3053\u3068\u306f\u826f\u3044\u30a2\u30a4\u30c7\u30a2\u3067\u3059\u304c\u3001",(0,s.jsx)(n.a,{href:"/docs/reference/layers#import-rule-on-layers",children:"\u30ec\u30a4\u30e4\u30fc\u306e\u30a4\u30f3\u30dd\u30fc\u30c8\u30eb\u30fc\u30eb"}),"\u306e\u305f\u3081\u306b\u3001App\u5c64\u304b\u3089",(0,s.jsx)(n.code,{children:"RootState"}),"\u3068",(0,s.jsx)(n.code,{children:"AppDispatch"}),"\u3092\u30a4\u30f3\u30dd\u30fc\u30c8\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002"]}),"\n",(0,s.jsxs)(n.blockquote,{children:["\n",(0,s.jsx)(n.p,{children:"\u30b9\u30e9\u30a4\u30b9\u5185\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u306f\u3001\u4e0b\u5c64\u306b\u3042\u308b\u30b9\u30e9\u30a4\u30b9\u306e\u307f\u3092\u30a4\u30f3\u30dd\u30fc\u30c8\u3067\u304d\u308b\u3002"}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["\u3053\u306e\u5834\u5408\u306e\u63a8\u5968\u89e3\u6c7a\u7b56\u306f\u3001Shared\u5c64\u3068App\u5c64\u306e\u9593\u306b\u6697\u9ed9\u306e\u4f9d\u5b58\u95a2\u4fc2\u3092\u4f5c\u6210\u3059\u308b\u3053\u3068\u3067\u3059\u3002\u3053\u308c\u3089\u306e2\u3064\u306e\u578b\u3001",(0,s.jsx)(n.code,{children:"RootState"}),"\u3068",(0,s.jsx)(n.code,{children:"AppDispatch"}),"\u306f\u3001\u5909\u66f4\u3055\u308c\u308b\u53ef\u80fd\u6027\u304c\u4f4e\u304f\u3001Redux\u306e\u958b\u767a\u8005\u306b\u306f\u99b4\u67d3\u307f\u306e\u3042\u308b\u3082\u306e\u3067\u3042\u308b\u305f\u3081\u3001\u6697\u9ed9\u306e\u95a2\u4fc2\u306f\u554f\u984c\u306b\u306a\u3089\u306a\u3044\u3067\u3057\u3087\u3046\u3002"]}),"\n",(0,s.jsx)(n.p,{children:"TypeScript\u3067\u306f\u3001\u3053\u308c\u3089\u306e\u578b\u3092\u30b0\u30ed\u30fc\u30d0\u30eb\u3068\u3057\u3066\u5ba3\u8a00\u3059\u308b\u3053\u3068\u3067\u5b9f\u73fe\u3067\u304d\u307e\u3059\u3002\u4f8b\u3048\u3070"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-ts",metastring:'title="app/store/index.ts"',children:"/* \u4e0a\u8a18\u306e\u30b3\u30fc\u30c9\u30d6\u30ed\u30c3\u30af\u3068\u540c\u3058\u5185\u5bb9\u2026 */\n\ndeclare type RootState = ReturnType;\ndeclare type AppDispatch = typeof store.dispatch;\n"})}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-ts",metastring:'title="shared/store/index.ts"',children:'import { useDispatch, useSelector, type TypedUseSelectorHook } from "react-redux";\n\nexport const useAppDispatch = useDispatch.withTypes()\nexport const useAppSelector: TypedUseSelectorHook = useSelector;\n'})}),"\n",(0,s.jsx)(n.h2,{id:"\u578b\u306e\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\u30b9\u30ad\u30fc\u30de\u3068zod",children:"\u578b\u306e\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\u30b9\u30ad\u30fc\u30de\u3068Zod"}),"\n",(0,s.jsxs)(n.p,{children:["\u30c7\u30fc\u30bf\u304c\u7279\u5b9a\u306e\u5f62\u5f0f\u3084\u5236\u7d04\u306b\u5f93\u3063\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u305f\u3044\u5834\u5408\u3001\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\u30b9\u30ad\u30fc\u30de\u3092\u4f5c\u6210\u3067\u304d\u307e\u3059\u3002TypeScript\u3067\u3053\u306e\u76ee\u7684\u306b\u4eba\u6c17\u306e\u3042\u308b\u30e9\u30a4\u30d6\u30e9\u30ea\u306f",(0,s.jsx)(n.a,{href:"https://zod.dev",children:"Zod"}),"\u3067\u3059\u3002\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\u30b9\u30ad\u30fc\u30de\u306f\u3001\u53ef\u80fd\u306a\u9650\u308a\u305d\u308c\u3092\u4f7f\u7528\u3059\u308b\u30b3\u30fc\u30c9\u306e\u8fd1\u304f\u306b\u914d\u7f6e\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002"]}),"\n",(0,s.jsxs)(n.p,{children:["\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\u30b9\u30ad\u30fc\u30de\u306f\u3001\u30c7\u30fc\u30bf\u8ee2\u9001\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\uff08DTO\uff09\u3068\u4f3c\u3066\u304a\u308a\uff08",(0,s.jsx)(n.a,{href:"#data-transfer-objects-and-mappers",children:"DTO\u3068\u30de\u30c3\u30d1\u30fc"}),"\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u8aac\u660e\uff09\u3001DTO\u3092\u53d7\u3051\u53d6\u308a\u3001\u305d\u308c\u3092\u89e3\u6790\u3057\u3001\u89e3\u6790\u306b\u5931\u6557\u3057\u305f\u5834\u5408\u306f\u30a8\u30e9\u30fc\u3092\u8fd4\u3057\u307e\u3059\u3002"]}),"\n",(0,s.jsxs)(n.p,{children:["\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\u306e\u6700\u3082\u4e00\u822c\u7684\u306a\u30b1\u30fc\u30b9\u306e\u4e00\u3064\u306f\u3001\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u304b\u3089\u306e\u30c7\u30fc\u30bf\u3067\u3059\u3002\u901a\u5e38\u3001\u30c7\u30fc\u30bf\u304c\u30b9\u30ad\u30fc\u30de\u306b\u5f93\u308f\u306a\u3044\u5834\u5408\u3001\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u5931\u6557\u3068\u3057\u3066\u30de\u30fc\u30af\u3057\u305f\u3044\u306e\u3067\u3001\u30ea\u30af\u30a8\u30b9\u30c8\u95a2\u6570\u3068\u540c\u3058\u5834\u6240\u306b\u30b9\u30ad\u30fc\u30de\u3092\u7f6e\u304f\u306e\u304c\u826f\u3044\u3067\u3057\u3087\u3046\u3002\u901a\u5e38\u3001\u3053\u308c\u306f",(0,s.jsx)(n.code,{children:"api"}),"\u30bb\u30b0\u30e1\u30f3\u30c8\u306b\u306a\u308a\u307e\u3059\u3002"]}),"\n",(0,s.jsxs)(n.p,{children:["\u30e6\u30fc\u30b6\u30fc\u5165\u529b\u3092\u4ecb\u3057\u3066\u30c7\u30fc\u30bf\u304c\u9001\u4fe1\u3055\u308c\u308b\u5834\u5408\u3001\u4f8b\u3048\u3070\u30d5\u30a9\u30fc\u30e0\u3092\u901a\u3058\u3066\u3001\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\u306f\u30c7\u30fc\u30bf\u5165\u529b\u6642\u306b\u884c\u308f\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002\u3053\u306e\u5834\u5408\u3001\u30b9\u30ad\u30fc\u30de\u3092",(0,s.jsx)(n.code,{children:"ui"}),"\u30bb\u30b0\u30e1\u30f3\u30c8\u306b\u914d\u7f6e\u3057\u3001\u30d5\u30a9\u30fc\u30e0\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u306e\u8fd1\u304f\u306b\u7f6e\u304f\u304b\u3001",(0,s.jsx)(n.code,{children:"ui"}),"\u30bb\u30b0\u30e1\u30f3\u30c8\u304c\u904e\u8ca0\u8377\u3067\u3042\u308b\u5834\u5408\u306f",(0,s.jsx)(n.code,{children:"model"}),"\u30bb\u30b0\u30e1\u30f3\u30c8\u306b\u914d\u7f6e\u3067\u304d\u307e\u3059\u3002"]}),"\n",(0,s.jsx)(n.h2,{id:"\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u306e\u30d7\u30ed\u30c3\u30d7\u30b9\u3068\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u306e\u578b\u4ed8\u3051",children:"\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u306e\u30d7\u30ed\u30c3\u30d7\u30b9\u3068\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u306e\u578b\u4ed8\u3051"}),"\n",(0,s.jsxs)(n.p,{children:["\u4e00\u822c\u7684\u306b\u3001\u30d7\u30ed\u30c3\u30d7\u30b9\u3084\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u306e\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\u306f\u3001\u305d\u308c\u3092\u4f7f\u7528\u3059\u308b\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u3084\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u3068\u540c\u3058\u30d5\u30a1\u30a4\u30eb\u306b\u4fdd\u5b58\u3059\u308b\u306e\u304c\u6700\u826f\u3067\u3059\u3002Vue\u3084Svelte\u306e\u3088\u3046\u306b\u3001\u5358\u4e00\u30d5\u30a1\u30a4\u30eb\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u3092\u6301\u3064\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306e\u5834\u5408\u3001\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\u3092\u540c\u3058\u30d5\u30a1\u30a4\u30eb\u306b\u5b9a\u7fa9\u3067\u304d\u306a\u3044\u5834\u5408\u3084\u3001\u8907\u6570\u306e\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u9593\u3067\u3053\u306e\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\u3092\u518d\u5229\u7528\u3057\u305f\u3044\u5834\u5408\u306f\u3001\u901a\u5e38\u306f",(0,s.jsx)(n.code,{children:"ui"}),"\u30bb\u30b0\u30e1\u30f3\u30c8\u5185\u306e\u540c\u3058\u30d5\u30a9\u30eb\u30c0\u30fc\u306b\u5225\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002"]}),"\n",(0,s.jsx)(n.p,{children:"\u4ee5\u4e0b\u306fJSX\uff08React\u307e\u305f\u306fSolid\uff09\u306e\u4f8b\u3067\u3059\u3002"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-ts",metastring:'title="pages/home/ui/RecentActions.tsx"',children:"interface RecentActionsProps {\n actions: Array<{ id: string; text: string }>;\n}\n\nexport function RecentActions({ actions }: RecentActionsProps) {\n /* \u2026 */\n}\n"})}),"\n",(0,s.jsx)(n.p,{children:"\u4ee5\u4e0b\u306f\u3001Vue\u306e\u305f\u3081\u306b\u5225\u306e\u30d5\u30a1\u30a4\u30eb\u306b\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\u3092\u4fdd\u5b58\u3059\u308b\u4f8b\u3067\u3059\u3002"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-ts",metastring:'title="pages/home/ui/RecentActionsProps.ts"',children:"export interface RecentActionsProps {\n actions: Array<{ id: string; text: string }>;\n}\n"})}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-html",metastring:'title="pages/home/ui/RecentActions.vue"',children:' - + +

🌎 FSD international community

· 2 分の読書
Anton Medvedev
FSD core-team member
post-cover
diff --git a/ja/blog/archive.html b/ja/blog/archive.html index 3b65d1e325..8c05baa23c 100644 --- a/ja/blog/archive.html +++ b/ja/blog/archive.html @@ -9,8 +9,8 @@ - - + + diff --git a/ja/blog/international-community.html b/ja/blog/international-community.html index 22b092dcbf..43920d5d46 100644 --- a/ja/blog/international-community.html +++ b/ja/blog/international-community.html @@ -9,8 +9,8 @@ - - + +

🌎 FSD international community

· 2 分の読書
Anton Medvedev
FSD core-team member
post-cover
diff --git a/ja/blog/rebranding-stable.html b/ja/blog/rebranding-stable.html index 1130be1395..6b74ae0bf2 100644 --- a/ja/blog/rebranding-stable.html +++ b/ja/blog/rebranding-stable.html @@ -9,8 +9,8 @@ - - + +

💥 FSD rebranding!

· 2 分の読書
Ilya Azin
FSD core-team member
logo-primary
diff --git a/ja/blog/tags.html b/ja/blog/tags.html index 7d4a997539..06467e9649 100644 --- a/ja/blog/tags.html +++ b/ja/blog/tags.html @@ -9,8 +9,8 @@ - - + + diff --git a/ja/blog/tags/brand.html b/ja/blog/tags/brand.html index bf7b7a9aea..83e19236fa 100644 --- a/ja/blog/tags/brand.html +++ b/ja/blog/tags/brand.html @@ -9,8 +9,8 @@ - - + +

1 投稿 のタグ "brand"

すべてのタグを見る

💥 FSD rebranding!

· 2 分の読書
Ilya Azin
FSD core-team member
logo-primary
diff --git a/ja/blog/tags/community.html b/ja/blog/tags/community.html index 7c55577b16..b86eadf02c 100644 --- a/ja/blog/tags/community.html +++ b/ja/blog/tags/community.html @@ -9,8 +9,8 @@ - - + +

1 投稿 のタグ "community"

すべてのタグを見る

🌎 FSD international community

· 2 分の読書
Anton Medvedev
FSD core-team member
post-cover
diff --git a/ja/blog/tags/discord.html b/ja/blog/tags/discord.html index 5a75302962..a36de68359 100644 --- a/ja/blog/tags/discord.html +++ b/ja/blog/tags/discord.html @@ -9,8 +9,8 @@ - - + +

1 投稿 のタグ "discord"

すべてのタグを見る

🌎 FSD international community

· 2 分の読書
Anton Medvedev
FSD core-team member
post-cover
diff --git a/ja/blog/tags/promo.html b/ja/blog/tags/promo.html index e036d5803e..dd22416a45 100644 --- a/ja/blog/tags/promo.html +++ b/ja/blog/tags/promo.html @@ -9,8 +9,8 @@ - - + +

2 投稿 のタグ "promo"

すべてのタグを見る

🌎 FSD international community

· 2 分の読書
Anton Medvedev
FSD core-team member
post-cover
diff --git a/ja/community.html b/ja/community.html index 0161ddb875..bed1be6b2e 100644 --- a/ja/community.html +++ b/ja/community.html @@ -9,8 +9,8 @@ - - + + +
Contributing

HowTo, Workflow, Support

\ No newline at end of file diff --git a/ja/community/team.html b/ja/community/team.html index 28833f4b29..27da65625f 100644 --- a/ja/community/team.html +++ b/ja/community/team.html @@ -9,8 +9,8 @@ - - + + +

Companies

\ No newline at end of file diff --git a/ja/docs.html b/ja/docs.html index 7364d3126d..177ec2196b 100644 --- a/ja/docs.html +++ b/ja/docs.html @@ -9,8 +9,8 @@ - - + + +
🛠 実装例

Feature-Sliced Designに基づいて設計されたプロジェクト一覧

\ No newline at end of file diff --git a/ja/docs/about.html b/ja/docs/about.html index 2b528e929f..787adfe14f 100644 --- a/ja/docs/about.html +++ b/ja/docs/about.html @@ -9,8 +9,8 @@ - - + + +
プロモーション

企業におけるFSDのプロモーションと統合について

統合 • チーム内でのプロモーション • 企業内でのプロモーション
\ No newline at end of file diff --git a/ja/docs/about/alternatives.html b/ja/docs/about/alternatives.html index fec4063671..92c15b4cb7 100644 --- a/ja/docs/about/alternatives.html +++ b/ja/docs/about/alternatives.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/ja/docs/about/mission.html b/ja/docs/about/mission.html index a48afd695f..db5288c147 100644 --- a/ja/docs/about/mission.html +++ b/ja/docs/about/mission.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/ja/docs/about/motivation.html b/ja/docs/about/motivation.html index a077b32e3b..3fd5bd8e11 100644 --- a/ja/docs/about/motivation.html +++ b/ja/docs/about/motivation.html @@ -9,8 +9,8 @@ - - + +
メインコンテンツにスキップ
+ \ No newline at end of file diff --git a/ja/docs/about/promote/for-company.html b/ja/docs/about/promote/for-company.html index a3512e6fec..4d8bb42926 100644 --- a/ja/docs/about/promote/for-company.html +++ b/ja/docs/about/promote/for-company.html @@ -9,11 +9,11 @@ - - + + +
WIP

この記事は執筆中です

その公開を早めるために、以下の方法があります。


🍰 Stay tuned!

\ No newline at end of file diff --git a/ja/docs/about/promote/for-team.html b/ja/docs/about/promote/for-team.html index d312302ae2..088272f410 100644 --- a/ja/docs/about/promote/for-team.html +++ b/ja/docs/about/promote/for-team.html @@ -9,11 +9,11 @@ - - + + +
WIP

この記事は執筆中です

その公開を早めるために、以下の方法があります。


🍰 Stay tuned!

\ No newline at end of file diff --git a/ja/docs/about/promote/integration.html b/ja/docs/about/promote/integration.html index e78d58c113..271bfb659b 100644 --- a/ja/docs/about/promote/integration.html +++ b/ja/docs/about/promote/integration.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/ja/docs/about/promote/partial-application.html b/ja/docs/about/promote/partial-application.html index 47eef63895..87a7ea2cae 100644 --- a/ja/docs/about/promote/partial-application.html +++ b/ja/docs/about/promote/partial-application.html @@ -9,11 +9,11 @@ - - + + +
WIP

この記事は執筆中です

その公開を早めるために、以下の方法があります。


🍰 Stay tuned!

\ No newline at end of file diff --git a/ja/docs/about/understanding/abstractions.html b/ja/docs/about/understanding/abstractions.html index 9ccbd6e5af..a26cd4a6e7 100644 --- a/ja/docs/about/understanding/abstractions.html +++ b/ja/docs/about/understanding/abstractions.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/ja/docs/about/understanding/architecture.html b/ja/docs/about/understanding/architecture.html index ecdaf4d091..fa318a5391 100644 --- a/ja/docs/about/understanding/architecture.html +++ b/ja/docs/about/understanding/architecture.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/ja/docs/about/understanding/knowledge-types.html b/ja/docs/about/understanding/knowledge-types.html index 8da987e08d..eb0b5f200a 100644 --- a/ja/docs/about/understanding/knowledge-types.html +++ b/ja/docs/about/understanding/knowledge-types.html @@ -9,8 +9,8 @@ - - + +
メインコンテンツにスキップ

プロジェクトにおける知識の種類

@@ -29,6 +29,6 @@ 現在のプロジェクトに特有であり、他のプロジェクトでは役に立たない知識。この知識は新しいチームメンバーが効果的にプロジェクトに貢献するために必要である。

-
注記

Feature-Sliced Designは「プロジェクト知識」への依存を減らし、より多くの責任を引き受け、新しいチームメンバーのオンボーディングを容易にすることを目指している。

+
注記

Feature-Sliced Designは「プロジェクト知識」への依存を減らし、より多くの責任を引き受け、新しいチームメンバーのオンボーディングを容易にすることを目指している。

\ No newline at end of file diff --git a/ja/docs/about/understanding/naming.html b/ja/docs/about/understanding/naming.html index a5f225ab01..0a1c0eb8f5 100644 --- a/ja/docs/about/understanding/naming.html +++ b/ja/docs/about/understanding/naming.html @@ -9,8 +9,8 @@ - - + +
メインコンテンツにスキップ

ネーミング

@@ -37,6 +37,6 @@

開発者がコード内で「プロセス」という言葉を見た場合、どのプロセスが指されているのかを理解するのに余分な時間を費やすことになってしまいます。このような衝突は開発プロセスを妨げる場合があります

プロジェクトの用語集にFSD特有の用語が含まれている場合、これらの用語をチームや技術的に関心のない関係者と議論する際には特に注意が必要です。

チームとの効果的なコミュニケーションのためには、用語の前に「FSD」という略語を付けることをお勧めします。例えば、プロセスについて話すときは、「このプロセスをFSDのフィーチャー層に置くことができる」と言うことができます。

-

逆に、技術的でない関係者とのコミュニケーションでは、FSDの用語の使用を制限し、コードベースの内部構造に言及しない方が良いでしょう。

+

逆に、技術的でない関係者とのコミュニケーションでは、FSDの用語の使用を制限し、コードベースの内部構造に言及しない方が良いでしょう。

\ No newline at end of file diff --git a/ja/docs/about/understanding/needs-driven.html b/ja/docs/about/understanding/needs-driven.html index 073238e275..7ad3a569cc 100644 --- a/ja/docs/about/understanding/needs-driven.html +++ b/ja/docs/about/understanding/needs-driven.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/ja/docs/about/understanding/signals.html b/ja/docs/about/understanding/signals.html index 8fbc2dd17b..731a51c413 100644 --- a/ja/docs/about/understanding/signals.html +++ b/ja/docs/about/understanding/signals.html @@ -9,11 +9,11 @@ - - + + +
WIP

この記事は執筆中です

その公開を早めるために、以下の方法があります。


🍰 Stay tuned!

\ No newline at end of file diff --git a/ja/docs/branding.html b/ja/docs/branding.html index 910ec5ee90..69c6ef26f2 100644 --- a/ja/docs/branding.html +++ b/ja/docs/branding.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/ja/docs/get-started.html b/ja/docs/get-started.html index d49ec925e9..abfb0bf10b 100644 --- a/ja/docs/get-started.html +++ b/ja/docs/get-started.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/ja/docs/get-started/cheatsheet.html b/ja/docs/get-started/cheatsheet.html index e37b4adf01..065c654796 100644 --- a/ja/docs/get-started/cheatsheet.html +++ b/ja/docs/get-started/cheatsheet.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/ja/docs/get-started/faq.html b/ja/docs/get-started/faq.html index 22fcd74c17..553ce7a339 100644 --- a/ja/docs/get-started/faq.html +++ b/ja/docs/get-started/faq.html @@ -9,8 +9,8 @@ - - + + +

こちらで回答しています。

\ No newline at end of file diff --git a/ja/docs/get-started/overview.html b/ja/docs/get-started/overview.html index 29637e6688..4995b35ed0 100644 --- a/ja/docs/get-started/overview.html +++ b/ja/docs/get-started/overview.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/ja/docs/get-started/tutorial.html b/ja/docs/get-started/tutorial.html index 23aafa9bd7..fc0fdfac2b 100644 --- a/ja/docs/get-started/tutorial.html +++ b/ja/docs/get-started/tutorial.html @@ -9,8 +9,8 @@ - - + +
メインコンテンツにスキップ
+

プロフィールページや設定ページは、記事の読み取りや編集ページに非常に似ていて、読者のための宿題として残されています。

\ No newline at end of file diff --git a/ja/docs/guides.html b/ja/docs/guides.html index a04b2b3438..407396c267 100644 --- a/ja/docs/guides.html +++ b/ja/docs/guides.html @@ -9,8 +9,8 @@ - - + + +
コードの問題(臭い)

コード内で特定する一般的なアーキテクチャ問題

デセグメンテーション • ルーティング • クロスインポート
\ No newline at end of file diff --git a/ja/docs/guides/examples.html b/ja/docs/guides/examples.html index 5b2f0754df..1cbfbc9c29 100644 --- a/ja/docs/guides/examples.html +++ b/ja/docs/guides/examples.html @@ -9,8 +9,8 @@ - - + + +
ページレイアウト

レイアウトに関する主要なケース

どこに保存するか • レイアウトでのウィジェットの使用
\ No newline at end of file diff --git a/ja/docs/guides/examples/auth.html b/ja/docs/guides/examples/auth.html index 1990328deb..e4fcabe7f9 100644 --- a/ja/docs/guides/examples/auth.html +++ b/ja/docs/guides/examples/auth.html @@ -9,8 +9,8 @@ - - + +
メインコンテンツにスキップ

認証

@@ -170,6 +170,6 @@

自動ログアウト

-

ログアウトリクエストやトークン更新リクエストの失敗を考慮することを忘れないでください。いずれの場合も、トークンストレージをリセットする必要があります。トークンをEntities層に保存している場合、このコードはmodelセグメントに配置できます。トークンをShared層に保存している場合、このロジックをshared/apiに配置すると、セグメントが膨らみ、その目的が曖昧になってしまいます。apiセグメントに無関係な2つのものが含まれていることに気づいた場合、トークン管理ロジックを別のセグメント、例えばshared/authに分離することを検討してみてください。

+

ログアウトリクエストやトークン更新リクエストの失敗を考慮することを忘れないでください。いずれの場合も、トークンストレージをリセットする必要があります。トークンをEntities層に保存している場合、このコードはmodelセグメントに配置できます。トークンをShared層に保存している場合、このロジックをshared/apiに配置すると、セグメントが膨らみ、その目的が曖昧になってしまいます。apiセグメントに無関係な2つのものが含まれていることに気づいた場合、トークン管理ロジックを別のセグメント、例えばshared/authに分離することを検討してみてください。

\ No newline at end of file diff --git a/ja/docs/guides/examples/autocompleted.html b/ja/docs/guides/examples/autocompleted.html index 387f5eb589..5732b1cd16 100644 --- a/ja/docs/guides/examples/autocompleted.html +++ b/ja/docs/guides/examples/autocompleted.html @@ -9,11 +9,11 @@ - - + +
メインコンテンツにスキップ
非公開のページ
このページは非公開です。 検索対象外となり、このページのリンクに直接アクセスできるユーザーのみに公開されます。
+
WIP

この記事は執筆中です

その公開を早めるために、以下の方法があります。


🍰 Stay tuned!

\ No newline at end of file diff --git a/ja/docs/guides/examples/browser-api.html b/ja/docs/guides/examples/browser-api.html index 82ab5f0b07..b4d187b5be 100644 --- a/ja/docs/guides/examples/browser-api.html +++ b/ja/docs/guides/examples/browser-api.html @@ -9,11 +9,11 @@ - - + +
メインコンテンツにスキップ
非公開のページ
このページは非公開です。 検索対象外となり、このページのリンクに直接アクセスできるユーザーのみに公開されます。
+
WIP

この記事は執筆中です

その公開を早めるために、以下の方法があります。


🍰 Stay tuned!

\ No newline at end of file diff --git a/ja/docs/guides/examples/cms.html b/ja/docs/guides/examples/cms.html index 3bb1a38e18..b724057de1 100644 --- a/ja/docs/guides/examples/cms.html +++ b/ja/docs/guides/examples/cms.html @@ -9,11 +9,11 @@ - - + +
メインコンテンツにスキップ
非公開のページ
このページは非公開です。 検索対象外となり、このページのリンクに直接アクセスできるユーザーのみに公開されます。
+
WIP

この記事は執筆中です

その公開を早めるために、以下の方法があります。


🍰 Stay tuned!

\ No newline at end of file diff --git a/ja/docs/guides/examples/feedback.html b/ja/docs/guides/examples/feedback.html index 764a85f71d..bf4103f6ff 100644 --- a/ja/docs/guides/examples/feedback.html +++ b/ja/docs/guides/examples/feedback.html @@ -9,11 +9,11 @@ - - + +
メインコンテンツにスキップ
非公開のページ
このページは非公開です。 検索対象外となり、このページのリンクに直接アクセスできるユーザーのみに公開されます。
+
WIP

この記事は執筆中です

その公開を早めるために、以下の方法があります。


🍰 Stay tuned!

\ No newline at end of file diff --git a/ja/docs/guides/examples/i18n.html b/ja/docs/guides/examples/i18n.html index ca633153e6..0b6dbfda84 100644 --- a/ja/docs/guides/examples/i18n.html +++ b/ja/docs/guides/examples/i18n.html @@ -9,11 +9,11 @@ - - + +
メインコンテンツにスキップ
非公開のページ
このページは非公開です。 検索対象外となり、このページのリンクに直接アクセスできるユーザーのみに公開されます。
+
WIP

この記事は執筆中です

その公開を早めるために、以下の方法があります。


🍰 Stay tuned!

\ No newline at end of file diff --git a/ja/docs/guides/examples/metric.html b/ja/docs/guides/examples/metric.html index 8a69c34145..a160acf502 100644 --- a/ja/docs/guides/examples/metric.html +++ b/ja/docs/guides/examples/metric.html @@ -9,11 +9,11 @@ - - + +
メインコンテンツにスキップ
非公開のページ
このページは非公開です。 検索対象外となり、このページのリンクに直接アクセスできるユーザーのみに公開されます。
+
WIP

この記事は執筆中です

その公開を早めるために、以下の方法があります。


🍰 Stay tuned!

\ No newline at end of file diff --git a/ja/docs/guides/examples/monorepo.html b/ja/docs/guides/examples/monorepo.html index daced25217..2b8f978f4a 100644 --- a/ja/docs/guides/examples/monorepo.html +++ b/ja/docs/guides/examples/monorepo.html @@ -9,11 +9,11 @@ - - + +
メインコンテンツにスキップ
非公開のページ
このページは非公開です。 検索対象外となり、このページのリンクに直接アクセスできるユーザーのみに公開されます。
+
WIP

この記事は執筆中です

その公開を早めるために、以下の方法があります。


🍰 Stay tuned!

\ No newline at end of file diff --git a/ja/docs/guides/examples/page-layout.html b/ja/docs/guides/examples/page-layout.html index b9f6630efa..cdec174175 100644 --- a/ja/docs/guides/examples/page-layout.html +++ b/ja/docs/guides/examples/page-layout.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/ja/docs/guides/examples/platforms.html b/ja/docs/guides/examples/platforms.html index c4eb871586..efc89c6858 100644 --- a/ja/docs/guides/examples/platforms.html +++ b/ja/docs/guides/examples/platforms.html @@ -9,11 +9,11 @@ - - + +
メインコンテンツにスキップ
非公開のページ
このページは非公開です。 検索対象外となり、このページのリンクに直接アクセスできるユーザーのみに公開されます。

デスクトップ/タッチプラットフォーム

-
WIP

この記事は執筆中です

その公開を早めるために、以下の方法があります。


🍰 Stay tuned!

+
WIP

この記事は執筆中です

その公開を早めるために、以下の方法があります。


🍰 Stay tuned!

\ No newline at end of file diff --git a/ja/docs/guides/examples/ssr.html b/ja/docs/guides/examples/ssr.html index 1fe10e110f..778bff2fcf 100644 --- a/ja/docs/guides/examples/ssr.html +++ b/ja/docs/guides/examples/ssr.html @@ -9,11 +9,11 @@ - - + +
メインコンテンツにスキップ
非公開のページ
このページは非公開です。 検索対象外となり、このページのリンクに直接アクセスできるユーザーのみに公開されます。
+
WIP

この記事は執筆中です

その公開を早めるために、以下の方法があります。


🍰 Stay tuned!

\ No newline at end of file diff --git a/ja/docs/guides/examples/theme.html b/ja/docs/guides/examples/theme.html index 6f65ce63c2..8bb67720f1 100644 --- a/ja/docs/guides/examples/theme.html +++ b/ja/docs/guides/examples/theme.html @@ -9,11 +9,11 @@ - - + +
メインコンテンツにスキップ
非公開のページ
このページは非公開です。 検索対象外となり、このページのリンクに直接アクセスできるユーザーのみに公開されます。
+
WIP

この記事は執筆中です

その公開を早めるために、以下の方法があります。


🍰 Stay tuned!

\ No newline at end of file diff --git a/ja/docs/guides/examples/types.html b/ja/docs/guides/examples/types.html index 5e111c5ee5..1d940fdace 100644 --- a/ja/docs/guides/examples/types.html +++ b/ja/docs/guides/examples/types.html @@ -9,8 +9,8 @@ - - + +
メインコンテンツにスキップ

@@ -138,6 +138,6 @@

他のパッケージは単に型を持たず、その型を未定義として宣言する必要があるか、あるいは自分で型を作成する必要があるかもしれません。これらの型の良い場所はshared/libで、shared/lib/untyped-packagesのようなフォルダーです。そこに%LIBRARY_NAME%.d.tsというファイルを作成し、必要な型を宣言します。

shared/lib/untyped-packages/use-react-screenshot.d.ts
// このライブラリには型がなく、自分で型を書くのは億劫です。
declare module "use-react-screenshot";

型の自動生成

-

外部ソースから型を生成することは、しばしば便利です。例えば、OpenAPIスキーマからバックエンドの型を生成することができます。この場合、これらの型のためにコード内に特別な場所を作成します。例えば、shared/api/openapiのようにします。これらのファイルが何であるか、どのように再生成されるかを説明するREADMEをこのフォルダーに含めておくと理想的です。

+

外部ソースから型を生成することは、しばしば便利です。例えば、OpenAPIスキーマからバックエンドの型を生成することができます。この場合、これらの型のためにコード内に特別な場所を作成します。例えば、shared/api/openapiのようにします。これらのファイルが何であるか、どのように再生成されるかを説明するREADMEをこのフォルダーに含めておくと理想的です。

\ No newline at end of file diff --git a/ja/docs/guides/examples/white-labels.html b/ja/docs/guides/examples/white-labels.html index 93fc5979aa..c10ca5d09e 100644 --- a/ja/docs/guides/examples/white-labels.html +++ b/ja/docs/guides/examples/white-labels.html @@ -9,11 +9,11 @@ - - + +
メインコンテンツにスキップ
非公開のページ
このページは非公開です。 検索対象外となり、このページのリンクに直接アクセスできるユーザーのみに公開されます。
+
WIP

この記事は執筆中です

その公開を早めるために、以下の方法があります。


🍰 Stay tuned!

\ No newline at end of file diff --git a/ja/docs/guides/issues/cross-imports.html b/ja/docs/guides/issues/cross-imports.html index 2e1fdcb9d4..6249d354ae 100644 --- a/ja/docs/guides/issues/cross-imports.html +++ b/ja/docs/guides/issues/cross-imports.html @@ -9,14 +9,14 @@ - - + +
メインコンテンツにスキップ

クロスインポート

WIP

この記事は執筆中です

その公開を早めるために、以下の方法があります。


🍰 Stay tuned!

クロスインポートは、レイヤーや抽象化が本来の責任以上に多くの責任を持ち始めると発生する。そのため、FSDは新しいレイヤーを設けて、これらのクロスインポートを分離することを可能にしている。

-
+ \ No newline at end of file diff --git a/ja/docs/guides/issues/desegmented.html b/ja/docs/guides/issues/desegmented.html index 18430d45e0..c6302bdfeb 100644 --- a/ja/docs/guides/issues/desegmented.html +++ b/ja/docs/guides/issues/desegmented.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/ja/docs/guides/issues/routes.html b/ja/docs/guides/issues/routes.html index 060927ab41..d2b2ea8f4d 100644 --- a/ja/docs/guides/issues/routes.html +++ b/ja/docs/guides/issues/routes.html @@ -9,8 +9,8 @@ - - + + +

URLを下層の層には、コンポジション/プロパティ/ファクトリーを通じて渡すことができます。

\ No newline at end of file diff --git a/ja/docs/guides/migration/from-custom.html b/ja/docs/guides/migration/from-custom.html index d11f303e60..aeaa3135ea 100644 --- a/ja/docs/guides/migration/from-custom.html +++ b/ja/docs/guides/migration/from-custom.html @@ -9,8 +9,8 @@ - - + +
メインコンテンツにスキップ

カスタムアーキテクチャからの移行

@@ -93,6 +93,6 @@

ステ

📁 modulesフォルダは通常、ビジネスロジックに使用されるため、すでにFSDのフィーチャー層に似た性質を持っています。一部のモジュールは、アプリケーションの大きな部分(例えば、アプリのヘッダーなど)を説明することもあります。この場合、それらをウィジェット層に移動できます。

ステップ8。 shared/uiにUI基盤を正しく形成する

理想的には、📁 shared/uiにはビジネスロジックが含まれていないUI要素のセットが含まれるべきです。また、非常に再利用可能である必要があります。

-

以前📁 components📁 containersにあったUIコンポーネントをリファクタリングして、ビジネスロジックを分離します。このビジネスロジックを上位層に移動します。あまり多くの場所で使用されていない場合は、コピーを検討することもできます。

+

以前📁 components📁 containersにあったUIコンポーネントをリファクタリングして、ビジネスロジックを分離します。このビジネスロジックを上位層に移動します。あまり多くの場所で使用されていない場合は、コピーを検討することもできます。

\ No newline at end of file diff --git a/ja/docs/guides/migration/from-v1.html b/ja/docs/guides/migration/from-v1.html index 1c7189f29f..1ed6022fb8 100644 --- a/ja/docs/guides/migration/from-v1.html +++ b/ja/docs/guides/migration/from-v1.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/ja/docs/guides/tech/with-nextjs.html b/ja/docs/guides/tech/with-nextjs.html index 37a269b857..124f03cea5 100644 --- a/ja/docs/guides/tech/with-nextjs.html +++ b/ja/docs/guides/tech/with-nextjs.html @@ -9,8 +9,8 @@ - - + +

NextJSとの併用

@@ -42,6 +42,6 @@

App Routerの使 FSDの原則に従うために、NextJSのappフォルダーをpagesフォルダーとの名前衝突を解消するために推奨される方法で扱うべきです。

このアプローチは、NextJSのappフォルダーをプロジェクトのルートフォルダーに移動し、FSDのページをNextJSのappフォルダーにインポートすることに基づいています。これにより、srcフォルダー内のFSDプロジェクト構造が保持されます。また、プロジェクトのルートフォルダーにpagesフォルダーを追加することもお勧めします。なぜなら、App RouterはPages Routerと互換性があるからです。

├── app                # NextJSのappフォルダー
├── pages # 空のNextJSのpagesフォルダー
│ ├── README.md # このフォルダーの目的に関する説明
├── src
│ ├── app # FSDのappフォルダー
│ ├── entities
│ ├── features
│ ├── pages # FSDのpagesフォルダー
│ ├── shared
│ ├── widgets
-

StackBlitzで開く

+

StackBlitzで開く

\ No newline at end of file diff --git a/ja/docs/guides/tech/with-nuxtjs.html b/ja/docs/guides/tech/with-nuxtjs.html index 2e7f322fce..0854ae606a 100644 --- a/ja/docs/guides/tech/with-nuxtjs.html +++ b/ja/docs/guides/tech/with-nuxtjs.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/ja/docs/guides/tech/with-react-query.html b/ja/docs/guides/tech/with-react-query.html index 80f732f60c..8d700038f0 100644 --- a/ja/docs/guides/tech/with-react-query.html +++ b/ja/docs/guides/tech/with-react-query.html @@ -9,8 +9,8 @@ - - + +
+ \ No newline at end of file diff --git a/ja/docs/guides/tech/with-sveltekit.html b/ja/docs/guides/tech/with-sveltekit.html index 48ccbce069..a69ab0ada5 100644 --- a/ja/docs/guides/tech/with-sveltekit.html +++ b/ja/docs/guides/tech/with-sveltekit.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/ja/docs/reference.html b/ja/docs/reference.html index 0d0b23f3cc..4abe286ae5 100644 --- a/ja/docs/reference.html +++ b/ja/docs/reference.html @@ -9,8 +9,8 @@ - - + + +
公開API

堅牢で統合しやすいモジュール設計に関する実践

\ No newline at end of file diff --git a/ja/docs/reference/isolation.html b/ja/docs/reference/isolation.html index fa1ab296a1..fcb3256100 100644 --- a/ja/docs/reference/isolation.html +++ b/ja/docs/reference/isolation.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/ja/docs/reference/isolation/coupling-cohesion.html b/ja/docs/reference/isolation/coupling-cohesion.html index f9c8f4815b..df467e34eb 100644 --- a/ja/docs/reference/isolation/coupling-cohesion.html +++ b/ja/docs/reference/isolation/coupling-cohesion.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/ja/docs/reference/isolation/decouple-entities.html b/ja/docs/reference/isolation/decouple-entities.html index 5d7fe54375..52ff8b941b 100644 --- a/ja/docs/reference/isolation/decouple-entities.html +++ b/ja/docs/reference/isolation/decouple-entities.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/ja/docs/reference/layers.html b/ja/docs/reference/layers.html index 13a96a0077..c03fe0290e 100644 --- a/ja/docs/reference/layers.html +++ b/ja/docs/reference/layers.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/ja/docs/reference/public-api.html b/ja/docs/reference/public-api.html index ee1db1b592..6c373dbd19 100644 --- a/ja/docs/reference/public-api.html +++ b/ja/docs/reference/public-api.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/ja/docs/reference/slices-segments.html b/ja/docs/reference/slices-segments.html index a8f0219866..aad9d79687 100644 --- a/ja/docs/reference/slices-segments.html +++ b/ja/docs/reference/slices-segments.html @@ -9,8 +9,8 @@ - - + +

スライスとセグメント

@@ -38,6 +38,6 @@

セグメン

他のセグメントも許可されていますが、必要に応じてのみ作成されるべきです。カスタムセグメントの最も一般的な場所は、スライスが意味を持たないApp層とShared層です。

-
レイヤーuimodellibapi
Shared層UIライブラリ通常は使用されない複数の関連ファイルからのユーティリティモジュール。
個別のヘルパー関数が必要な場合は、lodash-esなどのユーティリティライブラリを検討してください。
認証やキャッシュなどの追加機能を持つシンプルななAPIクライアント。
Entities層インタラクティブ要素のスロットを持つビジネスエンティティの骨組みエンティティのインスタンスのデータストレージと、それらのデータを操作するための関数。
サーバーからのデータを保存するのに最適。TanStack Queryや他の暗黙的なストレージメソッドを使用する場合、省略できる。
データストレージに関連しないエンティティのインスタンスを操作するための関数Shared層からのAPIクライアントを使用してバックエンドとの通信を簡素化するAPIメソッド
Features層ユーザーが機能を使用できるためのインタラクティブ要素必要に応じてビジネスロジックとインフラストラクチャデータストレージ(例:アプリケーションの現在のテーマ)。ユーザーに価値を提供するコードがここにあるmodelセグメントのビジネスロジックを簡潔に説明するためのインフラストラクチャコードバックエンドで機能を表すAPIメソッド。
Entities層からのAPIメソッドを組み合わせることがある。
Widgets層Entities層とFeatures層を自己完結型のUIブロックに構成する。
エラーバウンダリやローディング状態を含むこともできる。
必要に応じてインフラストラクチャデータストレージを含むことができるページ上でウィジェットブロックが機能するために必要な非ビジネスインタラクション(例:ジェスチャー)やその他のコード通常は使用されないが、ネストされたルーティングの文脈でデータローダーを含むことがある(例: Remix
Pages層Entities層、Features層、Widgets層の構成。
エラーバウンダリやローディング状態を含むこともできる。
通常は使用されないUXを提供するために必要な非ビジネスインタラクション(例:ジェスチャー)やその他のコードSSR(サーバーサイドレンダリング)指向のフレームワーク用のデータローダー
+
レイヤーuimodellibapi
Shared層UIライブラリ通常は使用されない複数の関連ファイルからのユーティリティモジュール。
個別のヘルパー関数が必要な場合は、lodash-esなどのユーティリティライブラリを検討してください。
認証やキャッシュなどの追加機能を持つシンプルななAPIクライアント。
Entities層インタラクティブ要素のスロットを持つビジネスエンティティの骨組みエンティティのインスタンスのデータストレージと、それらのデータを操作するための関数。
サーバーからのデータを保存するのに最適。TanStack Queryや他の暗黙的なストレージメソッドを使用する場合、省略できる。
データストレージに関連しないエンティティのインスタンスを操作するための関数Shared層からのAPIクライアントを使用してバックエンドとの通信を簡素化するAPIメソッド
Features層ユーザーが機能を使用できるためのインタラクティブ要素必要に応じてビジネスロジックとインフラストラクチャデータストレージ(例:アプリケーションの現在のテーマ)。ユーザーに価値を提供するコードがここにあるmodelセグメントのビジネスロジックを簡潔に説明するためのインフラストラクチャコードバックエンドで機能を表すAPIメソッド。
Entities層からのAPIメソッドを組み合わせることがある。
Widgets層Entities層とFeatures層を自己完結型のUIブロックに構成する。
エラーバウンダリやローディング状態を含むこともできる。
必要に応じてインフラストラクチャデータストレージを含むことができるページ上でウィジェットブロックが機能するために必要な非ビジネスインタラクション(例:ジェスチャー)やその他のコード通常は使用されないが、ネストされたルーティングの文脈でデータローダーを含むことがある(例: Remix
Pages層Entities層、Features層、Widgets層の構成。
エラーバウンダリやローディング状態を含むこともできる。
通常は使用されないUXを提供するために必要な非ビジネスインタラクション(例:ジェスチャー)やその他のコードSSR(サーバーサイドレンダリング)指向のフレームワーク用のデータローダー
\ No newline at end of file diff --git a/ja/examples.html b/ja/examples.html index 0392f21adf..c461148d76 100644 --- a/ja/examples.html +++ b/ja/examples.html @@ -9,8 +9,8 @@ - - + +

実装例

FSDを使って作られたプロジェクト一覧

v2
Tiny Bunny Mini Game

Mini-game "21 points" in the universe of the visual novel "Tiny Bunny".

reactredux-toolkittypescript
v2
Roke.to Business

Business branch of Roketo, a crypto streaming service which allows paying people by the second

reacteffectortailwindcssturbo
v2
Roke.to dApp

A crypto streaming service which allows paying people by the second

reacteffectortailwindcss
v2
IT bookstore

Catalog for viewing and searching information technology books

reactredux toolkittypescriptreact routervitescss
v2
Moke Smoke (React Native example)

An application that helps you quit smoking, published in the App Store and Google. Developed with React Native

reactrtkpersisttypescriptfirebase
v2
Moonlogs (Effector + Forest example)

Moonlogs is a business-event logging tool with a built-in user-friendly web interface for easy access to events

foresteffectortailwindtypescriptgo
v2
Posts (React Query example)

Example of using FSD with React Query (Mutation, Query, Pagination)

reactreact-querytypescriptmaterial ui
v2
FalkChat

FalkChat is your go-to destination for seamless and engaging online conversations.

reactnextprettierclerktypescripttailwindshadcn/uizustand
v2
Polka

The application is a bookshelf where you can add your favorite books. The application works with the Google Books API.

vue3piniatypescriptvue-routereslintprettiervitevuetify
v2
Fake Cyber Web Store

Example web store on Vue3

vue3piniatypescriptfirebasevue-routereslintprettiervite
v2
VK Audiopad

Chrome extension for VK Music

reactvkuitypescript
v2
Сryptolight

Cryptocurrency review site based on Feature-Sliced Design (Architectural methodology for frontend projects).

reacteffectornextuitypescriptvite
v2
Money Flow

A mobile application for tracking your expenses and incomes.

capacitorjsreactreact-routerzustandvitetypescriptmobileandroidios
v2
E-Commerce

This project is an online store built using React. It provides the ability to view the product catalog and product pages

reactmobxwebpacktypescriptssr
v2
Todo app (Vue 3 + Pinia)

QuickStart todo-app example for Vue developers with pinia store

vue 3piniavitetypescript
v2
Conduit

A social blogging site powered by Feature-Sliced Design architectural methodology.

reactreact-routerreact-queryzustandvitetypescript
v2
Kinomore (React+Effector)

Large project on the effector/fsd stack

reacteffectortypescriptnextjsreact-testing-library
v2
Sudoku (React+Effector)

A simple crossword of numbers on effector / fsd

reacteffectortypescriptvitetailwindatomic-router
v2
Nukeapp (React+ReduxToolkit)

Shopping app build on React/ReduxToolkit stack

reactredux-toolkittypescriptvite
v2
Simple Greenhouse App (React+MobX)

Simple demonstration of how FSD can be implemented with TypeScript, React.js, MobX and Firebase

reactmobxtypescriptfirebasemuivite
v2
Todo App (ReactNative+Redux)

QuickStart todo-app example for ReactNative(Expo) developers

react-nativeexporedux
v2
Rastrr

A simple and free graphic editor for novice artists

svelte
v2
Draw, I'll Help

A drawing app with shape correction powered by ML

svelte
v2
Cast

A podcast listening PWA with automated quality assurance

svelte
v2
Loripsum generator

Simple fish text generator

reacteffector
v2
Projentry (demo)

Assistant for your projects

reactantd
v2
Todo App (Angular 13)

QuickStart todo-app example for Angular developers

angularrxjs
v2
Todo App (Vue 3)

QuickStart todo-app example for Vue developers

vuevuexantd
v2
Todo App (React+Redux)

QuickStart todo-app example for React developers (Redux version)

reactreduxantd
v2
Todo App (React+Effector)

QuickStart todo-app example for React developers (Effector version)

reacteffectorantd
v2
Github Client

React & GraphQL powered github web-client

reactgraphqlantd
v2
Cardbox

The best solutions from developers in one place

reacteffector
diff --git a/ja/index.html b/ja/index.html index ca685e1282..600bec2ad2 100644 --- a/ja/index.html +++ b/ja/index.html @@ -9,8 +9,8 @@ - - + +

Feature-Sliced Design

フロントエンドアーキテクチャの設計方法論

利点

明確なビジネスロジック

アーキテクチャはドメインモジュールで構成されているため、習得が容易である

適応性

アーキテクチャのコンポーネントは柔軟に交換したり、新しい条件に応じて追加したりすることができる

技術的負債

各モジュールは副作用なしに独立して変更/再作成できる

明確な再利用性

DRYとローカルカスタマイズのバランスが保たれている

コンセプト

公開API

各モジュールはその公開APIをトップレベルで宣言する必要がある

分離

モジュールは同じレイヤーや上層レイヤーの他のモジュールに直接依存してはいけない

ニーズの理解

ビジネスとユーザーのニーズに焦点を当てる

構造

FSDを使用している企業

あなたの会社でFSDが使用されていますか? 教えてください
diff --git a/ja/nav.html b/ja/nav.html index 4270556ed7..778dce50a3 100644 --- a/ja/nav.html +++ b/ja/nav.html @@ -9,8 +9,8 @@ - - + +

🧭 ナビゲーション

古いリンク

ドキュメントの再構成後、一部の記事リンクが変更されました。以下に探しているページが見つかるかもしれません。

互換性のために古いリンクからのリダイレクトがあります

🚀 Get Started

⚡️ Simplified and merged

Tutorial

old: /docs/get-started/quick-start
new: /docs/get-started/tutorial

Basics

old: /docs/get-started/basics
new: /docs/get-started/overview

Decompose Cheatsheet

old: /docs/get-started/tutorial/decompose; diff --git a/ja/search.html b/ja/search.html index 9887a456ca..11f84cd01b 100644 --- a/ja/search.html +++ b/ja/search.html @@ -9,8 +9,8 @@ - - + + diff --git a/ja/versions.html b/ja/versions.html index 30af3ede43..c0f03f4d9d 100644 --- a/ja/versions.html +++ b/ja/versions.html @@ -9,8 +9,8 @@ - - + +

Feature-Sliced Designのバージョン

Feature-Sliced Design v2.0.0 (Current)

ここで現在公開されているバージョンのドキュメントを見つけることができます

v2.0.0 🍰Release NotesDocumentationMigration from v1

Feature Slices v1 (Legacy)

ここで古いバージョンのドキュメントを見つけることができます

v1.0Documentation
v0.1Documentation

Feature Driven (Legacy)

ここで古いバージョンのドキュメントを見つけることができます

v0.1Documentation
Example (kof)Github
diff --git a/kr/404.html b/kr/404.html index d47eabf69f..c841b354a3 100644 --- a/kr/404.html +++ b/kr/404.html @@ -9,8 +9,8 @@ - - + +

Page Not Found

We could not find what you were looking for.

Please contact the owner of the site that linked you to the original URL and let them know their link is broken.

diff --git a/kr/assets/js/0499e362.68be805a.js b/kr/assets/js/0499e362.163bbdd5.js similarity index 98% rename from kr/assets/js/0499e362.68be805a.js rename to kr/assets/js/0499e362.163bbdd5.js index 78b4381af8..0bd9852c5d 100644 --- a/kr/assets/js/0499e362.68be805a.js +++ b/kr/assets/js/0499e362.163bbdd5.js @@ -1 +1 @@ -"use strict";(self.webpackChunk_feature_sliced_documentation=self.webpackChunk_feature_sliced_documentation||[]).push([[4005],{1539:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>c,contentTitle:()=>r,default:()=>h,frontMatter:()=>o,metadata:()=>a,toc:()=>d});var i=s(6070),n=s(1100);const o={unlisted:!0},r="Decomposition cheatsheet",a={id:"get-started/cheatsheet",title:"Decomposition cheatsheet",description:"Use this as a quick reference when you're deciding how to decompose your UI. PDF versions are also available below, so you can print it out and keep one under your pillow.",source:"@site/i18n/en/docusaurus-plugin-content-docs/current/get-started/cheatsheet.mdx",sourceDirName:"get-started",slug:"/get-started/cheatsheet",permalink:"/kr/docs/get-started/cheatsheet",draft:!1,unlisted:!0,editUrl:"https://github.com/feature-sliced/documentation/edit/master/i18n/en/docusaurus-plugin-content-docs/current/get-started/cheatsheet.mdx",tags:[],version:"current",lastUpdatedAt:1727607766e3,frontMatter:{unlisted:!0},sidebar:"getstartedSidebar"},c={},d=[{value:"Choosing a layer",id:"choosing-a-layer",level:2},{value:"Examples",id:"examples",level:2},{value:"Tweet",id:"tweet",level:3},{value:"GitHub",id:"github",level:3},{value:"See also",id:"see-also",level:2}];function l(e){const t={a:"a",h1:"h1",h2:"h2",h3:"h3",header:"header",img:"img",li:"li",p:"p",ul:"ul",...(0,n.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(t.header,{children:(0,i.jsx)(t.h1,{id:"decomposition-cheatsheet",children:"Decomposition cheatsheet"})}),"\n",(0,i.jsx)(t.p,{children:"Use this as a quick reference when you're deciding how to decompose your UI. PDF versions are also available below, so you can print it out and keep one under your pillow."}),"\n",(0,i.jsx)(t.h2,{id:"choosing-a-layer",children:"Choosing a layer"}),"\n",(0,i.jsx)(t.p,{children:(0,i.jsx)(t.a,{target:"_blank","data-noBrokenLinkCheck":!0,href:s(9603).A+"",children:"Download PDF"})}),"\n",(0,i.jsx)(t.p,{children:(0,i.jsx)(t.img,{alt:"Definitions of all layers and self-check questions",src:s(4603).A+"",width:"1684",height:"1190"})}),"\n",(0,i.jsx)(t.h2,{id:"examples",children:"Examples"}),"\n",(0,i.jsx)(t.h3,{id:"tweet",children:"Tweet"}),"\n",(0,i.jsx)(t.p,{children:(0,i.jsx)(t.img,{alt:"decomposed-tweet-bordered-bgLight",src:s(8898).A+"",width:"1200",height:"2364"})}),"\n",(0,i.jsx)(t.h3,{id:"github",children:"GitHub"}),"\n",(0,i.jsx)(t.p,{children:(0,i.jsx)(t.img,{alt:"decomposed-github-bordered",src:s(8142).A+"",width:"2291",height:"1080"})}),"\n",(0,i.jsx)(t.h2,{id:"see-also",children:"See also"}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsx)(t.li,{children:(0,i.jsx)(t.a,{href:"https://t.me/feature_sliced/4262",children:"(Thread) General logic for features and entities"})}),"\n",(0,i.jsx)(t.li,{children:(0,i.jsx)(t.a,{href:"https://t.me/feature_sliced/4210",children:"(Thread) Decomposition of swollen logic"})}),"\n",(0,i.jsx)(t.li,{children:(0,i.jsx)(t.a,{href:"https://t.me/feature_sliced/4088",children:"(Thread) About understanding the areas of responsibility during decomposition"})}),"\n",(0,i.jsx)(t.li,{children:(0,i.jsx)(t.a,{href:"https://t.me/feature_sliced/3828",children:"(Thread) Decomposition of the Product List widget"})}),"\n",(0,i.jsx)(t.li,{children:(0,i.jsx)(t.a,{href:"https://www.pluralsight.com/guides/how-to-organize-your-react-+-redux-codebase",children:"(Article) Different approaches to the decomposition of logic"})}),"\n",(0,i.jsx)(t.li,{children:(0,i.jsx)(t.a,{href:"https://t.me/feature_sliced/3776",children:"(Thread) About the difference between features and entities"})}),"\n",(0,i.jsx)(t.li,{children:(0,i.jsx)(t.a,{href:"https://t.me/feature_sliced/3248",children:"(Thread) About the difference between things and entities (2)"})}),"\n",(0,i.jsx)(t.li,{children:(0,i.jsx)(t.a,{href:"https://t.me/feature_sliced/3833",children:"(Thread) About the application of criteria for decomposition"})}),"\n"]})]})}function h(e={}){const{wrapper:t}={...(0,n.R)(),...e.components};return t?(0,i.jsx)(t,{...e,children:(0,i.jsx)(l,{...e})}):l(e)}},9603:(e,t,s)=>{s.d(t,{A:()=>i});const i=s.p+"assets/files/choosing-a-layer-en-12fdf3265c8fc4f6b58687352b81fce7.pdf"},4603:(e,t,s)=>{s.d(t,{A:()=>i});const i=s.p+"assets/images/choosing-a-layer-en-5b67f20bb921ba17d78a56c0dc7654a9.jpg"},8142:(e,t,s)=>{s.d(t,{A:()=>i});const i=s.p+"assets/images/decompose-github-a0eeb839a4b5ef5c480a73726a4451b0.jpg"},8898:(e,t,s)=>{s.d(t,{A:()=>i});const i=s.p+"assets/images/decompose-twitter-7b9a50f879d763c49305b3bf0751ee35.png"},1100:(e,t,s)=>{s.d(t,{R:()=>r,x:()=>a});var i=s(758);const n={},o=i.createContext(n);function r(e){const t=i.useContext(o);return i.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:r(e.components),i.createElement(o.Provider,{value:t},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunk_feature_sliced_documentation=self.webpackChunk_feature_sliced_documentation||[]).push([[4005],{1539:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>c,contentTitle:()=>r,default:()=>h,frontMatter:()=>o,metadata:()=>a,toc:()=>d});var i=s(6070),n=s(1100);const o={unlisted:!0},r="Decomposition cheatsheet",a={id:"get-started/cheatsheet",title:"Decomposition cheatsheet",description:"Use this as a quick reference when you're deciding how to decompose your UI. PDF versions are also available below, so you can print it out and keep one under your pillow.",source:"@site/i18n/en/docusaurus-plugin-content-docs/current/get-started/cheatsheet.mdx",sourceDirName:"get-started",slug:"/get-started/cheatsheet",permalink:"/kr/docs/get-started/cheatsheet",draft:!1,unlisted:!0,editUrl:"https://github.com/feature-sliced/documentation/edit/master/i18n/en/docusaurus-plugin-content-docs/current/get-started/cheatsheet.mdx",tags:[],version:"current",lastUpdatedAt:1728325386e3,frontMatter:{unlisted:!0},sidebar:"getstartedSidebar"},c={},d=[{value:"Choosing a layer",id:"choosing-a-layer",level:2},{value:"Examples",id:"examples",level:2},{value:"Tweet",id:"tweet",level:3},{value:"GitHub",id:"github",level:3},{value:"See also",id:"see-also",level:2}];function l(e){const t={a:"a",h1:"h1",h2:"h2",h3:"h3",header:"header",img:"img",li:"li",p:"p",ul:"ul",...(0,n.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(t.header,{children:(0,i.jsx)(t.h1,{id:"decomposition-cheatsheet",children:"Decomposition cheatsheet"})}),"\n",(0,i.jsx)(t.p,{children:"Use this as a quick reference when you're deciding how to decompose your UI. PDF versions are also available below, so you can print it out and keep one under your pillow."}),"\n",(0,i.jsx)(t.h2,{id:"choosing-a-layer",children:"Choosing a layer"}),"\n",(0,i.jsx)(t.p,{children:(0,i.jsx)(t.a,{target:"_blank","data-noBrokenLinkCheck":!0,href:s(9603).A+"",children:"Download PDF"})}),"\n",(0,i.jsx)(t.p,{children:(0,i.jsx)(t.img,{alt:"Definitions of all layers and self-check questions",src:s(4603).A+"",width:"1684",height:"1190"})}),"\n",(0,i.jsx)(t.h2,{id:"examples",children:"Examples"}),"\n",(0,i.jsx)(t.h3,{id:"tweet",children:"Tweet"}),"\n",(0,i.jsx)(t.p,{children:(0,i.jsx)(t.img,{alt:"decomposed-tweet-bordered-bgLight",src:s(8898).A+"",width:"1200",height:"2364"})}),"\n",(0,i.jsx)(t.h3,{id:"github",children:"GitHub"}),"\n",(0,i.jsx)(t.p,{children:(0,i.jsx)(t.img,{alt:"decomposed-github-bordered",src:s(8142).A+"",width:"2291",height:"1080"})}),"\n",(0,i.jsx)(t.h2,{id:"see-also",children:"See also"}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsx)(t.li,{children:(0,i.jsx)(t.a,{href:"https://t.me/feature_sliced/4262",children:"(Thread) General logic for features and entities"})}),"\n",(0,i.jsx)(t.li,{children:(0,i.jsx)(t.a,{href:"https://t.me/feature_sliced/4210",children:"(Thread) Decomposition of swollen logic"})}),"\n",(0,i.jsx)(t.li,{children:(0,i.jsx)(t.a,{href:"https://t.me/feature_sliced/4088",children:"(Thread) About understanding the areas of responsibility during decomposition"})}),"\n",(0,i.jsx)(t.li,{children:(0,i.jsx)(t.a,{href:"https://t.me/feature_sliced/3828",children:"(Thread) Decomposition of the Product List widget"})}),"\n",(0,i.jsx)(t.li,{children:(0,i.jsx)(t.a,{href:"https://www.pluralsight.com/guides/how-to-organize-your-react-+-redux-codebase",children:"(Article) Different approaches to the decomposition of logic"})}),"\n",(0,i.jsx)(t.li,{children:(0,i.jsx)(t.a,{href:"https://t.me/feature_sliced/3776",children:"(Thread) About the difference between features and entities"})}),"\n",(0,i.jsx)(t.li,{children:(0,i.jsx)(t.a,{href:"https://t.me/feature_sliced/3248",children:"(Thread) About the difference between things and entities (2)"})}),"\n",(0,i.jsx)(t.li,{children:(0,i.jsx)(t.a,{href:"https://t.me/feature_sliced/3833",children:"(Thread) About the application of criteria for decomposition"})}),"\n"]})]})}function h(e={}){const{wrapper:t}={...(0,n.R)(),...e.components};return t?(0,i.jsx)(t,{...e,children:(0,i.jsx)(l,{...e})}):l(e)}},9603:(e,t,s)=>{s.d(t,{A:()=>i});const i=s.p+"assets/files/choosing-a-layer-en-12fdf3265c8fc4f6b58687352b81fce7.pdf"},4603:(e,t,s)=>{s.d(t,{A:()=>i});const i=s.p+"assets/images/choosing-a-layer-en-5b67f20bb921ba17d78a56c0dc7654a9.jpg"},8142:(e,t,s)=>{s.d(t,{A:()=>i});const i=s.p+"assets/images/decompose-github-a0eeb839a4b5ef5c480a73726a4451b0.jpg"},8898:(e,t,s)=>{s.d(t,{A:()=>i});const i=s.p+"assets/images/decompose-twitter-7b9a50f879d763c49305b3bf0751ee35.png"},1100:(e,t,s)=>{s.d(t,{R:()=>r,x:()=>a});var i=s(758);const n={},o=i.createContext(n);function r(e){const t=i.useContext(o);return i.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:r(e.components),i.createElement(o.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/kr/assets/js/0a4ee302.c524f746.js b/kr/assets/js/0a4ee302.a425794b.js similarity index 99% rename from kr/assets/js/0a4ee302.c524f746.js rename to kr/assets/js/0a4ee302.a425794b.js index e3055a5676..28f3186838 100644 --- a/kr/assets/js/0a4ee302.c524f746.js +++ b/kr/assets/js/0a4ee302.a425794b.js @@ -1 +1 @@ -"use strict";(self.webpackChunk_feature_sliced_documentation=self.webpackChunk_feature_sliced_documentation||[]).push([[5977],{1540:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>a,contentTitle:()=>r,default:()=>u,frontMatter:()=>o,metadata:()=>c,toc:()=>d});var s=t(6070),i=t(1100);const o={sidebar_position:10},r="Usage with NuxtJS",c={id:"guides/tech/with-nuxtjs",title:"Usage with NuxtJS",description:"It is possible to implement FSD in a NuxtJS project, but conflicts arise due to the differences between NuxtJS project structure requirements and FSD principles:",source:"@site/i18n/en/docusaurus-plugin-content-docs/current/guides/tech/with-nuxtjs.mdx",sourceDirName:"guides/tech",slug:"/guides/tech/with-nuxtjs",permalink:"/kr/docs/guides/tech/with-nuxtjs",draft:!1,unlisted:!1,editUrl:"https://github.com/feature-sliced/documentation/edit/master/i18n/en/docusaurus-plugin-content-docs/current/guides/tech/with-nuxtjs.mdx",tags:[],version:"current",lastUpdatedAt:1727607766e3,sidebarPosition:10,frontMatter:{sidebar_position:10},sidebar:"guidesSidebar",previous:{title:"Usage with NextJS",permalink:"/kr/docs/guides/tech/with-nextjs"},next:{title:"Usage with React Query",permalink:"/kr/docs/guides/tech/with-react-query"}},a={},d=[{value:"Adding an alias for the src directory",id:"adding-an-alias-for-the-src-directory",level:2},{value:"Choose how to configure the router",id:"choose-how-to-configure-the-router",level:2},{value:"Routing using config",id:"routing-using-config",level:3},{value:"File Routing",id:"file-routing",level:3},{value:"What to do with layouts?",id:"what-to-do-with-layouts",level:2},{value:"See also",id:"see-also",level:2}];function l(e){const n={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",p:"p",pre:"pre",ul:"ul",...(0,i.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.header,{children:(0,s.jsx)(n.h1,{id:"usage-with-nuxtjs",children:"Usage with NuxtJS"})}),"\n",(0,s.jsx)(n.p,{children:"It is possible to implement FSD in a NuxtJS project, but conflicts arise due to the differences between NuxtJS project structure requirements and FSD principles:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["Initially, NuxtJS offers a project file structure without a ",(0,s.jsx)(n.code,{children:"src"})," folder, i.e. in the root of the project."]}),"\n",(0,s.jsxs)(n.li,{children:["The file routing is in the ",(0,s.jsx)(n.code,{children:"pages"})," folder, while in FSD this folder is reserved for the flat slice structure."]}),"\n"]}),"\n",(0,s.jsxs)(n.h2,{id:"adding-an-alias-for-the-src-directory",children:["Adding an alias for the ",(0,s.jsx)(n.code,{children:"src"})," directory"]}),"\n",(0,s.jsxs)(n.p,{children:["Add an ",(0,s.jsx)(n.code,{children:"alias"})," object to your config:"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-ts",metastring:'title="nuxt.config.ts"',children:"export default defineNuxtConfig({\n devtools: { enabled: true }, // Not FSD related, enabled at project startup\n alias: {\n \"@\": '../src'\n },\n})\n"})}),"\n",(0,s.jsx)(n.h2,{id:"choose-how-to-configure-the-router",children:"Choose how to configure the router"}),"\n",(0,s.jsxs)(n.p,{children:["In NuxtJS, there are two ways to customize the routing - using a config and using a file structure.\nIn the case of file-based routing, you will create index.vue files in folders inside the app/routes directory, and in the case of configure, you will configure the routers in the ",(0,s.jsx)(n.code,{children:"router.options.ts"})," file."]}),"\n",(0,s.jsx)(n.h3,{id:"routing-using-config",children:"Routing using config"}),"\n",(0,s.jsxs)(n.p,{children:["In the ",(0,s.jsx)(n.code,{children:"app"})," layer, create a ",(0,s.jsx)(n.code,{children:"router.options.ts"})," file, and export a config object from it:"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-ts",metastring:'title="app/router.options.ts"',children:"import type { RouterConfig } from '@nuxt/schema';\n\nexport default {\n routes: (_routes) => [],\n};\n\n"})}),"\n",(0,s.jsxs)(n.p,{children:["To add a ",(0,s.jsx)(n.code,{children:"Home"})," page to your project, you need to do the following steps:"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["Add a page slice inside the ",(0,s.jsx)(n.code,{children:"pages"})," layer"]}),"\n",(0,s.jsxs)(n.li,{children:["Add the appropriate route to the ",(0,s.jsx)(n.code,{children:"app/router.config.ts"})," config"]}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["To create a page slice, let's use the ",(0,s.jsx)(n.a,{href:"https://github.com/feature-sliced/cli",children:"CLI"}),":"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-shell",children:"fsd pages home\n"})}),"\n",(0,s.jsxs)(n.p,{children:["Create a ",(0,s.jsx)(n.code,{children:"home-page.vue"})," file inside the ui segment, access it using the Public API"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-ts",metastring:'title="src/pages/home/index.ts"',children:"export { default as HomePage } from './ui/home-page';\n"})}),"\n",(0,s.jsx)(n.p,{children:"Thus, the file structure will look like this:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-sh",children:"|\u2500\u2500 src\n\u2502 \u251c\u2500\u2500 app\n\u2502 \u2502 \u251c\u2500\u2500 router.config.ts\n\u2502 \u251c\u2500\u2500 pages\n\u2502 \u2502 \u251c\u2500\u2500 home\n\u2502 \u2502 \u2502 \u251c\u2500\u2500 ui\n\u2502 \u2502 \u2502 \u2502 \u251c\u2500\u2500 home-page.vue\n\u2502 \u2502 \u2502 \u251c\u2500\u2500 index.ts\n"})}),"\n",(0,s.jsx)(n.p,{children:"Finally, let's add a root to the config:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-ts",metastring:'title="app/router.config.ts"',children:"import type { RouterConfig } from '@nuxt/schema'\n\nexport default {\n routes: (_routes) => [\n {\n name: 'home',\n path: '/',\n component: () => import('@/pages/home.vue').then(r => r.default || r)\n }\n ],\n}\n"})}),"\n",(0,s.jsx)(n.h3,{id:"file-routing",children:"File Routing"}),"\n",(0,s.jsxs)(n.p,{children:["First of all, create a ",(0,s.jsx)(n.code,{children:"src"})," directory in the root of your project, and create app and pages layers inside this directory and a routes folder inside the app layer.\nThus, your file structure should look like this:"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-sh",children:"\u251c\u2500\u2500 src\n\u2502 \u251c\u2500\u2500 app\n\u2502 \u2502 \u251c\u2500\u2500 routes\n\u2502 \u251c\u2500\u2500 pages # Pages folder, related to FSD\n"})}),"\n",(0,s.jsxs)(n.p,{children:["In order for NuxtJS to use the routes folder inside the ",(0,s.jsx)(n.code,{children:"app"})," layer for file routing, you need to modify ",(0,s.jsx)(n.code,{children:"nuxt.config.ts"})," as follows:"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-ts",metastring:'title="nuxt.config.ts"',children:"export default defineNuxtConfig({\n devtools: { enabled: true }, // Not FSD related, enabled at project startup\n alias: {\n \"@\": '../src'\n },\n dir: {\n pages: './src/app/routes'\n }\n})\n"})}),"\n",(0,s.jsxs)(n.p,{children:["Now, you can create routes for pages within ",(0,s.jsx)(n.code,{children:"app"})," and connect pages from ",(0,s.jsx)(n.code,{children:"pages"})," to them."]}),"\n",(0,s.jsxs)(n.p,{children:["For example, to add a ",(0,s.jsx)(n.code,{children:"Home"})," page to your project, you need to do the following steps:"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["Add a page slice inside the ",(0,s.jsx)(n.code,{children:"pages"})," layer"]}),"\n",(0,s.jsxs)(n.li,{children:["Add the corresponding root inside the ",(0,s.jsx)(n.code,{children:"app"})," layer"]}),"\n",(0,s.jsx)(n.li,{children:"Align the page from the slice with the root"}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["To create a page slice, let's use the ",(0,s.jsx)(n.a,{href:"https://github.com/feature-sliced/cli",children:"CLI"}),":"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-shell",children:"fsd pages home\n"})}),"\n",(0,s.jsxs)(n.p,{children:["Create a ",(0,s.jsx)(n.code,{children:"home-page.vue"})," file inside the ui segment, access it using the Public API"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-ts",metastring:'title="src/pages/home/index.ts"',children:"export { default as HomePage } from './ui/home-page';\n"})}),"\n",(0,s.jsxs)(n.p,{children:["Create a root for this page inside the ",(0,s.jsx)(n.code,{children:"app"})," layer:"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-sh",children:"\n\u251c\u2500\u2500 src\n\u2502 \u251c\u2500\u2500 app\n\u2502 \u2502 \u251c\u2500\u2500 routes\n\u2502 \u2502 \u2502 \u251c\u2500\u2500 index.vue\n\u2502 \u251c\u2500\u2500 pages\n\u2502 \u2502 \u251c\u2500\u2500 home\n\u2502 \u2502 \u2502 \u251c\u2500\u2500 ui\n\u2502 \u2502 \u2502 \u2502 \u251c\u2500\u2500 home-page.vue\n\u2502 \u2502 \u2502 \u251c\u2500\u2500 index.ts\n"})}),"\n",(0,s.jsxs)(n.p,{children:["Add your page component inside the ",(0,s.jsx)(n.code,{children:"index.vue"})," file:"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-html",metastring:'title="src/app/routes/index.vue"',children:" - + +

🌎 FSD international community

· 2 min read
Anton Medvedev
FSD core-team member
post-cover
diff --git a/kr/blog/archive.html b/kr/blog/archive.html index 989daebd74..c7ea86acde 100644 --- a/kr/blog/archive.html +++ b/kr/blog/archive.html @@ -9,8 +9,8 @@ - - + + diff --git a/kr/blog/international-community.html b/kr/blog/international-community.html index cb87c9ed3e..6d7ff35d16 100644 --- a/kr/blog/international-community.html +++ b/kr/blog/international-community.html @@ -9,8 +9,8 @@ - - + +

🌎 FSD international community

· 2 min read
Anton Medvedev
FSD core-team member
post-cover
diff --git a/kr/blog/rebranding-stable.html b/kr/blog/rebranding-stable.html index eb9c18129b..6f8a6ccb67 100644 --- a/kr/blog/rebranding-stable.html +++ b/kr/blog/rebranding-stable.html @@ -9,8 +9,8 @@ - - + +

💥 FSD rebranding!

· 2 min read
Ilya Azin
FSD core-team member
logo-primary
diff --git a/kr/blog/tags.html b/kr/blog/tags.html index 9dbfacba8f..52b2739d47 100644 --- a/kr/blog/tags.html +++ b/kr/blog/tags.html @@ -9,8 +9,8 @@ - - + + diff --git a/kr/blog/tags/brand.html b/kr/blog/tags/brand.html index 3566792a77..0f7b5d6ab4 100644 --- a/kr/blog/tags/brand.html +++ b/kr/blog/tags/brand.html @@ -9,8 +9,8 @@ - - + +

One post tagged with "brand"

View All Tags

💥 FSD rebranding!

· 2 min read
Ilya Azin
FSD core-team member
logo-primary
diff --git a/kr/blog/tags/community.html b/kr/blog/tags/community.html index 69fa3ea320..a5926e67ea 100644 --- a/kr/blog/tags/community.html +++ b/kr/blog/tags/community.html @@ -9,8 +9,8 @@ - - + +

One post tagged with "community"

View All Tags

🌎 FSD international community

· 2 min read
Anton Medvedev
FSD core-team member
post-cover
diff --git a/kr/blog/tags/discord.html b/kr/blog/tags/discord.html index 53d3fa900e..8ba16b2d15 100644 --- a/kr/blog/tags/discord.html +++ b/kr/blog/tags/discord.html @@ -9,8 +9,8 @@ - - + +

One post tagged with "discord"

View All Tags

🌎 FSD international community

· 2 min read
Anton Medvedev
FSD core-team member
post-cover
diff --git a/kr/blog/tags/promo.html b/kr/blog/tags/promo.html index 02997c4f6c..7f69707747 100644 --- a/kr/blog/tags/promo.html +++ b/kr/blog/tags/promo.html @@ -9,8 +9,8 @@ - - + +

2 posts tagged with "promo"

View All Tags

🌎 FSD international community

· 2 min read
Anton Medvedev
FSD core-team member
post-cover
diff --git a/kr/community.html b/kr/community.html index 5e68846888..24059c9854 100644 --- a/kr/community.html +++ b/kr/community.html @@ -9,8 +9,8 @@ - - + + +
Contributing

HowTo, Workflow, Support

\ No newline at end of file diff --git a/kr/community/team.html b/kr/community/team.html index 927cb689e3..42a09107c1 100644 --- a/kr/community/team.html +++ b/kr/community/team.html @@ -9,8 +9,8 @@ - - + + +

Companies

\ No newline at end of file diff --git a/kr/docs.html b/kr/docs.html index 37d55ff95a..bf5752d6a7 100644 --- a/kr/docs.html +++ b/kr/docs.html @@ -9,8 +9,8 @@ - - + + +
🛠 Examples

Projects built with Feature-Sliced Design

\ No newline at end of file diff --git a/kr/docs/about.html b/kr/docs/about.html index 830eda91d0..f8836ebdc9 100644 --- a/kr/docs/about.html +++ b/kr/docs/about.html @@ -9,8 +9,8 @@ - - + + +
Promote

About promotion and integration FSD at companies

Integration • Promoting in team • Promoting in company
\ No newline at end of file diff --git a/kr/docs/about/alternatives.html b/kr/docs/about/alternatives.html index d534130dfb..b694dd3a7a 100644 --- a/kr/docs/about/alternatives.html +++ b/kr/docs/about/alternatives.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/kr/docs/about/mission.html b/kr/docs/about/mission.html index c6d3bade3b..e3ed8a5d7f 100644 --- a/kr/docs/about/mission.html +++ b/kr/docs/about/mission.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/kr/docs/about/motivation.html b/kr/docs/about/motivation.html index 11748854ef..3f6bb0935a 100644 --- a/kr/docs/about/motivation.html +++ b/kr/docs/about/motivation.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/kr/docs/about/promote/for-company.html b/kr/docs/about/promote/for-company.html index 11821e990c..7bc64d343b 100644 --- a/kr/docs/about/promote/for-company.html +++ b/kr/docs/about/promote/for-company.html @@ -9,8 +9,8 @@ - - + + +

How to prepare and justify a plan to move to the methodology?

\ No newline at end of file diff --git a/kr/docs/about/promote/for-team.html b/kr/docs/about/promote/for-team.html index 6d91853f8b..95ccf775a0 100644 --- a/kr/docs/about/promote/for-team.html +++ b/kr/docs/about/promote/for-team.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/kr/docs/about/promote/integration.html b/kr/docs/about/promote/integration.html index 3df9e978c9..ea3186a9d7 100644 --- a/kr/docs/about/promote/integration.html +++ b/kr/docs/about/promote/integration.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/kr/docs/about/promote/partial-application.html b/kr/docs/about/promote/partial-application.html index 377fa79aaa..71538110ce 100644 --- a/kr/docs/about/promote/partial-application.html +++ b/kr/docs/about/promote/partial-application.html @@ -9,14 +9,14 @@ - - + +
+ \ No newline at end of file diff --git a/kr/docs/about/understanding/abstractions.html b/kr/docs/about/understanding/abstractions.html index 3196c23340..067c18f5d5 100644 --- a/kr/docs/about/understanding/abstractions.html +++ b/kr/docs/about/understanding/abstractions.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/kr/docs/about/understanding/architecture.html b/kr/docs/about/understanding/architecture.html index 48ef78b20c..2f51882629 100644 --- a/kr/docs/about/understanding/architecture.html +++ b/kr/docs/about/understanding/architecture.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/kr/docs/about/understanding/knowledge-types.html b/kr/docs/about/understanding/knowledge-types.html index 833fe12692..656d8da56b 100644 --- a/kr/docs/about/understanding/knowledge-types.html +++ b/kr/docs/about/understanding/knowledge-types.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/kr/docs/about/understanding/naming.html b/kr/docs/about/understanding/naming.html index ef9536b03c..5fdf97ccb1 100644 --- a/kr/docs/about/understanding/naming.html +++ b/kr/docs/about/understanding/naming.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/kr/docs/about/understanding/needs-driven.html b/kr/docs/about/understanding/needs-driven.html index 61053b5f8b..559b93ea44 100644 --- a/kr/docs/about/understanding/needs-driven.html +++ b/kr/docs/about/understanding/needs-driven.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/kr/docs/about/understanding/signals.html b/kr/docs/about/understanding/signals.html index 071e5b04e7..d3c26c7d33 100644 --- a/kr/docs/about/understanding/signals.html +++ b/kr/docs/about/understanding/signals.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/kr/docs/branding.html b/kr/docs/branding.html index 17e00f720f..90fe468a2f 100644 --- a/kr/docs/branding.html +++ b/kr/docs/branding.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/kr/docs/get-started.html b/kr/docs/get-started.html index af65ecf913..54011cec45 100644 --- a/kr/docs/get-started.html +++ b/kr/docs/get-started.html @@ -9,15 +9,15 @@ - - + + -

🚀 Get Started

+ +
\ No newline at end of file diff --git a/kr/docs/get-started/cheatsheet.html b/kr/docs/get-started/cheatsheet.html index 649b75c13c..2f9bc25146 100644 --- a/kr/docs/get-started/cheatsheet.html +++ b/kr/docs/get-started/cheatsheet.html @@ -9,11 +9,11 @@ - - + + -
Unlisted page
This page is unlisted. Search engines will not index it, and only users having a direct link can access it.

Decomposition cheatsheet

+
Unlisted page
This page is unlisted. Search engines will not index it, and only users having a direct link can access it.

Decomposition cheatsheet

Use this as a quick reference when you're deciding how to decompose your UI. PDF versions are also available below, so you can print it out and keep one under your pillow.

Choosing a layer

Download PDF

@@ -33,6 +33,6 @@

See also(Thread) About the difference between features and entities
  • (Thread) About the difference between things and entities (2)
  • (Thread) About the application of criteria for decomposition
  • -

    +
    \ No newline at end of file diff --git a/kr/docs/get-started/faq.html b/kr/docs/get-started/faq.html index 323f380be3..3ef6f8cecd 100644 --- a/kr/docs/get-started/faq.html +++ b/kr/docs/get-started/faq.html @@ -3,43 +3,43 @@ -FAQ | Feature-Sliced Design +FAQ | Feature-Sliced Design - - + + -

    FAQ

    -
    info

    You can ask your question in our Telegram chat, Discord community, and GitHub Discussions.

    -

    Is there a toolkit or a linter?

    -

    There is an official ESLint config — @feature-sliced/eslint-config, and an ESLint plugin — @conarti/eslint-plugin-feature-sliced, created by Aleksandr Belous, a community member. You're welcome to contribute to these projects or start your own!

    +

    FAQ

    +
    info

    여러분은 Telegram chat, Discord community 그리고 GitHub Discussions에서 질문을 할 수 있습니다.

    +

    toolkit이나 linter가 있나요?

    +

    공식 ESLint 설정인 @feature-sliced/eslint-config와 커뮤니티 멤버인 Aleksandr Belous가 만든 ESLint 플러그인 @conarti/eslint-plugin-feature-sliced가 있습니다. 이 프로젝트들에 기여하거나 여러분만의 프로젝트를 시작해보세요!

    Where to store the layout/template of pages?

    -

    If you need plain markup layouts, you can keep them in shared/ui. If you need to use higher layers inside, there are a few options:

    +

    순수한 마크업 레이아웃이 필요하다면 shared/ui에 보관할 수 있습니다. 상위 계층을 사용해야 한다면 몇 가지 옵션이 있습니다.

      -
    • Perhaps you don't need layouts at all? If the layout is only a few lines, it might be reasonable to duplicate the code in each page rather than try to abstract it.
    • -
    • If you do need layouts, you can have them as separate widgets or pages, and compose them in your router configuration in App. Nested routing is another option.
    • +
    • 레이아웃이 필요 없을 수도 있습니다. 레이아웃이 몇 줄밖에 안 된다면, 추상화하려고 하기보다는 각 페이지에서 코드를 중복하는 것이 합리적일 수 있습니다.
    • +
    • 레이아웃이 필요하다면, 별도의 위젯이나 페이지로 만들고 App의 라우터 설정에서 조합할 수 있습니다. 중첩 라우팅도 다른 옵션입니다.
    -

    What is the difference between a feature and an entity?

    -

    An entity is a real-life concept that your app is working with. A feature is an interaction that provides real-life value to your app’s users, the thing people want to do with your entities.

    -

    For more information, along with examples, see the Reference page on slices.

    -

    Can I embed pages/features/entities into each other?

    -

    Yes, but this embedding should happen in higher layers. For example, inside a widget, you can import both features and then insert one feature into another as props/children.

    -

    You cannot import one feature from another feature, this is prohibited by the import rule on layers.

    -

    What about Atomic Design?

    -

    The current version of the methodology does not require nor prohibit the use of Atomic Design together with Feature-Sliced Design.

    -

    For example, Atomic Design can be applied well for the ui segment of modules.

    -

    Are there any useful resources/articles/etc. about FSD?

    -

    Yes! https://github.com/feature-sliced/awesome

    -

    Why do I need Feature-Sliced Design?

    -

    It helps you and your team to quickly overview the project in terms of its main value-bringing components. A standardized architecture helps to speed up onboarding and resolves debates about code structure. See the motivation page to learn more about why FSD was created.

    -

    Does a novice developer need an architecture/methodology?

    -

    Rather yes than no

    -

    Usually, when you design and develop a project in one person, everything goes smoothly. But if there are pauses in development, new developers are added to the team - then problems come

    -

    How do I work with the authorization context?

    -

    Answered here

    +

    feature와 entity의 차이점이 무엇인가요?

    +

    entity는 앱이 다루는 실제 개념입니다. feature는 앱 사용자에게 실제 가치를 제공하는 상호작용, 즉 사람들이 entity로 하고 싶어하는 것입니다.

    +

    더 자세한 정보와 예시는 slices 참조 페이지를 확인하세요.

    +

    pages/features/entities를 서로 포함시킬 수 있나요?

    +

    네, 하지만 이런 포함은 상위 계층에서 이루어져야 합니다. 예를 들어, 위젯 내부에서 여러 기능을 가져와서 하나의 기능을 다른 기능의 props/children으로 삽입할 수 있습니다.

    +

    한 기능을 다른 기능에서 가져올 수는 없습니다. 이는 계층에 대한 가져오기 규칙에 의해 금지됩니다.

    +

    아토믹 디자인은 어떤가요?

    +

    현재 버전의 방법론은 Feature-Sliced Design과 함께 아토믹 디자인을 사용하는 것을 요구하지도, 금지하지도 않습니다.

    +

    예를 들어, 아토믹 디자인은 모듈의 ui 세그먼트에 잘 적용될 수 있습니다.

    +

    FSD에 대한 유용한 리소스/기사 등이 있나요?

    +

    네! https://github.com/feature-sliced/awesome 를 참조하세요.

    +

    Feature-Sliced Design이 왜 필요한가요?

    +

    프로젝트를 주요 가치 창출 구성 요소 측면에서 빠르게 개요를 파악하는 데 도움이 됩니다. 표준화된 아키텍처는 온보딩 속도를 높이고 코드 구조에 대한 논쟁을 해결합니다. FSD가 만들어진 이유에 대해 더 자세히 알아보려면 동기 페이지를 참조하세요.

    +

    초보 개발자에게 아키텍처/방법론이 필요한가요?

    +

    그렇다고 볼 수 있습니다.

    +

    보통 한 사람이 프로젝트를 설계하고 개발할 때는 모든 것이 순조롭게 진행됩니다. 하지만 개발에 중단이 있거나 새로운 개발자가 팀에 합류하면 문제가 발생합니다

    +

    인증 컨텍스트는 어떻게 다루나요?

    +

    여기에서 답변했습니다.

    \ No newline at end of file diff --git a/kr/docs/get-started/overview.html b/kr/docs/get-started/overview.html index 5c2ba47a7c..53a10a7f73 100644 --- a/kr/docs/get-started/overview.html +++ b/kr/docs/get-started/overview.html @@ -9,11 +9,11 @@ - - + + -

    둘러보기

    +

    둘러보기

    Feature-Sliced Design (FSD)는 프론트엔드 애플리케이션의 구조를 잡는 아키텍처 방법론입니다. 간단히 말해, 코드 구성에 관한 규칙과 관례를 모아놓은 것입니다. 이 방법론의 주요 목적은 계속 변화하는 비즈니스 요구사항에 직면했을 때 프로젝트를 더 이해하기 쉽고 안정적으로 만드는 것입니다.

    FSD는 규칙을 제시할 뿐만 아니라, 실제 개발 과정을 돕는 다양한 도구들을 함께 제공합니다. 프로젝트 아키텍처를 확인하는 린터, CLI나 IDE를 통한 폴더 생성기, 그리고 다양한 예제 라이브러리를 제공합니다.

    내 프로젝트에 적합할까?

    @@ -62,7 +62,7 @@

    간단한 예

    📂 app, 📂 shared, 그리고 📂 pages/article-reader 내부의 폴더들을 세그먼트(segments)라고 합니다. 세그먼트는 코드의 기능적 목적, 다시말해 코드가 수행하는 역할 따라 슬라이스(또는 레이어)를 나눕니다.

    개념

    레이어, 슬라이스, 세그먼트는 다음과 같은 계층 구조를 형성합니다:

    -

    아래에 설명된 FSD 개념의 계층 구조

    위 그림: 세 개의 수직 구조가 있으며, 왼쪽부터 오른쪽으로 각각 "레이어", "슬라이스", "세그먼트"로 표시되어 있습니다.

    "레이어"에는 위에서 아래로 7개의 구분이 있으며, "app", "processes", "pages", "widgets", "features", "entities", "shared"로 표시되어 있습니다. "processes" 구분은 취소선이 그어져 있습니다. "entities" 구분은 두 번째 기둥인 "슬라이스"와 연결되어 있어, 두 번째 기둥이 "entities"의 내용이라는 것을 나타냅니다.

    "슬라이스"에는 위에서 아래로 3개의 구분이 있으며, "user", "post", "comment"로 표시되어 있습니다. "post" 구분은 세 번째 기둥인 "세그먼트"와 연결되어 있어, 세 번째 기둥이 "post"의 내용임을 나타냅니다.

    "세그먼트"에는 위에서 아래로 3개의 구분이 있으며, "ui", "model", "api"로 표시되어 있습니다.

    +

    아래에 설명된 FSD 개념의 계층 구조

    위 그림: 세 개의 수직 구조가 있으며, 왼쪽부터 오른쪽으로 각각 "레이어", "슬라이스", "세그먼트"로 표시되어 있습니다.

    "레이어"에는 위에서 아래로 7개의 구분이 있으며, "app", "processes", "pages", "widgets", "features", "entities", "shared"로 표시되어 있습니다. "processes" 구분은 취소선이 그어져 있습니다. "entities" 구분은 두 번째 기둥인 "슬라이스"와 연결되어 있어, 두 번째 기둥이 "entities"의 내용이라는 것을 나타냅니다.

    "슬라이스"에는 위에서 아래로 3개의 구분이 있으며, "user", "post", "comment"로 표시되어 있습니다. "post" 구분은 세 번째 기둥인 "세그먼트"와 연결되어 있어, 세 번째 기둥이 "post"의 내용임을 나타냅니다.

    "세그먼트"에는 위에서 아래로 3개의 구분이 있으며, "ui", "model", "api"로 표시되어 있습니다.

    레이어

    레이어는 모든 FSD 프로젝트에서 표준화되어 있습니다. 모든 레이어를 사용할 필요는 없지만, 이름은 중요합니다. 현재(위에서 아래로) 7개가 있습니다:

      @@ -75,7 +75,7 @@

      레이어슬라이스

      다음은 슬라이스입니다. 슬라이스는 비즈니스 도메인별로 코드를 분할합니다. 여러분은 자유롭게 이름을 선택할 수 있고, 원하는 만큼 많이 만들 수 있습니다. 슬라이스는 논리적으로 관련된 모듈들을 가까이 유지함으로써 코드베이스를 더 쉽게 탐색할 수 있게 해줍니다.

      슬라이스는 같은 레이어 안에서 다른 슬라이스를 참조할 수 없으며, 이 규칙은 높은 응집도와 낮은 결합도를 유지하는 데 도움이 됩니다.

      @@ -127,6 +127,6 @@

      다음 단계FSD로 사고하는 방법을 잘 이해하고 싶으신가요? 튜토리얼을 확인해보세요.
    1. 예제를 통해 배우는 것을 선호하시나요? 예제 섹션에 많은 예제가 있습니다.
    2. 질문이 있으신가요? 우리의 텔레그램 채팅방에 들러 커뮤니티의 도움을 받으세요.
    3. -

    +
    \ No newline at end of file diff --git a/kr/docs/get-started/tutorial.html b/kr/docs/get-started/tutorial.html index 39caaedff6..11c764079f 100644 --- a/kr/docs/get-started/tutorial.html +++ b/kr/docs/get-started/tutorial.html @@ -3,275 +3,275 @@ -Tutorial | Feature-Sliced Design +튜토리얼 | Feature-Sliced Design - - + + -

    Tutorial

    -

    Part 1. On paper

    -

    This tutorial will examine the Real World App, also known as Conduit. Conduit is a basic Medium clone — it lets you read and write articles as well as comment on the articles of others.

    +

    튜토리얼

    +

    Part 1. 설계

    +

    이 튜토리얼에서는 Real World App이라고도 알려진 Conduit를 살펴보겠습니다. Conduit는 기본적인 Medium 클론입니다 - 글을 읽고 쓸 수 있으며 다른 사람의 글에 댓글을 달 수 있습니다.

    Conduit home page

    -

    This is a pretty small application, so we will keep it simple and avoid excessive decomposition. It’s highly likely that the entire app will fit into just three layers: App, Pages, and Shared. If not, we will introduce additional layers as we go. Ready?

    -

    Start by listing the pages

    -

    If we look at the screenshot above, we can assume at least the following pages:

    +

    이 애플리케이션은 매우 작은 애플리케이션이므로 과도한 분해를 피하고 간단하게 유지할 것입니다. 전체 애플리케이션이 세 개의 레이어인 App, Pages, 그리고 Shared에 맞춰 들어갈 것입니다. 그렇지 않다면 우리는 계속해서 추가적인 레이어를 도입할 것입니다. 준비되셨나요?

    +

    먼저 페이지를 나열해 봅시다.

    +

    위의 스크린샷을 보면 최소한 다음과 같은 페이지들이 있다고 가정할 수 있습니다:

      -
    • Home (article feed)
    • -
    • Sign in and sign up
    • -
    • Article reader
    • -
    • Article editor
    • -
    • User profile viewer
    • -
    • User profile editor (user settings)
    • +
    • 홈 (글 피드)
    • +
    • 로그인 및 회원가입
    • +
    • 글 읽기
    • +
    • 글 편집기
    • +
    • 사용자 프로필 보기
    • +
    • 사용자 프로필 편집 (사용자 설정)
    -

    Every one of these pages will become its own slice on the Pages layer. Recall from the overview that slices are simply folders inside of layers and layers are simply folders with predefined names like pages.

    -

    As such, our Pages folder will look like this:

    +

    이 페이지들 각각은 Pages 레이어의 독립된 슬라이스가 될 것입니다. 개요에서 언급했듯이 슬라이스는 단순히 레이어 내의 폴더이고, 레이어는 pages와 같은 미리 정의된 이름을 가진 폴더일 뿐입니다.

    +

    따라서 우리의 Pages 폴더는 다음과 같이 보일 것입니다.

    📂 pages/
    📁 feed/
    📁 sign-in/
    📁 article-read/
    📁 article-edit/
    📁 profile/
    📁 settings/
    -

    The key difference of Feature-Sliced Design from an unregulated code structure is that pages cannot reference each other. That is, one page cannot import code from another page. This is due to the import rule on layers:

    -

    A module in a slice can only import other slices when they are located on layers strictly below.

    -

    In this case, a page is a slice, so modules (files) inside this page can only reference code from layers below, not from the same layer, Pages.

    -

    Close look at the feed

    -

    Anonymous user’s perspective

    Anonymous user’s perspective

    -

    Authenticated user’s perspective

    Authenticated user’s perspective

    -

    There are three dynamic areas on the feed page:

    +

    Feature-Sliced Design이 규제되지 않은 코드 구조와 다른 주요 차이점은 페이지들이 서로를 참조할 수 없다는 것입니다. 즉, 한 페이지가 다른 페이지의 코드를 가져올 수 없습니다. 이는 레이어의 import 규칙 때문입니다.

    +

    슬라이스의 모듈은 엄격히 아래에 있는 레이어에 위치한 다른 슬라이스만 가져올 수 있습니다.

    +

    이 경우 페이지는 슬라이스이므로, 이 페이지 내의 모듈(파일)은 같은 레이어인 Pages가 아닌 아래 레이어의 코드만 참조할 수 있습니다.

    +

    피드 자세히 보기

    +

    Anonymous user’s perspective

    익명 사용자의 관점

    +

    Authenticated user’s perspective

    인증된 사용자의 관점

    +

    피드 페이지에는 세 가지 동적 영역이 있습니다.

      -
    1. Sign-in links with an indication if you are signed in
    2. -
    3. List of tags that triggers filtering in the feed
    4. -
    5. One/two feeds of articles, each article with a like button
    6. +
    7. 로그인 여부를 나타내는 로그인 링크
    8. +
    9. 피드에서 필터링을 트리거하는 태그 목록
    10. +
    11. 좋아요 버튼이 있는 하나/두 개의 글 피드
    -

    The sign-in links are a part of a header that is common to all pages, we will revisit it separately.

    -

    List of tags

    -

    To build the list of tags, we need to fetch the available tags, render each tag as a chip, and store the selected tags in a client-side storage. These operations fall into categories “API interaction”, “user interface”, and “storage”, respectively. In Feature-Sliced Design, code is separated by purpose using segments. Segments are folders in slices, and they can have arbitrary names that describe the purpose, but some purposes are so common that there’s a convention for certain segment names:

    +

    로그인 링크는 모든 페이지에 공통적인 헤더의 일부이므로 나중에 따로 다루겠습니다.

    +

    태그 목록

    +

    태그 목록을 만들기 위해서는 사용 가능한 태그를 가져오고, 각 태그를 칩으로 렌더링하고, 선택된 태그를 클라이언트 측 저장소에 저장해야 합니다. 이러한 작업들은 각각 "API 상호작용", "사용자 인터페이스", "저장소" 카테고리에 속합니다. Feature-Sliced Design에서는 코드를 세그먼트를 사용하여 목적별로 분리합니다. 세그먼트는 슬라이스 내의 폴더이며, 목적을 설명하는 임의의 이름을 가질 수 있지만, 일부 목적은 너무 일반적이어서 특정 세그먼트 이름에 대한 규칙이 있습니다.

      -
    • 📂 api/ for backend interactions
    • -
    • 📂 ui/ for code that handles rendering and appearance
    • -
    • 📂 model/ for storage and business logic
    • -
    • 📂 config/ for feature flags, environment variables and other forms of configuration
    • +
    • 📂 api/ 백엔드 상호작용
    • +
    • 📂 ui/ 렌더링과 외관을 다루는 코드
    • +
    • 📂 model/ 저장소와 비즈니스 로직
    • +
    • 📂 config/ 기능 플래그, 환경 변수 및 기타 구성 형식
    -

    We will place code that fetches tags into api, the tag component into ui, and the storage interaction into model.

    -

    Articles

    -

    Using the same grouping principles, we can decompose the feed of articles into the same three segments:

    +

    태그를 가져오는 코드는 api에, 태그 컴포넌트는 ui에, 저장소 상호작용은 model에 배치할 것입니다.

    +

    +

    같은 그룹화 원칙을 사용하여 글 피드를 같은 세 개의 세그먼트로 분해할 수 있습니다.

      -
    • 📂 api/: fetch paginated articles with like count; like an article
    • +
    • 📂 api/: 좋아요 수가 포함된 페이지네이션된 글 가져오기
    • 📂 ui/:
        -
      • tab list that can render an extra tab if a tag is selected
      • -
      • individual article
      • -
      • functional pagination
      • +
      • 태그가 선택된 경우 추가 탭을 렌더링할 수 있는 탭 목록
      • +
      • 개별 글
      • +
      • 기능적 페이지네이션
    • -
    • 📂 model/: client-side storage of the currently loaded articles and current page (if needed)
    • +
    • 📂 model/: 현재 로드된 글과 현재 페이지의 클라이언트 측 저장소 (필요한 경우)
    -

    Reuse generic code

    -

    Most pages are very different in intent, but certain things stay the same across the entire app — for example, the UI kit that conforms to the design language, or the convention on the backend that everything is done with a REST API with the same authentication method. Since slices are meant to be isolated, code reuse is facilitated by a lower layer, Shared.

    -

    Shared is different from other layers in the sense that it contains segments, not slices. In this way, the Shared layer can be thought of as a hybrid between a layer and a slice.

    -

    Usually, the code in Shared is not planned ahead of time, but rather extracted during development, because only during development does it become clear which parts of code are actually shared. However, it’s still helpful to keep a mental note of what kind of code naturally belongs in Shared:

    +

    일반적인 코드 재사용

    +

    대부분의 페이지는 의도가 매우 다르지만, 앱 전체에 걸쳐 일부 요소는 동일하게 유지됩니다. 예를 들어, 디자인 언어를 준수하는 UI 키트나 모든 것이 동일한 인증 방식으로 REST API를 통해 수행되는 백엔드의 규칙 등이 있습니다. 슬라이스는 격리되도록 설계되었기 때문에, 코드 재사용은 더 낮은 계층인 Shared에 의해 촉진됩니다.

    +

    Shared는 슬라이스가 아닌 세그먼트를 포함한다는 점에서 다른 계층과 다릅니다. 이런 면에서 Shared 계층은 계층과 슬라이스의 하이브리드로 생각할 수 있습니다.

    +

    일반적으로 Shared의 코드는 미리 계획되지 않고 개발 중에 추출됩니다. 실제로 어떤 코드 부분이 공유되는지는 개발 중에만 명확해지기 때문입니다. 그러나 어떤 종류의 코드가 자연스럽게 Shared에 속하는지 머릿속에 메모해 두는 것은 여전히 도움이 됩니다.

      -
    • 📂 ui/ — the UI kit, pure appearance, no business logic. For example, buttons, modal dialogs, form inputs.
    • -
    • 📂 api/ — convenience wrappers around request making primitives (like fetch() on the Web) and, optionally, functions for triggering particular requests according to the backend specification.
    • -
    • 📂 config/ — parsing environment variables
    • -
    • 📂 i18n/ — configuration of language support
    • -
    • 📂 router/ — routing primitives and route constants
    • +
    • 📂 ui/ — UI 키트, 비즈니스 로직이 없는 순수한 UI. 예: 버튼, 모달 대화 상자, 폼 입력.
    • +
    • 📂 api/ — 요청 생성 기본 요소(예: 웹의 fetch())에 대한 편의 래퍼 및 선택적으로 백엔드 사양에 따라 특정 요청을 트리거하는 함수.
    • +
    • 📂 config/ — 환경 변수 파싱
    • +
    • 📂 i18n/ — 언어 지원에 대한 구성
    • +
    • 📂 router/ — 라우팅 기본 요소 및 라우트 상수
    -

    Those are just a few examples of segment names in Shared, but you can omit any of them or create your own. The only important thing to remember when creating new segments is that segment names should describe purpose (the why), not essence (the what). Names like “components”, “hooks”, “modals” should not be used because they describe what these files are, but don’t help to navigate the code inside. This requires people on the team to dig through every file in such folders and also keeps unrelated code close, which leads to broad areas of code being affected by refactoring and thus makes code review and testing harder.

    -

    Define a strict public API

    -

    In the context of Feature-Sliced Design, the term public API refers to a slice or segment declaring what can be imported from it by other modules in the project. For example, in JavaScript that can be an index.js file re-exporting objects from other files in the slice. This enables freedom in refactoring code inside a slice as long as the contract with the outside world (i.e. the public API) stays the same.

    -

    For the Shared layer that has no slices, it’s usually more convenient to define a separate public API for each segment as opposed to defining one single index of everything in Shared. This keeps imports from Shared naturally organized by intent. For other layers that have slices, the opposite is true — it’s usually more practical to define one index per slice and let the slice decide its own set of segments that is unknown to the outside world because other layers usually have a lot less exports.

    -

    Our slices/segments will appear to each other as follows:

    +

    이는 Shared의 세그먼트 이름의 몇 가지 예시일 뿐이며, 이 중 일부를 생략하거나 자신만의 세그먼트를 만들 수 있습니다. 새로운 세그먼트를 만들 때 기억해야 할 유일한 중요한 점은 세그먼트 이름이 본질(무엇인지)이 아닌 목적(왜)을 설명해야 한다는 것입니다. "components", "hooks", "modals"과 같은 이름은 이 파일들이 무엇인지는 설명하지만 내부 코드를 탐색하는 데 도움이 되지 않기 때문에 사용해서는 안 됩니다. 이는 팀원들이 이러한 폴더의 모든 파일을 파헤쳐야 하며, 관련 없는 코드를 가까이 유지하게 되어 리팩토링의 영향을 받는 코드 영역이 넓어지고 결과적으로 코드 리뷰와 테스트를 더 어렵게 만듭니다.

    +

    엄격한 공개 API 정의

    +

    Feature-Sliced Design의 맥락에서 공개 API라는 용어는 슬라이스나 세그먼트가 프로젝트의 다른 모듈에서 가져올 수 있는 것을 선언하는 것을 의미합니다. 예를 들어, JavaScript에서는 슬라이스의 다른 파일에서 객체를 다시 내보내는 index.js 파일일 수 있습니다. 이를 통해 외부 세계와의 계약(즉, 공개 API)이 동일하게 유지되는 한 슬라이스 내부의 코드를 자유롭게 리팩토링할 수 있습니다.

    +

    슬라이스가 없는 Shared 계층의 경우, Shared의 모든 것에 대한 단일 인덱스를 정의하는 것과 반대로 각 세그먼트에 대해 별도의 공개 API를 정의하는 것이 일반적으로 더 편리합니다. 이렇게 하면 Shared에서의 가져오기가 자연스럽게 의도별로 구성됩니다. 슬라이스가 있는 다른 계층의 경우 반대가 사실입니다 — 일반적으로 슬라이스당 하나의 인덱스를 정의하고 슬라이스가 외부 세계에 알려지지 않은 자체 세그먼트 세트를 결정하도록 하는 것이 더 실용적입니다. 다른 계층은 일반적으로 내보내기가 훨씬 적기 때문입니다.

    +

    우리의 슬라이스/세그먼트는 서로에게 다음과 같이 나타날 것입니다.

    📂 pages/
    📂 feed/
    📄 index
    📂 sign-in/
    📄 index
    📂 article-read/
    📄 index
    📁 …
    📂 shared/
    📂 ui/
    📄 index
    📂 api/
    📄 index
    📁 …
    -

    Whatever is inside folders like pages/feed or shared/ui is only known to those folders, and other files should not rely on the internal structure of these folders.

    -

    Large reused blocks in the UI

    -

    Earlier we made a note to revisit the header that appears on every page. Rebuilding it from scratch on every page would be impractical, so it’s only natural to want to reuse it. We already have Shared to facilitate code reuse, however, there’s a caveat to putting large blocks of UI in Shared — the Shared layer is not supposed to know about any of the layers above.

    -

    Between Shared and Pages there are three other layers: Entities, Features, and Widgets. Some projects may have something in those layers that they need in a large reusable block, and that means we can’t put that reusable block in Shared, or else it would be importing from upper layers, which is prohibited. That’s where the Widgets layer comes in. It is located above Shared, Entities, and Features, so it can use them all.

    -

    In our case, the header is very simple — it’s a static logo and top-level navigation. The navigation needs to make a request to the API to determine if the user is currently logged in or not, but that can be handled by a simple import from the api segment. Therefore, we will keep our header in Shared.

    -

    Close look at a page with a form

    -

    Let’s also examine a page that’s intended for editing, not reading. For example, the article writer:

    +

    pages/feedshared/ui와 같은 폴더 내부의 내용은 해당 폴더에만 알려져 있으며, 다른 파일은 이러한 폴더의 내부 구조에 의존해서는 안 됩니다.

    +

    UI의 큰 재사용 블록

    +

    앞서 모든 페이지에 나타나는 헤더를 다시 살펴보기로 했습니다. 모든 페이지에서 처음부터 다시 만드는 것은 비실용적이므로 재사용하고 싶을 것입니다. 우리는 이미 코드 재사용을 용이하게 하는 Shared를 가지고 있지만, Shared에 큰 UI 블록을 넣는 데는 주의할 점이 있습니다 — Shared 계층은 위의 계층에 대해 알지 못해야 합니다.

    +

    Shared와 Pages 사이에는 Entities, Features, Widgets의 세 가지 다른 계층이 있습니다. 일부 프로젝트는 이러한 계층에 큰 재사용 가능한 블록에 필요한 것이 있을 수 있으며, 이는 해당 재사용 가능한 블록을 Shared에 넣을 수 없다는 것을 의미합니다. 그렇지 않으면 상위 계층에서 가져오게 되어 금지됩니다. 이것이 Widgets 계층이 필요한 이유입니다. Widgets는 Shared, Entities, Features 위에 위치하므로 이들 모두를 사용할 수 있습니다.

    +

    우리의 경우, 헤더는 매우 간단합니다 — 정적 로고와 최상위 탐색입니다. 탐색은 사용자가 현재 로그인했는지 여부를 확인하기 위해 API에 요청을 해야 하지만, 이는 api 세그먼트에서 간단한 가져오기로 처리할 수 있습니다. 따라서 우리는 헤더를 Shared에 유지할 것입니다.

    +

    폼이 있는 페이지 자세히 보기

    +

    읽기가 아닌 편집을 위한 페이지도 살펴보겠습니다.

    Conduit post editor

    -

    It looks trivial, but contains several aspects of application development that we haven’t explored yet — form validation, error states, and data persistence.

    -

    If we were to build this page, we would grab some inputs and buttons from Shared and put together a form in the ui segment of this page. Then, in the api segment, we would define a mutation request to create the article on the backend.

    -

    To validate the request before sending, we need a validation schema, and a good place for it is the model segment, since it’s the data model. There we will produce error messages and display them using another component in the ui segment.

    -

    To improve user experience, we could also persist the inputs to prevent accidental data loss. This is also a job of the model segment.

    -

    Summary

    -

    We have examined several pages and outlined a preliminary structure for our application:

    +

    간단해 보이지만, 폼 유효성 검사, 오류 상태, 데이터 지속성 등 아직 탐구하지 않은 애플리케이션 개발의 여러 측면을 포함하고 있습니다.

    +

    이 페이지를 만들려면 Shared에서 일부 입력과 버튼을 가져와 이 페이지의 ui 세그먼트에서 폼을 구성할 것입니다. 그런 다음 api 세그먼트에서 백엔드에 글을 생성하는 변경 요청을 정의할 것입니다.

    +

    요청을 보내기 전에 유효성을 검사하려면 유효성 검사 스키마가 필요하며, 이를 위한 좋은 위치는 데이터 모델이기 때문에 model 세그먼트입니다. 여기서 오류 메시지를 생성하고 ui 세그먼트의 다른 컴포넌트를 사용하여 표시할 것입니다.

    +

    사용자 경험을 개선하기 위해 우발적인 데이터 손실을 방지하기 위해 입력을 지속시킬 수도 있습니다. 이것도 model 세그먼트의 작업입니다.

    +

    요약

    +

    우리는 여러 페이지를 검토하고 애플리케이션의 예비 구조를 개략적으로 설명했습니다.

    1. Shared layer
        -
      1. ui will contain our reusable UI kit
      2. -
      3. api will contain our primitive interactions with the backend
      4. -
      5. The rest will be arranged on demand
      6. +
      7. ui는 재사용 가능한 UI 키트를 포함할 것입니다.
      8. +
      9. api는 백엔드와의 기본적인 상호작용을 포함할 것입니다.
      10. +
      11. 나머지는 필요에 따라 정리될 것입니다.
    2. -
    3. Pages layer — each page is a separate slice +
    4. Pages layer — 각 페이지는 별도의 슬라이스입니다.
        -
      1. ui will contain the page itself and all of its parts
      2. -
      3. api will contain more specialized data fetching, using shared/api
      4. -
      5. model might contain client-side storage of the data that we will display
      6. +
      7. ui는 페이지 자체와 모든 부분을 포함할 것입니다.
      8. +
      9. apishared/api를 사용하여 더 특화된 데이터 가져오기를 포함할 것입니다.
      10. +
      11. model은 표시할 데이터의 클라이언트 측 저장소를 포함할 수 있습니다.
    -

    Let’s get building!

    -

    Part 2. In code

    -

    Now that we have a plan, let’s put it to practice. We will use React and Remix.

    -

    There's a template ready for this project, clone it from GitHub to get a headstart: https://github.com/feature-sliced/tutorial-conduit/tree/clean.

    -

    Install dependencies with npm install and start the development server with npm run dev. Open http://localhost:3000 and you should see a blank app.

    -

    Lay out the pages

    -

    Let’s start by creating blank components for all our pages. Run the following command in your project:

    +

    이제 코드 작성을 시작해 봅시다!

    +

    Part 2. 코드 작성

    +

    이제 설계를 완료했으니 실제로 코드를 작성해 봅시다. React와 Remix를 사용할 것입니다.

    +

    이 프로젝트를 위한 템플릿이 준비되어 있습니다. GitHub에서 클론하여 시작하세요. https://github.com/feature-sliced/tutorial-conduit/tree/clean.

    +

    npm install로 의존성을 설치하고 npm run dev로 개발 서버를 시작하세요. http://localhost:3000을 열면 빈 앱이 보일 것입니다.

    +

    페이지 레이아웃

    +

    모든 페이지에 대한 빈 컴포넌트를 만드는 것부터 시작하겠습니다. 프로젝트에서 다음 명령을 실행하세요.

    npx fsd pages feed sign-in article-read article-edit profile settings --segments ui
    -

    This will create folders like pages/feed/ui/ and an index file, pages/feed/index.ts, for every page.

    -

    Connect the feed page

    -

    Let’s connect the root route of our application to the feed page. Create a component, FeedPage.tsx in pages/feed/ui and put the following inside it:

    +

    이렇게 하면 pages/feed/ui/와 같은 폴더와 모든 페이지에 대한 인덱스 파일인 pages/feed/index.ts가 생성됩니다.

    +

    피드 페이지 연결

    +

    애플리케이션의 루트 경로를 피드 페이지에 연결해 봅시다. pages/feed/uiFeedPage.tsx 컴포넌트를 만들고 다음 내용을 넣으세요:

    pages/feed/ui/FeedPage.tsx
    export function FeedPage() {
    return (
    <div className="home-page">
    <div className="banner">
    <div className="container">
    <h1 className="logo-font">conduit</h1>
    <p>A place to share your knowledge.</p>
    </div>
    </div>
    </div>
    );
    }
    -

    Then re-export this component in the feed page’s public API, the pages/feed/index.ts file:

    +

    그런 다음 피드 페이지의 공개 API인 pages/feed/index.ts 파일에서 이 컴포넌트를 다시 내보내세요.

    pages/feed/index.ts
    export { FeedPage } from "./ui/FeedPage";
    -

    Now connect it to the root route. In Remix, routing is file-based, and the route files are located in the app/routes folder, which nicely coincides with Feature-Sliced Design.

    -

    Use the FeedPage component in app/routes/_index.tsx:

    +

    이제 루트 경로에 연결합니다. Remix에서 라우팅은 파일 기반이며, 라우트 파일은 app/routes 폴더에 있어 Feature-Sliced Design과 잘 맞습니다.

    +

    app/routes/_index.tsx에서 FeedPage 컴포넌트를 사용하세요.

    app/routes/_index.tsx
    import type { MetaFunction } from "@remix-run/node";
    import { FeedPage } from "pages/feed";

    export const meta: MetaFunction = () => {
    return [{ title: "Conduit" }];
    };

    export default FeedPage;
    -

    Then, if you run the dev server and open the application, you should see the Conduit banner!

    +

    그런 다음 개발 서버를 실행하고 애플리케이션을 열면 Conduit 배너가 보일 것입니다!

    The banner of Conduit

    -

    API client

    -

    To talk to the RealWorld backend, let’s create a convenient API client in Shared. Create two segments, api for the client and config for variables like the backend base URL:

    +

    API 클라이언트

    +

    RealWorld 백엔드와 통신하기 위해 Shared에 편리한 API 클라이언트를 만들어 봅시다. 클라이언트를 위한 api와 백엔드 기본 URL과 같은 변수를 위한 config, 두 개의 세그먼트를 만드세요.

    npx fsd shared --segments api config
    -

    Then create shared/config/backend.ts:

    +

    그런 다음 shared/config/backend.ts를 만드세요.

    shared/config/backend.ts
    export const backendBaseUrl = "https://api.realworld.io/api";
    shared/config/index.ts
    export { backendBaseUrl } from "./backend";
    -

    Since the RealWorld project conveniently provides an OpenAPI specification, we can take advantage of auto-generated types for our client. We will use the openapi-fetch package that comes with an additional type generator.

    -

    Run the following command to generate up-to-date API typings:

    +

    RealWorld 프로젝트는 편리하게 OpenAPI 사양을 제공하므로, 클라이언트를 위한 자동 생성 타입을 활용할 수 있습니다. 추가 타입 생성기가 포함된 openapi-fetch 패키지를 사용할 것입니다.

    +

    다음 명령을 실행하여 최신 API 타입을 생성하세요.

    npm run generate-api-types
    -

    This will create a file shared/api/v1.d.ts. We will use this file to create a typed API client in shared/api/client.ts:

    +

    이렇게 하면 shared/api/v1.d.ts 파일이 생성됩니다. 이 파일을 사용하여 shared/api/client.ts에 타입이 지정된 API 클라이언트를 만들 것입니다.

    shared/api/client.ts
    import createClient from "openapi-fetch";

    import { backendBaseUrl } from "shared/config";
    import type { paths } from "./v1";

    export const { GET, POST, PUT, DELETE } = createClient<paths>({ baseUrl: backendBaseUrl });
    shared/api/index.ts
    export { GET, POST, PUT, DELETE } from "./client";
    -

    Real data in the feed

    -

    We can now proceed to adding articles to the feed, fetched from the backend. Let’s begin by implementing an article preview component.

    -

    Create pages/feed/ui/ArticlePreview.tsx with the following content:

    +

    피드의 실제 데이터

    +

    이제 백엔드에서 가져온 글을 피드에 추가할 수 있습니다. 글 미리보기 컴포넌트를 구현하는 것부터 시작하겠습니다.

    +

    다음 내용으로 pages/feed/ui/ArticlePreview.tsx를 만드세요.

    pages/feed/ui/ArticlePreview.tsx
    export function ArticlePreview({ article }) { /* TODO */ }
    -

    Since we’re writing in TypeScript, it would be nice to have a typed article object. If we explore the generated v1.d.ts, we can see that the article object is available through components["schemas"]["Article"]. So let’s create a file with our data models in Shared and export the models:

    +

    TypeScript를 사용하고 있으므로 글 객체에 타입을 지정하면 좋을 것 같습니다. 생성된 v1.d.ts를 살펴보면 글 객체가 components["schemas"]["Article"]을 통해 사용 가능한 것을 볼 수 있습니다. 그럼 Shared에 데이터 모델이 있는 파일을 만들고 모델을 내보내겠습니다.

    shared/api/models.ts
    import type { components } from "./v1";

    export type Article = components["schemas"]["Article"];
    shared/api/index.ts
    export { GET, POST, PUT, DELETE } from "./client";

    export type { Article } from "./models";
    -

    Now we can come back to the article preview component and fill the markup with data. Update the component with the following content:

    +

    이제 글 미리보기 컴포넌트로 돌아가 데이터로 마크업을 채울 수 있습니다. 컴포넌트를 다음 내용으로 업데이트하세요.

    pages/feed/ui/ArticlePreview.tsx
    import { Link } from "@remix-run/react";
    import type { Article } from "shared/api";

    interface ArticlePreviewProps {
    article: Article;
    }

    export function ArticlePreview({ article }: ArticlePreviewProps) {
    return (
    <div className="article-preview">
    <div className="article-meta">
    <Link to={`/profile/${article.author.username}`} prefetch="intent">
    <img src={article.author.image} alt="" />
    </Link>
    <div className="info">
    <Link
    to={`/profile/${article.author.username}`}
    className="author"
    prefetch="intent"
    >
    {article.author.username}
    </Link>
    <span className="date" suppressHydrationWarning>
    {new Date(article.createdAt).toLocaleDateString(undefined, {
    dateStyle: "long",
    })}
    </span>
    </div>
    <button className="btn btn-outline-primary btn-sm pull-xs-right">
    <i className="ion-heart"></i> {article.favoritesCount}
    </button>
    </div>
    <Link
    to={`/article/${article.slug}`}
    className="preview-link"
    prefetch="intent"
    >
    <h1>{article.title}</h1>
    <p>{article.description}</p>
    <span>Read more...</span>
    <ul className="tag-list">
    {article.tagList.map((tag) => (
    <li key={tag} className="tag-default tag-pill tag-outline">
    {tag}
    </li>
    ))}
    </ul>
    </Link>
    </div>
    );
    }
    -

    The like button doesn’t do anything for now, we will fix that when we get to the article reader page and implement the liking functionality.

    -

    Now we can fetch the articles and render out a bunch of these cards. Fetching data in Remix is done with loaders — server-side functions that fetch exactly what a page needs. Loaders interact with the API on the page’s behalf, so we will put them in the api segment of a page:

    +

    좋아요 버튼은 지금은 아무 작업도 하지 않습니다. 글 읽기 페이지를 만들고 좋아요 기능을 구현할 때 수정하겠습니다.

    +

    이제 글을 가져와서 이러한 카드를 여러 개 렌더링할 수 있습니다. Remix에서 데이터 가져오기는 로더 — 페이지가 필요로 하는 것을 정확히 가져오는 서버 측 함수 — 를 통해 수행됩니다. 로더는 페이지를 대신하여 API와 상호 작용하므로 페이지의 api 세그먼트에 넣을 것입니다:

    pages/feed/api/loader.ts
    import { json } from "@remix-run/node";

    import { GET } from "shared/api";

    export const loader = async () => {
    const { data: articles, error, response } = await GET("/articles");

    if (error !== undefined) {
    throw json(error, { status: response.status });
    }

    return json({ articles });
    };
    -

    To connect it to the page, we need to export it with the name loader from the route file:

    +

    페이지에 연결하려면 라우트 파일에서 loader라는 이름으로 내보내야 합니다.

    pages/feed/index.ts
    export { FeedPage } from "./ui/FeedPage";
    export { loader } from "./api/loader";
    app/routes/_index.tsx
    import type { MetaFunction } from "@remix-run/node";
    import { FeedPage } from "pages/feed";

    export { loader } from "pages/feed";

    export const meta: MetaFunction = () => {
    return [{ title: "Conduit" }];
    };

    export default FeedPage;
    -

    And the final step is to render these cards in the feed. Update your FeedPage with the following code:

    +

    마지막 단계는 피드에 이러한 카드를 렌더링하는 것입니다. FeedPage를 다음 코드로 업데이트하세요.

    pages/feed/ui/FeedPage.tsx
    import { useLoaderData } from "@remix-run/react";

    import type { loader } from "../api/loader";
    import { ArticlePreview } from "./ArticlePreview";

    export function FeedPage() {
    const { articles } = useLoaderData<typeof loader>();

    return (
    <div className="home-page">
    <div className="banner">
    <div className="container">
    <h1 className="logo-font">conduit</h1>
    <p>A place to share your knowledge.</p>
    </div>
    </div>

    <div className="container page">
    <div className="row">
    <div className="col-md-9">
    {articles.articles.map((article) => (
    <ArticlePreview key={article.slug} article={article} />
    ))}
    </div>
    </div>
    </div>
    </div>
    );
    }
    -

    Filtering by tag

    -

    Regarding the tags, our job is to fetch them from the backend and to store the currently selected tag. We already know how to do fetching — it’s another request from the loader. We will use a convenience function promiseHash from a package remix-utils, which is already installed.

    -

    Update the loader file, pages/feed/api/loader.ts, with the following code:

    +

    태그로 필터링

    +

    태그와 관련해서는 백엔드에서 태그를 가져오고 현재 선택된 태그를 저장해야 합니다. 가져오기 방법은 이미 알고 있습니다 — 로더에서 또 다른 요청을 하면 됩니다. remix-utils 패키지에서 promiseHash라는 편리한 함수를 사용할 것입니다. 이 패키지는 이미 설치되어 있습니다.

    +

    로더 파일인 pages/feed/api/loader.ts를 다음 코드로 업데이트하세요.

    pages/feed/api/loader.ts
    import { json } from "@remix-run/node";
    import type { FetchResponse } from "openapi-fetch";
    import { promiseHash } from "remix-utils/promise";

    import { GET } from "shared/api";

    async function throwAnyErrors<T, O, Media extends `${string}/${string}`>(
    responsePromise: Promise<FetchResponse<T, O, Media>>,
    ) {
    const { data, error, response } = await responsePromise;

    if (error !== undefined) {
    throw json(error, { status: response.status });
    }

    return data as NonNullable<typeof data>;
    }

    export const loader = async () => {
    return json(
    await promiseHash({
    articles: throwAnyErrors(GET("/articles")),
    tags: throwAnyErrors(GET("/tags")),
    }),
    );
    };
    -

    You might notice that we extracted the error handling into a generic function throwAnyErrors. It looks pretty useful, so we might want to reuse it later, but for now let’s just keep an eye on it.

    -

    Now, to the list of tags. It needs to be interactive — clicking on a tag should make that tag selected. By Remix convention, we will use the URL search parameters as our storage for the selected tag. Let the browser take care of storage while we focus on more important things.

    -

    Update pages/feed/ui/FeedPage.tsx with the following code:

    +

    오류 처리를 일반 함수 throwAnyErrors로 추출했다는 점에 주목하세요. 꽤 유용해 보이므로 나중에 재사용할 수 있을 것 같습니다. 지금은 그냥 주목해 두겠습니다.

    +

    이제 태그 목록으로 넘어갑시다. 이는 상호작용이 가능해야 합니다 — 태그를 클릭하면 해당 태그가 선택되어야 합니다. Remix 규칙에 따라 URL 검색 매개변수를 선택된 태그의 저장소로 사용할 것입니다. 브라우저가 저장을 처리하게 하고 우리는 더 중요한 일에 집중하겠습니다.

    +

    pages/feed/ui/FeedPage.tsx를 다음 코드로 업데이트하세요.

    pages/feed/ui/FeedPage.tsx
    import { Form, useLoaderData } from "@remix-run/react";
    import { ExistingSearchParams } from "remix-utils/existing-search-params";

    import type { loader } from "../api/loader";
    import { ArticlePreview } from "./ArticlePreview";

    export function FeedPage() {
    const { articles, tags } = useLoaderData<typeof loader>();

    return (
    <div className="home-page">
    <div className="banner">
    <div className="container">
    <h1 className="logo-font">conduit</h1>
    <p>A place to share your knowledge.</p>
    </div>
    </div>

    <div className="container page">
    <div className="row">
    <div className="col-md-9">
    {articles.articles.map((article) => (
    <ArticlePreview key={article.slug} article={article} />
    ))}
    </div>

    <div className="col-md-3">
    <div className="sidebar">
    <p>Popular Tags</p>

    <Form>
    <ExistingSearchParams exclude={["tag"]} />
    <div className="tag-list">
    {tags.tags.map((tag) => (
    <button
    key={tag}
    name="tag"
    value={tag}
    className="tag-pill tag-default"
    >
    {tag}
    </button>
    ))}
    </div>
    </Form>
    </div>
    </div>
    </div>
    </div>
    </div>
    );
    }
    -

    Then we need to use the tag search parameter in our loader. Change the loader function in pages/feed/api/loader.ts to the following:

    +

    그런 다음 로더에서 tag 검색 매개변수를 사용해야 합니다. pages/feed/api/loader.tsloader 함수를 다음과 같이 변경하세요.

    pages/feed/api/loader.ts
    import { json, type LoaderFunctionArgs } from "@remix-run/node";
    import type { FetchResponse } from "openapi-fetch";
    import { promiseHash } from "remix-utils/promise";

    import { GET } from "shared/api";

    async function throwAnyErrors<T, O, Media extends `${string}/${string}`>(
    responsePromise: Promise<FetchResponse<T, O, Media>>,
    ) {
    const { data, error, response } = await responsePromise;

    if (error !== undefined) {
    throw json(error, { status: response.status });
    }

    return data as NonNullable<typeof data>;
    }

    export const loader = async ({ request }: LoaderFunctionArgs) => {
    const url = new URL(request.url);
    const selectedTag = url.searchParams.get("tag") ?? undefined;

    return json(
    await promiseHash({
    articles: throwAnyErrors(
    GET("/articles", { params: { query: { tag: selectedTag } } }),
    ),
    tags: throwAnyErrors(GET("/tags")),
    }),
    );
    };
    -

    That’s it, no model segment necessary. Remix is pretty neat.

    -

    Pagination

    -

    In a similar fashion, we can implement the pagination. Feel free to give it a shot yourself or just copy the code below. There’s no one to judge you anyway.

    +

    이게 전부입니다. model 세그먼트가 필요하지 않습니다. Remix는 꽤 깔끔하죠.

    +

    페이지네이션

    +

    비슷한 방식으로 페이지네이션을 구현할 수 있습니다. 직접 시도해 보거나 아래 코드를 복사하세요. 어차피 당신을 판단할 사람은 없습니다.

    pages/feed/api/loader.ts
    import { json, type LoaderFunctionArgs } from "@remix-run/node";
    import type { FetchResponse } from "openapi-fetch";
    import { promiseHash } from "remix-utils/promise";

    import { GET } from "shared/api";

    async function throwAnyErrors<T, O, Media extends `${string}/${string}`>(
    responsePromise: Promise<FetchResponse<T, O, Media>>,
    ) {
    const { data, error, response } = await responsePromise;

    if (error !== undefined) {
    throw json(error, { status: response.status });
    }

    return data as NonNullable<typeof data>;
    }

    /** Amount of articles on one page. */
    export const LIMIT = 20;

    export const loader = async ({ request }: LoaderFunctionArgs) => {
    const url = new URL(request.url);
    const selectedTag = url.searchParams.get("tag") ?? undefined;
    const page = parseInt(url.searchParams.get("page") ?? "", 10);

    return json(
    await promiseHash({
    articles: throwAnyErrors(
    GET("/articles", {
    params: {
    query: {
    tag: selectedTag,
    limit: LIMIT,
    offset: !Number.isNaN(page) ? page * LIMIT : undefined,
    },
    },
    }),
    ),
    tags: throwAnyErrors(GET("/tags")),
    }),
    );
    };
    pages/feed/ui/FeedPage.tsx
    import { Form, useLoaderData, useSearchParams } from "@remix-run/react";
    import { ExistingSearchParams } from "remix-utils/existing-search-params";

    import { LIMIT, type loader } from "../api/loader";
    import { ArticlePreview } from "./ArticlePreview";

    export function FeedPage() {
    const [searchParams] = useSearchParams();
    const { articles, tags } = useLoaderData<typeof loader>();
    const pageAmount = Math.ceil(articles.articlesCount / LIMIT);
    const currentPage = parseInt(searchParams.get("page") ?? "1", 10);

    return (
    <div className="home-page">
    <div className="banner">
    <div className="container">
    <h1 className="logo-font">conduit</h1>
    <p>A place to share your knowledge.</p>
    </div>
    </div>

    <div className="container page">
    <div className="row">
    <div className="col-md-9">
    {articles.articles.map((article) => (
    <ArticlePreview key={article.slug} article={article} />
    ))}

    <Form>
    <ExistingSearchParams exclude={["page"]} />
    <ul className="pagination">
    {Array(pageAmount)
    .fill(null)
    .map((_, index) =>
    index + 1 === currentPage ? (
    <li key={index} className="page-item active">
    <span className="page-link">{index + 1}</span>
    </li>
    ) : (
    <li key={index} className="page-item">
    <button
    className="page-link"
    name="page"
    value={index + 1}
    >
    {index + 1}
    </button>
    </li>
    ),
    )}
    </ul>
    </Form>
    </div>

    <div className="col-md-3">
    <div className="sidebar">
    <p>Popular Tags</p>

    <Form>
    <ExistingSearchParams exclude={["tag", "page"]} />
    <div className="tag-list">
    {tags.tags.map((tag) => (
    <button
    key={tag}
    name="tag"
    value={tag}
    className="tag-pill tag-default"
    >
    {tag}
    </button>
    ))}
    </div>
    </Form>
    </div>
    </div>
    </div>
    </div>
    </div>
    );
    }
    -

    So that’s also done. There’s also the tab list that can be similarly implemented, but let’s hold on to that until we implement authentication. Speaking of which!

    -

    Authentication

    -

    Authentication involves two pages — one to login and another to register. They are mostly the same, so it makes sense to keep them in the same slice, sign-in, so that they can reuse code if needed.

    -

    Create RegisterPage.tsx in the ui segment of pages/sign-in with the following content:

    +

    이것으로 완료되었습니다. 탭 목록도 비슷하게 구현할 수 있지만, 인증을 구현할 때까지 잠시 보류하겠습니다. 그런데 말이 나왔으니!

    +

    인증

    +

    인증에는 두 개의 페이지가 관련됩니다 - 로그인과 회원가입입니다. 이들은 대부분 동일하므로 필요한 경우 코드를 재사용할 수 있도록 sign-in이라는 동일한 슬라이스에 유지하는 것이 합리적입니다.

    +

    pages/sign-inui 세그먼트에 다음 내용으로 RegisterPage.tsx를 만드세요.

    pages/sign-in/ui/RegisterPage.tsx
    import { Form, Link, useActionData } from "@remix-run/react";

    import type { register } from "../api/register";

    export function RegisterPage() {
    const registerData = useActionData<typeof register>();

    return (
    <div className="auth-page">
    <div className="container page">
    <div className="row">
    <div className="col-md-6 offset-md-3 col-xs-12">
    <h1 className="text-xs-center">Sign up</h1>
    <p className="text-xs-center">
    <Link to="/login">Have an account?</Link>
    </p>

    {registerData?.error && (
    <ul className="error-messages">
    {registerData.error.errors.body.map((error) => (
    <li key={error}>{error}</li>
    ))}
    </ul>
    )}

    <Form method="post">
    <fieldset className="form-group">
    <input
    className="form-control form-control-lg"
    type="text"
    name="username"
    placeholder="Username"
    />
    </fieldset>
    <fieldset className="form-group">
    <input
    className="form-control form-control-lg"
    type="text"
    name="email"
    placeholder="Email"
    />
    </fieldset>
    <fieldset className="form-group">
    <input
    className="form-control form-control-lg"
    type="password"
    name="password"
    placeholder="Password"
    />
    </fieldset>
    <button className="btn btn-lg btn-primary pull-xs-right">
    Sign up
    </button>
    </Form>
    </div>
    </div>
    </div>
    </div>
    );
    }
    -

    We have a broken import to fix now. It involves a new segment, so create that:

    +

    이제 고쳐야 할 깨진 import가 있습니다. 새로운 세그먼트가 필요하므로 다음과 같이 만드세요.

    npx fsd pages sign-in -s api
    -

    However, before we can implement the backend part of registering, we need some infrastructure code for Remix to handle sessions. That goes to Shared, in case any other page needs it.

    -

    Put the following code in shared/api/auth.server.ts. This is highly Remix-specific, so don’t worry too much about it, just copy-paste:

    +

    그러나 등록의 백엔드 부분을 구현하기 전에 Remix가 세션을 처리할 수 있도록 일부 인프라 코드가 필요합니다. 다른 페이지에서도 필요할 수 있으므로 이는 Shared로 갑니다.

    +

    다음 코드를 shared/api/auth.server.ts에 넣으세요. 이는 Remix에 매우 특화된 것이므로 너무 걱정하지 마세요. 그냥 복사-붙여넣기 하세요.

    shared/api/auth.server.ts
    import { createCookieSessionStorage, redirect } from "@remix-run/node";
    import invariant from "tiny-invariant";

    import type { User } from "./models";

    invariant(
    process.env.SESSION_SECRET,
    "SESSION_SECRET must be set for authentication to work",
    );

    const sessionStorage = createCookieSessionStorage<{
    user: User;
    }>({
    cookie: {
    name: "__session",
    httpOnly: true,
    path: "/",
    sameSite: "lax",
    secrets: [process.env.SESSION_SECRET],
    secure: process.env.NODE_ENV === "production",
    },
    });

    export async function createUserSession({
    request,
    user,
    redirectTo,
    }: {
    request: Request;
    user: User;
    redirectTo: string;
    }) {
    const cookie = request.headers.get("Cookie");
    const session = await sessionStorage.getSession(cookie);

    session.set("user", user);

    return redirect(redirectTo, {
    headers: {
    "Set-Cookie": await sessionStorage.commitSession(session, {
    maxAge: 60 * 60 * 24 * 7, // 7 days
    }),
    },
    });
    }

    export async function getUserFromSession(request: Request) {
    const cookie = request.headers.get("Cookie");
    const session = await sessionStorage.getSession(cookie);

    return session.get("user") ?? null;
    }

    export async function requireUser(request: Request) {
    const user = await getUserFromSession(request);

    if (user === null) {
    throw redirect("/login");
    }

    return user;
    }
    -

    And also export the User model from the models.ts file right next to it:

    +

    그리고 바로 옆에 있는 models.ts 파일에서 User 모델도 내보내세요.

    shared/api/models.ts
    import type { components } from "./v1";

    export type Article = components["schemas"]["Article"];
    export type User = components["schemas"]["User"];
    -

    Before this code can work, the SESSION_SECRET environment variable needs to be set. Create a file called .env in the root of the project, write SESSION_SECRET= and then mash some keys on your keyboard to create a long random string. You should get something like this:

    +

    이 코드가 작동하려면 SESSION_SECRET 환경 변수를 설정해야 합니다. 프로젝트 루트에 .env 파일을 만들고 SESSION_SECRET=을 작성한 다음 키보드에서 무작위로 키를 눌러 긴 무작위 문자열을 만드세요. 다음과 같은 결과가 나와야 합니다.

    .env
    SESSION_SECRET=dontyoudarecopypastethis
    -

    Finally, add some exports to the public API to make use of this code:

    +

    마지막으로 이 코드를 사용하기 위해 공개 API에 일부 내보내기를 추가하세요.

    shared/api/index.ts
    export { GET, POST, PUT, DELETE } from "./client";

    export type { Article } from "./models";

    export { createUserSession, getUserFromSession, requireUser } from "./auth.server";
    -

    Now we can write the code that will talk to the RealWorld backend to actually do the registration. We will keep that in pages/sign-in/api. Create a file called register.ts and put the following code inside:

    +

    이제 RealWorld 백엔드와 실제로 통신하여 등록을 수행하는 코드를 작성할 수 있습니다. 그것을 pages/sign-in/api에 유지할 것입니다. register.ts라는 파일을 만들고 다음 코드를 넣으세요.

    pages/sign-in/api/register.ts
    import { json, type ActionFunctionArgs } from "@remix-run/node";

    import { POST, createUserSession } from "shared/api";

    export const register = async ({ request }: ActionFunctionArgs) => {
    const formData = await request.formData();
    const username = formData.get("username")?.toString() ?? "";
    const email = formData.get("email")?.toString() ?? "";
    const password = formData.get("password")?.toString() ?? "";

    const { data, error } = await POST("/users", {
    body: { user: { email, password, username } },
    });

    if (error) {
    return json({ error }, { status: 400 });
    } else {
    return createUserSession({
    request: request,
    user: data.user,
    redirectTo: "/",
    });
    }
    };
    pages/sign-in/index.ts
    export { RegisterPage } from './ui/RegisterPage';
    export { register } from './api/register';
    -

    Almost done! Just need to connect the page and action to the /register route. Create register.tsx in app/routes:

    +

    거의 다 왔습니다! 페이지와 액션을 /register 라우트에 연결하기만 하면 됩니다. app/routesregister.tsx를 만드세요.

    app/routes/register.tsx
    import { RegisterPage, register } from "pages/sign-in";

    export { register as action };

    export default RegisterPage;
    -

    Now if you go to http://localhost:3000/register, you should be able to create a user! The rest of the application won’t react to this yet, we’ll address that momentarily.

    -

    In a very similar way, we can implement the login page. Give it a try or just grab the code and move on:

    +

    이제 http://localhost:3000/register로 가면 사용자를 생성할 수 있어야 합니다! 애플리케이션의 나머지 부분은 아직 이에 반응하지 않을 것입니다. 곧 그 문제를 해결하겠습니다.

    +

    매우 유사한 방식으로 로그인 페이지를 구현할 수 있습니다. 직접 시도해 보거나 그냥 코드를 가져와서 계속 진행하세요.

    pages/sign-in/api/sign-in.ts
    import { json, type ActionFunctionArgs } from "@remix-run/node";

    import { POST, createUserSession } from "shared/api";

    export const signIn = async ({ request }: ActionFunctionArgs) => {
    const formData = await request.formData();
    const email = formData.get("email")?.toString() ?? "";
    const password = formData.get("password")?.toString() ?? "";

    const { data, error } = await POST("/users/login", {
    body: { user: { email, password } },
    });

    if (error) {
    return json({ error }, { status: 400 });
    } else {
    return createUserSession({
    request: request,
    user: data.user,
    redirectTo: "/",
    });
    }
    };
    pages/sign-in/ui/SignInPage.tsx
    import { Form, Link, useActionData } from "@remix-run/react";

    import type { signIn } from "../api/sign-in";

    export function SignInPage() {
    const signInData = useActionData<typeof signIn>();

    return (
    <div className="auth-page">
    <div className="container page">
    <div className="row">
    <div className="col-md-6 offset-md-3 col-xs-12">
    <h1 className="text-xs-center">Sign in</h1>
    <p className="text-xs-center">
    <Link to="/register">Need an account?</Link>
    </p>

    {signInData?.error && (
    <ul className="error-messages">
    {signInData.error.errors.body.map((error) => (
    <li key={error}>{error}</li>
    ))}
    </ul>
    )}

    <Form method="post">
    <fieldset className="form-group">
    <input
    className="form-control form-control-lg"
    name="email"
    type="text"
    placeholder="Email"
    />
    </fieldset>
    <fieldset className="form-group">
    <input
    className="form-control form-control-lg"
    name="password"
    type="password"
    placeholder="Password"
    />
    </fieldset>
    <button className="btn btn-lg btn-primary pull-xs-right">
    Sign in
    </button>
    </Form>
    </div>
    </div>
    </div>
    </div>
    );
    }
    pages/sign-in/index.ts
    export { RegisterPage } from './ui/RegisterPage';
    export { register } from './api/register';
    export { SignInPage } from './ui/SignInPage';
    export { signIn } from './api/sign-in';
    app/routes/login.tsx
    import { SignInPage, signIn } from "pages/sign-in";

    export { signIn as action };

    export default SignInPage;
    -

    Now let’s give the users a way to actually get to these pages.

    - -

    As we discussed in part 1, the app header is commonly placed either in Widgets or in Shared. We will put it in Shared because it’s very simple and all the business logic can be kept outside of it. Let’s create a place for it:

    +

    이제 사용자가 이 페이지에 실제로 접근할 수 있는 방법을 제공해 봅시다.

    +

    헤더

    +

    1부에서 논의했듯이, 앱 헤더는 일반적으로 Widgets나 Shared에 배치됩니다. 매우 간단하고 모든 비즈니스 로직을 외부에 유지할 수 있기 때문에 Shared에 넣을 것입니다. 이를 위한 장소를 만들어 봅시다.

    npx fsd shared ui
    -

    Now create shared/ui/Header.tsx with the following contents:

    +

    이제 다음 내용으로 shared/ui/Header.tsx를 만드세요.

    shared/ui/Header.tsx
    import { useContext } from "react";
    import { Link, useLocation } from "@remix-run/react";

    import { CurrentUser } from "../api/currentUser";

    export function Header() {
    const currentUser = useContext(CurrentUser);
    const { pathname } = useLocation();

    return (
    <nav className="navbar navbar-light">
    <div className="container">
    <Link className="navbar-brand" to="/" prefetch="intent">
    conduit
    </Link>
    <ul className="nav navbar-nav pull-xs-right">
    <li className="nav-item">
    <Link
    prefetch="intent"
    className={`nav-link ${pathname == "/" ? "active" : ""}`}
    to="/"
    >
    Home
    </Link>
    </li>
    {currentUser == null ? (
    <>
    <li className="nav-item">
    <Link
    prefetch="intent"
    className={`nav-link ${pathname == "/login" ? "active" : ""}`}
    to="/login"
    >
    Sign in
    </Link>
    </li>
    <li className="nav-item">
    <Link
    prefetch="intent"
    className={`nav-link ${pathname == "/register" ? "active" : ""}`}
    to="/register"
    >
    Sign up
    </Link>
    </li>
    </>
    ) : (
    <>
    <li className="nav-item">
    <Link
    prefetch="intent"
    className={`nav-link ${pathname == "/editor" ? "active" : ""}`}
    to="/editor"
    >
    <i className="ion-compose"></i>&nbsp;New Article{" "}
    </Link>
    </li>

    <li className="nav-item">
    <Link
    prefetch="intent"
    className={`nav-link ${pathname == "/settings" ? "active" : ""}`}
    to="/settings"
    >
    {" "}
    <i className="ion-gear-a"></i>&nbsp;Settings{" "}
    </Link>
    </li>
    <li className="nav-item">
    <Link
    prefetch="intent"
    className={`nav-link ${pathname.includes("/profile") ? "active" : ""}`}
    to={`/profile/${currentUser.username}`}
    >
    {currentUser.image && (
    <img
    width={25}
    height={25}
    src={currentUser.image}
    className="user-pic"
    alt=""
    />
    )}
    {currentUser.username}
    </Link>
    </li>
    </>
    )}
    </ul>
    </div>
    </nav>
    );
    }
    -

    Export this component from shared/ui:

    +

    이 컴포넌트를 shared/ui에서 내보내세요.

    shared/ui/index.ts
    export { Header } from "./Header";
    -

    In the header, we rely on the context that’s kept in shared/api. Create that as well:

    +

    헤더에서는 shared/api에 유지되는 컨텍스트에 의존합니다. 그것도 만드세요.

    shared/api/currentUser.ts
    import { createContext } from "react";

    import type { User } from "./models";

    export const CurrentUser = createContext<User | null>(null);
    shared/api/index.ts
    export { GET, POST, PUT, DELETE } from "./client";

    export type { Article } from "./models";

    export { createUserSession, getUserFromSession, requireUser } from "./auth.server";
    export { CurrentUser } from "./currentUser";
    -

    Now let’s add the header to the page. We want it to be on every single page, so it makes sense to simply add it to the root route and wrap the outlet (the place where the page will be rendered) with the CurrentUser context provider. This way our entire app and also the header has access to the current user object. We will also add a loader to actually obtain the current user object from cookies. Drop the following into app/root.tsx:

    +

    이제 페이지에 헤더를 추가해 봅시다. 모든 페이지에 있어야 하므로 루트 라우트에 추가하고 outlet(페이지가 렌더링될 위치)을 CurrentUser 컨텍스트 제공자로 감싸는 것이 합리적입니다. 이렇게 하면 전체 앱과 헤더가 현재 사용자 객체에 접근할 수 있습니다. 또한 쿠키에서 실제로 현재 사용자 객체를 가져오는 로더를 추가할 것입니다. app/root.tsx에 다음 내용을 넣으세요.

    app/root.tsx
    import { cssBundleHref } from "@remix-run/css-bundle";
    import type { LinksFunction, LoaderFunctionArgs } from "@remix-run/node";
    import {
    Links,
    LiveReload,
    Meta,
    Outlet,
    Scripts,
    ScrollRestoration,
    useLoaderData,
    } from "@remix-run/react";

    import { Header } from "shared/ui";
    import { getUserFromSession, CurrentUser } from "shared/api";

    export const links: LinksFunction = () => [
    ...(cssBundleHref ? [{ rel: "stylesheet", href: cssBundleHref }] : []),
    ];

    export const loader = ({ request }: LoaderFunctionArgs) =>
    getUserFromSession(request);

    export default function App() {
    const user = useLoaderData<typeof loader>();

    return (
    <html lang="en">
    <head>
    <meta charSet="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <Meta />
    <Links />
    <link
    href="//code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css"
    rel="stylesheet"
    type="text/css"
    />
    <link
    href="//fonts.googleapis.com/css?family=Titillium+Web:700|Source+Serif+Pro:400,700|Merriweather+Sans:400,700|Source+Sans+Pro:400,300,600,700,300italic,400italic,600italic,700italic"
    rel="stylesheet"
    type="text/css"
    />
    <link rel="stylesheet" href="//demo.productionready.io/main.css" />
    <style>{`
    button {
    border: 0;
    }
    `}</style>
    </head>
    <body>
    <CurrentUser.Provider value={user}>
    <Header />
    <Outlet />
    </CurrentUser.Provider>
    <ScrollRestoration />
    <Scripts />
    <LiveReload />
    </body>
    </html>
    );
    }
    -

    At this point, you should end up with the following on the home page:

    -

    The feed page of Conduit, including the header, the feed, and the tags. The tabs are still missing.

    The feed page of Conduit, including the header, the feed, and the tags. The tabs are still missing.
    -

    Tabs

    -

    Now that we can detect the authentication state, let’s also quickly implement the tabs and post likes to be done with the feed page. We need another form, but this page file is getting kind of large, so let’s move these forms into adjacent files. We will create Tabs.tsx, PopularTags.tsx, and Pagination.tsx with the following content:

    +

    이 시점에서 홈 페이지에 다음과 같은 내용이 표시되어야 합니다.

    +

    The feed page of Conduit, including the header, the feed, and the tags. The tabs are still missing.

    헤더, 피드, 태그를 포함한 Conduit의 피드 페이지. 탭은 아직 없습니다.
    +

    +

    이제 인증 상태를 감지할 수 있으므로 탭과 글 좋아요를 빠르게 구현하여 피드 페이지를 완성해 봅시다. 또 다른 폼이 필요하지만 이 페이지 파일이 꽤 커지고 있으므로 이러한 폼을 인접한 파일로 옮기겠습니다. Tabs.tsx, PopularTags.tsx, Pagination.tsx를 다음 내용으로 만들 것입니다.

    pages/feed/ui/Tabs.tsx
    import { useContext } from "react";
    import { Form, useSearchParams } from "@remix-run/react";

    import { CurrentUser } from "shared/api";

    export function Tabs() {
    const [searchParams] = useSearchParams();
    const currentUser = useContext(CurrentUser);

    return (
    <Form>
    <div className="feed-toggle">
    <ul className="nav nav-pills outline-active">
    {currentUser !== null && (
    <li className="nav-item">
    <button
    name="source"
    value="my-feed"
    className={`nav-link ${searchParams.get("source") === "my-feed" ? "active" : ""}`}
    >
    Your Feed
    </button>
    </li>
    )}
    <li className="nav-item">
    <button
    className={`nav-link ${searchParams.has("tag") || searchParams.has("source") ? "" : "active"}`}
    >
    Global Feed
    </button>
    </li>
    {searchParams.has("tag") && (
    <li className="nav-item">
    <span className="nav-link active">
    <i className="ion-pound"></i> {searchParams.get("tag")}
    </span>
    </li>
    )}
    </ul>
    </div>
    </Form>
    );
    }
    pages/feed/ui/PopularTags.tsx
    import { Form, useLoaderData } from "@remix-run/react";
    import { ExistingSearchParams } from "remix-utils/existing-search-params";

    import type { loader } from "../api/loader";

    export function PopularTags() {
    const { tags } = useLoaderData<typeof loader>();

    return (
    <div className="sidebar">
    <p>Popular Tags</p>

    <Form>
    <ExistingSearchParams exclude={["tag", "page", "source"]} />
    <div className="tag-list">
    {tags.tags.map((tag) => (
    <button
    key={tag}
    name="tag"
    value={tag}
    className="tag-pill tag-default"
    >
    {tag}
    </button>
    ))}
    </div>
    </Form>
    </div>
    );
    }
    pages/feed/ui/Pagination.tsx
    import { Form, useLoaderData, useSearchParams } from "@remix-run/react";
    import { ExistingSearchParams } from "remix-utils/existing-search-params";

    import { LIMIT, type loader } from "../api/loader";

    export function Pagination() {
    const [searchParams] = useSearchParams();
    const { articles } = useLoaderData<typeof loader>();
    const pageAmount = Math.ceil(articles.articlesCount / LIMIT);
    const currentPage = parseInt(searchParams.get("page") ?? "1", 10);

    return (
    <Form>
    <ExistingSearchParams exclude={["page"]} />
    <ul className="pagination">
    {Array(pageAmount)
    .fill(null)
    .map((_, index) =>
    index + 1 === currentPage ? (
    <li key={index} className="page-item active">
    <span className="page-link">{index + 1}</span>
    </li>
    ) : (
    <li key={index} className="page-item">
    <button className="page-link" name="page" value={index + 1}>
    {index + 1}
    </button>
    </li>
    ),
    )}
    </ul>
    </Form>
    );
    }
    -

    And now we can significantly simplify the feed page itself:

    +

    이제 FeedPage를 다음과 같이 업데이트하세요.

    pages/feed/ui/FeedPage.tsx
    import { useLoaderData } from "@remix-run/react";

    import type { loader } from "../api/loader";
    import { ArticlePreview } from "./ArticlePreview";
    import { Tabs } from "./Tabs";
    import { PopularTags } from "./PopularTags";
    import { Pagination } from "./Pagination";

    export function FeedPage() {
    const { articles } = useLoaderData<typeof loader>();

    return (
    <div className="home-page">
    <div className="banner">
    <div className="container">
    <h1 className="logo-font">conduit</h1>
    <p>A place to share your knowledge.</p>
    </div>
    </div>

    <div className="container page">
    <div className="row">
    <div className="col-md-9">
    <Tabs />

    {articles.articles.map((article) => (
    <ArticlePreview key={article.slug} article={article} />
    ))}

    <Pagination />
    </div>

    <div className="col-md-3">
    <PopularTags />
    </div>
    </div>
    </div>
    </div>
    );
    }
    -

    We also need to account for the new tab in the loader function:

    +

    마지막으로 로더를 업데이트하여 새로운 필터를 처리하세요.

    pages/feed/api/loader.ts
    import { json, type LoaderFunctionArgs } from "@remix-run/node";
    import type { FetchResponse } from "openapi-fetch";
    import { promiseHash } from "remix-utils/promise";

    import { GET, requireUser } from "shared/api";

    async function throwAnyErrors<T, O, Media extends `${string}/${string}`>(
    responsePromise: Promise<FetchResponse<T, O, Media>>,
    ) {
    /* unchanged */
    }

    /** Amount of articles on one page. */
    export const LIMIT = 20;

    export const loader = async ({ request }: LoaderFunctionArgs) => {
    const url = new URL(request.url);
    const selectedTag = url.searchParams.get("tag") ?? undefined;
    const page = parseInt(url.searchParams.get("page") ?? "", 10);

    if (url.searchParams.get("source") === "my-feed") {
    const userSession = await requireUser(request);

    return json(
    await promiseHash({
    articles: throwAnyErrors(
    GET("/articles/feed", {
    params: {
    query: {
    limit: LIMIT,
    offset: !Number.isNaN(page) ? page * LIMIT : undefined,
    },
    },
    headers: { Authorization: `Token ${userSession.token}` },
    }),
    ),
    tags: throwAnyErrors(GET("/tags")),
    }),
    );
    }

    return json(
    await promiseHash({
    articles: throwAnyErrors(
    GET("/articles", {
    params: {
    query: {
    tag: selectedTag,
    limit: LIMIT,
    offset: !Number.isNaN(page) ? page * LIMIT : undefined,
    },
    },
    }),
    ),
    tags: throwAnyErrors(GET("/tags")),
    }),
    );
    };
    -

    Before we leave the feed page, let’s add some code that handles likes to posts. Change your ArticlePreview.tsx to the following:

    +

    피드 페이지를 떠나기 전에, 글에 대한 좋아요를 처리하는 코드를 추가해 봅시다. ArticlePreview.tsx를 다음과 같이 변경하세요.

    pages/feed/ui/ArticlePreview.tsx
    import { Form, Link } from "@remix-run/react";
    import type { Article } from "shared/api";

    interface ArticlePreviewProps {
    article: Article;
    }

    export function ArticlePreview({ article }: ArticlePreviewProps) {
    return (
    <div className="article-preview">
    <div className="article-meta">
    <Link to={`/profile/${article.author.username}`} prefetch="intent">
    <img src={article.author.image} alt="" />
    </Link>
    <div className="info">
    <Link
    to={`/profile/${article.author.username}`}
    className="author"
    prefetch="intent"
    >
    {article.author.username}
    </Link>
    <span className="date" suppressHydrationWarning>
    {new Date(article.createdAt).toLocaleDateString(undefined, {
    dateStyle: "long",
    })}
    </span>
    </div>
    <Form
    method="post"
    action={`/article/${article.slug}`}
    preventScrollReset
    >
    <button
    name="_action"
    value={article.favorited ? "unfavorite" : "favorite"}
    className={`btn ${article.favorited ? "btn-primary" : "btn-outline-primary"} btn-sm pull-xs-right`}
    >
    <i className="ion-heart"></i> {article.favoritesCount}
    </button>
    </Form>
    </div>
    <Link
    to={`/article/${article.slug}`}
    className="preview-link"
    prefetch="intent"
    >
    <h1>{article.title}</h1>
    <p>{article.description}</p>
    <span>Read more...</span>
    <ul className="tag-list">
    {article.tagList.map((tag) => (
    <li key={tag} className="tag-default tag-pill tag-outline">
    {tag}
    </li>
    ))}
    </ul>
    </Link>
    </div>
    );
    }
    -

    This code will send a POST request to /article/:slug with _action=favorite to mark the article as favorite. It won’t work yet, but as we start working on the article reader, we will implement this too.

    -

    And with that we are officially done with the feed! Yay!

    -

    Article reader

    -

    First, we need data. Let’s create a loader:

    +

    이 코드는 글에 좋아요를 표시하기 위해 /article/:slug_action=favorite과 함께 POST 요청을 보냅니다. 아직 작동하지 않겠지만, 글 읽기 페이지 작업을 시작하면서 이것도 구현할 것입니다.

    +

    이것으로 피드가 공식적으로 완성되었습니다! 야호!

    +

    글 읽기 페이지

    +

    먼저 데이터가 필요합니다. 로더를 만들어 봅시다.

    npx fsd pages article-read -s api
    pages/article-read/api/loader.ts
    import { json, type LoaderFunctionArgs } from "@remix-run/node";
    import invariant from "tiny-invariant";
    import type { FetchResponse } from "openapi-fetch";
    import { promiseHash } from "remix-utils/promise";

    import { GET, getUserFromSession } from "shared/api";

    async function throwAnyErrors<T, O, Media extends `${string}/${string}`>(
    responsePromise: Promise<FetchResponse<T, O, Media>>,
    ) {
    const { data, error, response } = await responsePromise;

    if (error !== undefined) {
    throw json(error, { status: response.status });
    }

    return data as NonNullable<typeof data>;
    }

    export const loader = async ({ request, params }: LoaderFunctionArgs) => {
    invariant(params.slug, "Expected a slug parameter");
    const currentUser = await getUserFromSession(request);
    const authorization = currentUser
    ? { Authorization: `Token ${currentUser.token}` }
    : undefined;

    return json(
    await promiseHash({
    article: throwAnyErrors(
    GET("/articles/{slug}", {
    params: {
    path: { slug: params.slug },
    },
    headers: authorization,
    }),
    ),
    comments: throwAnyErrors(
    GET("/articles/{slug}/comments", {
    params: {
    path: { slug: params.slug },
    },
    headers: authorization,
    }),
    ),
    }),
    );
    };
    pages/article-read/index.ts
    export { loader } from "./api/loader";
    -

    Now we can connect it to the route /article/:slug by creating the a route file called article.$slug.tsx:

    +

    이제 /article/:slug 라우트에 연결할 수 있습니다. article.$slug.tsx라는 라우트 파일을 만드세요.

    app/routes/article.$slug.tsx
    export { loader } from "pages/article-read";
    -

    The page itself consists of three main blocks — the article header with actions (repeated twice), the article body, and the comments section. This is the markup for the page, it’s not particularly interesting:

    +

    페이지 자체는 세 가지 주요 블록으로 구성됩니다 - 글 헤더와 액션(두 번 반복), 글 본문, 댓글 섹션입니다. 다음은 페이지의 마크업입니다. 특별히 흥미로운 내용은 없습니다:

    pages/article-read/ui/ArticleReadPage.tsx
    import { useLoaderData } from "@remix-run/react";

    import type { loader } from "../api/loader";
    import { ArticleMeta } from "./ArticleMeta";
    import { Comments } from "./Comments";

    export function ArticleReadPage() {
    const { article } = useLoaderData<typeof loader>();

    return (
    <div className="article-page">
    <div className="banner">
    <div className="container">
    <h1>{article.article.title}</h1>

    <ArticleMeta />
    </div>
    </div>

    <div className="container page">
    <div className="row article-content">
    <div className="col-md-12">
    <p>{article.article.body}</p>
    <ul className="tag-list">
    {article.article.tagList.map((tag) => (
    <li className="tag-default tag-pill tag-outline" key={tag}>
    {tag}
    </li>
    ))}
    </ul>
    </div>
    </div>

    <hr />

    <div className="article-actions">
    <ArticleMeta />
    </div>

    <div className="row">
    <Comments />
    </div>
    </div>
    </div>
    );
    }
    -

    What’s more interesting is the ArticleMeta and Comments. They contain write operations such as liking an article, leaving a comment, etc. To get them to work, we first need to implement the backend part. Create action.ts in the api segment of the page:

    +

    더 흥미로운 것은 ArticleMetaComments입니다. 이들은 글 좋아요, 댓글 작성 등과 같은 쓰기 작업을 포함합니다. 이들을 작동시키려면 먼저 백엔드 부분을 구현해야 합니다. 페이지의 api 세그먼트에 action.ts를 만드세요:

    pages/article-read/api/action.ts
    import { redirect, type ActionFunctionArgs } from "@remix-run/node";
    import { namedAction } from "remix-utils/named-action";
    import { redirectBack } from "remix-utils/redirect-back";
    import invariant from "tiny-invariant";

    import { DELETE, POST, requireUser } from "shared/api";

    export const action = async ({ request, params }: ActionFunctionArgs) => {
    const currentUser = await requireUser(request);

    const authorization = { Authorization: `Token ${currentUser.token}` };

    const formData = await request.formData();

    return namedAction(formData, {
    async delete() {
    invariant(params.slug, "Expected a slug parameter");
    await DELETE("/articles/{slug}", {
    params: { path: { slug: params.slug } },
    headers: authorization,
    });
    return redirect("/");
    },
    async favorite() {
    invariant(params.slug, "Expected a slug parameter");
    await POST("/articles/{slug}/favorite", {
    params: { path: { slug: params.slug } },
    headers: authorization,
    });
    return redirectBack(request, { fallback: "/" });
    },
    async unfavorite() {
    invariant(params.slug, "Expected a slug parameter");
    await DELETE("/articles/{slug}/favorite", {
    params: { path: { slug: params.slug } },
    headers: authorization,
    });
    return redirectBack(request, { fallback: "/" });
    },
    async createComment() {
    invariant(params.slug, "Expected a slug parameter");
    const comment = formData.get("comment");
    invariant(typeof comment === "string", "Expected a comment parameter");
    await POST("/articles/{slug}/comments", {
    params: { path: { slug: params.slug } },
    headers: { ...authorization, "Content-Type": "application/json" },
    body: { comment: { body: comment } },
    });
    return redirectBack(request, { fallback: "/" });
    },
    async deleteComment() {
    invariant(params.slug, "Expected a slug parameter");
    const commentId = formData.get("id");
    invariant(typeof commentId === "string", "Expected an id parameter");
    const commentIdNumeric = parseInt(commentId, 10);
    invariant(
    !Number.isNaN(commentIdNumeric),
    "Expected a numeric id parameter",
    );
    await DELETE("/articles/{slug}/comments/{id}", {
    params: { path: { slug: params.slug, id: commentIdNumeric } },
    headers: authorization,
    });
    return redirectBack(request, { fallback: "/" });
    },
    async followAuthor() {
    const authorUsername = formData.get("username");
    invariant(
    typeof authorUsername === "string",
    "Expected a username parameter",
    );
    await POST("/profiles/{username}/follow", {
    params: { path: { username: authorUsername } },
    headers: authorization,
    });
    return redirectBack(request, { fallback: "/" });
    },
    async unfollowAuthor() {
    const authorUsername = formData.get("username");
    invariant(
    typeof authorUsername === "string",
    "Expected a username parameter",
    );
    await DELETE("/profiles/{username}/follow", {
    params: { path: { username: authorUsername } },
    headers: authorization,
    });
    return redirectBack(request, { fallback: "/" });
    },
    });
    };
    -

    Export that from the slice and then from the route. While we’re at it, let’s also connect the page itself:

    +

    그 슬라이스에서 이를 내보내고 라우트에서도 내보내세요. 그리고 페이지 자체도 연결하겠습니다.

    pages/article-read/index.ts
    export { ArticleReadPage } from "./ui/ArticleReadPage";
    export { loader } from "./api/loader";
    export { action } from "./api/action";
    app/routes/article.$slug.tsx
    import { ArticleReadPage } from "pages/article-read";

    export { loader, action } from "pages/article-read";

    export default ArticleReadPage;
    -

    Now, even though we haven’t implemented the like button on the reader page yet, the like button in the feed will start working! That’s because it’s been sending “like” requests to this route. Give that a try.

    -

    ArticleMeta and Comments are, again, a bunch of forms. We’ve done this before, let’s grab their code and move on:

    +

    이제 독자 페이지에서 좋아요 버튼을 아직 구현하지 않았지만, 피드의 좋아요 버튼이 작동하기 시작할 것입니다! 이 라우트로 "좋아요" 요청을 보내고 있었기 때문입니다. 한번 시도해 보세요.

    +

    ArticleMetaComments는 다시 한번 폼들의 모음입니다. 이전에 이미 해봤으니, 코드를 가져와서 넘어가겠습니다.

    pages/article-read/ui/ArticleMeta.tsx
    import { Form, Link, useLoaderData } from "@remix-run/react";
    import { useContext } from "react";

    import { CurrentUser } from "shared/api";
    import type { loader } from "../api/loader";

    export function ArticleMeta() {
    const currentUser = useContext(CurrentUser);
    const { article } = useLoaderData<typeof loader>();

    return (
    <Form method="post">
    <div className="article-meta">
    <Link
    prefetch="intent"
    to={`/profile/${article.article.author.username}`}
    >
    <img src={article.article.author.image} alt="" />
    </Link>

    <div className="info">
    <Link
    prefetch="intent"
    to={`/profile/${article.article.author.username}`}
    className="author"
    >
    {article.article.author.username}
    </Link>
    <span className="date">{article.article.createdAt}</span>
    </div>

    {article.article.author.username == currentUser?.username ? (
    <>
    <Link
    prefetch="intent"
    to={`/editor/${article.article.slug}`}
    className="btn btn-sm btn-outline-secondary"
    >
    <i className="ion-edit"></i> Edit Article
    </Link>
    &nbsp;&nbsp;
    <button
    name="_action"
    value="delete"
    className="btn btn-sm btn-outline-danger"
    >
    <i className="ion-trash-a"></i> Delete Article
    </button>
    </>
    ) : (
    <>
    <input
    name="username"
    value={article.article.author.username}
    type="hidden"
    />
    <button
    name="_action"
    value={
    article.article.author.following
    ? "unfollowAuthor"
    : "followAuthor"
    }
    className={`btn btn-sm ${article.article.author.following ? "btn-secondary" : "btn-outline-secondary"}`}
    >
    <i className="ion-plus-round"></i>
    &nbsp;{" "}
    {article.article.author.following
    ? "Unfollow"
    : "Follow"}{" "}
    {article.article.author.username}
    </button>
    &nbsp;&nbsp;
    <button
    name="_action"
    value={article.article.favorited ? "unfavorite" : "favorite"}
    className={`btn btn-sm ${article.article.favorited ? "btn-primary" : "btn-outline-primary"}`}
    >
    <i className="ion-heart"></i>
    &nbsp; {article.article.favorited
    ? "Unfavorite"
    : "Favorite"}{" "}
    Post{" "}
    <span className="counter">
    ({article.article.favoritesCount})
    </span>
    </button>
    </>
    )}
    </div>
    </Form>
    );
    }
    pages/article-read/ui/Comments.tsx
    import { useContext } from "react";
    import { Form, Link, useLoaderData } from "@remix-run/react";

    import { CurrentUser } from "shared/api";
    import type { loader } from "../api/loader";

    export function Comments() {
    const { comments } = useLoaderData<typeof loader>();
    const currentUser = useContext(CurrentUser);

    return (
    <div className="col-xs-12 col-md-8 offset-md-2">
    {currentUser !== null ? (
    <Form
    preventScrollReset={true}
    method="post"
    className="card comment-form"
    >
    <div className="card-block">
    <textarea
    required
    className="form-control"
    name="comment"
    placeholder="Write a comment..."
    rows={3}
    ></textarea>
    </div>
    <div className="card-footer">
    <img
    src={currentUser.image}
    className="comment-author-img"
    alt=""
    />
    <button
    className="btn btn-sm btn-primary"
    name="_action"
    value="createComment"
    >
    Post Comment
    </button>
    </div>
    </Form>
    ) : (
    <div className="row">
    <div className="col-xs-12 col-md-8 offset-md-2">
    <p>
    <Link to="/login">Sign in</Link>
    &nbsp; or &nbsp;
    <Link to="/register">Sign up</Link>
    &nbsp; to add comments on this article.
    </p>
    </div>
    </div>
    )}

    {comments.comments.map((comment) => (
    <div className="card" key={comment.id}>
    <div className="card-block">
    <p className="card-text">{comment.body}</p>
    </div>

    <div className="card-footer">
    <Link
    to={`/profile/${comment.author.username}`}
    className="comment-author"
    >
    <img
    src={comment.author.image}
    className="comment-author-img"
    alt=""
    />
    </Link>
    &nbsp;
    <Link
    to={`/profile/${comment.author.username}`}
    className="comment-author"
    >
    {comment.author.username}
    </Link>
    <span className="date-posted">{comment.createdAt}</span>
    {comment.author.username === currentUser?.username && (
    <span className="mod-options">
    <Form method="post" preventScrollReset={true}>
    <input type="hidden" name="id" value={comment.id} />
    <button
    name="_action"
    value="deleteComment"
    style={{
    border: "none",
    outline: "none",
    backgroundColor: "transparent",
    }}
    >
    <i className="ion-trash-a"></i>
    </button>
    </Form>
    </span>
    )}
    </div>
    </div>
    ))}
    </div>
    );
    }
    -

    And with that our article reader is also complete! The buttons to follow the author, like a post, and leave a comment should now function as expected.

    -

    Article reader with functioning buttons to like and follow

    Article reader with functioning buttons to like and follow
    -

    Article editor

    -

    This is the last page that we will cover in this tutorial, and the most interesting part here is how we’re going to validate form data.

    -

    The page itself, article-edit/ui/ArticleEditPage.tsx, will be quite simple, extra complexity stowed away into two other components:

    +

    이것으로 우리의 글 읽기 페이지도 완성되었습니다! 이제 작성자를 팔로우하고, 글에 좋아요를 누르고, 댓글을 남기는 버튼들이 예상대로 작동해야 합니다.

    +

    Article reader with functioning buttons to like and follow

    기능하는 좋아요와 팔로우 버튼이 있는 글 읽기 페이지
    +

    글 작성 페이지

    +

    이것은 이 튜토리얼에서 다룰 마지막 페이지이며, 여기서 가장 흥미로운 부분은 폼 데이터를 어떻게 검증할 것인가 입니다.

    +

    페이지 자체인 article-edit/ui/ArticleEditPage.tsx는 꽤 간단할 것이며, 추가적인 복잡성은 다른 두 개의 컴포넌트로 숨겨질 것입니다.

    pages/article-edit/ui/ArticleEditPage.tsx
    import { Form, useLoaderData } from "@remix-run/react";

    import type { loader } from "../api/loader";
    import { TagsInput } from "./TagsInput";
    import { FormErrors } from "./FormErrors";

    export function ArticleEditPage() {
    const article = useLoaderData<typeof loader>();

    return (
    <div className="editor-page">
    <div className="container page">
    <div className="row">
    <div className="col-md-10 offset-md-1 col-xs-12">
    <FormErrors />

    <Form method="post">
    <fieldset>
    <fieldset className="form-group">
    <input
    type="text"
    className="form-control form-control-lg"
    name="title"
    placeholder="Article Title"
    defaultValue={article.article?.title}
    />
    </fieldset>
    <fieldset className="form-group">
    <input
    type="text"
    className="form-control"
    name="description"
    placeholder="What's this article about?"
    defaultValue={article.article?.description}
    />
    </fieldset>
    <fieldset className="form-group">
    <textarea
    className="form-control"
    name="body"
    rows={8}
    placeholder="Write your article (in markdown)"
    defaultValue={article.article?.body}
    ></textarea>
    </fieldset>
    <fieldset className="form-group">
    <TagsInput
    name="tags"
    defaultValue={article.article?.tagList ?? []}
    />
    </fieldset>

    <button className="btn btn-lg pull-xs-right btn-primary">
    Publish Article
    </button>
    </fieldset>
    </Form>
    </div>
    </div>
    </div>
    </div>
    );
    }
    -

    This page gets the current article (unless we’re writing from scratch) and fills in the corresponding form fields. We’ve seen this before. The interesting part is FormErrors, because it will receive the validation result and display it to the user. Let’s take a look:

    +

    이 페이지는 현재 글(새로 작성하는 경우가 아니라면)을 가져와서 해당하는 폼 필드를 채웁니다. 이전에 본 적이 있습니다. 흥미로운 부분은 FormErrors인데, 이는 검증 결과를 받아 사용자에게 표시할 것입니다. 한번 살펴보겠습니다.

    pages/article-edit/ui/FormErrors.tsx
    import { useActionData } from "@remix-run/react";
    import type { action } from "../api/action";

    export function FormErrors() {
    const actionData = useActionData<typeof action>();

    return actionData?.errors != null ? (
    <ul className="error-messages">
    {actionData.errors.map((error) => (
    <li key={error}>{error}</li>
    ))}
    </ul>
    ) : null;
    }
    -

    Here we are assuming that our action will return the errors field, an array of human-readable error messages. We will get to the action shortly.

    -

    Another component is the tags input. It’s just a plain input field with an additional preview of chosen tags. Not much to see here:

    +

    여기서는 우리의 액션이 errors 필드, 즉 사람이 읽을 수 있는 오류 메시지 배열을 반환할 것이라고 가정하고 있습니다. 곧 액션에 대해 다루겠습니다.

    +

    또 다른 컴포넌트는 태그 입력입니다. 이는 단순한 입력 필드에 선택된 태그의 추가적인 미리보기가 있는 것입니다. 여기에는 특별한 것이 없습니다:

    pages/article-edit/ui/TagsInput.tsx
    import { useEffect, useRef, useState } from "react";

    export function TagsInput({
    name,
    defaultValue,
    }: {
    name: string;
    defaultValue?: Array<string>;
    }) {
    const [tagListState, setTagListState] = useState(defaultValue ?? []);

    function removeTag(tag: string): void {
    const newTagList = tagListState.filter((t) => t !== tag);
    setTagListState(newTagList);
    }

    const tagsInput = useRef<HTMLInputElement>(null);
    useEffect(() => {
    tagsInput.current && (tagsInput.current.value = tagListState.join(","));
    }, [tagListState]);

    return (
    <>
    <input
    type="text"
    className="form-control"
    id="tags"
    name={name}
    placeholder="Enter tags"
    defaultValue={tagListState.join(",")}
    onChange={(e) =>
    setTagListState(e.target.value.split(",").filter(Boolean))
    }
    />
    <div className="tag-list">
    {tagListState.map((tag) => (
    <span className="tag-default tag-pill" key={tag}>
    <i
    className="ion-close-round"
    role="button"
    tabIndex={0}
    onKeyDown={(e) =>
    [" ", "Enter"].includes(e.key) && removeTag(tag)
    }
    onClick={() => removeTag(tag)}
    ></i>{" "}
    {tag}
    </span>
    ))}
    </div>
    </>
    );
    }
    -

    Now, for the API part. The loader should look at the URL, and if it contains an article slug, that means we’re editing an existing article, and its data should be loaded. Otherwise, return nothing. Let’s create that loader:

    +

    이제 API 부분입니다. 로더는 URL을 살펴보고, 글 슬러그가 포함되어 있다면 기존 글을 수정하는 것이므로 해당 데이터를 로드해야 합니다. 그렇지 않으면 아무것도 반환하지 않습니다. 그 로더를 만들어 봅시다.

    pages/article-edit/api/loader.ts
    import { json, type LoaderFunctionArgs } from "@remix-run/node";
    import type { FetchResponse } from "openapi-fetch";

    import { GET, requireUser } from "shared/api";

    async function throwAnyErrors<T, O, Media extends `${string}/${string}`>(
    responsePromise: Promise<FetchResponse<T, O, Media>>,
    ) {
    const { data, error, response } = await responsePromise;

    if (error !== undefined) {
    throw json(error, { status: response.status });
    }

    return data as NonNullable<typeof data>;
    }

    export const loader = async ({ params, request }: LoaderFunctionArgs) => {
    const currentUser = await requireUser(request);

    if (!params.slug) {
    return { article: null };
    }

    return throwAnyErrors(
    GET("/articles/{slug}", {
    params: { path: { slug: params.slug } },
    headers: { Authorization: `Token ${currentUser.token}` },
    }),
    );
    };
    -

    The action will take the new field values, run them through our data schema, and if everything is correct, commit those changes to the backend, either by updating an existing article or creating a new one:

    +

    액션은 새로운 필드 값들을 받아 우리의 데이터 스키마를 통해 실행하고, 모든 것이 올바르다면 이러한 변경사항을 백엔드에 커밋합니다. 이는 기존 글을 업데이트하거나 새 글을 생성하는 방식으로 이루어집니다.

    pages/article-edit/api/action.ts
    import { json, redirect, type ActionFunctionArgs } from "@remix-run/node";

    import { POST, PUT, requireUser } from "shared/api";
    import { parseAsArticle } from "../model/parseAsArticle";

    export const action = async ({ request, params }: ActionFunctionArgs) => {
    try {
    const { body, description, title, tags } = parseAsArticle(
    await request.formData(),
    );
    const tagList = tags?.split(",") ?? [];

    const currentUser = await requireUser(request);
    const payload = {
    body: {
    article: {
    title,
    description,
    body,
    tagList,
    },
    },
    headers: { Authorization: `Token ${currentUser.token}` },
    };

    const { data, error } = await (params.slug
    ? PUT("/articles/{slug}", {
    params: { path: { slug: params.slug } },
    ...payload,
    })
    : POST("/articles", payload));

    if (error) {
    return json({ errors: error }, { status: 422 });
    }

    return redirect(`/article/${data.article.slug ?? ""}`);
    } catch (errors) {
    return json({ errors }, { status: 400 });
    }
    };
    -

    The schema doubles as a parsing function for FormData, which allows us to conveniently get the clean fields or just throw the errors to handle at the end. Here’s how that parsing function could look:

    +

    스키마는 FormData를 위한 파싱 함수로도 작동하여, 깨끗한 필드를 편리하게 얻거나 마지막에 처리할 오류를 던질 수 있게 해줍니다. 그 파싱 함수는 다음과 같이 보일 수 있습니다.

    pages/article-edit/model/parseAsArticle.ts
    export function parseAsArticle(data: FormData) {
    const errors = [];

    const title = data.get("title");
    if (typeof title !== "string" || title === "") {
    errors.push("Give this article a title");
    }

    const description = data.get("description");
    if (typeof description !== "string" || description === "") {
    errors.push("Describe what this article is about");
    }

    const body = data.get("body");
    if (typeof body !== "string" || body === "") {
    errors.push("Write the article itself");
    }

    const tags = data.get("tags");
    if (typeof tags !== "string") {
    errors.push("The tags must be a string");
    }

    if (errors.length > 0) {
    throw errors;
    }

    return { title, description, body, tags: data.get("tags") ?? "" } as {
    title: string;
    description: string;
    body: string;
    tags: string;
    };
    }
    -

    Arguably, it’s a bit lengthy and repetitive, but that’s the price we pay for human-readable errors. This could also be a Zod schema, for example, but then we would have to render error messages on the frontend, and this form is not worth the complication.

    -

    One last step — connect the page, the loader, and the action to the routes. Since we neatly support both creation and editing, we can export the same thing from both editor._index.tsx and editor.$slug.tsx:

    +

    물론 이는 다소 길고 반복적이지만, 사람이 읽을 수 있는 오류 메시지를 위해 우리가 지불해야 하는 대가입니다. 이것은 Zod 스키마일 수도 있지만, 그렇게 하면 프론트엔드에서 오류 메시지를 렌더링해야 하고, 이 폼은 그런 복잡성을 감당할 만한 가치가 없습니다.

    +

    마지막 단계로 - 페이지, 로더, 그리고 액션을 라우트에 연결합니다. 우리는 생성과 편집을 모두 깔끔하게 지원하므로 editor._index.tsxeditor.$slug.tsx 모두에서 동일한 것을 내보낼 수 있습니다.

    pages/article-edit/index.ts
    export { ArticleEditPage } from "./ui/ArticleEditPage";
    export { loader } from "./api/loader";
    export { action } from "./api/action";
    app/routes/editor._index.tsx, app/routes/editor.$slug.tsx (same content)
    import { ArticleEditPage } from "pages/article-edit";

    export { loader, action } from "pages/article-edit";

    export default ArticleEditPage;
    -

    We’re done now! Log in and try creating a new article. Or “forget” to write the article and see the validation kick in.

    -

    The Conduit article editor, with the title field saying “New article” and the rest of the fields empty. Above the form there are two errors: “Describe what this article is about” and “Write the article itself”.

    The Conduit article editor, with the title field saying “New article” and the rest of the fields empty. Above the form there are two errors: “Describe what this article is about” and “Write the article itself”.
    -

    The profile and settings pages are very similar to the article reader and editor, they are left as an exercise for the reader, that’s you :)

    +

    이제 완료되었습니다! 로그인하고 새 글을 작성해보세요. 또는 글을 "잊어버리고" 검증이 작동하는 것을 확인해보세요.

    +

    The Conduit article editor, with the title field saying “New article” and the rest of the fields empty. Above the form there are two errors: “Describe what this article is about” and “Write the article itself”.

    제목 필드에 "새 글"이라고 쓰여 있고 나머지 필드는 비어 있는 Conduit 글 편집기. 폼 위에 두 개의 오류가 있습니다. "이 글이 무엇에 관한 것인지 설명해주세요", "글 본문을 작성해주세요".
    +

    프로필과 설정 페이지는 글 읽기와 편집기 페이지와 매우 유사하므로, 독자인 여러분의 연습 과제로 남겨두겠습니다 :)

    \ No newline at end of file diff --git a/kr/docs/guides.html b/kr/docs/guides.html index 439d7e4b2f..be079643dd 100644 --- a/kr/docs/guides.html +++ b/kr/docs/guides.html @@ -9,8 +9,8 @@ - - + + +
    Code Issues (Smells)

    General architecture issues for legacy code

    Desegmented • Routing • Cross-imports
    \ No newline at end of file diff --git a/kr/docs/guides/examples.html b/kr/docs/guides/examples.html index ccd4d3db33..b92d6e8b36 100644 --- a/kr/docs/guides/examples.html +++ b/kr/docs/guides/examples.html @@ -9,8 +9,8 @@ - - + + +
    Page layouts

    Main cases with layouts

    Where to store them • Using widgets in layouts
    \ No newline at end of file diff --git a/kr/docs/guides/examples/auth.html b/kr/docs/guides/examples/auth.html index 946fe9c3f5..7749f0c51f 100644 --- a/kr/docs/guides/examples/auth.html +++ b/kr/docs/guides/examples/auth.html @@ -9,8 +9,8 @@ - - + +

    Authentication

    @@ -164,6 +164,6 @@

    Automatic logout

    -

    Don't forget to build failsafes for when a request to log out fails, or a request to refresh a login token fails. In both of these cases, you should clear the token store. If you keep your token in Entities, this code can be placed in the model segment as it is pure business logic. If you keep your token in Shared, placing this logic in shared/api might bloat the segment and dilute its purpose. If you're noticing that your API segment contains two several unrelated things, consider splitting out the token management logic into another segment, for example, shared/auth.

    +

    Don't forget to build failsafes for when a request to log out fails, or a request to refresh a login token fails. In both of these cases, you should clear the token store. If you keep your token in Entities, this code can be placed in the model segment as it is pure business logic. If you keep your token in Shared, placing this logic in shared/api might bloat the segment and dilute its purpose. If you're noticing that your API segment contains two several unrelated things, consider splitting out the token management logic into another segment, for example, shared/auth.

    \ No newline at end of file diff --git a/kr/docs/guides/examples/autocompleted.html b/kr/docs/guides/examples/autocompleted.html index 2b030f8bde..7ae57f16e3 100644 --- a/kr/docs/guides/examples/autocompleted.html +++ b/kr/docs/guides/examples/autocompleted.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/kr/docs/guides/examples/browser-api.html b/kr/docs/guides/examples/browser-api.html index 0e243d27e7..1d85a5787c 100644 --- a/kr/docs/guides/examples/browser-api.html +++ b/kr/docs/guides/examples/browser-api.html @@ -9,8 +9,8 @@ - - + +
    Unlisted page
    This page is unlisted. Search engines will not index it, and only users having a direct link can access it.

    Browser API

    @@ -18,6 +18,6 @@

    About working with the Browser API: localStorage, audio Api, bluetooth API, etc.

    You can ask about the idea in more detail @alex_novi

    -
    + \ No newline at end of file diff --git a/kr/docs/guides/examples/cms.html b/kr/docs/guides/examples/cms.html index 563c47f329..a67b187f60 100644 --- a/kr/docs/guides/examples/cms.html +++ b/kr/docs/guides/examples/cms.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/kr/docs/guides/examples/feedback.html b/kr/docs/guides/examples/feedback.html index eb79eb1ec2..230e43cdba 100644 --- a/kr/docs/guides/examples/feedback.html +++ b/kr/docs/guides/examples/feedback.html @@ -9,14 +9,14 @@ - - + +
    Unlisted page
    This page is unlisted. Search engines will not index it, and only users having a direct link can access it.
    + \ No newline at end of file diff --git a/kr/docs/guides/examples/i18n.html b/kr/docs/guides/examples/i18n.html index 4979846a6b..2501d4ffce 100644 --- a/kr/docs/guides/examples/i18n.html +++ b/kr/docs/guides/examples/i18n.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/kr/docs/guides/examples/metric.html b/kr/docs/guides/examples/metric.html index 7b152136f4..f4ccd95190 100644 --- a/kr/docs/guides/examples/metric.html +++ b/kr/docs/guides/examples/metric.html @@ -9,14 +9,14 @@ - - + +
    Unlisted page
    This page is unlisted. Search engines will not index it, and only users having a direct link can access it.
    + \ No newline at end of file diff --git a/kr/docs/guides/examples/monorepo.html b/kr/docs/guides/examples/monorepo.html index 0ee6a7e89e..fb6c998dd0 100644 --- a/kr/docs/guides/examples/monorepo.html +++ b/kr/docs/guides/examples/monorepo.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/kr/docs/guides/examples/page-layout.html b/kr/docs/guides/examples/page-layout.html index 8d5f95ffd4..e3d5125d9c 100644 --- a/kr/docs/guides/examples/page-layout.html +++ b/kr/docs/guides/examples/page-layout.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/kr/docs/guides/examples/platforms.html b/kr/docs/guides/examples/platforms.html index ff76310cb1..96f9a80f99 100644 --- a/kr/docs/guides/examples/platforms.html +++ b/kr/docs/guides/examples/platforms.html @@ -9,14 +9,14 @@ - - + +
    Unlisted page
    This page is unlisted. Search engines will not index it, and only users having a direct link can access it.
    + \ No newline at end of file diff --git a/kr/docs/guides/examples/ssr.html b/kr/docs/guides/examples/ssr.html index 72c54fed22..1847b63e26 100644 --- a/kr/docs/guides/examples/ssr.html +++ b/kr/docs/guides/examples/ssr.html @@ -9,14 +9,14 @@ - - + +
    Unlisted page
    This page is unlisted. Search engines will not index it, and only users having a direct link can access it.
    + \ No newline at end of file diff --git a/kr/docs/guides/examples/theme.html b/kr/docs/guides/examples/theme.html index 0f3c86dc65..194ee25b9d 100644 --- a/kr/docs/guides/examples/theme.html +++ b/kr/docs/guides/examples/theme.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/kr/docs/guides/examples/types.html b/kr/docs/guides/examples/types.html index 1f2494aefe..500126895a 100644 --- a/kr/docs/guides/examples/types.html +++ b/kr/docs/guides/examples/types.html @@ -9,8 +9,8 @@ - - + +

    Types

    @@ -142,6 +142,6 @@

    shared/lib/untyped-packages/use-react-screenshot.d.ts
    // This library doesn't have typings, and we didn't want to bother writing our own.
    declare module "use-react-screenshot";

    Auto-generation of types

    -

    It's common to generate types from external sources, for example, generating backend types from an OpenAPI schema. In this case, create a dedicated place in your codebase for these types, like shared/api/openapi. Ideally, you should also include a README in that folder that describes what these files are, how to regenerate them, etc.

    +

    It's common to generate types from external sources, for example, generating backend types from an OpenAPI schema. In this case, create a dedicated place in your codebase for these types, like shared/api/openapi. Ideally, you should also include a README in that folder that describes what these files are, how to regenerate them, etc.

    \ No newline at end of file diff --git a/kr/docs/guides/examples/white-labels.html b/kr/docs/guides/examples/white-labels.html index 169ad11380..82b97fbf75 100644 --- a/kr/docs/guides/examples/white-labels.html +++ b/kr/docs/guides/examples/white-labels.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/kr/docs/guides/issues/cross-imports.html b/kr/docs/guides/issues/cross-imports.html index 9a2602edb5..6caa90cb8e 100644 --- a/kr/docs/guides/issues/cross-imports.html +++ b/kr/docs/guides/issues/cross-imports.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/kr/docs/guides/issues/desegmented.html b/kr/docs/guides/issues/desegmented.html index 42f5def692..ec229423f0 100644 --- a/kr/docs/guides/issues/desegmented.html +++ b/kr/docs/guides/issues/desegmented.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/kr/docs/guides/issues/routes.html b/kr/docs/guides/issues/routes.html index 63d4b4fe1d..08eac40cbb 100644 --- a/kr/docs/guides/issues/routes.html +++ b/kr/docs/guides/issues/routes.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/kr/docs/guides/migration/from-custom.html b/kr/docs/guides/migration/from-custom.html index 13a7fe2ffb..c484899557 100644 --- a/kr/docs/guides/migration/from-custom.html +++ b/kr/docs/guides/migration/from-custom.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/kr/docs/guides/migration/from-v1.html b/kr/docs/guides/migration/from-v1.html index 7f512f97bf..5faba39146 100644 --- a/kr/docs/guides/migration/from-v1.html +++ b/kr/docs/guides/migration/from-v1.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/kr/docs/guides/tech/with-nextjs.html b/kr/docs/guides/tech/with-nextjs.html index f29e688c85..18aa824de2 100644 --- a/kr/docs/guides/tech/with-nextjs.html +++ b/kr/docs/guides/tech/with-nextjs.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/kr/docs/guides/tech/with-nuxtjs.html b/kr/docs/guides/tech/with-nuxtjs.html index f7ec2ade98..3ad485302a 100644 --- a/kr/docs/guides/tech/with-nuxtjs.html +++ b/kr/docs/guides/tech/with-nuxtjs.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/kr/docs/guides/tech/with-react-query.html b/kr/docs/guides/tech/with-react-query.html index 5fdbd998ff..b1b278e640 100644 --- a/kr/docs/guides/tech/with-react-query.html +++ b/kr/docs/guides/tech/with-react-query.html @@ -9,8 +9,8 @@ - - + +
    + \ No newline at end of file diff --git a/kr/docs/guides/tech/with-sveltekit.html b/kr/docs/guides/tech/with-sveltekit.html index 25e394e9dd..d48e6ea7c1 100644 --- a/kr/docs/guides/tech/with-sveltekit.html +++ b/kr/docs/guides/tech/with-sveltekit.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/kr/docs/reference.html b/kr/docs/reference.html index 783e676de1..d995db823e 100644 --- a/kr/docs/reference.html +++ b/kr/docs/reference.html @@ -9,8 +9,8 @@ - - + + +
    Public API

    Practices for designing scalable and easy-to-integrate modules

    \ No newline at end of file diff --git a/kr/docs/reference/isolation.html b/kr/docs/reference/isolation.html index b055e35516..a30780ba58 100644 --- a/kr/docs/reference/isolation.html +++ b/kr/docs/reference/isolation.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/kr/docs/reference/isolation/coupling-cohesion.html b/kr/docs/reference/isolation/coupling-cohesion.html index 6098299a18..b1e44bca46 100644 --- a/kr/docs/reference/isolation/coupling-cohesion.html +++ b/kr/docs/reference/isolation/coupling-cohesion.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/kr/docs/reference/isolation/decouple-entities.html b/kr/docs/reference/isolation/decouple-entities.html index 17aa3f47d8..a27aa769de 100644 --- a/kr/docs/reference/isolation/decouple-entities.html +++ b/kr/docs/reference/isolation/decouple-entities.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/kr/docs/reference/layers.html b/kr/docs/reference/layers.html index efb680acc8..b9109d7679 100644 --- a/kr/docs/reference/layers.html +++ b/kr/docs/reference/layers.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/kr/docs/reference/public-api.html b/kr/docs/reference/public-api.html index d1aa85d890..6b45dc412e 100644 --- a/kr/docs/reference/public-api.html +++ b/kr/docs/reference/public-api.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/kr/docs/reference/slices-segments.html b/kr/docs/reference/slices-segments.html index cdb184a76d..3314e8946a 100644 --- a/kr/docs/reference/slices-segments.html +++ b/kr/docs/reference/slices-segments.html @@ -9,8 +9,8 @@ - - + +

    Slices and segments

    @@ -38,6 +38,6 @@

    SegmentsExamples

    -
    Layeruimodellibapi
    SharedUI kitUsually not usedUtility modules of several related files.
    If you need to use individual helpers, consider using utility libraries such as lodash-es.
    Rudimentary API client with additional features like authentication or caching.
    EntitiesSkeleton of a business entity with slots for interactive elementsData storage of instances of this entity as well as functions for manipulating that data.
    This segment is most fit for storing server-side data. If you use TanStack Query or other methods of implicit storage, you may choose to omit this segment.
    Functions for manipulating instances of this entity that aren't related to storageAPI methods using the API client from Shared for easy communication with the backend
    FeaturesInteractive elements that enable users to use this featureBusiness logic and infrastructure data storage, if needed (e.g., current app theme). This is the code that actually produces value for the user.Infrastructural code that helps to concisely describe the business logic in the model segmentAPI methods that represent this feature on the backend.
    May compose API methods from Entities.
    WidgetsComposition of Entities and Features into self-contained UI blocks.
    Can also contain error boundaries and loading states.
    Infrastructure data storage, if neededNon-business interactions (e.g., gestures) and other necessary code for the block to function on a pageUsually not used, but can contain data loaders in nested routing contexts (e.g., Remix)
    PagesComposition of Entities, Features and Widgets into complete pages.
    Can also contain error boundaries and loading states.
    Usually not usedNon-business interactions (e.g., gestures) and other necessary code for the page to deliver a complete user experienceData loaders for SSR-oriented frameworks
    +
    Layeruimodellibapi
    SharedUI kitUsually not usedUtility modules of several related files.
    If you need to use individual helpers, consider using utility libraries such as lodash-es.
    Rudimentary API client with additional features like authentication or caching.
    EntitiesSkeleton of a business entity with slots for interactive elementsData storage of instances of this entity as well as functions for manipulating that data.
    This segment is most fit for storing server-side data. If you use TanStack Query or other methods of implicit storage, you may choose to omit this segment.
    Functions for manipulating instances of this entity that aren't related to storageAPI methods using the API client from Shared for easy communication with the backend
    FeaturesInteractive elements that enable users to use this featureBusiness logic and infrastructure data storage, if needed (e.g., current app theme). This is the code that actually produces value for the user.Infrastructural code that helps to concisely describe the business logic in the model segmentAPI methods that represent this feature on the backend.
    May compose API methods from Entities.
    WidgetsComposition of Entities and Features into self-contained UI blocks.
    Can also contain error boundaries and loading states.
    Infrastructure data storage, if neededNon-business interactions (e.g., gestures) and other necessary code for the block to function on a pageUsually not used, but can contain data loaders in nested routing contexts (e.g., Remix)
    PagesComposition of Entities, Features and Widgets into complete pages.
    Can also contain error boundaries and loading states.
    Usually not usedNon-business interactions (e.g., gestures) and other necessary code for the page to deliver a complete user experienceData loaders for SSR-oriented frameworks
    \ No newline at end of file diff --git a/kr/examples.html b/kr/examples.html index dd368d4180..439ae7d121 100644 --- a/kr/examples.html +++ b/kr/examples.html @@ -9,8 +9,8 @@ - - + +

    Examples

    List of websites people are building with Feature-Sliced Design

    v2
    Tiny Bunny Mini Game

    Mini-game "21 points" in the universe of the visual novel "Tiny Bunny".

    reactredux-toolkittypescript
    v2
    Roke.to Business

    Business branch of Roketo, a crypto streaming service which allows paying people by the second

    reacteffectortailwindcssturbo
    v2
    Roke.to dApp

    A crypto streaming service which allows paying people by the second

    reacteffectortailwindcss
    v2
    IT bookstore

    Catalog for viewing and searching information technology books

    reactredux toolkittypescriptreact routervitescss
    v2
    Moke Smoke (React Native example)

    An application that helps you quit smoking, published in the App Store and Google. Developed with React Native

    reactrtkpersisttypescriptfirebase
    v2
    Moonlogs (Effector + Forest example)

    Moonlogs is a business-event logging tool with a built-in user-friendly web interface for easy access to events

    foresteffectortailwindtypescriptgo
    v2
    Posts (React Query example)

    Example of using FSD with React Query (Mutation, Query, Pagination)

    reactreact-querytypescriptmaterial ui
    v2
    FalkChat

    FalkChat is your go-to destination for seamless and engaging online conversations.

    reactnextprettierclerktypescripttailwindshadcn/uizustand
    v2
    Polka

    The application is a bookshelf where you can add your favorite books. The application works with the Google Books API.

    vue3piniatypescriptvue-routereslintprettiervitevuetify
    v2
    Fake Cyber Web Store

    Example web store on Vue3

    vue3piniatypescriptfirebasevue-routereslintprettiervite
    v2
    VK Audiopad

    Chrome extension for VK Music

    reactvkuitypescript
    v2
    Сryptolight

    Cryptocurrency review site based on Feature-Sliced Design (Architectural methodology for frontend projects).

    reacteffectornextuitypescriptvite
    v2
    Money Flow

    A mobile application for tracking your expenses and incomes.

    capacitorjsreactreact-routerzustandvitetypescriptmobileandroidios
    v2
    E-Commerce

    This project is an online store built using React. It provides the ability to view the product catalog and product pages

    reactmobxwebpacktypescriptssr
    v2
    Todo app (Vue 3 + Pinia)

    QuickStart todo-app example for Vue developers with pinia store

    vue 3piniavitetypescript
    v2
    Conduit

    A social blogging site powered by Feature-Sliced Design architectural methodology.

    reactreact-routerreact-queryzustandvitetypescript
    v2
    Kinomore (React+Effector)

    Large project on the effector/fsd stack

    reacteffectortypescriptnextjsreact-testing-library
    v2
    Sudoku (React+Effector)

    A simple crossword of numbers on effector / fsd

    reacteffectortypescriptvitetailwindatomic-router
    v2
    Nukeapp (React+ReduxToolkit)

    Shopping app build on React/ReduxToolkit stack

    reactredux-toolkittypescriptvite
    v2
    Simple Greenhouse App (React+MobX)

    Simple demonstration of how FSD can be implemented with TypeScript, React.js, MobX and Firebase

    reactmobxtypescriptfirebasemuivite
    v2
    Todo App (ReactNative+Redux)

    QuickStart todo-app example for ReactNative(Expo) developers

    react-nativeexporedux
    v2
    Rastrr

    A simple and free graphic editor for novice artists

    svelte
    v2
    Draw, I'll Help

    A drawing app with shape correction powered by ML

    svelte
    v2
    Cast

    A podcast listening PWA with automated quality assurance

    svelte
    v2
    Loripsum generator

    Simple fish text generator

    reacteffector
    v2
    Projentry (demo)

    Assistant for your projects

    reactantd
    v2
    Todo App (Angular 13)

    QuickStart todo-app example for Angular developers

    angularrxjs
    v2
    Todo App (Vue 3)

    QuickStart todo-app example for Vue developers

    vuevuexantd
    v2
    Todo App (React+Redux)

    QuickStart todo-app example for React developers (Redux version)

    reactreduxantd
    v2
    Todo App (React+Effector)

    QuickStart todo-app example for React developers (Effector version)

    reacteffectorantd
    v2
    Github Client

    React & GraphQL powered github web-client

    reactgraphqlantd
    v2
    Cardbox

    The best solutions from developers in one place

    reacteffector
    diff --git a/kr/index.html b/kr/index.html index 9edee45e2d..cbdd66550e 100644 --- a/kr/index.html +++ b/kr/index.html @@ -9,10 +9,10 @@ - - + + -

    Feature-Sliced Design

    Architectural methodology for frontend projects

    Features

    Explicit business logic

    Easily discoverable architecture thanks to domain scopes

    Adaptability

    Architecture components can be flexibly replaced and added for new requirements

    Tech debt & Refactoring

    Each module can be independently modified / rewritten without side effects

    Explicit code reuse

    A balance is maintained between DRY and local customization

    Concepts

    Public API

    Each module must have a declaration of its public API at the top level

    Isolation

    The module should not depend directly on other modules of the same layer or overlying layers

    Needs Driven

    Orientation to business and user needs

    Scheme

    Companies using FSD

    FSD is used in your company? Tell us
    +

    Feature-Sliced Design

    프론트엔드 프로젝트를 위한 아키텍처 방법론

    특징

    명시적인 비즈니스 로직

    도메인 스코프 덕분에 찾고자 하는 로직을 쉽게 발견할 수 있는 아키텍처입니다.

    유연성

    아키텍처 구성 요소를 새로운 요구사항에 맞춰 유연하게 교체하고 추가할 수 있습니다.

    기술 부채 및 리팩토링

    각 모듈을 부작용 없이 독립적으로 수정, 재작성할 수 있습니다.

    명시적 코드 재사용

    DRY 원칙과 로컬 커스터마이징 사이에 균형을 유지합니다.

    개념

    공용 API

    각 모듈에는 최상위 레벨에 공용 API 선언이 있어야 합니다.

    격리

    같은 레이어 또는 상위 레이어의 모듈에 직접 의존하지 않아야 합니다.

    요구사항 중심

    비즈니스 및 사용자 요구사항을 중심으로 합니다.

    구조

    FSD를 사용하는 기업

    FSD를 사용하는 기업이신가요? 알려주세요
    \ No newline at end of file diff --git a/kr/nav.html b/kr/nav.html index 808099ecb1..641f1224ab 100644 --- a/kr/nav.html +++ b/kr/nav.html @@ -9,8 +9,8 @@ - - + +

    🧭 Navigation

    Legacy routes

    After the restructuring of the documentation, some routes were changed. Below you can find the page you may have been looking for.

    But there are redirects from old links for compatibility

    🚀 Get Started

    ⚡️ Simplified and merged

    Tutorial

    old: /docs/get-started/quick-start
    new: /docs/get-started/tutorial

    Basics

    old: /docs/get-started/basics
    new: /docs/get-started/overview

    Decompose Cheatsheet

    old: /docs/get-started/tutorial/decompose; diff --git a/kr/search.html b/kr/search.html index ad6cbf91f1..9c4bf7e7dd 100644 --- a/kr/search.html +++ b/kr/search.html @@ -9,8 +9,8 @@ - - + + diff --git a/kr/versions.html b/kr/versions.html index 6c69ac873f..ca017f1e17 100644 --- a/kr/versions.html +++ b/kr/versions.html @@ -9,8 +9,8 @@ - - + +

    Feature-Sliced Design versions

    Feature-Sliced Design v2.0.0 (Current)

    The documentation for the currently published version can be found here

    v2.0.0 🍰Release NotesDocumentationMigration from v1

    Feature Slices v1 (Legacy)

    Documentation for older versions of feature-slices can be found here

    v1.0Documentation
    v0.1Documentation

    Feature Driven (Legacy)

    Documentation for older versions of feature-driven can be found here

    v0.1Documentation
    Example (kof)Github
    diff --git a/nav.html b/nav.html index f2ba9e72a2..c101259cde 100644 --- a/nav.html +++ b/nav.html @@ -9,8 +9,8 @@ - - + +

    🧭 Navigation

    Legacy routes

    After the restructuring of the documentation, some routes were changed. Below you can find the page you may have been looking for.

    But there are redirects from old links for compatibility

    🚀 Get Started

    ⚡️ Simplified and merged

    Tutorial

    old: /docs/get-started/quick-start
    new: /docs/get-started/tutorial

    Basics

    old: /docs/get-started/basics
    new: /docs/get-started/overview

    Decompose Cheatsheet

    old: /docs/get-started/tutorial/decompose; diff --git a/ru/404.html b/ru/404.html index c75e60ce66..d1863e025c 100644 --- a/ru/404.html +++ b/ru/404.html @@ -9,8 +9,8 @@ - - + +

    Страница не найдена

    К сожалению, мы не смогли найти запрашиваемую вами страницу.

    Пожалуйста, обратитесь к владельцу сайта, с которого вы перешли на эту ссылку, чтобы сообщить ему ссылка не работает.

    diff --git a/ru/assets/js/04b1b9d4.62bd2c3f.js b/ru/assets/js/04b1b9d4.d35f4177.js similarity index 99% rename from ru/assets/js/04b1b9d4.62bd2c3f.js rename to ru/assets/js/04b1b9d4.d35f4177.js index cda6a46fd9..bed7b90d4e 100644 --- a/ru/assets/js/04b1b9d4.62bd2c3f.js +++ b/ru/assets/js/04b1b9d4.d35f4177.js @@ -1 +1 @@ -"use strict";(self.webpackChunk_feature_sliced_documentation=self.webpackChunk_feature_sliced_documentation||[]).push([[5263],{1928:(e,s,i)=>{i.d(s,{Ay:()=>l,RM:()=>c});var t=i(6070),n=i(1100),r=(i(758),i(6783)),d=i(7765);const a=e=>{let{ticket:s}=e;const i=`https://github.com/feature-sliced/documentation/issues/${s}`;return(0,t.jsxs)("div",{children:[(0,t.jsx)("p",{children:(0,d.T)({id:"shared.wip.title"})}),(0,t.jsx)("p",{children:(0,d.T)({id:"shared.wip.subtitle"})}),(0,t.jsxs)("ul",{children:[(0,t.jsxs)("li",{children:[(0,d.T)({id:"shared.wip.var.feedback.base"}),(0,t.jsx)(r.A,{to:i,children:(0,d.T)({id:"shared.wip.var.feedback.link"})})]}),(0,t.jsxs)("li",{children:[(0,d.T)({id:"shared.wip.var.material.base"}),(0,t.jsx)(r.A,{to:"https://t.me/feature_sliced",children:(0,d.T)({id:"shared.wip.var.material.link"})})]}),(0,t.jsxs)("li",{children:[(0,d.T)({id:"shared.wip.var.contribute.base"}),(0,t.jsx)(r.A,{to:"https://github.com/feature-sliced/documentation/blob/master/CONTRIBUTING.md",children:(0,d.T)({id:"shared.wip.var.contribute.link"})})]})]}),(0,t.jsx)("br",{}),(0,t.jsx)("p",{children:(0,t.jsx)("i",{children:"\ud83c\udf70 Stay tuned!"})})]})},c=[];function o(e){const s={admonition:"admonition",...(0,n.R)(),...e.components};return(0,t.jsx)(s.admonition,{title:"WIP",type:"caution",children:(0,t.jsx)(a,{ticket:e.ticket})})}function l(e={}){const{wrapper:s}={...(0,n.R)(),...e.components};return s?(0,t.jsx)(s,{...e,children:(0,t.jsx)(o,{...e})}):o(e)}},4283:(e,s,i)=>{i.r(s),i.d(s,{assets:()=>o,contentTitle:()=>a,default:()=>h,frontMatter:()=>d,metadata:()=>c,toc:()=>l});var t=i(6070),n=i(1100),r=i(1928);const d={sidebar_position:3,sidebar_class_name:"sidebar-item--wip"},a="\u0420\u043e\u0443\u0442\u0438\u043d\u0433",c={id:"guides/issues/routes",title:"\u0420\u043e\u0443\u0442\u0438\u043d\u0433",description:"\u0421\u0438\u0442\u0443\u0430\u0446\u0438\u044f",source:"@site/i18n/ru/docusaurus-plugin-content-docs/current/guides/issues/routes.mdx",sourceDirName:"guides/issues",slug:"/guides/issues/routes",permalink:"/ru/docs/guides/issues/routes",draft:!1,unlisted:!1,editUrl:"https://github.com/feature-sliced/documentation/edit/master/i18n/ru/docusaurus-plugin-content-docs/current/guides/issues/routes.mdx",tags:[],version:"current",lastUpdatedAt:1727607766e3,sidebarPosition:3,frontMatter:{sidebar_position:3,sidebar_class_name:"sidebar-item--wip"},sidebar:"guidesSidebar",previous:{title:"\u0414\u0435\u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f",permalink:"/ru/docs/guides/issues/desegmented"},next:{title:"\u041a\u0440\u043e\u0441\u0441-\u0438\u043c\u043f\u043e\u0440\u0442\u044b",permalink:"/ru/docs/guides/issues/cross-imports"}},o={},l=[...r.RM,{value:"\u0421\u0438\u0442\u0443\u0430\u0446\u0438\u044f",id:"situation",level:2},{value:"\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430",id:"problem",level:2},{value:"\u0415\u0441\u043b\u0438 \u043f\u0440\u043e\u0438\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c",id:"if-you-ignore-it",level:2},{value:"\u0420\u0435\u0448\u0435\u043d\u0438\u0435",id:"solution",level:2},{value:"\u0421\u043c. \u0442\u0430\u043a\u0436\u0435",id:"see-also",level:2}];function u(e){const s={a:"a",code:"code",h1:"h1",h2:"h2",header:"header",li:"li",p:"p",pre:"pre",ul:"ul",...(0,n.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(s.header,{children:(0,t.jsx)(s.h1,{id:"\u0440\u043e\u0443\u0442\u0438\u043d\u0433",children:"\u0420\u043e\u0443\u0442\u0438\u043d\u0433"})}),"\n",(0,t.jsx)(r.Ay,{ticket:"169"}),"\n",(0,t.jsx)(s.h2,{id:"situation",children:"\u0421\u0438\u0442\u0443\u0430\u0446\u0438\u044f"}),"\n",(0,t.jsx)(s.p,{children:"\u0423\u0440\u043b\u044b \u043a \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u043c \u0445\u0430\u0440\u0434\u043a\u043e\u0434\u044f\u0442\u0441\u044f \u0432 \u0441\u043b\u043e\u044f\u0445 \u043d\u0438\u0436\u0435 pages"}),"\n",(0,t.jsx)(s.pre,{children:(0,t.jsx)(s.code,{className:"language-tsx",metastring:'title="entities/post/card"',children:"\n\n \n ...\n\n"})}),"\n",(0,t.jsx)(s.h2,{id:"problem",children:"\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430"}),"\n",(0,t.jsx)(s.p,{children:"\u0423\u0440\u043b\u044b \u043d\u0435 \u0441\u043a\u043e\u043d\u0446\u0435\u043d\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u0432 \u0441\u043b\u043e\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446, \u0433\u0434\u0435 \u0438\u043c \u0438 \u043c\u0435\u0441\u0442\u043e \u043f\u043e \u0441\u043a\u043e\u0443\u043f\u0443 \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u0438"}),"\n",(0,t.jsx)(s.h2,{id:"if-you-ignore-it",children:"\u0415\u0441\u043b\u0438 \u043f\u0440\u043e\u0438\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c"}),"\n",(0,t.jsx)(s.p,{children:"\u0422\u043e\u0433\u0434\u0430 \u043f\u0440\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0438 \u0443\u0440\u043b\u043e\u0432, \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0432 \u0433\u043e\u043b\u043e\u0432\u0435, \u0447\u0442\u043e \u044d\u0442\u0438 \u0443\u0440\u043b\u044b (\u0438 \u043b\u043e\u0433\u0438\u043a\u0430 \u0443\u0440\u043b\u043e\u0432/\u0440\u0435\u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0432) \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0432\u043e \u0432\u0441\u0435\u0445 \u0441\u043b\u043e\u044f\u0445 \u043a\u0440\u043e\u043c\u0435 pages"}),"\n",(0,t.jsx)(s.p,{children:"\u0410 \u0442\u0430\u043a\u0436\u0435 \u044d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e \u0442\u0435\u043f\u0435\u0440\u044c \u0434\u0430\u0436\u0435 \u043f\u0440\u043e\u0441\u0442\u0430\u044f \u043a\u0430\u0440\u0442\u043e\u0447\u043a\u0430 \u0442\u043e\u0432\u0430\u0440\u0430 \u0431\u0435\u0440\u0435\u0442 \u0447\u0430\u0441\u0442\u044c \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u043e\u0442 \u0441\u0442\u0440\u0430\u043d\u0438\u0446, \u0447\u0442\u043e \u0440\u0430\u0437\u043c\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043b\u043e\u0433\u0438\u043a\u0443 \u043f\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0443"}),"\n",(0,t.jsx)(s.h2,{id:"solution",children:"\u0420\u0435\u0448\u0435\u043d\u0438\u0435"}),"\n",(0,t.jsx)(s.p,{children:"\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0443 \u0441 \u0443\u0440\u043b\u0430\u043c\u0438/\u0440\u0435\u0434\u0438\u0440\u0435\u043a\u0442\u0430\u043c\u0438 \u043e\u0442 \u0443\u0440\u043e\u0432\u043d\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0438 \u0432\u044b\u0448\u0435"}),"\n",(0,t.jsx)(s.p,{children:"\u0412 \u0441\u043b\u043e\u0438 \u043d\u0438\u0436\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u043c\u043f\u043e\u0437\u0438\u0446\u0438\u044e/\u043f\u0440\u043e\u043f\u0441\u044b/\u0444\u0430\u0431\u0440\u0438\u043a\u0438"}),"\n",(0,t.jsx)(s.h2,{id:"see-also",children:"\u0421\u043c. \u0442\u0430\u043a\u0436\u0435"}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsx)(s.li,{children:(0,t.jsx)(s.a,{href:"https://t.me/feature_sliced/4389",children:'(\u0422\u0440\u0435\u0434) \u0427\u0442\u043e \u0435\u0441\u043b\u0438 "\u0437\u0430\u0448\u0438\u0432\u0430\u0442\u044c" \u0440\u043e\u0443\u0442\u0438\u043d\u0433 \u0432 entities/features/widgets'})}),"\n",(0,t.jsx)(s.li,{children:(0,t.jsx)(s.a,{href:"https://t.me/feature_sliced/3756",children:"(\u0422\u0440\u0435\u0434) \u041f\u043e\u0447\u0435\u043c\u0443 \u0440\u0430\u0437\u043c\u0430\u0437\u044b\u0432\u0430\u0435 \u043b\u043e\u0433\u0438\u043a\u0443 \u0440\u043e\u0443\u0442\u043e\u0432 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 pages"})}),"\n"]})]})}function h(e={}){const{wrapper:s}={...(0,n.R)(),...e.components};return s?(0,t.jsx)(s,{...e,children:(0,t.jsx)(u,{...e})}):u(e)}},1100:(e,s,i)=>{i.d(s,{R:()=>d,x:()=>a});var t=i(758);const n={},r=t.createContext(n);function d(e){const s=t.useContext(r);return t.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function a(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:d(e.components),t.createElement(r.Provider,{value:s},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunk_feature_sliced_documentation=self.webpackChunk_feature_sliced_documentation||[]).push([[5263],{1928:(e,s,i)=>{i.d(s,{Ay:()=>l,RM:()=>c});var t=i(6070),n=i(1100),r=(i(758),i(6783)),d=i(7765);const a=e=>{let{ticket:s}=e;const i=`https://github.com/feature-sliced/documentation/issues/${s}`;return(0,t.jsxs)("div",{children:[(0,t.jsx)("p",{children:(0,d.T)({id:"shared.wip.title"})}),(0,t.jsx)("p",{children:(0,d.T)({id:"shared.wip.subtitle"})}),(0,t.jsxs)("ul",{children:[(0,t.jsxs)("li",{children:[(0,d.T)({id:"shared.wip.var.feedback.base"}),(0,t.jsx)(r.A,{to:i,children:(0,d.T)({id:"shared.wip.var.feedback.link"})})]}),(0,t.jsxs)("li",{children:[(0,d.T)({id:"shared.wip.var.material.base"}),(0,t.jsx)(r.A,{to:"https://t.me/feature_sliced",children:(0,d.T)({id:"shared.wip.var.material.link"})})]}),(0,t.jsxs)("li",{children:[(0,d.T)({id:"shared.wip.var.contribute.base"}),(0,t.jsx)(r.A,{to:"https://github.com/feature-sliced/documentation/blob/master/CONTRIBUTING.md",children:(0,d.T)({id:"shared.wip.var.contribute.link"})})]})]}),(0,t.jsx)("br",{}),(0,t.jsx)("p",{children:(0,t.jsx)("i",{children:"\ud83c\udf70 Stay tuned!"})})]})},c=[];function o(e){const s={admonition:"admonition",...(0,n.R)(),...e.components};return(0,t.jsx)(s.admonition,{title:"WIP",type:"caution",children:(0,t.jsx)(a,{ticket:e.ticket})})}function l(e={}){const{wrapper:s}={...(0,n.R)(),...e.components};return s?(0,t.jsx)(s,{...e,children:(0,t.jsx)(o,{...e})}):o(e)}},4283:(e,s,i)=>{i.r(s),i.d(s,{assets:()=>o,contentTitle:()=>a,default:()=>h,frontMatter:()=>d,metadata:()=>c,toc:()=>l});var t=i(6070),n=i(1100),r=i(1928);const d={sidebar_position:3,sidebar_class_name:"sidebar-item--wip"},a="\u0420\u043e\u0443\u0442\u0438\u043d\u0433",c={id:"guides/issues/routes",title:"\u0420\u043e\u0443\u0442\u0438\u043d\u0433",description:"\u0421\u0438\u0442\u0443\u0430\u0446\u0438\u044f",source:"@site/i18n/ru/docusaurus-plugin-content-docs/current/guides/issues/routes.mdx",sourceDirName:"guides/issues",slug:"/guides/issues/routes",permalink:"/ru/docs/guides/issues/routes",draft:!1,unlisted:!1,editUrl:"https://github.com/feature-sliced/documentation/edit/master/i18n/ru/docusaurus-plugin-content-docs/current/guides/issues/routes.mdx",tags:[],version:"current",lastUpdatedAt:1728325386e3,sidebarPosition:3,frontMatter:{sidebar_position:3,sidebar_class_name:"sidebar-item--wip"},sidebar:"guidesSidebar",previous:{title:"\u0414\u0435\u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f",permalink:"/ru/docs/guides/issues/desegmented"},next:{title:"\u041a\u0440\u043e\u0441\u0441-\u0438\u043c\u043f\u043e\u0440\u0442\u044b",permalink:"/ru/docs/guides/issues/cross-imports"}},o={},l=[...r.RM,{value:"\u0421\u0438\u0442\u0443\u0430\u0446\u0438\u044f",id:"situation",level:2},{value:"\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430",id:"problem",level:2},{value:"\u0415\u0441\u043b\u0438 \u043f\u0440\u043e\u0438\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c",id:"if-you-ignore-it",level:2},{value:"\u0420\u0435\u0448\u0435\u043d\u0438\u0435",id:"solution",level:2},{value:"\u0421\u043c. \u0442\u0430\u043a\u0436\u0435",id:"see-also",level:2}];function u(e){const s={a:"a",code:"code",h1:"h1",h2:"h2",header:"header",li:"li",p:"p",pre:"pre",ul:"ul",...(0,n.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(s.header,{children:(0,t.jsx)(s.h1,{id:"\u0440\u043e\u0443\u0442\u0438\u043d\u0433",children:"\u0420\u043e\u0443\u0442\u0438\u043d\u0433"})}),"\n",(0,t.jsx)(r.Ay,{ticket:"169"}),"\n",(0,t.jsx)(s.h2,{id:"situation",children:"\u0421\u0438\u0442\u0443\u0430\u0446\u0438\u044f"}),"\n",(0,t.jsx)(s.p,{children:"\u0423\u0440\u043b\u044b \u043a \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u043c \u0445\u0430\u0440\u0434\u043a\u043e\u0434\u044f\u0442\u0441\u044f \u0432 \u0441\u043b\u043e\u044f\u0445 \u043d\u0438\u0436\u0435 pages"}),"\n",(0,t.jsx)(s.pre,{children:(0,t.jsx)(s.code,{className:"language-tsx",metastring:'title="entities/post/card"',children:"\n\n \n ...\n\n"})}),"\n",(0,t.jsx)(s.h2,{id:"problem",children:"\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430"}),"\n",(0,t.jsx)(s.p,{children:"\u0423\u0440\u043b\u044b \u043d\u0435 \u0441\u043a\u043e\u043d\u0446\u0435\u043d\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u0432 \u0441\u043b\u043e\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446, \u0433\u0434\u0435 \u0438\u043c \u0438 \u043c\u0435\u0441\u0442\u043e \u043f\u043e \u0441\u043a\u043e\u0443\u043f\u0443 \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u0438"}),"\n",(0,t.jsx)(s.h2,{id:"if-you-ignore-it",children:"\u0415\u0441\u043b\u0438 \u043f\u0440\u043e\u0438\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c"}),"\n",(0,t.jsx)(s.p,{children:"\u0422\u043e\u0433\u0434\u0430 \u043f\u0440\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0438 \u0443\u0440\u043b\u043e\u0432, \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0432 \u0433\u043e\u043b\u043e\u0432\u0435, \u0447\u0442\u043e \u044d\u0442\u0438 \u0443\u0440\u043b\u044b (\u0438 \u043b\u043e\u0433\u0438\u043a\u0430 \u0443\u0440\u043b\u043e\u0432/\u0440\u0435\u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0432) \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0432\u043e \u0432\u0441\u0435\u0445 \u0441\u043b\u043e\u044f\u0445 \u043a\u0440\u043e\u043c\u0435 pages"}),"\n",(0,t.jsx)(s.p,{children:"\u0410 \u0442\u0430\u043a\u0436\u0435 \u044d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e \u0442\u0435\u043f\u0435\u0440\u044c \u0434\u0430\u0436\u0435 \u043f\u0440\u043e\u0441\u0442\u0430\u044f \u043a\u0430\u0440\u0442\u043e\u0447\u043a\u0430 \u0442\u043e\u0432\u0430\u0440\u0430 \u0431\u0435\u0440\u0435\u0442 \u0447\u0430\u0441\u0442\u044c \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u043e\u0442 \u0441\u0442\u0440\u0430\u043d\u0438\u0446, \u0447\u0442\u043e \u0440\u0430\u0437\u043c\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043b\u043e\u0433\u0438\u043a\u0443 \u043f\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0443"}),"\n",(0,t.jsx)(s.h2,{id:"solution",children:"\u0420\u0435\u0448\u0435\u043d\u0438\u0435"}),"\n",(0,t.jsx)(s.p,{children:"\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0443 \u0441 \u0443\u0440\u043b\u0430\u043c\u0438/\u0440\u0435\u0434\u0438\u0440\u0435\u043a\u0442\u0430\u043c\u0438 \u043e\u0442 \u0443\u0440\u043e\u0432\u043d\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0438 \u0432\u044b\u0448\u0435"}),"\n",(0,t.jsx)(s.p,{children:"\u0412 \u0441\u043b\u043e\u0438 \u043d\u0438\u0436\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u043c\u043f\u043e\u0437\u0438\u0446\u0438\u044e/\u043f\u0440\u043e\u043f\u0441\u044b/\u0444\u0430\u0431\u0440\u0438\u043a\u0438"}),"\n",(0,t.jsx)(s.h2,{id:"see-also",children:"\u0421\u043c. \u0442\u0430\u043a\u0436\u0435"}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsx)(s.li,{children:(0,t.jsx)(s.a,{href:"https://t.me/feature_sliced/4389",children:'(\u0422\u0440\u0435\u0434) \u0427\u0442\u043e \u0435\u0441\u043b\u0438 "\u0437\u0430\u0448\u0438\u0432\u0430\u0442\u044c" \u0440\u043e\u0443\u0442\u0438\u043d\u0433 \u0432 entities/features/widgets'})}),"\n",(0,t.jsx)(s.li,{children:(0,t.jsx)(s.a,{href:"https://t.me/feature_sliced/3756",children:"(\u0422\u0440\u0435\u0434) \u041f\u043e\u0447\u0435\u043c\u0443 \u0440\u0430\u0437\u043c\u0430\u0437\u044b\u0432\u0430\u0435 \u043b\u043e\u0433\u0438\u043a\u0443 \u0440\u043e\u0443\u0442\u043e\u0432 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 pages"})}),"\n"]})]})}function h(e={}){const{wrapper:s}={...(0,n.R)(),...e.components};return s?(0,t.jsx)(s,{...e,children:(0,t.jsx)(u,{...e})}):u(e)}},1100:(e,s,i)=>{i.d(s,{R:()=>d,x:()=>a});var t=i(758);const n={},r=t.createContext(n);function d(e){const s=t.useContext(r);return t.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function a(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:d(e.components),t.createElement(r.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/ru/assets/js/07deeff8.51cdbf80.js b/ru/assets/js/07deeff8.825ba05c.js similarity index 98% rename from ru/assets/js/07deeff8.51cdbf80.js rename to ru/assets/js/07deeff8.825ba05c.js index 10a0d2f3eb..4b9779c303 100644 --- a/ru/assets/js/07deeff8.51cdbf80.js +++ b/ru/assets/js/07deeff8.825ba05c.js @@ -1,2 +1,2 @@ -/*! For license information please see 07deeff8.51cdbf80.js.LICENSE.txt */ -"use strict";(self.webpackChunk_feature_sliced_documentation=self.webpackChunk_feature_sliced_documentation||[]).push([[230],{7946:(e,t,n)=>{n.d(t,{Ay:()=>o,RM:()=>i});var s=n(6070),c=n(1100),a=n(5988);const i=[];function r(e){return(0,s.jsx)(a.A,{...e})}function o(e={}){const{wrapper:t}={...(0,c.R)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(r,{...e})}):r(e)}},128:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>C,contentTitle:()=>b,default:()=>w,frontMatter:()=>A,metadata:()=>R,toc:()=>M});var s=n(6070),c=n(1100),a=n(7946),i=n(991),r=n(758);const o={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M876.6 239.5c-.5-.9-1.2-1.8-2-2.5-5-5-13.1-5-18.1 0L684.2 409.3l-67.9-67.9L788.7 169c.8-.8 1.4-1.6 2-2.5 3.6-6.1 1.6-13.9-4.5-17.5-98.2-58-226.8-44.7-311.3 39.7-67 67-89.2 162-66.5 247.4l-293 293c-3 3-2.8 7.9.3 11l169.7 169.7c3.1 3.1 8.1 3.3 11 .3l292.9-292.9c85.5 22.8 180.5.7 247.6-66.4 84.4-84.5 97.7-213.1 39.7-311.3zM786 499.8c-58.1 58.1-145.3 69.3-214.6 33.6l-8.8 8.8-.1-.1-274 274.1-79.2-79.2 230.1-230.1s0 .1.1.1l52.8-52.8c-35.7-69.3-24.5-156.5 33.6-214.6a184.2 184.2 0 01144-53.5L537 318.9a32.05 32.05 0 000 45.3l124.5 124.5a32.05 32.05 0 0045.3 0l132.8-132.8c3.7 51.8-14.4 104.8-53.6 143.9z"}}]},name:"tool",theme:"outlined"};var d=n(9820),l=function(e,t){return r.createElement(d.A,(0,i.A)({},e,{ref:t,icon:o}))};const u=r.forwardRef(l);const h={icon:{tag:"svg",attrs:{"fill-rule":"evenodd",viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M880 912H144c-17.7 0-32-14.3-32-32V144c0-17.7 14.3-32 32-32h360c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8H184v656h656V520c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v360c0 17.7-14.3 32-32 32zM653.3 424.6l52.2 52.2a8.01 8.01 0 01-4.7 13.6l-179.4 21c-5.1.6-9.5-3.7-8.9-8.9l21-179.4c.8-6.6 8.9-9.4 13.6-4.7l52.4 52.4 256.2-256.2c3.1-3.1 8.2-3.1 11.3 0l42.4 42.4c3.1 3.1 3.1 8.2 0 11.3L653.3 424.6z"}}]},name:"import",theme:"outlined"};var m=function(e,t){return r.createElement(d.A,(0,i.A)({},e,{ref:t,icon:h}))};const p=r.forwardRef(m);const f={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"defs",attrs:{},children:[{tag:"style",attrs:{}}]},{tag:"path",attrs:{d:"M841 370c3-3.3 2.7-8.3-.6-11.3a8.24 8.24 0 00-5.3-2.1h-72.6c-2.4 0-4.6 1-6.1 2.8L633.5 504.6a7.96 7.96 0 01-13.4-1.9l-63.5-141.3a7.9 7.9 0 00-7.3-4.7H380.7l.9-4.7 8-42.3c10.5-55.4 38-81.4 85.8-81.4 18.6 0 35.5 1.7 48.8 4.7l14.1-66.8c-22.6-4.7-35.2-6.1-54.9-6.1-103.3 0-156.4 44.3-175.9 147.3l-9.4 49.4h-97.6c-3.8 0-7.1 2.7-7.8 6.4L181.9 415a8.07 8.07 0 007.8 9.7H284l-89 429.9a8.07 8.07 0 007.8 9.7H269c3.8 0 7.1-2.7 7.8-6.4l89.7-433.1h135.8l68.2 139.1c1.4 2.9 1 6.4-1.2 8.8l-180.6 203c-2.9 3.3-2.6 8.4.7 11.3 1.5 1.3 3.4 2 5.3 2h72.7c2.4 0 4.6-1 6.1-2.8l123.7-146.7c2.8-3.4 7.9-3.8 11.3-1 .9.8 1.6 1.7 2.1 2.8L676.4 784c1.3 2.8 4.1 4.7 7.3 4.7h64.6a8.02 8.02 0 007.2-11.5l-95.2-198.9c-1.4-2.9-.9-6.4 1.3-8.8L841 370z"}}]},name:"function",theme:"outlined"};var g=function(e,t){return r.createElement(d.A,(0,i.A)({},e,{ref:t,icon:f}))};const x=r.forwardRef(g);const v={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M304 280h56c4.4 0 8-3.6 8-8 0-28.3 5.9-53.2 17.1-73.5 10.6-19.4 26-34.8 45.4-45.4C450.9 142 475.7 136 504 136h16c28.3 0 53.2 5.9 73.5 17.1 19.4 10.6 34.8 26 45.4 45.4C650 218.9 656 243.7 656 272c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8 0-40-8.8-76.7-25.9-108.1a184.31 184.31 0 00-74-74C596.7 72.8 560 64 520 64h-16c-40 0-76.7 8.8-108.1 25.9a184.31 184.31 0 00-74 74C304.8 195.3 296 232 296 272c0 4.4 3.6 8 8 8z"}},{tag:"path",attrs:{d:"M940 512H792V412c76.8 0 139-62.2 139-139 0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8a63 63 0 01-63 63H232a63 63 0 01-63-63c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8 0 76.8 62.2 139 139 139v100H84c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h148v96c0 6.5.2 13 .7 19.3C164.1 728.6 116 796.7 116 876c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8 0-44.2 23.9-82.9 59.6-103.7a273 273 0 0022.7 49c24.3 41.5 59 76.2 100.5 100.5S460.5 960 512 960s99.8-13.9 141.3-38.2a281.38 281.38 0 00123.2-149.5A120 120 0 01836 876c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8 0-79.3-48.1-147.4-116.7-176.7.4-6.4.7-12.8.7-19.3v-96h148c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM716 680c0 36.8-9.7 72-27.8 102.9-17.7 30.3-43 55.6-73.3 73.3C584 874.3 548.8 884 512 884s-72-9.7-102.9-27.8c-30.3-17.7-55.6-43-73.3-73.3A202.75 202.75 0 01308 680V412h408v268z"}}]},name:"bug",theme:"outlined"};var j=function(e,t){return r.createElement(d.A,(0,i.A)({},e,{ref:t,icon:v}))};const _=r.forwardRef(j),A={hide_table_of_contents:!0,pagination_prev:"get-started/index"},b="\ud83c\udfaf \u0413\u0430\u0439\u0434\u044b",R={id:"guides/index",title:"\ud83c\udfaf \u0413\u0430\u0439\u0434\u044b",description:"PRACTICE-ORIENTED",source:"@site/i18n/ru/docusaurus-plugin-content-docs/current/guides/index.mdx",sourceDirName:"guides",slug:"/guides/",permalink:"/ru/docs/guides/",draft:!1,unlisted:!1,editUrl:"https://github.com/feature-sliced/documentation/edit/master/i18n/ru/docusaurus-plugin-content-docs/current/guides/index.mdx",tags:[],version:"current",lastUpdatedAt:1727607766e3,frontMatter:{hide_table_of_contents:!0,pagination_prev:"get-started/index"},sidebar:"guidesSidebar",previous:{title:"\ud83d\ude80 \u0411\u044b\u0441\u0442\u0440\u044b\u0439 \u0441\u0442\u0430\u0440\u0442",permalink:"/ru/docs/get-started/"},next:{title:"\u041f\u0440\u0438\u043c\u0435\u0440\u044b",permalink:"/ru/docs/guides/examples/"}},C={},M=[{value:"\u0413\u043b\u0430\u0432\u043d\u043e\u0435",id:"main",level:2},...a.RM,...a.RM,...a.RM,...a.RM];function T(e){const t={h1:"h1",h2:"h2",header:"header",p:"p",...(0,c.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(t.header,{children:(0,s.jsx)(t.h1,{id:"-\u0433\u0430\u0439\u0434\u044b",children:"\ud83c\udfaf \u0413\u0430\u0439\u0434\u044b"})}),"\n",(0,s.jsx)("span",{class:"badge badge--primary margin-bottom--md",children:"PRACTICE-ORIENTED"}),"\n",(0,s.jsx)("p",{class:"summary",children:(0,s.jsx)(t.p,{children:'\u041f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0433\u0430\u0439\u0434\u044b \u0438 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u043f\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044e Feature-Sliced Design. \u0412 \u044d\u0442\u043e\u043c \u0436\u0435 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u044b \u0433\u0430\u0439\u0434\u044b \u043f\u043e \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0438 \u0438 \u0445\u0435\u043d\u0434\u0431\u0443\u043a \u043f\u0430\u0433\u0443\u0431\u043d\u044b\u0445 \u043f\u0440\u0430\u043a\u0442\u0438\u043a. \u041d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u043b\u0435\u0437\u043d\u043e, \u043a\u043e\u0433\u0434\u0430 \u0432\u044b \u043f\u044b\u0442\u0430\u0435\u0442\u0435\u0441\u044c \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0447\u0442\u043e-\u0442\u043e \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0435 \u0438\u043b\u0438 \u0445\u043e\u0442\u0438\u0442\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0430 \u043c\u0435\u0442\u043e\u0434\u043e\u043b\u043e\u0433\u0438\u044e "\u0432 \u0431\u043e\u044e"'})}),"\n",(0,s.jsx)(t.h2,{id:"main",children:"\u0413\u043b\u0430\u0432\u043d\u043e\u0435"}),"\n","\n",(0,s.jsx)(a.Ay,{title:"\u041f\u0440\u0438\u043c\u0435\u0440\u044b",description:"\u041f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u043f\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044e \u043c\u0435\u0442\u043e\u0434\u043e\u043b\u043e\u0433\u0438\u0438",to:"/docs/guides/examples",Icon:u,tags:["\u0410\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044f","\u0422\u0438\u043f\u044b","\u041b\u0435\u0439\u0430\u0443\u0442 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b"]}),"\n",(0,s.jsx)(a.Ay,{title:"\u041c\u0438\u0433\u0440\u0430\u0446\u0438\u044f",description:"\u0413\u0430\u0439\u0434\u044b \u043f\u043e \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0438 \u0441 \u0434\u0440\u0443\u0433\u0438\u0445 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440",to:"/docs/guides/migration/from-v1",Icon:p,tags:["\u041a\u0430\u0441\u0442\u043e\u043c\u043d\u0430\u044f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430","FSv1"]}),"\n",(0,s.jsx)(a.Ay,{title:"\u0422\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438",description:"\u041e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043d\u0430 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0435 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0438 \u0433\u0430\u0439\u0434\u044b \u043f\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044e",to:"/docs/guides/tech/with-nextjs",Icon:x}),"\n",(0,s.jsx)(a.Ay,{title:"Code Issues (Smells)",description:"\u041e\u0431\u0449\u0438\u0435 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u044b\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0434\u043b\u044f \u0432\u044b\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u0432 \u043a\u043e\u0434\u0435",to:"/docs/guides/issues/desegmented",Icon:_,tags:["\u0414\u0435\u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f","\u0420\u043e\u0443\u0442\u0438\u043d\u0433","\u041a\u0440\u043e\u0441\u0441-\u0438\u043c\u043f\u043e\u0440\u0442\u044b"]})]})}function w(e={}){const{wrapper:t}={...(0,c.R)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(T,{...e})}):T(e)}},5988:(e,t,n)=>{n.d(t,{Y:()=>r,A:()=>d});n(758);var s=n(3526),c=n(6783);const a={root:"root_GfON",rootDisabled:"rootDisabled_SFUB",details:"details_xxkR",detailsTags:"detailsTags_uTQx",icon:"icon_ciqP",title:"title_pSH5",description:"description__Fep",miniTheme:"miniTheme_ePfp",primaryTheme:"primaryTheme_CilO",defaultTheme:"defaultTheme_j3I8"};var i=n(6070);const r=e=>{const{title:t,description:n,to:r,Icon:d,tags:l,className:u,disabled:h,theme:m="default"}=e;return(0,i.jsxs)(c.A,{className:(0,s.A)(a.root,u,h&&a.rootDisabled,a[`${m}Theme`]),to:r,children:[(0,i.jsx)(o,{Icon:d}),(0,i.jsxs)("div",{className:a.details,children:[(0,i.jsxs)("div",{className:a.detailsMain,children:[(0,i.jsx)("span",{className:a.title,children:t}),(0,i.jsx)("p",{className:a.description,children:n})]}),l&&(0,i.jsx)("div",{className:a.detailsTags,children:l.join(" \u2022 ")})]})]})},o=e=>{let{Icon:t}=e;return t?"string"==typeof t?(0,i.jsx)("span",{className:a.icon,children:t}):(0,i.jsx)(t,{className:a.icon}):null},d=r},1100:(e,t,n)=>{n.d(t,{R:()=>i,x:()=>r});var s=n(758);const c={},a=s.createContext(c);function i(e){const t=s.useContext(a);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function r(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(c):e.components||c:i(e.components),s.createElement(a.Provider,{value:t},e.children)}}}]); \ No newline at end of file +/*! For license information please see 07deeff8.825ba05c.js.LICENSE.txt */ +"use strict";(self.webpackChunk_feature_sliced_documentation=self.webpackChunk_feature_sliced_documentation||[]).push([[230],{7946:(e,t,n)=>{n.d(t,{Ay:()=>o,RM:()=>i});var s=n(6070),c=n(1100),a=n(5988);const i=[];function r(e){return(0,s.jsx)(a.A,{...e})}function o(e={}){const{wrapper:t}={...(0,c.R)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(r,{...e})}):r(e)}},128:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>C,contentTitle:()=>b,default:()=>w,frontMatter:()=>A,metadata:()=>R,toc:()=>M});var s=n(6070),c=n(1100),a=n(7946),i=n(991),r=n(758);const o={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M876.6 239.5c-.5-.9-1.2-1.8-2-2.5-5-5-13.1-5-18.1 0L684.2 409.3l-67.9-67.9L788.7 169c.8-.8 1.4-1.6 2-2.5 3.6-6.1 1.6-13.9-4.5-17.5-98.2-58-226.8-44.7-311.3 39.7-67 67-89.2 162-66.5 247.4l-293 293c-3 3-2.8 7.9.3 11l169.7 169.7c3.1 3.1 8.1 3.3 11 .3l292.9-292.9c85.5 22.8 180.5.7 247.6-66.4 84.4-84.5 97.7-213.1 39.7-311.3zM786 499.8c-58.1 58.1-145.3 69.3-214.6 33.6l-8.8 8.8-.1-.1-274 274.1-79.2-79.2 230.1-230.1s0 .1.1.1l52.8-52.8c-35.7-69.3-24.5-156.5 33.6-214.6a184.2 184.2 0 01144-53.5L537 318.9a32.05 32.05 0 000 45.3l124.5 124.5a32.05 32.05 0 0045.3 0l132.8-132.8c3.7 51.8-14.4 104.8-53.6 143.9z"}}]},name:"tool",theme:"outlined"};var d=n(9820),l=function(e,t){return r.createElement(d.A,(0,i.A)({},e,{ref:t,icon:o}))};const u=r.forwardRef(l);const h={icon:{tag:"svg",attrs:{"fill-rule":"evenodd",viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M880 912H144c-17.7 0-32-14.3-32-32V144c0-17.7 14.3-32 32-32h360c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8H184v656h656V520c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v360c0 17.7-14.3 32-32 32zM653.3 424.6l52.2 52.2a8.01 8.01 0 01-4.7 13.6l-179.4 21c-5.1.6-9.5-3.7-8.9-8.9l21-179.4c.8-6.6 8.9-9.4 13.6-4.7l52.4 52.4 256.2-256.2c3.1-3.1 8.2-3.1 11.3 0l42.4 42.4c3.1 3.1 3.1 8.2 0 11.3L653.3 424.6z"}}]},name:"import",theme:"outlined"};var m=function(e,t){return r.createElement(d.A,(0,i.A)({},e,{ref:t,icon:h}))};const p=r.forwardRef(m);const f={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"defs",attrs:{},children:[{tag:"style",attrs:{}}]},{tag:"path",attrs:{d:"M841 370c3-3.3 2.7-8.3-.6-11.3a8.24 8.24 0 00-5.3-2.1h-72.6c-2.4 0-4.6 1-6.1 2.8L633.5 504.6a7.96 7.96 0 01-13.4-1.9l-63.5-141.3a7.9 7.9 0 00-7.3-4.7H380.7l.9-4.7 8-42.3c10.5-55.4 38-81.4 85.8-81.4 18.6 0 35.5 1.7 48.8 4.7l14.1-66.8c-22.6-4.7-35.2-6.1-54.9-6.1-103.3 0-156.4 44.3-175.9 147.3l-9.4 49.4h-97.6c-3.8 0-7.1 2.7-7.8 6.4L181.9 415a8.07 8.07 0 007.8 9.7H284l-89 429.9a8.07 8.07 0 007.8 9.7H269c3.8 0 7.1-2.7 7.8-6.4l89.7-433.1h135.8l68.2 139.1c1.4 2.9 1 6.4-1.2 8.8l-180.6 203c-2.9 3.3-2.6 8.4.7 11.3 1.5 1.3 3.4 2 5.3 2h72.7c2.4 0 4.6-1 6.1-2.8l123.7-146.7c2.8-3.4 7.9-3.8 11.3-1 .9.8 1.6 1.7 2.1 2.8L676.4 784c1.3 2.8 4.1 4.7 7.3 4.7h64.6a8.02 8.02 0 007.2-11.5l-95.2-198.9c-1.4-2.9-.9-6.4 1.3-8.8L841 370z"}}]},name:"function",theme:"outlined"};var g=function(e,t){return r.createElement(d.A,(0,i.A)({},e,{ref:t,icon:f}))};const x=r.forwardRef(g);const v={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M304 280h56c4.4 0 8-3.6 8-8 0-28.3 5.9-53.2 17.1-73.5 10.6-19.4 26-34.8 45.4-45.4C450.9 142 475.7 136 504 136h16c28.3 0 53.2 5.9 73.5 17.1 19.4 10.6 34.8 26 45.4 45.4C650 218.9 656 243.7 656 272c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8 0-40-8.8-76.7-25.9-108.1a184.31 184.31 0 00-74-74C596.7 72.8 560 64 520 64h-16c-40 0-76.7 8.8-108.1 25.9a184.31 184.31 0 00-74 74C304.8 195.3 296 232 296 272c0 4.4 3.6 8 8 8z"}},{tag:"path",attrs:{d:"M940 512H792V412c76.8 0 139-62.2 139-139 0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8a63 63 0 01-63 63H232a63 63 0 01-63-63c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8 0 76.8 62.2 139 139 139v100H84c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h148v96c0 6.5.2 13 .7 19.3C164.1 728.6 116 796.7 116 876c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8 0-44.2 23.9-82.9 59.6-103.7a273 273 0 0022.7 49c24.3 41.5 59 76.2 100.5 100.5S460.5 960 512 960s99.8-13.9 141.3-38.2a281.38 281.38 0 00123.2-149.5A120 120 0 01836 876c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8 0-79.3-48.1-147.4-116.7-176.7.4-6.4.7-12.8.7-19.3v-96h148c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM716 680c0 36.8-9.7 72-27.8 102.9-17.7 30.3-43 55.6-73.3 73.3C584 874.3 548.8 884 512 884s-72-9.7-102.9-27.8c-30.3-17.7-55.6-43-73.3-73.3A202.75 202.75 0 01308 680V412h408v268z"}}]},name:"bug",theme:"outlined"};var j=function(e,t){return r.createElement(d.A,(0,i.A)({},e,{ref:t,icon:v}))};const _=r.forwardRef(j),A={hide_table_of_contents:!0,pagination_prev:"get-started/index"},b="\ud83c\udfaf \u0413\u0430\u0439\u0434\u044b",R={id:"guides/index",title:"\ud83c\udfaf \u0413\u0430\u0439\u0434\u044b",description:"PRACTICE-ORIENTED",source:"@site/i18n/ru/docusaurus-plugin-content-docs/current/guides/index.mdx",sourceDirName:"guides",slug:"/guides/",permalink:"/ru/docs/guides/",draft:!1,unlisted:!1,editUrl:"https://github.com/feature-sliced/documentation/edit/master/i18n/ru/docusaurus-plugin-content-docs/current/guides/index.mdx",tags:[],version:"current",lastUpdatedAt:1728325386e3,frontMatter:{hide_table_of_contents:!0,pagination_prev:"get-started/index"},sidebar:"guidesSidebar",previous:{title:"\ud83d\ude80 \u0411\u044b\u0441\u0442\u0440\u044b\u0439 \u0441\u0442\u0430\u0440\u0442",permalink:"/ru/docs/get-started/"},next:{title:"\u041f\u0440\u0438\u043c\u0435\u0440\u044b",permalink:"/ru/docs/guides/examples/"}},C={},M=[{value:"\u0413\u043b\u0430\u0432\u043d\u043e\u0435",id:"main",level:2},...a.RM,...a.RM,...a.RM,...a.RM];function T(e){const t={h1:"h1",h2:"h2",header:"header",p:"p",...(0,c.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(t.header,{children:(0,s.jsx)(t.h1,{id:"-\u0433\u0430\u0439\u0434\u044b",children:"\ud83c\udfaf \u0413\u0430\u0439\u0434\u044b"})}),"\n",(0,s.jsx)("span",{class:"badge badge--primary margin-bottom--md",children:"PRACTICE-ORIENTED"}),"\n",(0,s.jsx)("p",{class:"summary",children:(0,s.jsx)(t.p,{children:'\u041f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0433\u0430\u0439\u0434\u044b \u0438 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u043f\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044e Feature-Sliced Design. \u0412 \u044d\u0442\u043e\u043c \u0436\u0435 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u044b \u0433\u0430\u0439\u0434\u044b \u043f\u043e \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0438 \u0438 \u0445\u0435\u043d\u0434\u0431\u0443\u043a \u043f\u0430\u0433\u0443\u0431\u043d\u044b\u0445 \u043f\u0440\u0430\u043a\u0442\u0438\u043a. \u041d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u043b\u0435\u0437\u043d\u043e, \u043a\u043e\u0433\u0434\u0430 \u0432\u044b \u043f\u044b\u0442\u0430\u0435\u0442\u0435\u0441\u044c \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0447\u0442\u043e-\u0442\u043e \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0435 \u0438\u043b\u0438 \u0445\u043e\u0442\u0438\u0442\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0430 \u043c\u0435\u0442\u043e\u0434\u043e\u043b\u043e\u0433\u0438\u044e "\u0432 \u0431\u043e\u044e"'})}),"\n",(0,s.jsx)(t.h2,{id:"main",children:"\u0413\u043b\u0430\u0432\u043d\u043e\u0435"}),"\n","\n",(0,s.jsx)(a.Ay,{title:"\u041f\u0440\u0438\u043c\u0435\u0440\u044b",description:"\u041f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u043f\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044e \u043c\u0435\u0442\u043e\u0434\u043e\u043b\u043e\u0433\u0438\u0438",to:"/docs/guides/examples",Icon:u,tags:["\u0410\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044f","\u0422\u0438\u043f\u044b","\u041b\u0435\u0439\u0430\u0443\u0442 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b"]}),"\n",(0,s.jsx)(a.Ay,{title:"\u041c\u0438\u0433\u0440\u0430\u0446\u0438\u044f",description:"\u0413\u0430\u0439\u0434\u044b \u043f\u043e \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0438 \u0441 \u0434\u0440\u0443\u0433\u0438\u0445 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440",to:"/docs/guides/migration/from-v1",Icon:p,tags:["\u041a\u0430\u0441\u0442\u043e\u043c\u043d\u0430\u044f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430","FSv1"]}),"\n",(0,s.jsx)(a.Ay,{title:"\u0422\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438",description:"\u041e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043d\u0430 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0435 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0438 \u0433\u0430\u0439\u0434\u044b \u043f\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044e",to:"/docs/guides/tech/with-nextjs",Icon:x}),"\n",(0,s.jsx)(a.Ay,{title:"Code Issues (Smells)",description:"\u041e\u0431\u0449\u0438\u0435 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u044b\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0434\u043b\u044f \u0432\u044b\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u0432 \u043a\u043e\u0434\u0435",to:"/docs/guides/issues/desegmented",Icon:_,tags:["\u0414\u0435\u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f","\u0420\u043e\u0443\u0442\u0438\u043d\u0433","\u041a\u0440\u043e\u0441\u0441-\u0438\u043c\u043f\u043e\u0440\u0442\u044b"]})]})}function w(e={}){const{wrapper:t}={...(0,c.R)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(T,{...e})}):T(e)}},5988:(e,t,n)=>{n.d(t,{Y:()=>r,A:()=>d});n(758);var s=n(3526),c=n(6783);const a={root:"root_GfON",rootDisabled:"rootDisabled_SFUB",details:"details_xxkR",detailsTags:"detailsTags_uTQx",icon:"icon_ciqP",title:"title_pSH5",description:"description__Fep",miniTheme:"miniTheme_ePfp",primaryTheme:"primaryTheme_CilO",defaultTheme:"defaultTheme_j3I8"};var i=n(6070);const r=e=>{const{title:t,description:n,to:r,Icon:d,tags:l,className:u,disabled:h,theme:m="default"}=e;return(0,i.jsxs)(c.A,{className:(0,s.A)(a.root,u,h&&a.rootDisabled,a[`${m}Theme`]),to:r,children:[(0,i.jsx)(o,{Icon:d}),(0,i.jsxs)("div",{className:a.details,children:[(0,i.jsxs)("div",{className:a.detailsMain,children:[(0,i.jsx)("span",{className:a.title,children:t}),(0,i.jsx)("p",{className:a.description,children:n})]}),l&&(0,i.jsx)("div",{className:a.detailsTags,children:l.join(" \u2022 ")})]})]})},o=e=>{let{Icon:t}=e;return t?"string"==typeof t?(0,i.jsx)("span",{className:a.icon,children:t}):(0,i.jsx)(t,{className:a.icon}):null},d=r},1100:(e,t,n)=>{n.d(t,{R:()=>i,x:()=>r});var s=n(758);const c={},a=s.createContext(c);function i(e){const t=s.useContext(a);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function r(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(c):e.components||c:i(e.components),s.createElement(a.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/ru/assets/js/07deeff8.51cdbf80.js.LICENSE.txt b/ru/assets/js/07deeff8.825ba05c.js.LICENSE.txt similarity index 100% rename from ru/assets/js/07deeff8.51cdbf80.js.LICENSE.txt rename to ru/assets/js/07deeff8.825ba05c.js.LICENSE.txt diff --git a/ru/assets/js/1232fa31.51692b42.js b/ru/assets/js/1232fa31.3a8fb5ed.js similarity index 97% rename from ru/assets/js/1232fa31.51692b42.js rename to ru/assets/js/1232fa31.3a8fb5ed.js index 296055812f..b2e28ea363 100644 --- a/ru/assets/js/1232fa31.51692b42.js +++ b/ru/assets/js/1232fa31.3a8fb5ed.js @@ -1,2 +1,2 @@ -/*! For license information please see 1232fa31.51692b42.js.LICENSE.txt */ -"use strict";(self.webpackChunk_feature_sliced_documentation=self.webpackChunk_feature_sliced_documentation||[]).push([[2338],{7946:(e,t,n)=>{n.d(t,{Ay:()=>o,RM:()=>c});var s=n(6070),r=n(1100),a=n(5988);const c=[];function i(e){return(0,s.jsx)(a.A,{...e})}function o(e={}){const{wrapper:t}={...(0,r.R)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(i,{...e})}):i(e)}},7490:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>M,contentTitle:()=>_,default:()=>z,frontMatter:()=>v,metadata:()=>j,toc:()=>A});var s=n(6070),r=n(1100),a=n(7946),c=n(991),i=n(758);const o={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M864 736c0-111.6-65.4-208-160-252.9V317.3c0-15.1-5.3-29.7-15.1-41.2L536.5 95.4C530.1 87.8 521 84 512 84s-18.1 3.8-24.5 11.4L335.1 276.1a63.97 63.97 0 00-15.1 41.2v165.8C225.4 528 160 624.4 160 736h156.5c-2.3 7.2-3.5 15-3.5 23.8 0 22.1 7.6 43.7 21.4 60.8a97.2 97.2 0 0043.1 30.6c23.1 54 75.6 88.8 134.5 88.8 29.1 0 57.3-8.6 81.4-24.8 23.6-15.8 41.9-37.9 53-64a97 97 0 0043.1-30.5 97.52 97.52 0 0021.4-60.8c0-8.4-1.1-16.4-3.1-23.8H864zM762.3 621.4c9.4 14.6 17 30.3 22.5 46.6H700V558.7a211.6 211.6 0 0162.3 62.7zM388 483.1V318.8l124-147 124 147V668H388V483.1zM239.2 668c5.5-16.3 13.1-32 22.5-46.6 16.3-25.2 37.5-46.5 62.3-62.7V668h-84.8zm388.9 116.2c-5.2 3-11.2 4.2-17.1 3.4l-19.5-2.4-2.8 19.4c-5.4 37.9-38.4 66.5-76.7 66.5-38.3 0-71.3-28.6-76.7-66.5l-2.8-19.5-19.5 2.5a27.7 27.7 0 01-17.1-3.5c-8.7-5-14.1-14.3-14.1-24.4 0-10.6 5.9-19.4 14.6-23.8h231.3c8.8 4.5 14.6 13.3 14.6 23.8-.1 10.2-5.5 19.6-14.2 24.5zM464 400a48 48 0 1096 0 48 48 0 10-96 0z"}}]},name:"rocket",theme:"outlined"};var d=n(9820),l=function(e,t){return i.createElement(d.A,(0,c.A)({},e,{ref:t,icon:o}))};const u=i.forwardRef(l);const m={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M442.3 677.6l199.4-156.7a11.3 11.3 0 000-17.7L442.3 346.4c-7.4-5.8-18.3-.6-18.3 8.8v313.5c0 9.4 10.9 14.7 18.3 8.9z"}},{tag:"path",attrs:{d:"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z"}}]},name:"play-square",theme:"outlined"};var p=function(e,t){return i.createElement(d.A,(0,c.A)({},e,{ref:t,icon:m}))};const h=i.forwardRef(p);const f={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"}},{tag:"path",attrs:{d:"M623.6 316.7C593.6 290.4 554 276 512 276s-81.6 14.5-111.6 40.7C369.2 344 352 380.7 352 420v7.6c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V420c0-44.1 43.1-80 96-80s96 35.9 96 80c0 31.1-22 59.6-56.1 72.7-21.2 8.1-39.2 22.3-52.1 40.9-13.1 19-19.9 41.8-19.9 64.9V620c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-22.7a48.3 48.3 0 0130.9-44.8c59-22.7 97.1-74.7 97.1-132.5.1-39.3-17.1-76-48.3-103.3zM472 732a40 40 0 1080 0 40 40 0 10-80 0z"}}]},name:"question-circle",theme:"outlined"};var x=function(e,t){return i.createElement(d.A,(0,c.A)({},e,{ref:t,icon:f}))};const g=i.forwardRef(x),v={hide_table_of_contents:!0,pagination_prev:"intro"},_="\ud83d\ude80 \u0411\u044b\u0441\u0442\u0440\u044b\u0439 \u0441\u0442\u0430\u0440\u0442",j={id:"get-started/index",title:"\ud83d\ude80 \u0411\u044b\u0441\u0442\u0440\u044b\u0439 \u0441\u0442\u0430\u0440\u0442",description:"\u0414\u043e\u0431\u0440\u043e \u043f\u043e\u0436\u0430\u043b\u043e\u0432\u0430\u0442\u044c! \u042d\u0442\u043e\u0442 \u0440\u0430\u0437\u0434\u0435\u043b \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u0431\u0435\u0433\u043b\u043e \u043f\u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435\u043c Feature-Sliced Design \u0438 \u043e\u0441\u043d\u043e\u0432\u0430\u043c\u0438 \u043c\u0435\u0442\u043e\u0434\u043e\u043b\u043e\u0433\u0438\u0438. \u0422\u0430\u043a\u0436\u0435 \u0432\u044b \u043f\u043e\u0439\u043c\u0435\u0442\u0435 \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0435 \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0430 \u043c\u0435\u0442\u043e\u0434\u043e\u043b\u043e\u0433\u0438\u0438 \u0438 \u043f\u0440\u0438\u0447\u0438\u043d\u044b \u0435\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f.",source:"@site/i18n/ru/docusaurus-plugin-content-docs/current/get-started/index.mdx",sourceDirName:"get-started",slug:"/get-started/",permalink:"/ru/docs/get-started/",draft:!1,unlisted:!1,editUrl:"https://github.com/feature-sliced/documentation/edit/master/i18n/ru/docusaurus-plugin-content-docs/current/get-started/index.mdx",tags:[],version:"current",lastUpdatedAt:1727607766e3,frontMatter:{hide_table_of_contents:!0,pagination_prev:"intro"},sidebar:"getstartedSidebar",previous:{title:"\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f",permalink:"/ru/docs/"},next:{title:"\u041e\u0431\u0437\u043e\u0440",permalink:"/ru/docs/get-started/overview"}},M={},A=[...a.RM,...a.RM,...a.RM];function b(e){const t={h1:"h1",header:"header",p:"p",...(0,r.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(t.header,{children:(0,s.jsx)(t.h1,{id:"-\u0431\u044b\u0441\u0442\u0440\u044b\u0439-\u0441\u0442\u0430\u0440\u0442",children:"\ud83d\ude80 \u0411\u044b\u0441\u0442\u0440\u044b\u0439 \u0441\u0442\u0430\u0440\u0442"})}),"\n",(0,s.jsx)("p",{class:"summary",children:(0,s.jsx)(t.p,{children:"\u0414\u043e\u0431\u0440\u043e \u043f\u043e\u0436\u0430\u043b\u043e\u0432\u0430\u0442\u044c! \u042d\u0442\u043e\u0442 \u0440\u0430\u0437\u0434\u0435\u043b \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u0431\u0435\u0433\u043b\u043e \u043f\u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435\u043c Feature-Sliced Design \u0438 \u043e\u0441\u043d\u043e\u0432\u0430\u043c\u0438 \u043c\u0435\u0442\u043e\u0434\u043e\u043b\u043e\u0433\u0438\u0438. \u0422\u0430\u043a\u0436\u0435 \u0432\u044b \u043f\u043e\u0439\u043c\u0435\u0442\u0435 \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0435 \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0430 \u043c\u0435\u0442\u043e\u0434\u043e\u043b\u043e\u0433\u0438\u0438 \u0438 \u043f\u0440\u0438\u0447\u0438\u043d\u044b \u0435\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f."})}),"\n",(0,s.jsx)(a.Ay,{title:"\u041e\u0431\u0437\u043e\u0440",description:"\u041a\u0440\u0430\u0442\u043a\u0438\u0439 \u043e\u0431\u0437\u043e\u0440 \u043c\u0435\u0442\u043e\u0434\u043e\u043b\u043e\u0433\u0438\u0438, \u0435\u0435 \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u0439 \u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f",to:"/docs/get-started/overview",Icon:u}),"\n",(0,s.jsx)(a.Ay,{title:"\u0422\u0443\u0442\u043e\u0440\u0438\u0430\u043b",description:"\u0412\u0432\u043e\u0434\u043d\u044b\u0439 \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b \u043f\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044e \u043c\u0435\u0442\u043e\u0434\u043e\u043b\u043e\u0433\u0438\u0438",to:"/docs/get-started/tutorial",Icon:h}),"\n",(0,s.jsx)(a.Ay,{title:"FAQ",description:"\u0427\u0430\u0441\u0442\u043e \u0437\u0430\u0434\u0430\u0432\u0430\u0435\u043c\u044b\u0435 \u0432\u043e\u043f\u0440\u043e\u0441\u044b",to:"/docs/get-started/faq",Icon:g}),"\n"]})}function z(e={}){const{wrapper:t}={...(0,r.R)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(b,{...e})}):b(e)}},5988:(e,t,n)=>{n.d(t,{Y:()=>i,A:()=>d});n(758);var s=n(3526),r=n(6783);const a={root:"root_GfON",rootDisabled:"rootDisabled_SFUB",details:"details_xxkR",detailsTags:"detailsTags_uTQx",icon:"icon_ciqP",title:"title_pSH5",description:"description__Fep",miniTheme:"miniTheme_ePfp",primaryTheme:"primaryTheme_CilO",defaultTheme:"defaultTheme_j3I8"};var c=n(6070);const i=e=>{const{title:t,description:n,to:i,Icon:d,tags:l,className:u,disabled:m,theme:p="default"}=e;return(0,c.jsxs)(r.A,{className:(0,s.A)(a.root,u,m&&a.rootDisabled,a[`${p}Theme`]),to:i,children:[(0,c.jsx)(o,{Icon:d}),(0,c.jsxs)("div",{className:a.details,children:[(0,c.jsxs)("div",{className:a.detailsMain,children:[(0,c.jsx)("span",{className:a.title,children:t}),(0,c.jsx)("p",{className:a.description,children:n})]}),l&&(0,c.jsx)("div",{className:a.detailsTags,children:l.join(" \u2022 ")})]})]})},o=e=>{let{Icon:t}=e;return t?"string"==typeof t?(0,c.jsx)("span",{className:a.icon,children:t}):(0,c.jsx)(t,{className:a.icon}):null},d=i},1100:(e,t,n)=>{n.d(t,{R:()=>c,x:()=>i});var s=n(758);const r={},a=s.createContext(r);function c(e){const t=s.useContext(a);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function i(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:c(e.components),s.createElement(a.Provider,{value:t},e.children)}}}]); \ No newline at end of file +/*! For license information please see 1232fa31.3a8fb5ed.js.LICENSE.txt */ +"use strict";(self.webpackChunk_feature_sliced_documentation=self.webpackChunk_feature_sliced_documentation||[]).push([[2338],{7946:(e,t,n)=>{n.d(t,{Ay:()=>o,RM:()=>c});var s=n(6070),r=n(1100),a=n(5988);const c=[];function i(e){return(0,s.jsx)(a.A,{...e})}function o(e={}){const{wrapper:t}={...(0,r.R)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(i,{...e})}):i(e)}},7490:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>M,contentTitle:()=>_,default:()=>z,frontMatter:()=>v,metadata:()=>j,toc:()=>A});var s=n(6070),r=n(1100),a=n(7946),c=n(991),i=n(758);const o={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M864 736c0-111.6-65.4-208-160-252.9V317.3c0-15.1-5.3-29.7-15.1-41.2L536.5 95.4C530.1 87.8 521 84 512 84s-18.1 3.8-24.5 11.4L335.1 276.1a63.97 63.97 0 00-15.1 41.2v165.8C225.4 528 160 624.4 160 736h156.5c-2.3 7.2-3.5 15-3.5 23.8 0 22.1 7.6 43.7 21.4 60.8a97.2 97.2 0 0043.1 30.6c23.1 54 75.6 88.8 134.5 88.8 29.1 0 57.3-8.6 81.4-24.8 23.6-15.8 41.9-37.9 53-64a97 97 0 0043.1-30.5 97.52 97.52 0 0021.4-60.8c0-8.4-1.1-16.4-3.1-23.8H864zM762.3 621.4c9.4 14.6 17 30.3 22.5 46.6H700V558.7a211.6 211.6 0 0162.3 62.7zM388 483.1V318.8l124-147 124 147V668H388V483.1zM239.2 668c5.5-16.3 13.1-32 22.5-46.6 16.3-25.2 37.5-46.5 62.3-62.7V668h-84.8zm388.9 116.2c-5.2 3-11.2 4.2-17.1 3.4l-19.5-2.4-2.8 19.4c-5.4 37.9-38.4 66.5-76.7 66.5-38.3 0-71.3-28.6-76.7-66.5l-2.8-19.5-19.5 2.5a27.7 27.7 0 01-17.1-3.5c-8.7-5-14.1-14.3-14.1-24.4 0-10.6 5.9-19.4 14.6-23.8h231.3c8.8 4.5 14.6 13.3 14.6 23.8-.1 10.2-5.5 19.6-14.2 24.5zM464 400a48 48 0 1096 0 48 48 0 10-96 0z"}}]},name:"rocket",theme:"outlined"};var d=n(9820),l=function(e,t){return i.createElement(d.A,(0,c.A)({},e,{ref:t,icon:o}))};const u=i.forwardRef(l);const m={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M442.3 677.6l199.4-156.7a11.3 11.3 0 000-17.7L442.3 346.4c-7.4-5.8-18.3-.6-18.3 8.8v313.5c0 9.4 10.9 14.7 18.3 8.9z"}},{tag:"path",attrs:{d:"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z"}}]},name:"play-square",theme:"outlined"};var p=function(e,t){return i.createElement(d.A,(0,c.A)({},e,{ref:t,icon:m}))};const h=i.forwardRef(p);const f={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"}},{tag:"path",attrs:{d:"M623.6 316.7C593.6 290.4 554 276 512 276s-81.6 14.5-111.6 40.7C369.2 344 352 380.7 352 420v7.6c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V420c0-44.1 43.1-80 96-80s96 35.9 96 80c0 31.1-22 59.6-56.1 72.7-21.2 8.1-39.2 22.3-52.1 40.9-13.1 19-19.9 41.8-19.9 64.9V620c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-22.7a48.3 48.3 0 0130.9-44.8c59-22.7 97.1-74.7 97.1-132.5.1-39.3-17.1-76-48.3-103.3zM472 732a40 40 0 1080 0 40 40 0 10-80 0z"}}]},name:"question-circle",theme:"outlined"};var x=function(e,t){return i.createElement(d.A,(0,c.A)({},e,{ref:t,icon:f}))};const g=i.forwardRef(x),v={hide_table_of_contents:!0,pagination_prev:"intro"},_="\ud83d\ude80 \u0411\u044b\u0441\u0442\u0440\u044b\u0439 \u0441\u0442\u0430\u0440\u0442",j={id:"get-started/index",title:"\ud83d\ude80 \u0411\u044b\u0441\u0442\u0440\u044b\u0439 \u0441\u0442\u0430\u0440\u0442",description:"\u0414\u043e\u0431\u0440\u043e \u043f\u043e\u0436\u0430\u043b\u043e\u0432\u0430\u0442\u044c! \u042d\u0442\u043e\u0442 \u0440\u0430\u0437\u0434\u0435\u043b \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u0431\u0435\u0433\u043b\u043e \u043f\u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435\u043c Feature-Sliced Design \u0438 \u043e\u0441\u043d\u043e\u0432\u0430\u043c\u0438 \u043c\u0435\u0442\u043e\u0434\u043e\u043b\u043e\u0433\u0438\u0438. \u0422\u0430\u043a\u0436\u0435 \u0432\u044b \u043f\u043e\u0439\u043c\u0435\u0442\u0435 \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0435 \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0430 \u043c\u0435\u0442\u043e\u0434\u043e\u043b\u043e\u0433\u0438\u0438 \u0438 \u043f\u0440\u0438\u0447\u0438\u043d\u044b \u0435\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f.",source:"@site/i18n/ru/docusaurus-plugin-content-docs/current/get-started/index.mdx",sourceDirName:"get-started",slug:"/get-started/",permalink:"/ru/docs/get-started/",draft:!1,unlisted:!1,editUrl:"https://github.com/feature-sliced/documentation/edit/master/i18n/ru/docusaurus-plugin-content-docs/current/get-started/index.mdx",tags:[],version:"current",lastUpdatedAt:1728325386e3,frontMatter:{hide_table_of_contents:!0,pagination_prev:"intro"},sidebar:"getstartedSidebar",previous:{title:"\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f",permalink:"/ru/docs/"},next:{title:"\u041e\u0431\u0437\u043e\u0440",permalink:"/ru/docs/get-started/overview"}},M={},A=[...a.RM,...a.RM,...a.RM];function b(e){const t={h1:"h1",header:"header",p:"p",...(0,r.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(t.header,{children:(0,s.jsx)(t.h1,{id:"-\u0431\u044b\u0441\u0442\u0440\u044b\u0439-\u0441\u0442\u0430\u0440\u0442",children:"\ud83d\ude80 \u0411\u044b\u0441\u0442\u0440\u044b\u0439 \u0441\u0442\u0430\u0440\u0442"})}),"\n",(0,s.jsx)("p",{class:"summary",children:(0,s.jsx)(t.p,{children:"\u0414\u043e\u0431\u0440\u043e \u043f\u043e\u0436\u0430\u043b\u043e\u0432\u0430\u0442\u044c! \u042d\u0442\u043e\u0442 \u0440\u0430\u0437\u0434\u0435\u043b \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u0431\u0435\u0433\u043b\u043e \u043f\u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435\u043c Feature-Sliced Design \u0438 \u043e\u0441\u043d\u043e\u0432\u0430\u043c\u0438 \u043c\u0435\u0442\u043e\u0434\u043e\u043b\u043e\u0433\u0438\u0438. \u0422\u0430\u043a\u0436\u0435 \u0432\u044b \u043f\u043e\u0439\u043c\u0435\u0442\u0435 \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0435 \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0430 \u043c\u0435\u0442\u043e\u0434\u043e\u043b\u043e\u0433\u0438\u0438 \u0438 \u043f\u0440\u0438\u0447\u0438\u043d\u044b \u0435\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f."})}),"\n",(0,s.jsx)(a.Ay,{title:"\u041e\u0431\u0437\u043e\u0440",description:"\u041a\u0440\u0430\u0442\u043a\u0438\u0439 \u043e\u0431\u0437\u043e\u0440 \u043c\u0435\u0442\u043e\u0434\u043e\u043b\u043e\u0433\u0438\u0438, \u0435\u0435 \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u0439 \u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f",to:"/docs/get-started/overview",Icon:u}),"\n",(0,s.jsx)(a.Ay,{title:"\u0422\u0443\u0442\u043e\u0440\u0438\u0430\u043b",description:"\u0412\u0432\u043e\u0434\u043d\u044b\u0439 \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b \u043f\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044e \u043c\u0435\u0442\u043e\u0434\u043e\u043b\u043e\u0433\u0438\u0438",to:"/docs/get-started/tutorial",Icon:h}),"\n",(0,s.jsx)(a.Ay,{title:"FAQ",description:"\u0427\u0430\u0441\u0442\u043e \u0437\u0430\u0434\u0430\u0432\u0430\u0435\u043c\u044b\u0435 \u0432\u043e\u043f\u0440\u043e\u0441\u044b",to:"/docs/get-started/faq",Icon:g}),"\n"]})}function z(e={}){const{wrapper:t}={...(0,r.R)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(b,{...e})}):b(e)}},5988:(e,t,n)=>{n.d(t,{Y:()=>i,A:()=>d});n(758);var s=n(3526),r=n(6783);const a={root:"root_GfON",rootDisabled:"rootDisabled_SFUB",details:"details_xxkR",detailsTags:"detailsTags_uTQx",icon:"icon_ciqP",title:"title_pSH5",description:"description__Fep",miniTheme:"miniTheme_ePfp",primaryTheme:"primaryTheme_CilO",defaultTheme:"defaultTheme_j3I8"};var c=n(6070);const i=e=>{const{title:t,description:n,to:i,Icon:d,tags:l,className:u,disabled:m,theme:p="default"}=e;return(0,c.jsxs)(r.A,{className:(0,s.A)(a.root,u,m&&a.rootDisabled,a[`${p}Theme`]),to:i,children:[(0,c.jsx)(o,{Icon:d}),(0,c.jsxs)("div",{className:a.details,children:[(0,c.jsxs)("div",{className:a.detailsMain,children:[(0,c.jsx)("span",{className:a.title,children:t}),(0,c.jsx)("p",{className:a.description,children:n})]}),l&&(0,c.jsx)("div",{className:a.detailsTags,children:l.join(" \u2022 ")})]})]})},o=e=>{let{Icon:t}=e;return t?"string"==typeof t?(0,c.jsx)("span",{className:a.icon,children:t}):(0,c.jsx)(t,{className:a.icon}):null},d=i},1100:(e,t,n)=>{n.d(t,{R:()=>c,x:()=>i});var s=n(758);const r={},a=s.createContext(r);function c(e){const t=s.useContext(a);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function i(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:c(e.components),s.createElement(a.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/ru/assets/js/1232fa31.51692b42.js.LICENSE.txt b/ru/assets/js/1232fa31.3a8fb5ed.js.LICENSE.txt similarity index 100% rename from ru/assets/js/1232fa31.51692b42.js.LICENSE.txt rename to ru/assets/js/1232fa31.3a8fb5ed.js.LICENSE.txt diff --git a/ru/assets/js/17f650ce.2b5267fc.js b/ru/assets/js/17f650ce.9d654aa8.js similarity index 98% rename from ru/assets/js/17f650ce.2b5267fc.js rename to ru/assets/js/17f650ce.9d654aa8.js index c85e31ecdd..0f98be40bf 100644 --- a/ru/assets/js/17f650ce.2b5267fc.js +++ b/ru/assets/js/17f650ce.9d654aa8.js @@ -1 +1 @@ -"use strict";(self.webpackChunk_feature_sliced_documentation=self.webpackChunk_feature_sliced_documentation||[]).push([[6008],{1928:(e,t,s)=>{s.d(t,{Ay:()=>u,RM:()=>d});var n=s(6070),i=s(1100),r=(s(758),s(6783)),o=s(7765);const c=e=>{let{ticket:t}=e;const s=`https://github.com/feature-sliced/documentation/issues/${t}`;return(0,n.jsxs)("div",{children:[(0,n.jsx)("p",{children:(0,o.T)({id:"shared.wip.title"})}),(0,n.jsx)("p",{children:(0,o.T)({id:"shared.wip.subtitle"})}),(0,n.jsxs)("ul",{children:[(0,n.jsxs)("li",{children:[(0,o.T)({id:"shared.wip.var.feedback.base"}),(0,n.jsx)(r.A,{to:s,children:(0,o.T)({id:"shared.wip.var.feedback.link"})})]}),(0,n.jsxs)("li",{children:[(0,o.T)({id:"shared.wip.var.material.base"}),(0,n.jsx)(r.A,{to:"https://t.me/feature_sliced",children:(0,o.T)({id:"shared.wip.var.material.link"})})]}),(0,n.jsxs)("li",{children:[(0,o.T)({id:"shared.wip.var.contribute.base"}),(0,n.jsx)(r.A,{to:"https://github.com/feature-sliced/documentation/blob/master/CONTRIBUTING.md",children:(0,o.T)({id:"shared.wip.var.contribute.link"})})]})]}),(0,n.jsx)("br",{}),(0,n.jsx)("p",{children:(0,n.jsx)("i",{children:"\ud83c\udf70 Stay tuned!"})})]})},d=[];function a(e){const t={admonition:"admonition",...(0,i.R)(),...e.components};return(0,n.jsx)(t.admonition,{title:"WIP",type:"caution",children:(0,n.jsx)(c,{ticket:e.ticket})})}function u(e={}){const{wrapper:t}={...(0,i.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(a,{...e})}):a(e)}},5952:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>a,contentTitle:()=>c,default:()=>p,frontMatter:()=>o,metadata:()=>d,toc:()=>u});var n=s(6070),i=s(1100),r=s(1928);const o={sidebar_class_name:"sidebar-item--wip",unlisted:!0},c="Desktop/Touch \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b",d={id:"guides/examples/platforms",title:"Desktop/Touch \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b",description:"\u041f\u0440\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043c\u0435\u0442\u043e\u0434\u043e\u043b\u043e\u0433\u0438\u0438 \u0434\u043b\u044f desktop/touch",source:"@site/i18n/ru/docusaurus-plugin-content-docs/current/guides/examples/platforms.mdx",sourceDirName:"guides/examples",slug:"/guides/examples/platforms",permalink:"/ru/docs/guides/examples/platforms",draft:!1,unlisted:!0,editUrl:"https://github.com/feature-sliced/documentation/edit/master/i18n/ru/docusaurus-plugin-content-docs/current/guides/examples/platforms.mdx",tags:[],version:"current",lastUpdatedAt:1727607766e3,frontMatter:{sidebar_class_name:"sidebar-item--wip",unlisted:!0},sidebar:"guidesSidebar"},a={},u=[...r.RM];function l(e){const t={blockquote:"blockquote",h1:"h1",header:"header",p:"p",...(0,i.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.header,{children:(0,n.jsx)(t.h1,{id:"desktoptouch-\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b",children:"Desktop/Touch \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b"})}),"\n",(0,n.jsx)(r.Ay,{ticket:"198"}),"\n",(0,n.jsxs)(t.blockquote,{children:["\n",(0,n.jsx)(t.p,{children:"\u041f\u0440\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043c\u0435\u0442\u043e\u0434\u043e\u043b\u043e\u0433\u0438\u0438 \u0434\u043b\u044f desktop/touch"}),"\n"]})]})}function p(e={}){const{wrapper:t}={...(0,i.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(l,{...e})}):l(e)}},1100:(e,t,s)=>{s.d(t,{R:()=>o,x:()=>c});var n=s(758);const i={},r=n.createContext(i);function o(e){const t=n.useContext(r);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function c(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:o(e.components),n.createElement(r.Provider,{value:t},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunk_feature_sliced_documentation=self.webpackChunk_feature_sliced_documentation||[]).push([[6008],{1928:(e,t,s)=>{s.d(t,{Ay:()=>u,RM:()=>d});var n=s(6070),i=s(1100),r=(s(758),s(6783)),o=s(7765);const c=e=>{let{ticket:t}=e;const s=`https://github.com/feature-sliced/documentation/issues/${t}`;return(0,n.jsxs)("div",{children:[(0,n.jsx)("p",{children:(0,o.T)({id:"shared.wip.title"})}),(0,n.jsx)("p",{children:(0,o.T)({id:"shared.wip.subtitle"})}),(0,n.jsxs)("ul",{children:[(0,n.jsxs)("li",{children:[(0,o.T)({id:"shared.wip.var.feedback.base"}),(0,n.jsx)(r.A,{to:s,children:(0,o.T)({id:"shared.wip.var.feedback.link"})})]}),(0,n.jsxs)("li",{children:[(0,o.T)({id:"shared.wip.var.material.base"}),(0,n.jsx)(r.A,{to:"https://t.me/feature_sliced",children:(0,o.T)({id:"shared.wip.var.material.link"})})]}),(0,n.jsxs)("li",{children:[(0,o.T)({id:"shared.wip.var.contribute.base"}),(0,n.jsx)(r.A,{to:"https://github.com/feature-sliced/documentation/blob/master/CONTRIBUTING.md",children:(0,o.T)({id:"shared.wip.var.contribute.link"})})]})]}),(0,n.jsx)("br",{}),(0,n.jsx)("p",{children:(0,n.jsx)("i",{children:"\ud83c\udf70 Stay tuned!"})})]})},d=[];function a(e){const t={admonition:"admonition",...(0,i.R)(),...e.components};return(0,n.jsx)(t.admonition,{title:"WIP",type:"caution",children:(0,n.jsx)(c,{ticket:e.ticket})})}function u(e={}){const{wrapper:t}={...(0,i.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(a,{...e})}):a(e)}},5952:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>a,contentTitle:()=>c,default:()=>p,frontMatter:()=>o,metadata:()=>d,toc:()=>u});var n=s(6070),i=s(1100),r=s(1928);const o={sidebar_class_name:"sidebar-item--wip",unlisted:!0},c="Desktop/Touch \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b",d={id:"guides/examples/platforms",title:"Desktop/Touch \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b",description:"\u041f\u0440\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043c\u0435\u0442\u043e\u0434\u043e\u043b\u043e\u0433\u0438\u0438 \u0434\u043b\u044f desktop/touch",source:"@site/i18n/ru/docusaurus-plugin-content-docs/current/guides/examples/platforms.mdx",sourceDirName:"guides/examples",slug:"/guides/examples/platforms",permalink:"/ru/docs/guides/examples/platforms",draft:!1,unlisted:!0,editUrl:"https://github.com/feature-sliced/documentation/edit/master/i18n/ru/docusaurus-plugin-content-docs/current/guides/examples/platforms.mdx",tags:[],version:"current",lastUpdatedAt:1728325386e3,frontMatter:{sidebar_class_name:"sidebar-item--wip",unlisted:!0},sidebar:"guidesSidebar"},a={},u=[...r.RM];function l(e){const t={blockquote:"blockquote",h1:"h1",header:"header",p:"p",...(0,i.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.header,{children:(0,n.jsx)(t.h1,{id:"desktoptouch-\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b",children:"Desktop/Touch \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b"})}),"\n",(0,n.jsx)(r.Ay,{ticket:"198"}),"\n",(0,n.jsxs)(t.blockquote,{children:["\n",(0,n.jsx)(t.p,{children:"\u041f\u0440\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043c\u0435\u0442\u043e\u0434\u043e\u043b\u043e\u0433\u0438\u0438 \u0434\u043b\u044f desktop/touch"}),"\n"]})]})}function p(e={}){const{wrapper:t}={...(0,i.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(l,{...e})}):l(e)}},1100:(e,t,s)=>{s.d(t,{R:()=>o,x:()=>c});var n=s(758);const i={},r=n.createContext(i);function o(e){const t=n.useContext(r);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function c(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:o(e.components),n.createElement(r.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/ru/assets/js/1c0a16b8.be690b3d.js b/ru/assets/js/1c0a16b8.1f95eaa9.js similarity index 98% rename from ru/assets/js/1c0a16b8.be690b3d.js rename to ru/assets/js/1c0a16b8.1f95eaa9.js index 9ac13e3f00..e7dc079793 100644 --- a/ru/assets/js/1c0a16b8.be690b3d.js +++ b/ru/assets/js/1c0a16b8.1f95eaa9.js @@ -1 +1 @@ -"use strict";(self.webpackChunk_feature_sliced_documentation=self.webpackChunk_feature_sliced_documentation||[]).push([[6877],{9415:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>s,default:()=>u,frontMatter:()=>i,metadata:()=>a,toc:()=>l});var r=n(6070),o=n(1100);const i={sidebar_position:1},s="\u0410\u0441\u043f\u0435\u043a\u0442\u044b \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438",a={id:"about/promote/integration",title:"\u0410\u0441\u043f\u0435\u043a\u0442\u044b \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438",description:"\u0427\u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0432 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u043c \u0441\u0447\u0435\u0442\u0435?",source:"@site/i18n/ru/docusaurus-plugin-content-docs/current/about/promote/integration.mdx",sourceDirName:"about/promote",slug:"/about/promote/integration",permalink:"/ru/docs/about/promote/integration",draft:!1,unlisted:!1,editUrl:"https://github.com/feature-sliced/documentation/edit/master/i18n/ru/docusaurus-plugin-content-docs/current/about/promote/integration.mdx",tags:[],version:"current",lastUpdatedAt:1727607766e3,sidebarPosition:1,frontMatter:{sidebar_position:1},sidebar:"aboutSidebar",previous:{title:"\u0410\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u0438",permalink:"/ru/docs/about/understanding/abstractions"},next:{title:"\u0427\u0430\u0441\u0442\u0438\u0447\u043d\u043e\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435",permalink:"/ru/docs/about/promote/partial-application"}},c={},l=[{value:"\u0427\u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0432 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u043c \u0441\u0447\u0435\u0442\u0435?",id:"summary",level:2},{value:"\u0422\u0430\u043a\u0436\u0435",id:"also",level:2}];function d(e){const t={a:"a",h1:"h1",h2:"h2",header:"header",li:"li",p:"p",strong:"strong",ul:"ul",...(0,o.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(t.header,{children:(0,r.jsx)(t.h1,{id:"\u0430\u0441\u043f\u0435\u043a\u0442\u044b-\u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438",children:"\u0410\u0441\u043f\u0435\u043a\u0442\u044b \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438"})}),"\n",(0,r.jsx)(t.h2,{id:"summary",children:"\u0427\u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0432 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u043c \u0441\u0447\u0435\u0442\u0435?"}),"\n",(0,r.jsx)(t.p,{children:"\u0421\u043c. \u043f\u0435\u0440\u0432\u044b\u0435 5 \u043c\u0438\u043d\u0443\u0442:"}),"\n",(0,r.jsx)("iframe",{className:"youtube",src:"https://www.youtube.com/embed/TFA6zRO_Cl0?start=2110",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowfullscreen:!0}),"\n",(0,r.jsx)(t.h2,{id:"also",children:"\u0422\u0430\u043a\u0436\u0435"}),"\n",(0,r.jsxs)(t.p,{children:[(0,r.jsx)(t.strong,{children:"\u041f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0430"}),":"]}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsx)(t.li,{children:(0,r.jsx)(t.a,{href:"/docs/get-started/overview#advantages",children:"Overview"})}),"\n",(0,r.jsx)(t.li,{children:"CodeReview"}),"\n",(0,r.jsx)(t.li,{children:"Onboarding"}),"\n"]}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"\u041d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043a\u0438:"})}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsx)(t.li,{children:"\u041c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u0430\u044f \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u044c"}),"\n",(0,r.jsx)(t.li,{children:"\u0412\u044b\u0441\u043e\u043a\u0438\u0439 \u043f\u043e\u0440\u043e\u0433 \u0432\u0445\u043e\u0434\u0430"}),"\n",(0,r.jsx)(t.li,{children:'"Layers hell"'}),"\n",(0,r.jsx)(t.li,{children:"\u0422\u0438\u043f\u0438\u0447\u043d\u044b\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b feature-based \u043f\u043e\u0434\u0445\u043e\u0434\u0430"}),"\n"]})]})}function u(e={}){const{wrapper:t}={...(0,o.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(d,{...e})}):d(e)}},1100:(e,t,n)=>{n.d(t,{R:()=>s,x:()=>a});var r=n(758);const o={},i=r.createContext(o);function s(e){const t=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:s(e.components),r.createElement(i.Provider,{value:t},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunk_feature_sliced_documentation=self.webpackChunk_feature_sliced_documentation||[]).push([[6877],{9415:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>s,default:()=>u,frontMatter:()=>i,metadata:()=>a,toc:()=>l});var r=n(6070),o=n(1100);const i={sidebar_position:1},s="\u0410\u0441\u043f\u0435\u043a\u0442\u044b \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438",a={id:"about/promote/integration",title:"\u0410\u0441\u043f\u0435\u043a\u0442\u044b \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438",description:"\u0427\u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0432 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u043c \u0441\u0447\u0435\u0442\u0435?",source:"@site/i18n/ru/docusaurus-plugin-content-docs/current/about/promote/integration.mdx",sourceDirName:"about/promote",slug:"/about/promote/integration",permalink:"/ru/docs/about/promote/integration",draft:!1,unlisted:!1,editUrl:"https://github.com/feature-sliced/documentation/edit/master/i18n/ru/docusaurus-plugin-content-docs/current/about/promote/integration.mdx",tags:[],version:"current",lastUpdatedAt:1728325386e3,sidebarPosition:1,frontMatter:{sidebar_position:1},sidebar:"aboutSidebar",previous:{title:"\u0410\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u0438",permalink:"/ru/docs/about/understanding/abstractions"},next:{title:"\u0427\u0430\u0441\u0442\u0438\u0447\u043d\u043e\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435",permalink:"/ru/docs/about/promote/partial-application"}},c={},l=[{value:"\u0427\u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0432 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u043c \u0441\u0447\u0435\u0442\u0435?",id:"summary",level:2},{value:"\u0422\u0430\u043a\u0436\u0435",id:"also",level:2}];function d(e){const t={a:"a",h1:"h1",h2:"h2",header:"header",li:"li",p:"p",strong:"strong",ul:"ul",...(0,o.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(t.header,{children:(0,r.jsx)(t.h1,{id:"\u0430\u0441\u043f\u0435\u043a\u0442\u044b-\u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438",children:"\u0410\u0441\u043f\u0435\u043a\u0442\u044b \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438"})}),"\n",(0,r.jsx)(t.h2,{id:"summary",children:"\u0427\u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0432 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u043c \u0441\u0447\u0435\u0442\u0435?"}),"\n",(0,r.jsx)(t.p,{children:"\u0421\u043c. \u043f\u0435\u0440\u0432\u044b\u0435 5 \u043c\u0438\u043d\u0443\u0442:"}),"\n",(0,r.jsx)("iframe",{className:"youtube",src:"https://www.youtube.com/embed/TFA6zRO_Cl0?start=2110",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowfullscreen:!0}),"\n",(0,r.jsx)(t.h2,{id:"also",children:"\u0422\u0430\u043a\u0436\u0435"}),"\n",(0,r.jsxs)(t.p,{children:[(0,r.jsx)(t.strong,{children:"\u041f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0430"}),":"]}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsx)(t.li,{children:(0,r.jsx)(t.a,{href:"/docs/get-started/overview#advantages",children:"Overview"})}),"\n",(0,r.jsx)(t.li,{children:"CodeReview"}),"\n",(0,r.jsx)(t.li,{children:"Onboarding"}),"\n"]}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.strong,{children:"\u041d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043a\u0438:"})}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsx)(t.li,{children:"\u041c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u0430\u044f \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u044c"}),"\n",(0,r.jsx)(t.li,{children:"\u0412\u044b\u0441\u043e\u043a\u0438\u0439 \u043f\u043e\u0440\u043e\u0433 \u0432\u0445\u043e\u0434\u0430"}),"\n",(0,r.jsx)(t.li,{children:'"Layers hell"'}),"\n",(0,r.jsx)(t.li,{children:"\u0422\u0438\u043f\u0438\u0447\u043d\u044b\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b feature-based \u043f\u043e\u0434\u0445\u043e\u0434\u0430"}),"\n"]})]})}function u(e={}){const{wrapper:t}={...(0,o.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(d,{...e})}):d(e)}},1100:(e,t,n)=>{n.d(t,{R:()=>s,x:()=>a});var r=n(758);const o={},i=r.createContext(o);function s(e){const t=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:s(e.components),r.createElement(i.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/ru/assets/js/1d3222b5.e2418e16.js b/ru/assets/js/1d3222b5.1f850dda.js similarity index 98% rename from ru/assets/js/1d3222b5.e2418e16.js rename to ru/assets/js/1d3222b5.1f850dda.js index 0730985db0..bb02fa4a12 100644 --- a/ru/assets/js/1d3222b5.e2418e16.js +++ b/ru/assets/js/1d3222b5.1f850dda.js @@ -1 +1 @@ -"use strict";(self.webpackChunk_feature_sliced_documentation=self.webpackChunk_feature_sliced_documentation||[]).push([[9316],{1928:(e,t,i)=>{i.d(t,{Ay:()=>a,RM:()=>d});var n=i(6070),s=i(1100),r=(i(758),i(6783)),c=i(7765);const o=e=>{let{ticket:t}=e;const i=`https://github.com/feature-sliced/documentation/issues/${t}`;return(0,n.jsxs)("div",{children:[(0,n.jsx)("p",{children:(0,c.T)({id:"shared.wip.title"})}),(0,n.jsx)("p",{children:(0,c.T)({id:"shared.wip.subtitle"})}),(0,n.jsxs)("ul",{children:[(0,n.jsxs)("li",{children:[(0,c.T)({id:"shared.wip.var.feedback.base"}),(0,n.jsx)(r.A,{to:i,children:(0,c.T)({id:"shared.wip.var.feedback.link"})})]}),(0,n.jsxs)("li",{children:[(0,c.T)({id:"shared.wip.var.material.base"}),(0,n.jsx)(r.A,{to:"https://t.me/feature_sliced",children:(0,c.T)({id:"shared.wip.var.material.link"})})]}),(0,n.jsxs)("li",{children:[(0,c.T)({id:"shared.wip.var.contribute.base"}),(0,n.jsx)(r.A,{to:"https://github.com/feature-sliced/documentation/blob/master/CONTRIBUTING.md",children:(0,c.T)({id:"shared.wip.var.contribute.link"})})]})]}),(0,n.jsx)("br",{}),(0,n.jsx)("p",{children:(0,n.jsx)("i",{children:"\ud83c\udf70 Stay tuned!"})})]})},d=[];function l(e){const t={admonition:"admonition",...(0,s.R)(),...e.components};return(0,n.jsx)(t.admonition,{title:"WIP",type:"caution",children:(0,n.jsx)(o,{ticket:e.ticket})})}function a(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(l,{...e})}):l(e)}},5002:(e,t,i)=>{i.r(t),i.d(t,{assets:()=>l,contentTitle:()=>o,default:()=>h,frontMatter:()=>c,metadata:()=>d,toc:()=>a});var n=i(6070),s=i(1100),r=i(1928);const c={sidebar_position:2,sidebar_class_name:"sidebar-item--wip"},o="Decouple entities",d={id:"reference/isolation/decouple-entities",title:"Decouple entities",description:"\u041f\u0440\u043e \u043a\u0440\u043e\u0441\u0441-\u0438\u043c\u043f\u043e\u0440\u0442\u044b \u0442\u0438\u043f\u043e\u0432, \u0430\u0434\u0430\u043f\u0442\u0435\u0440\u044b \u0438 \u043f\u0440\u043e \u0442\u043e - \u043a\u0430\u043a \u044f\u0432\u043d\u043e \u0432\u044b\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c \u0441\u0432\u044f\u0437\u0438 \u043c\u0435\u0436\u0434\u0443 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044f\u043c\u0438",source:"@site/i18n/ru/docusaurus-plugin-content-docs/current/reference/isolation/decouple-entities.mdx",sourceDirName:"reference/isolation",slug:"/reference/isolation/decouple-entities",permalink:"/ru/docs/reference/isolation/decouple-entities",draft:!1,unlisted:!1,editUrl:"https://github.com/feature-sliced/documentation/edit/master/i18n/ru/docusaurus-plugin-content-docs/current/reference/isolation/decouple-entities.mdx",tags:[],version:"current",lastUpdatedAt:1727607766e3,sidebarPosition:2,frontMatter:{sidebar_position:2,sidebar_class_name:"sidebar-item--wip"},sidebar:"referenceSidebar",previous:{title:"Low Coupling & High Cohesion",permalink:"/ru/docs/reference/isolation/coupling-cohesion"}},l={},a=[...r.RM,{value:"\u0421\u043c. \u0442\u0430\u043a\u0436\u0435",id:"see-also",level:2}];function u(e){const t={a:"a",blockquote:"blockquote",h1:"h1",h2:"h2",header:"header",li:"li",p:"p",ul:"ul",...(0,s.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.header,{children:(0,n.jsx)(t.h1,{id:"decouple-entities",children:"Decouple entities"})}),"\n",(0,n.jsx)(r.Ay,{ticket:"202"}),"\n",(0,n.jsxs)(t.blockquote,{children:["\n",(0,n.jsx)(t.p,{children:"\u041f\u0440\u043e \u043a\u0440\u043e\u0441\u0441-\u0438\u043c\u043f\u043e\u0440\u0442\u044b \u0442\u0438\u043f\u043e\u0432, \u0430\u0434\u0430\u043f\u0442\u0435\u0440\u044b \u0438 \u043f\u0440\u043e \u0442\u043e - \u043a\u0430\u043a \u044f\u0432\u043d\u043e \u0432\u044b\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c \u0441\u0432\u044f\u0437\u0438 \u043c\u0435\u0436\u0434\u0443 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044f\u043c\u0438"}),"\n"]}),"\n",(0,n.jsxs)(t.blockquote,{children:["\n",(0,n.jsx)(t.p,{children:"\u0422\u0430\u043a\u0436\u0435 \u043f\u0440\u043e \u043c\u0438\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0435 absolutely-decoupled entities"}),"\n"]}),"\n",(0,n.jsx)(t.h2,{id:"see-also",children:"\u0421\u043c. \u0442\u0430\u043a\u0436\u0435"}),"\n",(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsx)(t.li,{children:(0,n.jsx)(t.a,{href:"https://t.me/feature_sliced/3633",children:"(\u0422\u0440\u0435\u0434) \u041f\u0430\u043c\u044f\u0442\u043a\u0430 \u043f\u0440\u043e \u0434\u0435\u043a\u043e\u043c\u043f\u043e\u0437\u0438\u0446\u0438\u044e \u043f\u043e \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044f\u043c \u0438 \u0432\u044b\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u043d\u0438\u0435 \u044f\u0432\u043d\u044b\u0445 \u0441\u0432\u044f\u0437\u0435\u0439 \u043c\u0435\u0436\u0434\u0443 \u043d\u0438\u043c\u0438"})}),"\n",(0,n.jsx)(t.li,{children:(0,n.jsx)(t.a,{href:"https://t.me/feature_sliced/3316",children:'(\u0422\u0440\u0435\u0434) \u041f\u0440\u0438\u043c\u0435\u0440 \u0434\u0435\u043a\u043e\u043c\u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u0434\u043b\u044f "\u0441\u0432\u044f\u0437\u043d\u044b\u0445 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0435\u0439" (users/pets/friends)'})}),"\n",(0,n.jsx)(t.li,{children:(0,n.jsx)(t.a,{href:"https://t.me/feature_sliced/4276",children:"(\u0422\u0440\u0435\u0434) \u041f\u0440\u043e \u043a\u0440\u043e\u0441\u0441-\u0438\u043c\u043f\u043e\u0440\u0442\u044b \u0442\u0438\u043f\u043e\u0432/\u0430\u0434\u0430\u043f\u0442\u0435\u0440\u043e\u0432 \u0432 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044f\u0445"})}),"\n",(0,n.jsx)(t.li,{children:(0,n.jsx)(t.a,{href:"https://t.me/feature_sliced/4521",children:"(\u0422\u0440\u0435\u0434) \u041f\u0440\u043e \u0433\u0440\u0430\u043d\u0438\u0446\u044b \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0435\u0439 \u0438 \u0444\u0438\u0447"})}),"\n"]})]})}function h(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(u,{...e})}):u(e)}},1100:(e,t,i)=>{i.d(t,{R:()=>c,x:()=>o});var n=i(758);const s={},r=n.createContext(s);function c(e){const t=n.useContext(r);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function o(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:c(e.components),n.createElement(r.Provider,{value:t},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunk_feature_sliced_documentation=self.webpackChunk_feature_sliced_documentation||[]).push([[9316],{1928:(e,t,i)=>{i.d(t,{Ay:()=>a,RM:()=>d});var n=i(6070),s=i(1100),r=(i(758),i(6783)),c=i(7765);const o=e=>{let{ticket:t}=e;const i=`https://github.com/feature-sliced/documentation/issues/${t}`;return(0,n.jsxs)("div",{children:[(0,n.jsx)("p",{children:(0,c.T)({id:"shared.wip.title"})}),(0,n.jsx)("p",{children:(0,c.T)({id:"shared.wip.subtitle"})}),(0,n.jsxs)("ul",{children:[(0,n.jsxs)("li",{children:[(0,c.T)({id:"shared.wip.var.feedback.base"}),(0,n.jsx)(r.A,{to:i,children:(0,c.T)({id:"shared.wip.var.feedback.link"})})]}),(0,n.jsxs)("li",{children:[(0,c.T)({id:"shared.wip.var.material.base"}),(0,n.jsx)(r.A,{to:"https://t.me/feature_sliced",children:(0,c.T)({id:"shared.wip.var.material.link"})})]}),(0,n.jsxs)("li",{children:[(0,c.T)({id:"shared.wip.var.contribute.base"}),(0,n.jsx)(r.A,{to:"https://github.com/feature-sliced/documentation/blob/master/CONTRIBUTING.md",children:(0,c.T)({id:"shared.wip.var.contribute.link"})})]})]}),(0,n.jsx)("br",{}),(0,n.jsx)("p",{children:(0,n.jsx)("i",{children:"\ud83c\udf70 Stay tuned!"})})]})},d=[];function l(e){const t={admonition:"admonition",...(0,s.R)(),...e.components};return(0,n.jsx)(t.admonition,{title:"WIP",type:"caution",children:(0,n.jsx)(o,{ticket:e.ticket})})}function a(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(l,{...e})}):l(e)}},5002:(e,t,i)=>{i.r(t),i.d(t,{assets:()=>l,contentTitle:()=>o,default:()=>h,frontMatter:()=>c,metadata:()=>d,toc:()=>a});var n=i(6070),s=i(1100),r=i(1928);const c={sidebar_position:2,sidebar_class_name:"sidebar-item--wip"},o="Decouple entities",d={id:"reference/isolation/decouple-entities",title:"Decouple entities",description:"\u041f\u0440\u043e \u043a\u0440\u043e\u0441\u0441-\u0438\u043c\u043f\u043e\u0440\u0442\u044b \u0442\u0438\u043f\u043e\u0432, \u0430\u0434\u0430\u043f\u0442\u0435\u0440\u044b \u0438 \u043f\u0440\u043e \u0442\u043e - \u043a\u0430\u043a \u044f\u0432\u043d\u043e \u0432\u044b\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c \u0441\u0432\u044f\u0437\u0438 \u043c\u0435\u0436\u0434\u0443 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044f\u043c\u0438",source:"@site/i18n/ru/docusaurus-plugin-content-docs/current/reference/isolation/decouple-entities.mdx",sourceDirName:"reference/isolation",slug:"/reference/isolation/decouple-entities",permalink:"/ru/docs/reference/isolation/decouple-entities",draft:!1,unlisted:!1,editUrl:"https://github.com/feature-sliced/documentation/edit/master/i18n/ru/docusaurus-plugin-content-docs/current/reference/isolation/decouple-entities.mdx",tags:[],version:"current",lastUpdatedAt:1728325386e3,sidebarPosition:2,frontMatter:{sidebar_position:2,sidebar_class_name:"sidebar-item--wip"},sidebar:"referenceSidebar",previous:{title:"Low Coupling & High Cohesion",permalink:"/ru/docs/reference/isolation/coupling-cohesion"}},l={},a=[...r.RM,{value:"\u0421\u043c. \u0442\u0430\u043a\u0436\u0435",id:"see-also",level:2}];function u(e){const t={a:"a",blockquote:"blockquote",h1:"h1",h2:"h2",header:"header",li:"li",p:"p",ul:"ul",...(0,s.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.header,{children:(0,n.jsx)(t.h1,{id:"decouple-entities",children:"Decouple entities"})}),"\n",(0,n.jsx)(r.Ay,{ticket:"202"}),"\n",(0,n.jsxs)(t.blockquote,{children:["\n",(0,n.jsx)(t.p,{children:"\u041f\u0440\u043e \u043a\u0440\u043e\u0441\u0441-\u0438\u043c\u043f\u043e\u0440\u0442\u044b \u0442\u0438\u043f\u043e\u0432, \u0430\u0434\u0430\u043f\u0442\u0435\u0440\u044b \u0438 \u043f\u0440\u043e \u0442\u043e - \u043a\u0430\u043a \u044f\u0432\u043d\u043e \u0432\u044b\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c \u0441\u0432\u044f\u0437\u0438 \u043c\u0435\u0436\u0434\u0443 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044f\u043c\u0438"}),"\n"]}),"\n",(0,n.jsxs)(t.blockquote,{children:["\n",(0,n.jsx)(t.p,{children:"\u0422\u0430\u043a\u0436\u0435 \u043f\u0440\u043e \u043c\u0438\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0435 absolutely-decoupled entities"}),"\n"]}),"\n",(0,n.jsx)(t.h2,{id:"see-also",children:"\u0421\u043c. \u0442\u0430\u043a\u0436\u0435"}),"\n",(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsx)(t.li,{children:(0,n.jsx)(t.a,{href:"https://t.me/feature_sliced/3633",children:"(\u0422\u0440\u0435\u0434) \u041f\u0430\u043c\u044f\u0442\u043a\u0430 \u043f\u0440\u043e \u0434\u0435\u043a\u043e\u043c\u043f\u043e\u0437\u0438\u0446\u0438\u044e \u043f\u043e \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044f\u043c \u0438 \u0432\u044b\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u043d\u0438\u0435 \u044f\u0432\u043d\u044b\u0445 \u0441\u0432\u044f\u0437\u0435\u0439 \u043c\u0435\u0436\u0434\u0443 \u043d\u0438\u043c\u0438"})}),"\n",(0,n.jsx)(t.li,{children:(0,n.jsx)(t.a,{href:"https://t.me/feature_sliced/3316",children:'(\u0422\u0440\u0435\u0434) \u041f\u0440\u0438\u043c\u0435\u0440 \u0434\u0435\u043a\u043e\u043c\u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u0434\u043b\u044f "\u0441\u0432\u044f\u0437\u043d\u044b\u0445 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0435\u0439" (users/pets/friends)'})}),"\n",(0,n.jsx)(t.li,{children:(0,n.jsx)(t.a,{href:"https://t.me/feature_sliced/4276",children:"(\u0422\u0440\u0435\u0434) \u041f\u0440\u043e \u043a\u0440\u043e\u0441\u0441-\u0438\u043c\u043f\u043e\u0440\u0442\u044b \u0442\u0438\u043f\u043e\u0432/\u0430\u0434\u0430\u043f\u0442\u0435\u0440\u043e\u0432 \u0432 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044f\u0445"})}),"\n",(0,n.jsx)(t.li,{children:(0,n.jsx)(t.a,{href:"https://t.me/feature_sliced/4521",children:"(\u0422\u0440\u0435\u0434) \u041f\u0440\u043e \u0433\u0440\u0430\u043d\u0438\u0446\u044b \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0435\u0439 \u0438 \u0444\u0438\u0447"})}),"\n"]})]})}function h(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(u,{...e})}):u(e)}},1100:(e,t,i)=>{i.d(t,{R:()=>c,x:()=>o});var n=i(758);const s={},r=n.createContext(s);function c(e){const t=n.useContext(r);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function o(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:c(e.components),n.createElement(r.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/ru/assets/js/20c5a0f6.dbcf86c4.js b/ru/assets/js/20c5a0f6.4d7a1a0b.js similarity index 98% rename from ru/assets/js/20c5a0f6.dbcf86c4.js rename to ru/assets/js/20c5a0f6.4d7a1a0b.js index 5b03fb9d2c..aac5ee619f 100644 --- a/ru/assets/js/20c5a0f6.dbcf86c4.js +++ b/ru/assets/js/20c5a0f6.4d7a1a0b.js @@ -1 +1 @@ -"use strict";(self.webpackChunk_feature_sliced_documentation=self.webpackChunk_feature_sliced_documentation||[]).push([[2538],{1928:(e,t,i)=>{i.d(t,{Ay:()=>l,RM:()=>a});var s=i(6070),n=i(1100),r=(i(758),i(6783)),d=i(7765);const c=e=>{let{ticket:t}=e;const i=`https://github.com/feature-sliced/documentation/issues/${t}`;return(0,s.jsxs)("div",{children:[(0,s.jsx)("p",{children:(0,d.T)({id:"shared.wip.title"})}),(0,s.jsx)("p",{children:(0,d.T)({id:"shared.wip.subtitle"})}),(0,s.jsxs)("ul",{children:[(0,s.jsxs)("li",{children:[(0,d.T)({id:"shared.wip.var.feedback.base"}),(0,s.jsx)(r.A,{to:i,children:(0,d.T)({id:"shared.wip.var.feedback.link"})})]}),(0,s.jsxs)("li",{children:[(0,d.T)({id:"shared.wip.var.material.base"}),(0,s.jsx)(r.A,{to:"https://t.me/feature_sliced",children:(0,d.T)({id:"shared.wip.var.material.link"})})]}),(0,s.jsxs)("li",{children:[(0,d.T)({id:"shared.wip.var.contribute.base"}),(0,s.jsx)(r.A,{to:"https://github.com/feature-sliced/documentation/blob/master/CONTRIBUTING.md",children:(0,d.T)({id:"shared.wip.var.contribute.link"})})]})]}),(0,s.jsx)("br",{}),(0,s.jsx)("p",{children:(0,s.jsx)("i",{children:"\ud83c\udf70 Stay tuned!"})})]})},a=[];function o(e){const t={admonition:"admonition",...(0,n.R)(),...e.components};return(0,s.jsx)(t.admonition,{title:"WIP",type:"caution",children:(0,s.jsx)(c,{ticket:e.ticket})})}function l(e={}){const{wrapper:t}={...(0,n.R)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(o,{...e})}):o(e)}},166:(e,t,i)=>{i.r(t),i.d(t,{assets:()=>o,contentTitle:()=>c,default:()=>h,frontMatter:()=>d,metadata:()=>a,toc:()=>l});var s=i(6070),n=i(1100),r=i(1928);const d={sidebar_position:6,sidebar_class_name:"sidebar-item--wip",unlisted:!0},c="i18n",a={id:"guides/examples/i18n",title:"i18n",description:"\u041a\u0443\u0434\u0430 \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c? \u041a\u0430\u043a \u0441 \u044d\u0442\u0438\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c?",source:"@site/i18n/ru/docusaurus-plugin-content-docs/current/guides/examples/i18n.mdx",sourceDirName:"guides/examples",slug:"/guides/examples/i18n",permalink:"/ru/docs/guides/examples/i18n",draft:!1,unlisted:!0,editUrl:"https://github.com/feature-sliced/documentation/edit/master/i18n/ru/docusaurus-plugin-content-docs/current/guides/examples/i18n.mdx",tags:[],version:"current",lastUpdatedAt:1727607766e3,sidebarPosition:6,frontMatter:{sidebar_position:6,sidebar_class_name:"sidebar-item--wip",unlisted:!0},sidebar:"guidesSidebar"},o={},l=[...r.RM,{value:"\u041a\u0443\u0434\u0430 \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c? \u041a\u0430\u043a \u0441 \u044d\u0442\u0438\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c?",id:"where-to-place-it-how-to-work-with-this",level:2}];function u(e){const t={a:"a",h1:"h1",h2:"h2",header:"header",li:"li",ul:"ul",...(0,n.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(t.header,{children:(0,s.jsx)(t.h1,{id:"i18n",children:"i18n"})}),"\n",(0,s.jsx)(r.Ay,{ticket:"171"}),"\n",(0,s.jsx)(t.h2,{id:"where-to-place-it-how-to-work-with-this",children:"\u041a\u0443\u0434\u0430 \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c? \u041a\u0430\u043a \u0441 \u044d\u0442\u0438\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c?"}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsx)(t.li,{children:(0,s.jsx)(t.a,{href:"https://t.me/feature_sliced/4425",children:"https://t.me/feature_sliced/4425"})}),"\n",(0,s.jsx)(t.li,{children:(0,s.jsx)(t.a,{href:"https://t.me/feature_sliced/2325",children:"https://t.me/feature_sliced/2325"})}),"\n",(0,s.jsx)(t.li,{children:(0,s.jsx)(t.a,{href:"https://t.me/feature_sliced/1867",children:"https://t.me/feature_sliced/1867"})}),"\n"]})]})}function h(e={}){const{wrapper:t}={...(0,n.R)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(u,{...e})}):u(e)}},1100:(e,t,i)=>{i.d(t,{R:()=>d,x:()=>c});var s=i(758);const n={},r=s.createContext(n);function d(e){const t=s.useContext(r);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function c(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:d(e.components),s.createElement(r.Provider,{value:t},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunk_feature_sliced_documentation=self.webpackChunk_feature_sliced_documentation||[]).push([[2538],{1928:(e,t,i)=>{i.d(t,{Ay:()=>l,RM:()=>a});var s=i(6070),n=i(1100),r=(i(758),i(6783)),d=i(7765);const c=e=>{let{ticket:t}=e;const i=`https://github.com/feature-sliced/documentation/issues/${t}`;return(0,s.jsxs)("div",{children:[(0,s.jsx)("p",{children:(0,d.T)({id:"shared.wip.title"})}),(0,s.jsx)("p",{children:(0,d.T)({id:"shared.wip.subtitle"})}),(0,s.jsxs)("ul",{children:[(0,s.jsxs)("li",{children:[(0,d.T)({id:"shared.wip.var.feedback.base"}),(0,s.jsx)(r.A,{to:i,children:(0,d.T)({id:"shared.wip.var.feedback.link"})})]}),(0,s.jsxs)("li",{children:[(0,d.T)({id:"shared.wip.var.material.base"}),(0,s.jsx)(r.A,{to:"https://t.me/feature_sliced",children:(0,d.T)({id:"shared.wip.var.material.link"})})]}),(0,s.jsxs)("li",{children:[(0,d.T)({id:"shared.wip.var.contribute.base"}),(0,s.jsx)(r.A,{to:"https://github.com/feature-sliced/documentation/blob/master/CONTRIBUTING.md",children:(0,d.T)({id:"shared.wip.var.contribute.link"})})]})]}),(0,s.jsx)("br",{}),(0,s.jsx)("p",{children:(0,s.jsx)("i",{children:"\ud83c\udf70 Stay tuned!"})})]})},a=[];function o(e){const t={admonition:"admonition",...(0,n.R)(),...e.components};return(0,s.jsx)(t.admonition,{title:"WIP",type:"caution",children:(0,s.jsx)(c,{ticket:e.ticket})})}function l(e={}){const{wrapper:t}={...(0,n.R)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(o,{...e})}):o(e)}},166:(e,t,i)=>{i.r(t),i.d(t,{assets:()=>o,contentTitle:()=>c,default:()=>h,frontMatter:()=>d,metadata:()=>a,toc:()=>l});var s=i(6070),n=i(1100),r=i(1928);const d={sidebar_position:6,sidebar_class_name:"sidebar-item--wip",unlisted:!0},c="i18n",a={id:"guides/examples/i18n",title:"i18n",description:"\u041a\u0443\u0434\u0430 \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c? \u041a\u0430\u043a \u0441 \u044d\u0442\u0438\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c?",source:"@site/i18n/ru/docusaurus-plugin-content-docs/current/guides/examples/i18n.mdx",sourceDirName:"guides/examples",slug:"/guides/examples/i18n",permalink:"/ru/docs/guides/examples/i18n",draft:!1,unlisted:!0,editUrl:"https://github.com/feature-sliced/documentation/edit/master/i18n/ru/docusaurus-plugin-content-docs/current/guides/examples/i18n.mdx",tags:[],version:"current",lastUpdatedAt:1728325386e3,sidebarPosition:6,frontMatter:{sidebar_position:6,sidebar_class_name:"sidebar-item--wip",unlisted:!0},sidebar:"guidesSidebar"},o={},l=[...r.RM,{value:"\u041a\u0443\u0434\u0430 \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c? \u041a\u0430\u043a \u0441 \u044d\u0442\u0438\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c?",id:"where-to-place-it-how-to-work-with-this",level:2}];function u(e){const t={a:"a",h1:"h1",h2:"h2",header:"header",li:"li",ul:"ul",...(0,n.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(t.header,{children:(0,s.jsx)(t.h1,{id:"i18n",children:"i18n"})}),"\n",(0,s.jsx)(r.Ay,{ticket:"171"}),"\n",(0,s.jsx)(t.h2,{id:"where-to-place-it-how-to-work-with-this",children:"\u041a\u0443\u0434\u0430 \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c? \u041a\u0430\u043a \u0441 \u044d\u0442\u0438\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c?"}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsx)(t.li,{children:(0,s.jsx)(t.a,{href:"https://t.me/feature_sliced/4425",children:"https://t.me/feature_sliced/4425"})}),"\n",(0,s.jsx)(t.li,{children:(0,s.jsx)(t.a,{href:"https://t.me/feature_sliced/2325",children:"https://t.me/feature_sliced/2325"})}),"\n",(0,s.jsx)(t.li,{children:(0,s.jsx)(t.a,{href:"https://t.me/feature_sliced/1867",children:"https://t.me/feature_sliced/1867"})}),"\n"]})]})}function h(e={}){const{wrapper:t}={...(0,n.R)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(u,{...e})}):u(e)}},1100:(e,t,i)=>{i.d(t,{R:()=>d,x:()=>c});var s=i(758);const n={},r=s.createContext(n);function d(e){const t=s.useContext(r);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function c(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:d(e.components),s.createElement(r.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/ru/assets/js/2bd07bfd.af57590b.js b/ru/assets/js/2bd07bfd.29f3f253.js similarity index 98% rename from ru/assets/js/2bd07bfd.af57590b.js rename to ru/assets/js/2bd07bfd.29f3f253.js index d8a217794f..c43d00d5fb 100644 --- a/ru/assets/js/2bd07bfd.af57590b.js +++ b/ru/assets/js/2bd07bfd.29f3f253.js @@ -1,2 +1,2 @@ -/*! For license information please see 2bd07bfd.af57590b.js.LICENSE.txt */ -"use strict";(self.webpackChunk_feature_sliced_documentation=self.webpackChunk_feature_sliced_documentation||[]).push([[3902],{7946:(e,t,s)=>{s.d(t,{Ay:()=>o,RM:()=>i});var n=s(6070),c=s(1100),a=s(5988);const i=[];function r(e){return(0,n.jsx)(a.A,{...e})}function o(e={}){const{wrapper:t}={...(0,c.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(r,{...e})}):r(e)}},2612:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>A,contentTitle:()=>j,default:()=>M,frontMatter:()=>g,metadata:()=>_,toc:()=>b});var n=s(6070),c=s(1100),a=s(7946),i=s(991),r=s(758);const o={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"defs",attrs:{},children:[{tag:"style",attrs:{}}]},{tag:"path",attrs:{d:"M759 335c0-137-111-248-248-248S263 198 263 335c0 82.8 40.6 156.2 103 201.2-.4.2-.7.3-.9.4-44.7 18.9-84.8 46-119.3 80.6a373.42 373.42 0 00-80.4 119.5A373.6 373.6 0 00136 874.8a8 8 0 008 8.2h59.9c4.3 0 7.9-3.5 8-7.8 2-77.2 32.9-149.5 87.6-204.3C356 614.2 431 583 511 583c137 0 248-111 248-248zM511 507c-95 0-172-77-172-172s77-172 172-172 172 77 172 172-77 172-172 172zm105 221h264c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H703.5l47.2-60.1a8.1 8.1 0 001.7-4.9c0-4.4-3.6-8-8-8h-72.6c-4.9 0-9.5 2.3-12.6 6.1l-68.5 87.1c-4.4 5.6-6.8 12.6-6.8 19.8.1 17.7 14.4 32 32.1 32zm240 64H592c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h176.5l-47.2 60.1a8.1 8.1 0 00-1.7 4.9c0 4.4 3.6 8 8 8h72.6c4.9 0 9.5-2.3 12.6-6.1l68.5-87.1c4.4-5.6 6.8-12.6 6.8-19.8-.1-17.7-14.4-32-32.1-32z"}}]},name:"user-switch",theme:"outlined"};var d=s(9820),l=function(e,t){return r.createElement(d.A,(0,i.A)({},e,{ref:t,icon:o}))};const u=r.forwardRef(l);const h={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M920 416H616c-4.4 0-8 3.6-8 8v112c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-56h60v320h-46c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h164c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8h-46V480h60v56c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V424c0-4.4-3.6-8-8-8zM656 296V168c0-4.4-3.6-8-8-8H104c-4.4 0-8 3.6-8 8v128c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-64h168v560h-92c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h264c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-92V232h168v64c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8z"}}]},name:"font-size",theme:"outlined"};var m=function(e,t){return r.createElement(d.A,(0,i.A)({},e,{ref:t,icon:h}))};const p=r.forwardRef(m);const x={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-696 72h136v656H184V184zm656 656H384V384h456v456zM384 320V184h456v136H384z"}}]},name:"layout",theme:"outlined"};var f=function(e,t){return r.createElement(d.A,(0,i.A)({},e,{ref:t,icon:x}))};const v=r.forwardRef(f),g={hide_table_of_contents:!0},j="\u041f\u0440\u0438\u043c\u0435\u0440\u044b",_={id:"guides/examples/index",title:"\u041f\u0440\u0438\u043c\u0435\u0440\u044b",description:"\u041d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u043f\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044e \u043c\u0435\u0442\u043e\u0434\u043e\u043b\u043e\u0433\u0438\u0438",source:"@site/i18n/ru/docusaurus-plugin-content-docs/current/guides/examples/index.mdx",sourceDirName:"guides/examples",slug:"/guides/examples/",permalink:"/ru/docs/guides/examples/",draft:!1,unlisted:!1,editUrl:"https://github.com/feature-sliced/documentation/edit/master/i18n/ru/docusaurus-plugin-content-docs/current/guides/examples/index.mdx",tags:[],version:"current",lastUpdatedAt:1727607766e3,frontMatter:{hide_table_of_contents:!0},sidebar:"guidesSidebar",previous:{title:"\ud83c\udfaf \u0413\u0430\u0439\u0434\u044b",permalink:"/ru/docs/guides/"},next:{title:"\u0410\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044f",permalink:"/ru/docs/guides/examples/auth"}},A={},b=[{value:"\u0413\u043b\u0430\u0432\u043d\u043e\u0435",id:"main",level:2},...a.RM,...a.RM,...a.RM];function y(e){const t={h1:"h1",h2:"h2",header:"header",p:"p",...(0,c.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.header,{children:(0,n.jsx)(t.h1,{id:"\u043f\u0440\u0438\u043c\u0435\u0440\u044b",children:"\u041f\u0440\u0438\u043c\u0435\u0440\u044b"})}),"\n",(0,n.jsx)("p",{class:"summary",children:(0,n.jsx)(t.p,{children:"\u041d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u043f\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044e \u043c\u0435\u0442\u043e\u0434\u043e\u043b\u043e\u0433\u0438\u0438"})}),"\n",(0,n.jsx)(t.h2,{id:"main",children:"\u0413\u043b\u0430\u0432\u043d\u043e\u0435"}),"\n","\n",(0,n.jsx)(a.Ay,{title:"\u0410\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044f",description:"\u0414\u0435\u043a\u043e\u043c\u043f\u043e\u0437\u0438\u0446\u0438\u044f \u043b\u043e\u0433\u0438\u043a\u0438 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438",to:"/docs/guides/examples/auth",Icon:u,tags:["\u0424\u043e\u0440\u043c\u044b","2FA","OAuth","\u0425\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0442\u043e\u043a\u0435\u043d\u043e\u0432","\u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0442\u043e\u043a\u0435\u043d\u0430"]}),"\n",(0,n.jsx)(a.Ay,{title:"\u0422\u0438\u043f\u044b",description:"\u0413\u0434\u0435 \u0441\u0442\u043e\u0438\u0442 \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u0442\u044c \u0442\u0438\u043f\u044b? \u041a\u0430\u043a\u0438\u0445 \u0432\u0438\u0434\u043e\u0432 \u043e\u043d\u0438 \u0431\u044b\u0432\u0430\u044e\u0442 \u0432 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 FSD?",to:"/docs/guides/examples/types",Icon:p,tags:["DTO","\u041c\u0430\u043f\u043f\u0435\u0440\u044b","\u0421\u0432\u044f\u0437\u0438 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0435\u0439","\u0410\u0432\u0442\u043e-\u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f","\u0421\u0445\u0435\u043c\u044b \u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u0438"]}),"\n",(0,n.jsx)(a.Ay,{title:"\u041b\u0435\u0439\u0430\u0443\u0442\u044b \u0441\u0442\u0440\u0430\u043d\u0438\u0446",description:"\u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043a\u0435\u0439\u0441\u044b \u0441 \u043b\u0435\u0439\u0430\u0443\u0442\u0430\u043c\u0438",to:"/docs/guides/examples/page-layout",Icon:v,tags:["\u0413\u0434\u0435 \u0445\u0440\u0430\u043d\u0438\u0442\u044c","\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0432\u0438\u0434\u0436\u0435\u0442\u043e\u0432 \u0432 \u043b\u0435\u0439\u0430\u0443\u0442\u0435"]})]})}function M(e={}){const{wrapper:t}={...(0,c.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(y,{...e})}):y(e)}},5988:(e,t,s)=>{s.d(t,{Y:()=>r,A:()=>d});s(758);var n=s(3526),c=s(6783);const a={root:"root_GfON",rootDisabled:"rootDisabled_SFUB",details:"details_xxkR",detailsTags:"detailsTags_uTQx",icon:"icon_ciqP",title:"title_pSH5",description:"description__Fep",miniTheme:"miniTheme_ePfp",primaryTheme:"primaryTheme_CilO",defaultTheme:"defaultTheme_j3I8"};var i=s(6070);const r=e=>{const{title:t,description:s,to:r,Icon:d,tags:l,className:u,disabled:h,theme:m="default"}=e;return(0,i.jsxs)(c.A,{className:(0,n.A)(a.root,u,h&&a.rootDisabled,a[`${m}Theme`]),to:r,children:[(0,i.jsx)(o,{Icon:d}),(0,i.jsxs)("div",{className:a.details,children:[(0,i.jsxs)("div",{className:a.detailsMain,children:[(0,i.jsx)("span",{className:a.title,children:t}),(0,i.jsx)("p",{className:a.description,children:s})]}),l&&(0,i.jsx)("div",{className:a.detailsTags,children:l.join(" \u2022 ")})]})]})},o=e=>{let{Icon:t}=e;return t?"string"==typeof t?(0,i.jsx)("span",{className:a.icon,children:t}):(0,i.jsx)(t,{className:a.icon}):null},d=r},1100:(e,t,s)=>{s.d(t,{R:()=>i,x:()=>r});var n=s(758);const c={},a=n.createContext(c);function i(e){const t=n.useContext(a);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function r(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(c):e.components||c:i(e.components),n.createElement(a.Provider,{value:t},e.children)}}}]); \ No newline at end of file +/*! For license information please see 2bd07bfd.29f3f253.js.LICENSE.txt */ +"use strict";(self.webpackChunk_feature_sliced_documentation=self.webpackChunk_feature_sliced_documentation||[]).push([[3902],{7946:(e,t,s)=>{s.d(t,{Ay:()=>o,RM:()=>i});var n=s(6070),c=s(1100),a=s(5988);const i=[];function r(e){return(0,n.jsx)(a.A,{...e})}function o(e={}){const{wrapper:t}={...(0,c.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(r,{...e})}):r(e)}},2612:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>A,contentTitle:()=>j,default:()=>M,frontMatter:()=>g,metadata:()=>_,toc:()=>b});var n=s(6070),c=s(1100),a=s(7946),i=s(991),r=s(758);const o={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"defs",attrs:{},children:[{tag:"style",attrs:{}}]},{tag:"path",attrs:{d:"M759 335c0-137-111-248-248-248S263 198 263 335c0 82.8 40.6 156.2 103 201.2-.4.2-.7.3-.9.4-44.7 18.9-84.8 46-119.3 80.6a373.42 373.42 0 00-80.4 119.5A373.6 373.6 0 00136 874.8a8 8 0 008 8.2h59.9c4.3 0 7.9-3.5 8-7.8 2-77.2 32.9-149.5 87.6-204.3C356 614.2 431 583 511 583c137 0 248-111 248-248zM511 507c-95 0-172-77-172-172s77-172 172-172 172 77 172 172-77 172-172 172zm105 221h264c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H703.5l47.2-60.1a8.1 8.1 0 001.7-4.9c0-4.4-3.6-8-8-8h-72.6c-4.9 0-9.5 2.3-12.6 6.1l-68.5 87.1c-4.4 5.6-6.8 12.6-6.8 19.8.1 17.7 14.4 32 32.1 32zm240 64H592c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h176.5l-47.2 60.1a8.1 8.1 0 00-1.7 4.9c0 4.4 3.6 8 8 8h72.6c4.9 0 9.5-2.3 12.6-6.1l68.5-87.1c4.4-5.6 6.8-12.6 6.8-19.8-.1-17.7-14.4-32-32.1-32z"}}]},name:"user-switch",theme:"outlined"};var d=s(9820),l=function(e,t){return r.createElement(d.A,(0,i.A)({},e,{ref:t,icon:o}))};const u=r.forwardRef(l);const h={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M920 416H616c-4.4 0-8 3.6-8 8v112c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-56h60v320h-46c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h164c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8h-46V480h60v56c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V424c0-4.4-3.6-8-8-8zM656 296V168c0-4.4-3.6-8-8-8H104c-4.4 0-8 3.6-8 8v128c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8v-64h168v560h-92c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h264c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8h-92V232h168v64c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8z"}}]},name:"font-size",theme:"outlined"};var m=function(e,t){return r.createElement(d.A,(0,i.A)({},e,{ref:t,icon:h}))};const p=r.forwardRef(m);const x={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-696 72h136v656H184V184zm656 656H384V384h456v456zM384 320V184h456v136H384z"}}]},name:"layout",theme:"outlined"};var f=function(e,t){return r.createElement(d.A,(0,i.A)({},e,{ref:t,icon:x}))};const v=r.forwardRef(f),g={hide_table_of_contents:!0},j="\u041f\u0440\u0438\u043c\u0435\u0440\u044b",_={id:"guides/examples/index",title:"\u041f\u0440\u0438\u043c\u0435\u0440\u044b",description:"\u041d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u043f\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044e \u043c\u0435\u0442\u043e\u0434\u043e\u043b\u043e\u0433\u0438\u0438",source:"@site/i18n/ru/docusaurus-plugin-content-docs/current/guides/examples/index.mdx",sourceDirName:"guides/examples",slug:"/guides/examples/",permalink:"/ru/docs/guides/examples/",draft:!1,unlisted:!1,editUrl:"https://github.com/feature-sliced/documentation/edit/master/i18n/ru/docusaurus-plugin-content-docs/current/guides/examples/index.mdx",tags:[],version:"current",lastUpdatedAt:1728325386e3,frontMatter:{hide_table_of_contents:!0},sidebar:"guidesSidebar",previous:{title:"\ud83c\udfaf \u0413\u0430\u0439\u0434\u044b",permalink:"/ru/docs/guides/"},next:{title:"\u0410\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044f",permalink:"/ru/docs/guides/examples/auth"}},A={},b=[{value:"\u0413\u043b\u0430\u0432\u043d\u043e\u0435",id:"main",level:2},...a.RM,...a.RM,...a.RM];function y(e){const t={h1:"h1",h2:"h2",header:"header",p:"p",...(0,c.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.header,{children:(0,n.jsx)(t.h1,{id:"\u043f\u0440\u0438\u043c\u0435\u0440\u044b",children:"\u041f\u0440\u0438\u043c\u0435\u0440\u044b"})}),"\n",(0,n.jsx)("p",{class:"summary",children:(0,n.jsx)(t.p,{children:"\u041d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u043f\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044e \u043c\u0435\u0442\u043e\u0434\u043e\u043b\u043e\u0433\u0438\u0438"})}),"\n",(0,n.jsx)(t.h2,{id:"main",children:"\u0413\u043b\u0430\u0432\u043d\u043e\u0435"}),"\n","\n",(0,n.jsx)(a.Ay,{title:"\u0410\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044f",description:"\u0414\u0435\u043a\u043e\u043c\u043f\u043e\u0437\u0438\u0446\u0438\u044f \u043b\u043e\u0433\u0438\u043a\u0438 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438",to:"/docs/guides/examples/auth",Icon:u,tags:["\u0424\u043e\u0440\u043c\u044b","2FA","OAuth","\u0425\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0442\u043e\u043a\u0435\u043d\u043e\u0432","\u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0442\u043e\u043a\u0435\u043d\u0430"]}),"\n",(0,n.jsx)(a.Ay,{title:"\u0422\u0438\u043f\u044b",description:"\u0413\u0434\u0435 \u0441\u0442\u043e\u0438\u0442 \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u0442\u044c \u0442\u0438\u043f\u044b? \u041a\u0430\u043a\u0438\u0445 \u0432\u0438\u0434\u043e\u0432 \u043e\u043d\u0438 \u0431\u044b\u0432\u0430\u044e\u0442 \u0432 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 FSD?",to:"/docs/guides/examples/types",Icon:p,tags:["DTO","\u041c\u0430\u043f\u043f\u0435\u0440\u044b","\u0421\u0432\u044f\u0437\u0438 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0435\u0439","\u0410\u0432\u0442\u043e-\u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f","\u0421\u0445\u0435\u043c\u044b \u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u0438"]}),"\n",(0,n.jsx)(a.Ay,{title:"\u041b\u0435\u0439\u0430\u0443\u0442\u044b \u0441\u0442\u0440\u0430\u043d\u0438\u0446",description:"\u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043a\u0435\u0439\u0441\u044b \u0441 \u043b\u0435\u0439\u0430\u0443\u0442\u0430\u043c\u0438",to:"/docs/guides/examples/page-layout",Icon:v,tags:["\u0413\u0434\u0435 \u0445\u0440\u0430\u043d\u0438\u0442\u044c","\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0432\u0438\u0434\u0436\u0435\u0442\u043e\u0432 \u0432 \u043b\u0435\u0439\u0430\u0443\u0442\u0435"]})]})}function M(e={}){const{wrapper:t}={...(0,c.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(y,{...e})}):y(e)}},5988:(e,t,s)=>{s.d(t,{Y:()=>r,A:()=>d});s(758);var n=s(3526),c=s(6783);const a={root:"root_GfON",rootDisabled:"rootDisabled_SFUB",details:"details_xxkR",detailsTags:"detailsTags_uTQx",icon:"icon_ciqP",title:"title_pSH5",description:"description__Fep",miniTheme:"miniTheme_ePfp",primaryTheme:"primaryTheme_CilO",defaultTheme:"defaultTheme_j3I8"};var i=s(6070);const r=e=>{const{title:t,description:s,to:r,Icon:d,tags:l,className:u,disabled:h,theme:m="default"}=e;return(0,i.jsxs)(c.A,{className:(0,n.A)(a.root,u,h&&a.rootDisabled,a[`${m}Theme`]),to:r,children:[(0,i.jsx)(o,{Icon:d}),(0,i.jsxs)("div",{className:a.details,children:[(0,i.jsxs)("div",{className:a.detailsMain,children:[(0,i.jsx)("span",{className:a.title,children:t}),(0,i.jsx)("p",{className:a.description,children:s})]}),l&&(0,i.jsx)("div",{className:a.detailsTags,children:l.join(" \u2022 ")})]})]})},o=e=>{let{Icon:t}=e;return t?"string"==typeof t?(0,i.jsx)("span",{className:a.icon,children:t}):(0,i.jsx)(t,{className:a.icon}):null},d=r},1100:(e,t,s)=>{s.d(t,{R:()=>i,x:()=>r});var n=s(758);const c={},a=n.createContext(c);function i(e){const t=n.useContext(a);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function r(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(c):e.components||c:i(e.components),n.createElement(a.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/ru/assets/js/2bd07bfd.af57590b.js.LICENSE.txt b/ru/assets/js/2bd07bfd.29f3f253.js.LICENSE.txt similarity index 100% rename from ru/assets/js/2bd07bfd.af57590b.js.LICENSE.txt rename to ru/assets/js/2bd07bfd.29f3f253.js.LICENSE.txt diff --git a/ru/assets/js/352bcbef.dcdf5dcc.js b/ru/assets/js/352bcbef.b3926fe6.js similarity index 99% rename from ru/assets/js/352bcbef.dcdf5dcc.js rename to ru/assets/js/352bcbef.b3926fe6.js index aac6d4eb42..dc05461932 100644 --- a/ru/assets/js/352bcbef.dcdf5dcc.js +++ b/ru/assets/js/352bcbef.b3926fe6.js @@ -1 +1 @@ -"use strict";(self.webpackChunk_feature_sliced_documentation=self.webpackChunk_feature_sliced_documentation||[]).push([[4401],{7593:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>c,contentTitle:()=>o,default:()=>h,frontMatter:()=>t,metadata:()=>l,toc:()=>d});var i=s(6070),r=s(1100);const t={sidebar_position:1},o="Low Coupling & High Cohesion",l={id:"reference/isolation/coupling-cohesion",title:"Low Coupling & High Cohesion",description:"\u041c\u043e\u0434\u0443\u043b\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0434\u043e\u043b\u0436\u043d\u044b \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043a\u0430\u043a \u043e\u0431\u043b\u0430\u0434\u0430\u044e\u0449\u0438\u0435 \u0441\u0438\u043b\u044c\u043d\u043e\u0439 \u0441\u0432\u044f\u0437\u043d\u043e\u0441\u0442\u044c\u044e (\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u043d\u0430 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043e\u0434\u043d\u043e\u0439 \u0447\u0435\u0442\u043a\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438) \u0438 \u0441\u043b\u0430\u0431\u043e\u0439 \u0437\u0430\u0446\u0435\u043f\u043b\u0435\u043d\u043d\u043e\u0441\u0442\u044c\u044e (\u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u043c\u0435\u043d\u0435\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u0435 \u043e\u0442 \u0434\u0440\u0443\u0433\u0438\u0445 \u043c\u043e\u0434\u0443\u043b\u0435\u0439)",source:"@site/i18n/ru/docusaurus-plugin-content-docs/current/reference/isolation/coupling-cohesion.md",sourceDirName:"reference/isolation",slug:"/reference/isolation/coupling-cohesion",permalink:"/ru/docs/reference/isolation/coupling-cohesion",draft:!1,unlisted:!1,editUrl:"https://github.com/feature-sliced/documentation/edit/master/i18n/ru/docusaurus-plugin-content-docs/current/reference/isolation/coupling-cohesion.md",tags:[],version:"current",lastUpdatedAt:1727607766e3,sidebarPosition:1,frontMatter:{sidebar_position:1},sidebar:"referenceSidebar",previous:{title:"\u0418\u0437\u043e\u043b\u044f\u0446\u0438\u044f \u043c\u043e\u0434\u0443\u043b\u0435\u0439",permalink:"/ru/docs/reference/isolation/"},next:{title:"Decouple entities",permalink:"/ru/docs/reference/isolation/decouple-entities"}},c={},d=[{value:"\u041a\u043e\u043c\u043f\u043e\u0437\u0438\u0446\u0438\u044f \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 (UI level)",id:"components-composition-ui-level",level:2},{value:"\u041f\u0440\u0438\u043c\u0435\u0440",id:"example",level:3},{value:"\u0417\u0430\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u043c \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0435\u043c\u043e\u0441\u0442\u044c",id:"laying-the-extensibility",level:4},{value:"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u043a\u043e\u043c\u043f\u043e\u0437\u0438\u0446\u0438\u044e",id:"using-the-composition",level:4},{value:"\u041a\u043e\u043c\u043f\u043e\u0437\u0438\u0446\u0438\u044f \u0441\u043b\u043e\u0435\u0432 (APP level)",id:"layer-composition-app-level",level:2},{value:"\u041f\u0440\u0438\u043c\u0435\u0440",id:"example",level:3},{value:"\u0421\u0432\u044f\u0436\u0435\u043c \u0432\u0441\u0435 \u044d\u0442\u043e \u0432\u043c\u0435\u0441\u0442\u0435",id:"lets-tie-it-all-together",level:4},{value:"\u041c\u043e\u0434\u0435\u043b\u044c \u0434\u0430\u043d\u043d\u044b\u0445",id:"data-model",level:4},{value:"\u0418\u0442\u043e\u0433\u043e",id:"summary",level:2},{value:"\u0421\u043c. \u0442\u0430\u043a\u0436\u0435",id:"see-also",level:2}];function a(e){const n={a:"a",blockquote:"blockquote",code:"code",em:"em",h1:"h1",h2:"h2",h3:"h3",h4:"h4",header:"header",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,r.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.header,{children:(0,i.jsx)(n.h1,{id:"low-coupling--high-cohesion",children:"Low Coupling & High Cohesion"})}),"\n",(0,i.jsxs)(n.p,{children:["\u041c\u043e\u0434\u0443\u043b\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0434\u043e\u043b\u0436\u043d\u044b \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043a\u0430\u043a \u043e\u0431\u043b\u0430\u0434\u0430\u044e\u0449\u0438\u0435 ",(0,i.jsx)(n.strong,{children:"\u0441\u0438\u043b\u044c\u043d\u043e\u0439 \u0441\u0432\u044f\u0437\u043d\u043e\u0441\u0442\u044c\u044e"})," (\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u043d\u0430 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043e\u0434\u043d\u043e\u0439 \u0447\u0435\u0442\u043a\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438) \u0438 ",(0,i.jsx)(n.strong,{children:"\u0441\u043b\u0430\u0431\u043e\u0439 \u0437\u0430\u0446\u0435\u043f\u043b\u0435\u043d\u043d\u043e\u0441\u0442\u044c\u044e"})," (\u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u043c\u0435\u043d\u0435\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u0435 \u043e\u0442 \u0434\u0440\u0443\u0433\u0438\u0445 \u043c\u043e\u0434\u0443\u043b\u0435\u0439)"]}),"\n",(0,i.jsxs)("figure",{children:[(0,i.jsx)("img",{src:"/img/coupling-cohesion-light.svg#light-mode-only",alt:""}),(0,i.jsx)("img",{src:"/img/coupling-cohesion-dark.svg#dark-mode-only",alt:""}),(0,i.jsx)("figcaption",{children:(0,i.jsxs)(n.p,{children:["\u0418\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u0432\u0434\u043e\u0445\u043d\u043e\u0432\u043b\u0435\u043d\u0430 \u0441\u0442\u0430\u0442\u044c\u0435\u0439 ",(0,i.jsx)(n.a,{href:"https://enterprisecraftsmanship.com/posts/cohesion-coupling-difference/",children:"https://enterprisecraftsmanship.com/posts/cohesion-coupling-difference/"})]})})]}),"\n",(0,i.jsx)(n.p,{children:"\u0412 \u0440\u0430\u043c\u043a\u0430\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u043b\u043e\u0433\u0438\u0438 \u044d\u0442\u043e \u0434\u043e\u0441\u0442\u0438\u0433\u0430\u0435\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"\u0420\u0430\u0437\u0431\u0438\u0435\u043d\u0438\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0430 \u0441\u043b\u043e\u0438 \u0438 \u0441\u043b\u0430\u0439\u0441\u044b - \u043c\u043e\u0434\u0443\u043b\u0438, \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u044e\u0449\u0438\u0435 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c."}),"\n",(0,i.jsxs)(n.li,{children:["\u0422\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0435 \u043a \u043a\u0430\u0436\u0434\u043e\u043c\u0443 \u043c\u043e\u0434\u0443\u043b\u044e - \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c ",(0,i.jsx)(n.a,{href:"/docs/reference/public-api",children:"\u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0434\u043e\u0441\u0442\u0443\u043f\u0430"})]}),"\n",(0,i.jsxs)(n.li,{children:["\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439 \u043d\u0430 ",(0,i.jsx)(n.a,{href:"/docs/reference/isolation",children:"\u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u043c\u0435\u0436\u0434\u0443 \u0441\u043e\u0431\u043e\u0439"}),' - \u043a\u0430\u0436\u0434\u044b\u0439 \u043c\u043e\u0434\u0443\u043b\u044c \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u0432\u0438\u0441\u0435\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0442 "\u043d\u0438\u0436\u0435\u043b\u0435\u0436\u0430\u0449\u0438\u0445" \u043c\u043e\u0434\u0443\u043b\u0435\u0439, \u043d\u043e \u043d\u0435 \u043e\u0442 \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u0441 \u0442\u043e\u0433\u043e \u0436\u0435 \u0438\u043b\u0438 \u0431\u043e\u043b\u0435\u0435 \u0432\u044b\u0441\u043e\u043a\u043e\u0433\u043e \u0441\u043b\u043e\u044f.']}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"components-composition-ui-level",children:"\u041a\u043e\u043c\u043f\u043e\u0437\u0438\u0446\u0438\u044f \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 (UI level)"}),"\n",(0,i.jsx)(n.p,{children:"\u0410\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e\u0435 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 UI-\u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u043e\u0432 \u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043d\u0443\u044e \u043c\u043e\u0434\u0435\u043b\u044c, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043a\u0430\u0436\u0434\u044b\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u043c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430, \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0438 \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b, \u0430 \u0442\u0430\u043a\u0436\u0435, \u0437\u0430\u0447\u0430\u0441\u0442\u0443\u044e, \u0441\u043b\u043e\u0442\u044b."}),"\n",(0,i.jsxs)(n.p,{children:["\u0422\u0430\u043a\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043a\u0430\u043a ",(0,i.jsx)(n.strong,{children:"\u043a\u043e\u043c\u043f\u043e\u0437\u0438\u0446\u0438\u044e \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445, \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u043d\u0435 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u043c\u0435\u0436\u0434\u0443 \u0441\u043e\u0431\u043e\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432"})," \u0438, \u0442\u0435\u043c \u0441\u0430\u043c\u044b\u043c, \u0434\u043e\u0441\u0442\u0438\u0433\u0430\u0442\u044c ",(0,i.jsx)(n.strong,{children:"\u0441\u043b\u0430\u0431\u043e\u0439 \u0437\u0430\u0446\u0435\u043f\u043b\u0435\u043d\u043d\u043e\u0441\u0442\u0438"})," \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430"]}),"\n",(0,i.jsx)(n.h3,{id:"example",children:"\u041f\u0440\u0438\u043c\u0435\u0440"}),"\n",(0,i.jsxs)(n.p,{children:["\u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0442\u0430\u043a\u0443\u044e \u043a\u043e\u043c\u043f\u043e\u0437\u0438\u0446\u0438\u044e \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 ",(0,i.jsx)(n.strong,{children:"\u0441\u043f\u0438\u0441\u043a\u0430 \u0441 \u0445\u0435\u0434\u0435\u0440\u043e\u043c:"})]}),"\n",(0,i.jsx)(n.h4,{id:"laying-the-extensibility",children:"\u0417\u0430\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u043c \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0435\u043c\u043e\u0441\u0442\u044c"}),"\n",(0,i.jsx)(n.p,{children:"\u041a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u0441\u043f\u0438\u0441\u043a\u0430 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0441\u0430\u043c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u044c \u0432\u0438\u0434 \u0438 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 \u0445\u0435\u0434\u0435\u0440\u0430 \u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0441\u043f\u0438\u0441\u043a\u0430, \u0432\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u0438\u0445 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-tsx",children:'interface ListProps {\n Header: React.ReactNode;\n Items: React.ReactNode;\n}\n\nconst List: Component = ({ Header, Items }) => (\n
    \n {Header}\n
      \n {Items}\n
    \n
    \n)\n\n'})}),"\n",(0,i.jsx)(n.h4,{id:"using-the-composition",children:"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u043a\u043e\u043c\u043f\u043e\u0437\u0438\u0446\u0438\u044e"}),"\n",(0,i.jsxs)(n.p,{children:["\u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 ",(0,i.jsx)(n.strong,{children:"\u043f\u0435\u0440\u0435\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c"})," \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0432\u0435\u0440\u0441\u0438\u0439 \u0445\u0435\u0434\u0435\u0440\u0430 \u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0441\u043f\u0438\u0441\u043a\u0430. \u041a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u0445\u0435\u0434\u0435\u0440\u0430 \u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0441\u043f\u0438\u0441\u043a\u0430 \u043c\u043e\u0433\u0443\u0442 \u0438\u043c\u0435\u0442\u044c \u043a\u0430\u043a \u0441\u0432\u043e\u0435 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435, \u0442\u0430\u043a \u0438 \u0441\u0432\u043e\u044e \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0443 \u043a \u043b\u044e\u0431\u044b\u043c \u0447\u0430\u0441\u0442\u044f\u043c \u043e\u0431\u0449\u0435\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f - \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u0441\u043f\u0438\u0441\u043a\u0430 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043d\u0438\u0447\u0435\u0433\u043e \u043f\u0440\u043e \u044d\u0442\u043e \u0437\u043d\u0430\u0442\u044c, \u0430 \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043e\u0442 \u044d\u0442\u043e\u0433\u043e \u0437\u0430\u0432\u0438\u0441\u0435\u0442\u044c"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-tsx",children:'} Items={} />\n\n} />\n\n} Items={} />\n\n'})}),"\n",(0,i.jsx)(n.h2,{id:"layer-composition-app-level",children:"\u041a\u043e\u043c\u043f\u043e\u0437\u0438\u0446\u0438\u044f \u0441\u043b\u043e\u0435\u0432 (APP level)"}),"\n",(0,i.jsxs)(n.p,{children:["\u041c\u0435\u0442\u043e\u0434\u043e\u043b\u043e\u0433\u0438\u044f \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 \u0440\u0430\u0437\u0434\u0435\u043b\u044f\u0442\u044c \u0446\u0435\u043d\u043d\u0443\u044e \u0434\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043d\u0430 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u043c\u043e\u0434\u0443\u043b\u0438 - ",(0,i.jsx)(n.strong,{children:"\u0444\u0438\u0447\u0438 (features)"}),", \u0430 \u043b\u043e\u0433\u0438\u043a\u0443, \u043e\u0442\u043d\u043e\u0441\u044f\u0449\u0443\u044e\u0441\u044f \u043a \u0431\u0438\u0437\u043d\u0435\u0441 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044f\u043c - \u0432 ",(0,i.jsx)(n.strong,{children:"\u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438 (entities)"}),". \u0418 \u0444\u0438\u0447\u0438, \u0438 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438 ",(0,i.jsx)(n.strong,{children:"\u0434\u043e\u043b\u0436\u043d\u044b \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043a\u0430\u043a \u0432\u044b\u0441\u043e\u043a\u043e-\u0441\u0432\u044f\u0437\u043d\u044b\u0435 \u043c\u043e\u0434\u0443\u043b\u0438"}),", \u0442.\u0435. \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u043d\u0430 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 ",(0,i.jsx)(n.strong,{children:"\u043e\u0434\u043d\u043e\u0439 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438"})," \u0438\u043b\u0438 \u0441\u043a\u043e\u043d\u0446\u0435\u043d\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0432\u043e\u043a\u0440\u0443\u0433 ",(0,i.jsx)(n.strong,{children:"\u043e\u0434\u043d\u043e\u0439 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438."})]}),"\n",(0,i.jsxs)(n.p,{children:["\u0412\u0441\u0435 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043c\u0435\u0436\u0434\u0443 \u0442\u0430\u043a\u0438\u043c\u0438 \u043c\u043e\u0434\u0443\u043b\u044f\u043c\u0438, \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e UI-\u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430\u043c \u0438\u0437 \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u0432\u044b\u0448\u0435, \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u0430\u043d\u044b \u043a\u0430\u043a ",(0,i.jsx)(n.strong,{children:"\u043a\u043e\u043c\u043f\u043e\u0437\u0438\u0446\u0438\u044f \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u043c\u043e\u0434\u0443\u043b\u0435\u0439."})]}),"\n",(0,i.jsx)(n.h3,{id:"example",children:"\u041f\u0440\u0438\u043c\u0435\u0440"}),"\n",(0,i.jsx)(n.p,{children:"\u041d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f-\u0447\u0430\u0442\u0430 \u0441 \u0442\u0430\u043a\u0438\u043c\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044f\u043c\u0438"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"\u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u043e\u0432 \u0438 \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0434\u0440\u0443\u0433\u0430"}),"\n",(0,i.jsx)(n.li,{children:"\u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u043a\u0443 \u0441 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u043c \u0434\u0440\u0443\u0433\u043e\u043c"}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"\u0412 \u0440\u0430\u043c\u043a\u0430\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u043b\u043e\u0433\u0438\u0438, \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a:"}),"\n",(0,i.jsx)(n.p,{children:"Entities"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c (\u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f)"}),"\n",(0,i.jsx)(n.li,{children:"\u041a\u043e\u043d\u0442\u0430\u043a\u0442 (\u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0441\u043f\u0438\u0441\u043a\u0430 \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u043e\u0432, \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u043c \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u043e\u043c)"}),"\n",(0,i.jsx)(n.li,{children:"\u041f\u0435\u0440\u0435\u043f\u0438\u0441\u043a\u0430 (\u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u043a\u0438 \u0438 \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 \u043d\u0435\u0439)"}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"Features"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"\u0424\u043e\u0440\u043c\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f"}),"\n",(0,i.jsx)(n.li,{children:"\u041c\u0435\u043d\u044e \u0432\u044b\u0431\u043e\u0440\u0430 \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u043a\u0438"}),"\n"]}),"\n",(0,i.jsx)(n.h4,{id:"lets-tie-it-all-together",children:"\u0421\u0432\u044f\u0436\u0435\u043c \u0432\u0441\u0435 \u044d\u0442\u043e \u0432\u043c\u0435\u0441\u0442\u0435"}),"\n",(0,i.jsx)(n.p,{children:"\u0412 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438, \u0434\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430, \u0431\u0443\u0434\u0435\u0442 \u043e\u0434\u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430, \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0431\u0443\u0434\u0435\u0442 \u043e\u0441\u043d\u043e\u0432\u0430\u043d \u043d\u0430 \u0441\u043b\u0435\u0433\u043a\u0430 \u043c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0435 \u0438\u0437 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u0430"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-tsx",metastring:'title="page/main/ui.tsx"',children:"}\n Items={}\n Footer={}\n/>\n"})}),"\n",(0,i.jsx)(n.h4,{id:"data-model",children:"\u041c\u043e\u0434\u0435\u043b\u044c \u0434\u0430\u043d\u043d\u044b\u0445"}),"\n",(0,i.jsxs)(n.p,{children:["\u041c\u043e\u0434\u0435\u043b\u044c \u0434\u0430\u043d\u043d\u044b\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0431\u0443\u0434\u0435\u0442 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u0430\u043d\u0430 \u043a\u0430\u043a ",(0,i.jsx)(n.strong,{children:"\u043a\u043e\u043c\u043f\u043e\u0437\u0438\u0446\u0438\u044f \u0444\u0438\u0447 \u0438 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0435\u0439"}),". \u0412 \u0440\u0430\u043c\u043a\u0430\u0445 \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u0444\u0438\u0447\u0438 \u0431\u0443\u0434\u0443\u0442 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u044b \u043a\u0430\u043a \u0444\u0430\u0431\u0440\u0438\u043a\u0438 \u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0443 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0435\u0439 \u0447\u0435\u0440\u0435\u0437 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u044d\u0442\u0438\u0445 \u0444\u0430\u0431\u0440\u0438\u043a."]}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsx)(n.p,{children:"\u041e\u0434\u043d\u0430\u043a\u043e, \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0432 \u0432\u0438\u0434\u0435 \u0444\u0430\u0431\u0440\u0438\u043a\u0438 \u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u0430 - \u0444\u0438\u0447\u0430 \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u0432\u0438\u0441\u0435\u0442\u044c \u043e\u0442 \u043d\u0438\u0436\u0435\u043b\u0435\u0436\u0430\u0449\u0438\u0445 \u0441\u043b\u043e\u0435\u0432 \u0438 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e"}),"\n"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-ts",metastring:'title="pages/main/model.ts"',children:'import { userModel } from "entitites/user"\nimport { conversationModel } from "entities/conversation"\nimport { contactModel } from "entities/contact"\n\nimport { createMessageInput } from "features/message-input"\nimport { createConversationSwitch } from "features/conversation-switch"\n\nimport { beautifiy } from "shared/lib/beautify-text"\n\nexport const { allConversations, setConversation } = createConversationSwitch({\n contacts: contactModel.allContacts,\n setConversation: conversationModel.setConversation,\n currentConversation: conversationModel.conversation,\n currentUser: userModel.currentUser\n})\n\nexport const { sendMessage, attachFile } = createMessageInput({\n author: userModel.currentUser\n send: conversationModel.sendMessage,\n formatMessage: beautify\n})\n'})}),"\n",(0,i.jsx)(n.h2,{id:"summary",children:"\u0418\u0442\u043e\u0433\u043e"}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["\u041c\u043e\u0434\u0443\u043b\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u043e\u0431\u043b\u0430\u0434\u0430\u0442\u044c ",(0,i.jsx)(n.strong,{children:"\u0441\u0438\u043b\u044c\u043d\u043e\u0439 \u0441\u0432\u044f\u0437\u043d\u043e\u0441\u0442\u044c\u044e"})," (\u0438\u043c\u0435\u0442\u044c \u043e\u0434\u043d\u0443 \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u044c, \u0440\u0435\u0448\u0430\u0442\u044c \u043e\u0434\u043d\u0443 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u0443\u044e \u0437\u0430\u0434\u0430\u0447\u0443) \u0438 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c ",(0,i.jsx)(n.a,{href:"/docs/reference/public-api",children:(0,i.jsx)(n.strong,{children:"\u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441"})})," \u0434\u043e\u0441\u0442\u0443\u043f\u0430"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"\u0421\u043b\u0430\u0431\u0430\u044f \u0437\u0430\u0446\u0435\u043f\u043b\u0435\u043d\u043d\u043e\u0441\u0442\u044c"})," \u0434\u043e\u0441\u0442\u0438\u0433\u0430\u0435\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u043c\u043f\u043e\u0437\u0438\u0446\u0438\u044e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 - \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 UI, \u0444\u0438\u0447 \u0438 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0435\u0439"]}),"\n",(0,i.jsxs)(n.li,{children:["\u0422\u0430\u043a\u0436\u0435, \u0434\u043b\u044f \u0441\u043d\u0438\u0436\u0435\u043d\u0438\u044f \u0437\u0430\u0446\u0435\u043f\u043b\u0435\u043d\u043d\u043e\u0441\u0442\u0438, \u043c\u043e\u0434\u0443\u043b\u0438 ",(0,i.jsx)(n.strong,{children:"\u0434\u043e\u043b\u0436\u043d\u044b \u0437\u0430\u0432\u0438\u0441\u0435\u0442\u044c \u0434\u0440\u0443\u0433 \u043e\u0442 \u0434\u0440\u0443\u0433\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0435\u0440\u0435\u0437 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0435 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b"})," - \u0442\u0430\u043a \u0434\u043e\u0441\u0442\u0438\u0433\u0430\u0435\u0442\u0441\u044f \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044c \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u043e\u0442 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0434\u0440\u0443\u0433 \u0434\u0440\u0443\u0433\u0430"]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"see-also",children:"\u0421\u043c. \u0442\u0430\u043a\u0436\u0435"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"https://enterprisecraftsmanship.com/posts/cohesion-coupling-difference/",children:"(\u0421\u0442\u0430\u0442\u044c\u044f) \u041f\u0440\u043e Low Coupling \u0438 High Cohesion \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u043e"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.em,{children:"\u0421\u0445\u0435\u043c\u0430 \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u0432\u0434\u043e\u0445\u043d\u043e\u0432\u043b\u0435\u043d\u0430 \u0438\u043c\u0435\u043d\u043d\u043e \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435\u0439"})}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://medium.com/german-gorelkin/low-coupling-high-cohesion-d36369fb1be9",children:"(\u0421\u0442\u0430\u0442\u044c\u044f) Low Coupling \u0438 High Cohesion. \u0417\u0430\u043a\u043e\u043d \u0414\u0435\u043c\u0435\u0442\u0440\u044b"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://www.slideshare.net/cristalngo/software-design-principles-57388843",children:"(\u041f\u0440\u0435\u0437\u0435\u043d\u0442\u0430\u0446\u0438\u044f) \u041f\u0440\u043e \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u044b \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f (\u0432\u043a\u043b\u044e\u0447\u0430\u044f Low Coupling & High Cohesion)"})}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(a,{...e})}):a(e)}},1100:(e,n,s)=>{s.d(n,{R:()=>o,x:()=>l});var i=s(758);const r={},t=i.createContext(r);function o(e){const n=i.useContext(t);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:o(e.components),i.createElement(t.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunk_feature_sliced_documentation=self.webpackChunk_feature_sliced_documentation||[]).push([[4401],{7593:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>c,contentTitle:()=>o,default:()=>h,frontMatter:()=>t,metadata:()=>l,toc:()=>d});var i=s(6070),r=s(1100);const t={sidebar_position:1},o="Low Coupling & High Cohesion",l={id:"reference/isolation/coupling-cohesion",title:"Low Coupling & High Cohesion",description:"\u041c\u043e\u0434\u0443\u043b\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0434\u043e\u043b\u0436\u043d\u044b \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043a\u0430\u043a \u043e\u0431\u043b\u0430\u0434\u0430\u044e\u0449\u0438\u0435 \u0441\u0438\u043b\u044c\u043d\u043e\u0439 \u0441\u0432\u044f\u0437\u043d\u043e\u0441\u0442\u044c\u044e (\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u043d\u0430 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043e\u0434\u043d\u043e\u0439 \u0447\u0435\u0442\u043a\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438) \u0438 \u0441\u043b\u0430\u0431\u043e\u0439 \u0437\u0430\u0446\u0435\u043f\u043b\u0435\u043d\u043d\u043e\u0441\u0442\u044c\u044e (\u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u043c\u0435\u043d\u0435\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u0435 \u043e\u0442 \u0434\u0440\u0443\u0433\u0438\u0445 \u043c\u043e\u0434\u0443\u043b\u0435\u0439)",source:"@site/i18n/ru/docusaurus-plugin-content-docs/current/reference/isolation/coupling-cohesion.md",sourceDirName:"reference/isolation",slug:"/reference/isolation/coupling-cohesion",permalink:"/ru/docs/reference/isolation/coupling-cohesion",draft:!1,unlisted:!1,editUrl:"https://github.com/feature-sliced/documentation/edit/master/i18n/ru/docusaurus-plugin-content-docs/current/reference/isolation/coupling-cohesion.md",tags:[],version:"current",lastUpdatedAt:1728325386e3,sidebarPosition:1,frontMatter:{sidebar_position:1},sidebar:"referenceSidebar",previous:{title:"\u0418\u0437\u043e\u043b\u044f\u0446\u0438\u044f \u043c\u043e\u0434\u0443\u043b\u0435\u0439",permalink:"/ru/docs/reference/isolation/"},next:{title:"Decouple entities",permalink:"/ru/docs/reference/isolation/decouple-entities"}},c={},d=[{value:"\u041a\u043e\u043c\u043f\u043e\u0437\u0438\u0446\u0438\u044f \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 (UI level)",id:"components-composition-ui-level",level:2},{value:"\u041f\u0440\u0438\u043c\u0435\u0440",id:"example",level:3},{value:"\u0417\u0430\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u043c \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0435\u043c\u043e\u0441\u0442\u044c",id:"laying-the-extensibility",level:4},{value:"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u043a\u043e\u043c\u043f\u043e\u0437\u0438\u0446\u0438\u044e",id:"using-the-composition",level:4},{value:"\u041a\u043e\u043c\u043f\u043e\u0437\u0438\u0446\u0438\u044f \u0441\u043b\u043e\u0435\u0432 (APP level)",id:"layer-composition-app-level",level:2},{value:"\u041f\u0440\u0438\u043c\u0435\u0440",id:"example",level:3},{value:"\u0421\u0432\u044f\u0436\u0435\u043c \u0432\u0441\u0435 \u044d\u0442\u043e \u0432\u043c\u0435\u0441\u0442\u0435",id:"lets-tie-it-all-together",level:4},{value:"\u041c\u043e\u0434\u0435\u043b\u044c \u0434\u0430\u043d\u043d\u044b\u0445",id:"data-model",level:4},{value:"\u0418\u0442\u043e\u0433\u043e",id:"summary",level:2},{value:"\u0421\u043c. \u0442\u0430\u043a\u0436\u0435",id:"see-also",level:2}];function a(e){const n={a:"a",blockquote:"blockquote",code:"code",em:"em",h1:"h1",h2:"h2",h3:"h3",h4:"h4",header:"header",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,r.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.header,{children:(0,i.jsx)(n.h1,{id:"low-coupling--high-cohesion",children:"Low Coupling & High Cohesion"})}),"\n",(0,i.jsxs)(n.p,{children:["\u041c\u043e\u0434\u0443\u043b\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0434\u043e\u043b\u0436\u043d\u044b \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043a\u0430\u043a \u043e\u0431\u043b\u0430\u0434\u0430\u044e\u0449\u0438\u0435 ",(0,i.jsx)(n.strong,{children:"\u0441\u0438\u043b\u044c\u043d\u043e\u0439 \u0441\u0432\u044f\u0437\u043d\u043e\u0441\u0442\u044c\u044e"})," (\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u043d\u0430 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043e\u0434\u043d\u043e\u0439 \u0447\u0435\u0442\u043a\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438) \u0438 ",(0,i.jsx)(n.strong,{children:"\u0441\u043b\u0430\u0431\u043e\u0439 \u0437\u0430\u0446\u0435\u043f\u043b\u0435\u043d\u043d\u043e\u0441\u0442\u044c\u044e"})," (\u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u043c\u0435\u043d\u0435\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u0435 \u043e\u0442 \u0434\u0440\u0443\u0433\u0438\u0445 \u043c\u043e\u0434\u0443\u043b\u0435\u0439)"]}),"\n",(0,i.jsxs)("figure",{children:[(0,i.jsx)("img",{src:"/img/coupling-cohesion-light.svg#light-mode-only",alt:""}),(0,i.jsx)("img",{src:"/img/coupling-cohesion-dark.svg#dark-mode-only",alt:""}),(0,i.jsx)("figcaption",{children:(0,i.jsxs)(n.p,{children:["\u0418\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u0432\u0434\u043e\u0445\u043d\u043e\u0432\u043b\u0435\u043d\u0430 \u0441\u0442\u0430\u0442\u044c\u0435\u0439 ",(0,i.jsx)(n.a,{href:"https://enterprisecraftsmanship.com/posts/cohesion-coupling-difference/",children:"https://enterprisecraftsmanship.com/posts/cohesion-coupling-difference/"})]})})]}),"\n",(0,i.jsx)(n.p,{children:"\u0412 \u0440\u0430\u043c\u043a\u0430\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u043b\u043e\u0433\u0438\u0438 \u044d\u0442\u043e \u0434\u043e\u0441\u0442\u0438\u0433\u0430\u0435\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"\u0420\u0430\u0437\u0431\u0438\u0435\u043d\u0438\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0430 \u0441\u043b\u043e\u0438 \u0438 \u0441\u043b\u0430\u0439\u0441\u044b - \u043c\u043e\u0434\u0443\u043b\u0438, \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u044e\u0449\u0438\u0435 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c."}),"\n",(0,i.jsxs)(n.li,{children:["\u0422\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0435 \u043a \u043a\u0430\u0436\u0434\u043e\u043c\u0443 \u043c\u043e\u0434\u0443\u043b\u044e - \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c ",(0,i.jsx)(n.a,{href:"/docs/reference/public-api",children:"\u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0434\u043e\u0441\u0442\u0443\u043f\u0430"})]}),"\n",(0,i.jsxs)(n.li,{children:["\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439 \u043d\u0430 ",(0,i.jsx)(n.a,{href:"/docs/reference/isolation",children:"\u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u043c\u0435\u0436\u0434\u0443 \u0441\u043e\u0431\u043e\u0439"}),' - \u043a\u0430\u0436\u0434\u044b\u0439 \u043c\u043e\u0434\u0443\u043b\u044c \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u0432\u0438\u0441\u0435\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0442 "\u043d\u0438\u0436\u0435\u043b\u0435\u0436\u0430\u0449\u0438\u0445" \u043c\u043e\u0434\u0443\u043b\u0435\u0439, \u043d\u043e \u043d\u0435 \u043e\u0442 \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u0441 \u0442\u043e\u0433\u043e \u0436\u0435 \u0438\u043b\u0438 \u0431\u043e\u043b\u0435\u0435 \u0432\u044b\u0441\u043e\u043a\u043e\u0433\u043e \u0441\u043b\u043e\u044f.']}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"components-composition-ui-level",children:"\u041a\u043e\u043c\u043f\u043e\u0437\u0438\u0446\u0438\u044f \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 (UI level)"}),"\n",(0,i.jsx)(n.p,{children:"\u0410\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e\u0435 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 UI-\u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u043e\u0432 \u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043d\u0443\u044e \u043c\u043e\u0434\u0435\u043b\u044c, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043a\u0430\u0436\u0434\u044b\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u043c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430, \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0438 \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b, \u0430 \u0442\u0430\u043a\u0436\u0435, \u0437\u0430\u0447\u0430\u0441\u0442\u0443\u044e, \u0441\u043b\u043e\u0442\u044b."}),"\n",(0,i.jsxs)(n.p,{children:["\u0422\u0430\u043a\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043a\u0430\u043a ",(0,i.jsx)(n.strong,{children:"\u043a\u043e\u043c\u043f\u043e\u0437\u0438\u0446\u0438\u044e \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445, \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u043d\u0435 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u043c\u0435\u0436\u0434\u0443 \u0441\u043e\u0431\u043e\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432"})," \u0438, \u0442\u0435\u043c \u0441\u0430\u043c\u044b\u043c, \u0434\u043e\u0441\u0442\u0438\u0433\u0430\u0442\u044c ",(0,i.jsx)(n.strong,{children:"\u0441\u043b\u0430\u0431\u043e\u0439 \u0437\u0430\u0446\u0435\u043f\u043b\u0435\u043d\u043d\u043e\u0441\u0442\u0438"})," \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430"]}),"\n",(0,i.jsx)(n.h3,{id:"example",children:"\u041f\u0440\u0438\u043c\u0435\u0440"}),"\n",(0,i.jsxs)(n.p,{children:["\u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0442\u0430\u043a\u0443\u044e \u043a\u043e\u043c\u043f\u043e\u0437\u0438\u0446\u0438\u044e \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 ",(0,i.jsx)(n.strong,{children:"\u0441\u043f\u0438\u0441\u043a\u0430 \u0441 \u0445\u0435\u0434\u0435\u0440\u043e\u043c:"})]}),"\n",(0,i.jsx)(n.h4,{id:"laying-the-extensibility",children:"\u0417\u0430\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u043c \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0435\u043c\u043e\u0441\u0442\u044c"}),"\n",(0,i.jsx)(n.p,{children:"\u041a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u0441\u043f\u0438\u0441\u043a\u0430 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0441\u0430\u043c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u044c \u0432\u0438\u0434 \u0438 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 \u0445\u0435\u0434\u0435\u0440\u0430 \u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0441\u043f\u0438\u0441\u043a\u0430, \u0432\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u0438\u0445 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-tsx",children:'interface ListProps {\n Header: React.ReactNode;\n Items: React.ReactNode;\n}\n\nconst List: Component = ({ Header, Items }) => (\n
    \n {Header}\n
      \n {Items}\n
    \n
    \n)\n\n'})}),"\n",(0,i.jsx)(n.h4,{id:"using-the-composition",children:"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u043a\u043e\u043c\u043f\u043e\u0437\u0438\u0446\u0438\u044e"}),"\n",(0,i.jsxs)(n.p,{children:["\u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 ",(0,i.jsx)(n.strong,{children:"\u043f\u0435\u0440\u0435\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c"})," \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0432\u0435\u0440\u0441\u0438\u0439 \u0445\u0435\u0434\u0435\u0440\u0430 \u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0441\u043f\u0438\u0441\u043a\u0430. \u041a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u0445\u0435\u0434\u0435\u0440\u0430 \u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0441\u043f\u0438\u0441\u043a\u0430 \u043c\u043e\u0433\u0443\u0442 \u0438\u043c\u0435\u0442\u044c \u043a\u0430\u043a \u0441\u0432\u043e\u0435 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435, \u0442\u0430\u043a \u0438 \u0441\u0432\u043e\u044e \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0443 \u043a \u043b\u044e\u0431\u044b\u043c \u0447\u0430\u0441\u0442\u044f\u043c \u043e\u0431\u0449\u0435\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f - \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u0441\u043f\u0438\u0441\u043a\u0430 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043d\u0438\u0447\u0435\u0433\u043e \u043f\u0440\u043e \u044d\u0442\u043e \u0437\u043d\u0430\u0442\u044c, \u0430 \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043e\u0442 \u044d\u0442\u043e\u0433\u043e \u0437\u0430\u0432\u0438\u0441\u0435\u0442\u044c"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-tsx",children:'} Items={} />\n\n} />\n\n} Items={} />\n\n'})}),"\n",(0,i.jsx)(n.h2,{id:"layer-composition-app-level",children:"\u041a\u043e\u043c\u043f\u043e\u0437\u0438\u0446\u0438\u044f \u0441\u043b\u043e\u0435\u0432 (APP level)"}),"\n",(0,i.jsxs)(n.p,{children:["\u041c\u0435\u0442\u043e\u0434\u043e\u043b\u043e\u0433\u0438\u044f \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 \u0440\u0430\u0437\u0434\u0435\u043b\u044f\u0442\u044c \u0446\u0435\u043d\u043d\u0443\u044e \u0434\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043d\u0430 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u043c\u043e\u0434\u0443\u043b\u0438 - ",(0,i.jsx)(n.strong,{children:"\u0444\u0438\u0447\u0438 (features)"}),", \u0430 \u043b\u043e\u0433\u0438\u043a\u0443, \u043e\u0442\u043d\u043e\u0441\u044f\u0449\u0443\u044e\u0441\u044f \u043a \u0431\u0438\u0437\u043d\u0435\u0441 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044f\u043c - \u0432 ",(0,i.jsx)(n.strong,{children:"\u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438 (entities)"}),". \u0418 \u0444\u0438\u0447\u0438, \u0438 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438 ",(0,i.jsx)(n.strong,{children:"\u0434\u043e\u043b\u0436\u043d\u044b \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043a\u0430\u043a \u0432\u044b\u0441\u043e\u043a\u043e-\u0441\u0432\u044f\u0437\u043d\u044b\u0435 \u043c\u043e\u0434\u0443\u043b\u0438"}),", \u0442.\u0435. \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u043d\u0430 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 ",(0,i.jsx)(n.strong,{children:"\u043e\u0434\u043d\u043e\u0439 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438"})," \u0438\u043b\u0438 \u0441\u043a\u043e\u043d\u0446\u0435\u043d\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0432\u043e\u043a\u0440\u0443\u0433 ",(0,i.jsx)(n.strong,{children:"\u043e\u0434\u043d\u043e\u0439 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438."})]}),"\n",(0,i.jsxs)(n.p,{children:["\u0412\u0441\u0435 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043c\u0435\u0436\u0434\u0443 \u0442\u0430\u043a\u0438\u043c\u0438 \u043c\u043e\u0434\u0443\u043b\u044f\u043c\u0438, \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e UI-\u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430\u043c \u0438\u0437 \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u0432\u044b\u0448\u0435, \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u0430\u043d\u044b \u043a\u0430\u043a ",(0,i.jsx)(n.strong,{children:"\u043a\u043e\u043c\u043f\u043e\u0437\u0438\u0446\u0438\u044f \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u043c\u043e\u0434\u0443\u043b\u0435\u0439."})]}),"\n",(0,i.jsx)(n.h3,{id:"example",children:"\u041f\u0440\u0438\u043c\u0435\u0440"}),"\n",(0,i.jsx)(n.p,{children:"\u041d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f-\u0447\u0430\u0442\u0430 \u0441 \u0442\u0430\u043a\u0438\u043c\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044f\u043c\u0438"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"\u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u043e\u0432 \u0438 \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0434\u0440\u0443\u0433\u0430"}),"\n",(0,i.jsx)(n.li,{children:"\u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u043a\u0443 \u0441 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u043c \u0434\u0440\u0443\u0433\u043e\u043c"}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"\u0412 \u0440\u0430\u043c\u043a\u0430\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u043b\u043e\u0433\u0438\u0438, \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a:"}),"\n",(0,i.jsx)(n.p,{children:"Entities"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c (\u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f)"}),"\n",(0,i.jsx)(n.li,{children:"\u041a\u043e\u043d\u0442\u0430\u043a\u0442 (\u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0441\u043f\u0438\u0441\u043a\u0430 \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u043e\u0432, \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u043c \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u043e\u043c)"}),"\n",(0,i.jsx)(n.li,{children:"\u041f\u0435\u0440\u0435\u043f\u0438\u0441\u043a\u0430 (\u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u043a\u0438 \u0438 \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 \u043d\u0435\u0439)"}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"Features"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"\u0424\u043e\u0440\u043c\u0430 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f"}),"\n",(0,i.jsx)(n.li,{children:"\u041c\u0435\u043d\u044e \u0432\u044b\u0431\u043e\u0440\u0430 \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u043a\u0438"}),"\n"]}),"\n",(0,i.jsx)(n.h4,{id:"lets-tie-it-all-together",children:"\u0421\u0432\u044f\u0436\u0435\u043c \u0432\u0441\u0435 \u044d\u0442\u043e \u0432\u043c\u0435\u0441\u0442\u0435"}),"\n",(0,i.jsx)(n.p,{children:"\u0412 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438, \u0434\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430, \u0431\u0443\u0434\u0435\u0442 \u043e\u0434\u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430, \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0431\u0443\u0434\u0435\u0442 \u043e\u0441\u043d\u043e\u0432\u0430\u043d \u043d\u0430 \u0441\u043b\u0435\u0433\u043a\u0430 \u043c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0435 \u0438\u0437 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u0430"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-tsx",metastring:'title="page/main/ui.tsx"',children:"}\n Items={}\n Footer={}\n/>\n"})}),"\n",(0,i.jsx)(n.h4,{id:"data-model",children:"\u041c\u043e\u0434\u0435\u043b\u044c \u0434\u0430\u043d\u043d\u044b\u0445"}),"\n",(0,i.jsxs)(n.p,{children:["\u041c\u043e\u0434\u0435\u043b\u044c \u0434\u0430\u043d\u043d\u044b\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0431\u0443\u0434\u0435\u0442 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u0430\u043d\u0430 \u043a\u0430\u043a ",(0,i.jsx)(n.strong,{children:"\u043a\u043e\u043c\u043f\u043e\u0437\u0438\u0446\u0438\u044f \u0444\u0438\u0447 \u0438 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0435\u0439"}),". \u0412 \u0440\u0430\u043c\u043a\u0430\u0445 \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u0444\u0438\u0447\u0438 \u0431\u0443\u0434\u0443\u0442 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u044b \u043a\u0430\u043a \u0444\u0430\u0431\u0440\u0438\u043a\u0438 \u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0443 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0435\u0439 \u0447\u0435\u0440\u0435\u0437 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u044d\u0442\u0438\u0445 \u0444\u0430\u0431\u0440\u0438\u043a."]}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsx)(n.p,{children:"\u041e\u0434\u043d\u0430\u043a\u043e, \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0432 \u0432\u0438\u0434\u0435 \u0444\u0430\u0431\u0440\u0438\u043a\u0438 \u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u0430 - \u0444\u0438\u0447\u0430 \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u0432\u0438\u0441\u0435\u0442\u044c \u043e\u0442 \u043d\u0438\u0436\u0435\u043b\u0435\u0436\u0430\u0449\u0438\u0445 \u0441\u043b\u043e\u0435\u0432 \u0438 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e"}),"\n"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-ts",metastring:'title="pages/main/model.ts"',children:'import { userModel } from "entitites/user"\nimport { conversationModel } from "entities/conversation"\nimport { contactModel } from "entities/contact"\n\nimport { createMessageInput } from "features/message-input"\nimport { createConversationSwitch } from "features/conversation-switch"\n\nimport { beautifiy } from "shared/lib/beautify-text"\n\nexport const { allConversations, setConversation } = createConversationSwitch({\n contacts: contactModel.allContacts,\n setConversation: conversationModel.setConversation,\n currentConversation: conversationModel.conversation,\n currentUser: userModel.currentUser\n})\n\nexport const { sendMessage, attachFile } = createMessageInput({\n author: userModel.currentUser\n send: conversationModel.sendMessage,\n formatMessage: beautify\n})\n'})}),"\n",(0,i.jsx)(n.h2,{id:"summary",children:"\u0418\u0442\u043e\u0433\u043e"}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["\u041c\u043e\u0434\u0443\u043b\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u043e\u0431\u043b\u0430\u0434\u0430\u0442\u044c ",(0,i.jsx)(n.strong,{children:"\u0441\u0438\u043b\u044c\u043d\u043e\u0439 \u0441\u0432\u044f\u0437\u043d\u043e\u0441\u0442\u044c\u044e"})," (\u0438\u043c\u0435\u0442\u044c \u043e\u0434\u043d\u0443 \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u044c, \u0440\u0435\u0448\u0430\u0442\u044c \u043e\u0434\u043d\u0443 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u0443\u044e \u0437\u0430\u0434\u0430\u0447\u0443) \u0438 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c ",(0,i.jsx)(n.a,{href:"/docs/reference/public-api",children:(0,i.jsx)(n.strong,{children:"\u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441"})})," \u0434\u043e\u0441\u0442\u0443\u043f\u0430"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"\u0421\u043b\u0430\u0431\u0430\u044f \u0437\u0430\u0446\u0435\u043f\u043b\u0435\u043d\u043d\u043e\u0441\u0442\u044c"})," \u0434\u043e\u0441\u0442\u0438\u0433\u0430\u0435\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u043c\u043f\u043e\u0437\u0438\u0446\u0438\u044e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 - \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 UI, \u0444\u0438\u0447 \u0438 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0435\u0439"]}),"\n",(0,i.jsxs)(n.li,{children:["\u0422\u0430\u043a\u0436\u0435, \u0434\u043b\u044f \u0441\u043d\u0438\u0436\u0435\u043d\u0438\u044f \u0437\u0430\u0446\u0435\u043f\u043b\u0435\u043d\u043d\u043e\u0441\u0442\u0438, \u043c\u043e\u0434\u0443\u043b\u0438 ",(0,i.jsx)(n.strong,{children:"\u0434\u043e\u043b\u0436\u043d\u044b \u0437\u0430\u0432\u0438\u0441\u0435\u0442\u044c \u0434\u0440\u0443\u0433 \u043e\u0442 \u0434\u0440\u0443\u0433\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0435\u0440\u0435\u0437 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0435 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b"})," - \u0442\u0430\u043a \u0434\u043e\u0441\u0442\u0438\u0433\u0430\u0435\u0442\u0441\u044f \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044c \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u043e\u0442 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0434\u0440\u0443\u0433 \u0434\u0440\u0443\u0433\u0430"]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"see-also",children:"\u0421\u043c. \u0442\u0430\u043a\u0436\u0435"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"https://enterprisecraftsmanship.com/posts/cohesion-coupling-difference/",children:"(\u0421\u0442\u0430\u0442\u044c\u044f) \u041f\u0440\u043e Low Coupling \u0438 High Cohesion \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u043e"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.em,{children:"\u0421\u0445\u0435\u043c\u0430 \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u0432\u0434\u043e\u0445\u043d\u043e\u0432\u043b\u0435\u043d\u0430 \u0438\u043c\u0435\u043d\u043d\u043e \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435\u0439"})}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://medium.com/german-gorelkin/low-coupling-high-cohesion-d36369fb1be9",children:"(\u0421\u0442\u0430\u0442\u044c\u044f) Low Coupling \u0438 High Cohesion. \u0417\u0430\u043a\u043e\u043d \u0414\u0435\u043c\u0435\u0442\u0440\u044b"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://www.slideshare.net/cristalngo/software-design-principles-57388843",children:"(\u041f\u0440\u0435\u0437\u0435\u043d\u0442\u0430\u0446\u0438\u044f) \u041f\u0440\u043e \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u044b \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f (\u0432\u043a\u043b\u044e\u0447\u0430\u044f Low Coupling & High Cohesion)"})}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(a,{...e})}):a(e)}},1100:(e,n,s)=>{s.d(n,{R:()=>o,x:()=>l});var i=s(758);const r={},t=i.createContext(r);function o(e){const n=i.useContext(t);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:o(e.components),i.createElement(t.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/ru/assets/js/35c5367b.ed09fd79.js b/ru/assets/js/35c5367b.1b719cdf.js similarity index 99% rename from ru/assets/js/35c5367b.ed09fd79.js rename to ru/assets/js/35c5367b.1b719cdf.js index 39821f655b..4b844a52ff 100644 --- a/ru/assets/js/35c5367b.ed09fd79.js +++ b/ru/assets/js/35c5367b.1b719cdf.js @@ -1 +1 @@ -"use strict";(self.webpackChunk_feature_sliced_documentation=self.webpackChunk_feature_sliced_documentation||[]).push([[427],{1134:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>d,contentTitle:()=>t,default:()=>h,frontMatter:()=>l,metadata:()=>o,toc:()=>c});var r=s(6070),i=s(1100);const l={sidebar_position:3,sidebar_label:"Public API",pagination_next:"about/index"},t="\u041f\u0443\u0431\u043b\u0438\u0447\u043d\u043e\u0435 API \u043c\u043e\u0434\u0443\u043b\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f",o={id:"reference/public-api",title:"\u041f\u0443\u0431\u043b\u0438\u0447\u043d\u043e\u0435 API \u043c\u043e\u0434\u0443\u043b\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f",description:"\u041a\u0430\u0436\u0434\u0430\u044f \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044c \u043c\u0435\u0442\u043e\u0434\u043e\u043b\u043e\u0433\u0438\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u0443\u0434\u043e\u0431\u043d\u044b\u0439 \u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0438 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u043c\u043e\u0434\u0443\u043b\u044c.",source:"@site/i18n/ru/docusaurus-plugin-content-docs/current/reference/public-api.md",sourceDirName:"reference",slug:"/reference/public-api",permalink:"/ru/docs/reference/public-api",draft:!1,unlisted:!1,editUrl:"https://github.com/feature-sliced/documentation/edit/master/i18n/ru/docusaurus-plugin-content-docs/current/reference/public-api.md",tags:[],version:"current",lastUpdatedAt:1727607766e3,sidebarPosition:3,frontMatter:{sidebar_position:3,sidebar_label:"Public API",pagination_next:"about/index"},sidebar:"referenceSidebar",previous:{title:"\u0421\u043b\u0430\u0439\u0441\u044b \u0438 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u044b",permalink:"/ru/docs/reference/slices-segments"},next:{title:"\ud83c\udf70 \u041e \u043c\u0435\u0442\u043e\u0434\u043e\u043b\u043e\u0433\u0438\u0438",permalink:"/ru/docs/about/"}},d={},c=[{value:"\u0426\u0435\u043b\u0438",id:"goals",level:2},{value:"\u0422\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f \u043a \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u043e\u043c\u0443 API",id:"requirements-for-the-public-api",level:2},{value:"1. \u041a\u043e\u043d\u0442\u0440\u043e\u043b\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u0430",id:"1-access-control",level:3},{value:"\u041f\u0440\u0438\u043c\u0435\u0440\u044b",id:"examples",level:4},{value:"\u041e\u0442\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u043e\u0442 \u043f\u0440\u0438\u0432\u0430\u0442\u043d\u044b\u0445 \u0438\u043c\u043f\u043e\u0440\u0442\u043e\u0432",id:"suspension-from-private-imports",level:5},{value:"2. \u0423\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u043e\u0441\u0442\u044c \u043a \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f\u043c",id:"2-sustainability-for-changes",level:3},{value:"\u041f\u0440\u0438\u043c\u0435\u0440\u044b",id:"examples",level:4},{value:"\u0410\u0431\u0441\u0442\u0440\u0430\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043e\u0442 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438",id:"abstracting-from-the-implementation",level:5},{value:"3. \u0418\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u0443\u0435\u043c\u043e\u0441\u0442\u044c",id:"3-integrability",level:3},{value:"\u041f\u0440\u0438\u043c\u0435\u0440\u044b",id:"examples",level:4},{value:"\u041a\u043e\u043b\u043b\u0438\u0437\u0438\u044f \u0438\u043c\u0435\u043d",id:"name-collision",level:5},{value:"\u0413\u0438\u0431\u043a\u043e\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435",id:"flexible-use",level:5},{value:"\u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043a\u043e\u043b\u043b\u0438\u0437\u0438\u0439",id:"resolution-of-collisions",level:5},{value:"\u041e \u0440\u0435\u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0430\u0445",id:"about-re-exports",level:2},{value:"\u041d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043a\u0438",id:"disadvantages",level:3},{value:"\u0412\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u043f\u0443\u0442\u0438 \u0440\u0435\u0448\u0435\u043d\u0438\u044f",id:"possible-solutions",level:3},{value:"\u0421\u043c. \u0442\u0430\u043a\u0436\u0435",id:"see-also",level:2}];function a(e){const n={a:"a",admonition:"admonition",blockquote:"blockquote",code:"code",em:"em",h1:"h1",h2:"h2",h3:"h3",h4:"h4",h5:"h5",header:"header",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,i.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.header,{children:(0,r.jsx)(n.h1,{id:"\u043f\u0443\u0431\u043b\u0438\u0447\u043d\u043e\u0435-api-\u043c\u043e\u0434\u0443\u043b\u044f-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f",children:"\u041f\u0443\u0431\u043b\u0438\u0447\u043d\u043e\u0435 API \u043c\u043e\u0434\u0443\u043b\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f"})}),"\n",(0,r.jsxs)(n.p,{children:["\u041a\u0430\u0436\u0434\u0430\u044f \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044c \u043c\u0435\u0442\u043e\u0434\u043e\u043b\u043e\u0433\u0438\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043a\u0430\u043a ",(0,r.jsx)(n.strong,{children:"\u0443\u0434\u043e\u0431\u043d\u044b\u0439 \u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0438 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u043c\u043e\u0434\u0443\u043b\u044c."})]}),"\n",(0,r.jsx)(n.h2,{id:"goals",children:"\u0426\u0435\u043b\u0438"}),"\n",(0,r.jsxs)(n.p,{children:["\u0423\u0434\u043e\u0431\u0441\u0442\u0432\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u043c\u043e\u0434\u0443\u043b\u044f \u0434\u043e\u0441\u0442\u0438\u0433\u0430\u0435\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 ",(0,r.jsx)(n.em,{children:"\u0440\u044f\u0434\u0430 \u0446\u0435\u043b\u0435\u0439"}),":"]}),"\n",(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c ",(0,r.jsx)(n.strong,{children:"\u0437\u0430\u0449\u0438\u0449\u0435\u043d\u043e \u043e\u0442 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439"})," \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u043c\u043e\u0434\u0443\u043b\u0435\u0439"]}),"\n",(0,r.jsxs)(n.li,{children:["\u041f\u0435\u0440\u0435\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u043c\u043e\u0434\u0443\u043b\u044f ",(0,r.jsx)(n.strong,{children:"\u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u0430 \u0437\u0430\u0442\u0440\u0430\u0433\u0438\u0432\u0430\u0442\u044c"})," \u0434\u0440\u0443\u0433\u0438\u0435 \u043c\u043e\u0434\u0443\u043b\u0438"]}),"\n",(0,r.jsxs)(n.li,{children:["\u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043c\u043e\u0434\u0443\u043b\u044f \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c ",(0,r.jsx)(n.strong,{children:"\u043b\u0435\u0433\u043a\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c\u044b"}),"\n",(0,r.jsxs)(n.blockquote,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"\u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043c\u043e\u0434\u0443\u043b\u044f"})," - \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f, \u043b\u043e\u043c\u0430\u044e\u0449\u0438\u0435 \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u044f \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0435\u0439-\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u043c\u043e\u0434\u0443\u043b\u044f."]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:'\u0414\u043e\u0441\u0442\u0438\u0447\u044c \u044d\u0442\u0438\u0445 \u0446\u0435\u043b\u0435\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 (Public API), \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0435\u0433\u043e \u0441\u043e\u0431\u043e\u0439 \u0435\u0434\u0438\u043d\u0443\u044e \u0442\u043e\u0447\u043a\u0443 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044f\u043c \u043c\u043e\u0434\u0443\u043b\u044f \u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0449\u0435\u0433\u043e "\u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442" \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043c\u043e\u0434\u0443\u043b\u044f \u0441 \u0432\u043d\u0435\u0448\u043d\u0438\u043c \u043c\u0438\u0440\u043e\u043c.'}),"\n",(0,r.jsx)(n.admonition,{title:"\u0412\u0430\u0436\u043d\u043e",type:"info",children:(0,r.jsx)(n.p,{children:"\u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438 \u0434\u043e\u043b\u0436\u043d\u0430 \u0438\u043c\u0435\u0442\u044c \u0435\u0434\u0438\u043d\u0443\u044e \u0442\u043e\u0447\u043a\u0443 \u0432\u0445\u043e\u0434\u0430, \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0443\u044e \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441"})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-sh",children:"\u2514\u2500\u2500 features/\xa0 \xa0 \xa0 \xa0 \xa0 \xa0 \xa0 \xa0 \xa0 \xa0 \xa0 \xa0 #\xa0\n \u2514\u2500\u2500 auth-form/\xa0 \xa0 \xa0 \xa0 \xa0 \xa0 \xa0 \xa0 \xa0 # \u0412\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u044f\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0444\u0438\u0447\u0438\n \u251c\u2500\u2500 ui/\xa0 \xa0 \xa0 \xa0 \xa0 \xa0 \xa0 \xa0 \xa0 \xa0 #\n \u251c\u2500\u2500 model/\xa0 \xa0 \xa0 \xa0 \xa0 \xa0 \xa0 \xa0 \xa0#\n \u251c\u2500\u2500 {...}/\xa0 \xa0 \xa0 \xa0 \xa0 \xa0 \xa0 \xa0 \xa0#\n \u2514\u2500\u2500 index.ts\xa0 \xa0 \xa0 \xa0 \xa0 \xa0 \xa0 \xa0# \u042d\u043d\u0442\u0440\u0438\u043f\u043e\u0438\u043d\u0442 \u0444\u0438\u0447\u0438 \u0441 \u0435\u0435 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u043c API\n"})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",metastring:'title="**/**/index.ts"',children:'export { Form as AuthForm } from "./ui"\nexport * as authFormModel from "./model"\n'})}),"\n",(0,r.jsx)(n.h2,{id:"requirements-for-the-public-api",children:"\u0422\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f \u043a \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u043e\u043c\u0443 API"}),"\n",(0,r.jsxs)(n.p,{children:["\u0412\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u044d\u0442\u0438\u0445 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u0432\u0435\u0441\u0442\u0438 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0441 \u043c\u043e\u0434\u0443\u043b\u0435\u043c \u043a ",(0,r.jsx)(n.strong,{children:"\u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044e \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430-\u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0430"})," \u0438, \u0442\u0435\u043c \u0441\u0430\u043c\u044b\u043c, \u0434\u043e\u0441\u0442\u0438\u0447\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u043e\u0441\u0442\u0438 \u0438 \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430 \u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u043c\u043e\u0434\u0443\u043b\u044f."]}),"\n",(0,r.jsx)(n.h3,{id:"1-access-control",children:"1. \u041a\u043e\u043d\u0442\u0440\u043e\u043b\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u0430"}),"\n",(0,r.jsxs)(n.p,{children:["Public API \u0434\u043e\u043b\u0436\u0435\u043d \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0442\u044c ",(0,r.jsx)(n.strong,{children:"\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u0430"})," \u043a \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u043c\u0443 \u043c\u043e\u0434\u0443\u043b\u044f"]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["\u0414\u0440\u0443\u0433\u0438\u0435 \u0447\u0430\u0441\u0442\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043c\u043e\u0433\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c ",(0,r.jsx)(n.strong,{children:"\u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0435 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438 \u043c\u043e\u0434\u0443\u043b\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u044b \u0432 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u043e\u043c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0435"})]}),"\n",(0,r.jsxs)(n.li,{children:["\u0412\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u044f\u044f \u0447\u0430\u0441\u0442\u044c \u043c\u043e\u0434\u0443\u043b\u044f \u0437\u0430 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u043c\u0438 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 ",(0,r.jsx)(n.strong,{children:"\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0430\u043c\u043e\u043c\u0443 \u043c\u043e\u0434\u0443\u043b\u044e"}),"."]}),"\n"]}),"\n",(0,r.jsx)(n.h4,{id:"examples",children:"\u041f\u0440\u0438\u043c\u0435\u0440\u044b"}),"\n",(0,r.jsx)(n.h5,{id:"suspension-from-private-imports",children:"\u041e\u0442\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u043e\u0442 \u043f\u0440\u0438\u0432\u0430\u0442\u043d\u044b\u0445 \u0438\u043c\u043f\u043e\u0440\u0442\u043e\u0432"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"\u041f\u043b\u043e\u0445\u043e"}),": \u0418\u0434\u0435\u0442 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0435 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u043a \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u043c \u0447\u0430\u0441\u0442\u044f\u043c \u043c\u043e\u0434\u0443\u043b\u044f, \u043c\u0438\u043d\u0443\u044f \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 - \u043e\u043f\u0430\u0441\u043d\u043e, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u043f\u0440\u0438 \u0440\u0435\u0444\u0430\u043a\u0442\u043e\u0440\u0438\u043d\u0433\u0435 \u043c\u043e\u0434\u0443\u043b\u044f"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-diff",children:'- import { Form } from "features/auth-form/components/view/form"\n'})}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"\u0425\u043e\u0440\u043e\u0448\u043e:"})," API \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0443\u0436\u043d\u043e\u0435 \u0438 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u043d\u043e\u0435, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0443 \u043c\u043e\u0434\u0443\u043b\u044f \u0442\u0435\u043f\u0435\u0440\u044c \u043d\u0443\u0436\u043d\u043e \u0434\u0443\u043c\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043e \u0442\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u043b\u043e\u043c\u0430\u0442\u044c Public API \u043f\u0440\u0438 \u0440\u0435\u0444\u0430\u043a\u0442\u043e\u0440\u0438\u043d\u0433\u0435"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-diff",children:'+ import { AuthForm } from "features/auth-form"\n'})}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"2-sustainability-for-changes",children:"2. \u0423\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u043e\u0441\u0442\u044c \u043a \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f\u043c"}),"\n",(0,r.jsxs)(n.p,{children:["Public API \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c ",(0,r.jsx)(n.strong,{children:"\u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u044b\u043c \u043a \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f\u043c"})," \u0432\u043d\u0443\u0442\u0440\u0438 \u043c\u043e\u0434\u0443\u043b\u044f"]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"\u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f, \u043b\u043e\u043c\u0430\u044e\u0449\u0438\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043c\u043e\u0434\u0443\u043b\u044f, \u0434\u043e\u043b\u0436\u043d\u044b \u043e\u0442\u0440\u0430\u0436\u0430\u0442\u044c\u0441\u044f \u0432 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0438 Public API"}),"\n"]}),"\n",(0,r.jsx)(n.h4,{id:"examples",children:"\u041f\u0440\u0438\u043c\u0435\u0440\u044b"}),"\n",(0,r.jsx)(n.h5,{id:"abstracting-from-the-implementation",children:"\u0410\u0431\u0441\u0442\u0440\u0430\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043e\u0442 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438"}),"\n",(0,r.jsx)(n.p,{children:"\u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442\u044c \u043a \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044e Public API"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"\u041f\u043b\u043e\u0445\u043e:"})," \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u0438\u043b\u0438 \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0435 \u044d\u0442\u043e\u0433\u043e \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430 \u0432\u043d\u0443\u0442\u0440\u0438 \u0444\u0438\u0447\u0438 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u0442 \u043a \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0440\u0435\u0444\u0430\u043a\u0442\u043e\u0440\u0438\u0442\u044c \u0438\u043c\u043f\u043e\u0440\u0442\u044b \u0432\u043e \u0432\u0441\u0435\u0445 \u043c\u0435\u0441\u0442\u0430\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430."]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-diff",children:'- import { Form } from "features/auth-form/ui/form"\n'})}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"\u0425\u043e\u0440\u043e\u0448\u043e:"}),' \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0444\u0438\u0447\u0438 \u043d\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442 \u0435\u0451 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u044e\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443, \u0432\u043d\u0435\u0448\u043d\u0438\u0435 "\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438" \u0444\u0438\u0447\u0438 \u043d\u0435 \u043f\u043e\u0441\u0442\u0440\u0430\u0434\u0430\u044e\u0442 \u043e\u0442 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u0438\u043b\u0438 \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u044f \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430 \u0432\u043d\u0443\u0442\u0440\u0438 \u0444\u0438\u0447\u0438']}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-diff",children:'+ import { AuthForm } from "features/auth-form"\n'})}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"3-integrability",children:"3. \u0418\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u0443\u0435\u043c\u043e\u0441\u0442\u044c"}),"\n",(0,r.jsxs)(n.p,{children:["Public API \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u043f\u043e\u0441\u043e\u0431\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c ",(0,r.jsx)(n.strong,{children:"\u043b\u0435\u0433\u043a\u043e\u0439 \u0438 \u0433\u0438\u0431\u043a\u043e\u0439 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438"})]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"\u0414\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0443\u0434\u043e\u0431\u0435\u043d \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u0447\u0430\u0441\u0442\u044f\u043c\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u0432 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438, \u0440\u0435\u0448\u0430\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u043a\u043e\u043b\u043b\u0438\u0437\u0438\u0438 \u0438\u043c\u0435\u043d"}),"\n"]}),"\n",(0,r.jsx)(n.h4,{id:"examples",children:"\u041f\u0440\u0438\u043c\u0435\u0440\u044b"}),"\n",(0,r.jsx)(n.h5,{id:"name-collision",children:"\u041a\u043e\u043b\u043b\u0438\u0437\u0438\u044f \u0438\u043c\u0435\u043d"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"\u041f\u043b\u043e\u0445\u043e:"})," \u0431\u0443\u0434\u0435\u0442 \u043a\u043e\u043b\u043b\u0438\u0437\u0438\u044f \u0438\u043c\u0435\u043d"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",metastring:'title="features/auth-form/index.ts"',children:'export { Form } from "./ui"\nexport * as model from "./model"\n'})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",metastring:'title="features/post-form/index.ts"',children:'export { Form } from "./ui"\nexport * as model from "./model"\n'})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-diff",children:'- import { Form, model } from "features/auth-form"\n- import { Form, model } from "features/post-form"\n'})}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"\u0425\u043e\u0440\u043e\u0448\u043e:"})," \u043a\u043e\u043b\u043b\u0438\u0437\u0438\u044f \u0440\u0435\u0448\u0435\u043d\u0430 \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",metastring:'title="features/auth-form/index.ts"',children:'export { Form as AuthForm } from "./ui"\nexport * as authFormModel from "./model"\n'})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",metastring:'title="features/post-form/index.ts"',children:'export { Form as PostForm } from "./ui"\nexport * as postFormModel from "./model"\n'})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-diff",children:'+ import { AuthForm, authFormModel } from "features/auth-form"\n+ import { PostForm, postFormModel } from "features/post-form"\n'})}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(n.h5,{id:"flexible-use",children:"\u0413\u0438\u0431\u043a\u043e\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"\u041f\u043b\u043e\u0445\u043e:"}),' \u043d\u0435\u0443\u0434\u043e\u0431\u043d\u043e \u043f\u0438\u0441\u0430\u0442\u044c, \u043d\u0435\u0443\u0434\u043e\u0431\u043d\u043e \u0447\u0438\u0442\u0430\u0442\u044c, "\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c" \u0444\u0438\u0447\u0438 \u0441\u0442\u0440\u0430\u0434\u0430\u0435\u0442']}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-diff",children:'- import { storeActionUpdateUserDetails } from "features/auth-form"\n- dispatch(storeActionUpdateUserDetails(...))\n'})}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"\u0425\u043e\u0440\u043e\u0448\u043e:"}),' "\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c" \u0444\u0438\u0447\u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043d\u0443\u0436\u043d\u044b\u043c \u0432\u0435\u0449\u0430\u043c \u0438\u0442\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e \u0438 \u0433\u0438\u0431\u043a\u043e']}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-diff",children:'+ import { authFormModel } from "features/auth-form"\n+ dispatch(authFormModel.effects.updateUserDetails(...)) // redux\n+ authFormModel.updateUserDetailsFx(...) // effector\n'})}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(n.h5,{id:"resolution-of-collisions",children:"\u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043a\u043e\u043b\u043b\u0438\u0437\u0438\u0439"}),"\n",(0,r.jsx)(n.p,{children:"\u041a\u043e\u043b\u043b\u0438\u0437\u0438\u044f \u0438\u043c\u0435\u043d \u0434\u043e\u043b\u0436\u043d\u0430 \u0440\u0435\u0448\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430, \u0430 \u043d\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"\u041f\u043b\u043e\u0445\u043e:"})," \u043a\u043e\u043b\u043b\u0438\u0437\u0438\u044f \u0438\u043c\u0435\u043d \u0440\u0435\u0448\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",metastring:'title="features/auth-form/index.ts"',children:'export { AuthForm } from "./ui"\nexport { authFormActions, authFormReducer } from "model"\n'})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",metastring:'title="features/post-form/index.ts"',children:'export { PostForm } from "./ui"\nexport { postFormActions, postFormReducer } from "model"\n'})}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"\u0425\u043e\u0440\u043e\u0448\u043e:"})," \u043a\u043e\u043b\u043b\u0438\u0437\u0438\u044f \u0438\u043c\u0435\u043d \u0440\u0435\u0448\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",metastring:'title="features/auth-form/model.ts"',children:"export { actions, reducer }\n"})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",metastring:'title="features/auth-form/index.ts"',children:'export { Form as AuthForm } from "./ui"\nexport * as authFormModel from "./model"\n'})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",metastring:'title="features/post-form/model.ts"',children:"export { actions, reducer }\n"})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",metastring:'title="features/post-form/index.ts"',children:'export { Form as PostForm } from "./ui"\nexport * as postFormModel from "./model"\n'})}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"about-re-exports",children:"\u041e \u0440\u0435\u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0430\u0445"}),"\n",(0,r.jsxs)(n.p,{children:["\u0412 JavaScript \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043c\u043e\u0434\u0443\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u0435\u0442\u0441\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0440\u0435\u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0430 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0435\u0439 \u0438\u0437\u043d\u0443\u0442\u0440\u0438 \u043c\u043e\u0434\u0443\u043b\u044f \u0432 ",(0,r.jsx)(n.code,{children:"index"})," \u0444\u0430\u0439\u043b\u0435:"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",metastring:'title="**/**/index.ts"',children:'export { Form as AuthForm } from "./ui"\nexport * as authModel from "./model"\n'})}),"\n",(0,r.jsx)(n.h3,{id:"disadvantages",children:"\u041d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043a\u0438"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:["\u0412 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u0431\u0430\u043d\u0434\u043b\u0435\u0440\u043e\u0432 \u0438\u0437-\u0437\u0430 \u0440\u0435\u044d\u043a\u0441\u043f\u043e\u0440\u0442\u043e\u0432 ",(0,r.jsx)(n.strong,{children:"\u0445\u0443\u0436\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043a\u043e\u0434-\u0441\u043f\u043b\u0438\u0442\u0442\u0438\u043d\u0433"}),", \u0442.\u043a. ",(0,r.jsx)(n.a,{href:"https://webpack.js.org/guides/tree-shaking/",children:"tree-shaking"})," \u043f\u0440\u0438 \u0442\u0430\u043a\u043e\u043c \u043f\u043e\u0434\u0445\u043e\u0434\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e \u043e\u0442\u0431\u0440\u043e\u0441\u0438\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043c\u043e\u0434\u0443\u043b\u044c \u0446\u0435\u043b\u0438\u043a\u043e\u043c, \u043d\u043e \u043d\u0435 \u0435\u0433\u043e \u0447\u0430\u0441\u0442\u044c."]}),"\n",(0,r.jsxs)(n.blockquote,{children:["\n",(0,r.jsxs)(n.p,{children:["\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0438\u043c\u043f\u043e\u0440\u0442 ",(0,r.jsx)(n.code,{children:"authModel"})," \u0432 \u043c\u043e\u0434\u0435\u043b\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u0442 \u043a \u043f\u043e\u043f\u0430\u0434\u0430\u043d\u0438\u044e \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430 ",(0,r.jsx)(n.code,{children:"AuthForm"})," \u0432 \u0447\u0430\u043d\u043a \u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u044d\u0442\u043e\u0442 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u0442\u0430\u043c \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f."]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:'\u041a\u0430\u043a \u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u0435, \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0447\u0430\u043d\u043a\u0430 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0434\u043e\u0440\u043e\u0436\u0435, \u0442.\u043a. \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u0434\u043e\u043b\u0436\u0435\u043d \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0432\u0441\u0435 \u043c\u043e\u0434\u0443\u043b\u0438 \u0432 \u043d\u0435\u043c, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0438 \u0442\u0435, \u0447\u0442\u043e \u043f\u043e\u043f\u0430\u043b\u0438 \u0432 \u0431\u0430\u043d\u0434\u043b "\u0437\u0430 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044e"'}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"possible-solutions",children:"\u0412\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u043f\u0443\u0442\u0438 \u0440\u0435\u0448\u0435\u043d\u0438\u044f"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"webpack"})," \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c \u0444\u0430\u0439\u043b\u044b-\u0440\u0435\u044d\u043a\u0441\u043f\u043e\u0440\u0442\u044b \u043a\u0430\u043a ",(0,r.jsx)(n.a,{href:"https://webpack.js.org/guides/tree-shaking/#mark-the-file-as-side-effect-free",children:(0,r.jsx)(n.strong,{children:"side effects free"})})," - \u044d\u0442\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u0442 ",(0,r.jsx)(n.code,{children:"webpack"})," \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u0430\u0433\u0440\u0435\u0441\u0441\u0438\u0432\u043d\u044b\u0435 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u0442\u0430\u043a\u0438\u043c \u0444\u0430\u0439\u043b\u043e\u043c"]}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"see-also",children:"\u0421\u043c. \u0442\u0430\u043a\u0436\u0435"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"https://github.com/feature-sliced/documentation/discussions/41",children:"(\u041e\u0431\u0441\u0443\u0436\u0434\u0435\u043d\u0438\u0435) Public API \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u0438"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsxs)(n.a,{href:"https://ru.wikipedia.org/wiki/SOLID",children:["\u041f\u0440\u0438\u043d\u0446\u0438\u043f\u044b ",(0,r.jsx)(n.strong,{children:"SOLID"})]})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsxs)(n.a,{href:"https://ru.wikipedia.org/wiki/GRASP",children:["\u041f\u0430\u0442\u0442\u0435\u0440\u043d\u044b ",(0,r.jsx)(n.strong,{children:"GRASP"})]})}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(a,{...e})}):a(e)}},1100:(e,n,s)=>{s.d(n,{R:()=>t,x:()=>o});var r=s(758);const i={},l=r.createContext(i);function t(e){const n=r.useContext(l);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:t(e.components),r.createElement(l.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunk_feature_sliced_documentation=self.webpackChunk_feature_sliced_documentation||[]).push([[427],{1134:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>d,contentTitle:()=>t,default:()=>h,frontMatter:()=>l,metadata:()=>o,toc:()=>c});var r=s(6070),i=s(1100);const l={sidebar_position:3,sidebar_label:"Public API",pagination_next:"about/index"},t="\u041f\u0443\u0431\u043b\u0438\u0447\u043d\u043e\u0435 API \u043c\u043e\u0434\u0443\u043b\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f",o={id:"reference/public-api",title:"\u041f\u0443\u0431\u043b\u0438\u0447\u043d\u043e\u0435 API \u043c\u043e\u0434\u0443\u043b\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f",description:"\u041a\u0430\u0436\u0434\u0430\u044f \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044c \u043c\u0435\u0442\u043e\u0434\u043e\u043b\u043e\u0433\u0438\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u0443\u0434\u043e\u0431\u043d\u044b\u0439 \u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0438 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u043c\u043e\u0434\u0443\u043b\u044c.",source:"@site/i18n/ru/docusaurus-plugin-content-docs/current/reference/public-api.md",sourceDirName:"reference",slug:"/reference/public-api",permalink:"/ru/docs/reference/public-api",draft:!1,unlisted:!1,editUrl:"https://github.com/feature-sliced/documentation/edit/master/i18n/ru/docusaurus-plugin-content-docs/current/reference/public-api.md",tags:[],version:"current",lastUpdatedAt:1728325386e3,sidebarPosition:3,frontMatter:{sidebar_position:3,sidebar_label:"Public API",pagination_next:"about/index"},sidebar:"referenceSidebar",previous:{title:"\u0421\u043b\u0430\u0439\u0441\u044b \u0438 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u044b",permalink:"/ru/docs/reference/slices-segments"},next:{title:"\ud83c\udf70 \u041e \u043c\u0435\u0442\u043e\u0434\u043e\u043b\u043e\u0433\u0438\u0438",permalink:"/ru/docs/about/"}},d={},c=[{value:"\u0426\u0435\u043b\u0438",id:"goals",level:2},{value:"\u0422\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f \u043a \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u043e\u043c\u0443 API",id:"requirements-for-the-public-api",level:2},{value:"1. \u041a\u043e\u043d\u0442\u0440\u043e\u043b\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u0430",id:"1-access-control",level:3},{value:"\u041f\u0440\u0438\u043c\u0435\u0440\u044b",id:"examples",level:4},{value:"\u041e\u0442\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u043e\u0442 \u043f\u0440\u0438\u0432\u0430\u0442\u043d\u044b\u0445 \u0438\u043c\u043f\u043e\u0440\u0442\u043e\u0432",id:"suspension-from-private-imports",level:5},{value:"2. \u0423\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u043e\u0441\u0442\u044c \u043a \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f\u043c",id:"2-sustainability-for-changes",level:3},{value:"\u041f\u0440\u0438\u043c\u0435\u0440\u044b",id:"examples",level:4},{value:"\u0410\u0431\u0441\u0442\u0440\u0430\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043e\u0442 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438",id:"abstracting-from-the-implementation",level:5},{value:"3. \u0418\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u0443\u0435\u043c\u043e\u0441\u0442\u044c",id:"3-integrability",level:3},{value:"\u041f\u0440\u0438\u043c\u0435\u0440\u044b",id:"examples",level:4},{value:"\u041a\u043e\u043b\u043b\u0438\u0437\u0438\u044f \u0438\u043c\u0435\u043d",id:"name-collision",level:5},{value:"\u0413\u0438\u0431\u043a\u043e\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435",id:"flexible-use",level:5},{value:"\u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043a\u043e\u043b\u043b\u0438\u0437\u0438\u0439",id:"resolution-of-collisions",level:5},{value:"\u041e \u0440\u0435\u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0430\u0445",id:"about-re-exports",level:2},{value:"\u041d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043a\u0438",id:"disadvantages",level:3},{value:"\u0412\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u043f\u0443\u0442\u0438 \u0440\u0435\u0448\u0435\u043d\u0438\u044f",id:"possible-solutions",level:3},{value:"\u0421\u043c. \u0442\u0430\u043a\u0436\u0435",id:"see-also",level:2}];function a(e){const n={a:"a",admonition:"admonition",blockquote:"blockquote",code:"code",em:"em",h1:"h1",h2:"h2",h3:"h3",h4:"h4",h5:"h5",header:"header",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,i.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.header,{children:(0,r.jsx)(n.h1,{id:"\u043f\u0443\u0431\u043b\u0438\u0447\u043d\u043e\u0435-api-\u043c\u043e\u0434\u0443\u043b\u044f-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f",children:"\u041f\u0443\u0431\u043b\u0438\u0447\u043d\u043e\u0435 API \u043c\u043e\u0434\u0443\u043b\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f"})}),"\n",(0,r.jsxs)(n.p,{children:["\u041a\u0430\u0436\u0434\u0430\u044f \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044c \u043c\u0435\u0442\u043e\u0434\u043e\u043b\u043e\u0433\u0438\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043a\u0430\u043a ",(0,r.jsx)(n.strong,{children:"\u0443\u0434\u043e\u0431\u043d\u044b\u0439 \u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0438 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u043c\u043e\u0434\u0443\u043b\u044c."})]}),"\n",(0,r.jsx)(n.h2,{id:"goals",children:"\u0426\u0435\u043b\u0438"}),"\n",(0,r.jsxs)(n.p,{children:["\u0423\u0434\u043e\u0431\u0441\u0442\u0432\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u043c\u043e\u0434\u0443\u043b\u044f \u0434\u043e\u0441\u0442\u0438\u0433\u0430\u0435\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 ",(0,r.jsx)(n.em,{children:"\u0440\u044f\u0434\u0430 \u0446\u0435\u043b\u0435\u0439"}),":"]}),"\n",(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsxs)(n.li,{children:["\u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c ",(0,r.jsx)(n.strong,{children:"\u0437\u0430\u0449\u0438\u0449\u0435\u043d\u043e \u043e\u0442 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439"})," \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u043c\u043e\u0434\u0443\u043b\u0435\u0439"]}),"\n",(0,r.jsxs)(n.li,{children:["\u041f\u0435\u0440\u0435\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u043c\u043e\u0434\u0443\u043b\u044f ",(0,r.jsx)(n.strong,{children:"\u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u0430 \u0437\u0430\u0442\u0440\u0430\u0433\u0438\u0432\u0430\u0442\u044c"})," \u0434\u0440\u0443\u0433\u0438\u0435 \u043c\u043e\u0434\u0443\u043b\u0438"]}),"\n",(0,r.jsxs)(n.li,{children:["\u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043c\u043e\u0434\u0443\u043b\u044f \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c ",(0,r.jsx)(n.strong,{children:"\u043b\u0435\u0433\u043a\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c\u044b"}),"\n",(0,r.jsxs)(n.blockquote,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"\u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043c\u043e\u0434\u0443\u043b\u044f"})," - \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f, \u043b\u043e\u043c\u0430\u044e\u0449\u0438\u0435 \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u044f \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0435\u0439-\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u043c\u043e\u0434\u0443\u043b\u044f."]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:'\u0414\u043e\u0441\u0442\u0438\u0447\u044c \u044d\u0442\u0438\u0445 \u0446\u0435\u043b\u0435\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 (Public API), \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0435\u0433\u043e \u0441\u043e\u0431\u043e\u0439 \u0435\u0434\u0438\u043d\u0443\u044e \u0442\u043e\u0447\u043a\u0443 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044f\u043c \u043c\u043e\u0434\u0443\u043b\u044f \u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0449\u0435\u0433\u043e "\u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442" \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043c\u043e\u0434\u0443\u043b\u044f \u0441 \u0432\u043d\u0435\u0448\u043d\u0438\u043c \u043c\u0438\u0440\u043e\u043c.'}),"\n",(0,r.jsx)(n.admonition,{title:"\u0412\u0430\u0436\u043d\u043e",type:"info",children:(0,r.jsx)(n.p,{children:"\u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438 \u0434\u043e\u043b\u0436\u043d\u0430 \u0438\u043c\u0435\u0442\u044c \u0435\u0434\u0438\u043d\u0443\u044e \u0442\u043e\u0447\u043a\u0443 \u0432\u0445\u043e\u0434\u0430, \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0443\u044e \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441"})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-sh",children:"\u2514\u2500\u2500 features/\xa0 \xa0 \xa0 \xa0 \xa0 \xa0 \xa0 \xa0 \xa0 \xa0 \xa0 \xa0 #\xa0\n \u2514\u2500\u2500 auth-form/\xa0 \xa0 \xa0 \xa0 \xa0 \xa0 \xa0 \xa0 \xa0 # \u0412\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u044f\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0444\u0438\u0447\u0438\n \u251c\u2500\u2500 ui/\xa0 \xa0 \xa0 \xa0 \xa0 \xa0 \xa0 \xa0 \xa0 \xa0 #\n \u251c\u2500\u2500 model/\xa0 \xa0 \xa0 \xa0 \xa0 \xa0 \xa0 \xa0 \xa0#\n \u251c\u2500\u2500 {...}/\xa0 \xa0 \xa0 \xa0 \xa0 \xa0 \xa0 \xa0 \xa0#\n \u2514\u2500\u2500 index.ts\xa0 \xa0 \xa0 \xa0 \xa0 \xa0 \xa0 \xa0# \u042d\u043d\u0442\u0440\u0438\u043f\u043e\u0438\u043d\u0442 \u0444\u0438\u0447\u0438 \u0441 \u0435\u0435 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u043c API\n"})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",metastring:'title="**/**/index.ts"',children:'export { Form as AuthForm } from "./ui"\nexport * as authFormModel from "./model"\n'})}),"\n",(0,r.jsx)(n.h2,{id:"requirements-for-the-public-api",children:"\u0422\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f \u043a \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u043e\u043c\u0443 API"}),"\n",(0,r.jsxs)(n.p,{children:["\u0412\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u044d\u0442\u0438\u0445 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u0432\u0435\u0441\u0442\u0438 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0441 \u043c\u043e\u0434\u0443\u043b\u0435\u043c \u043a ",(0,r.jsx)(n.strong,{children:"\u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044e \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430-\u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0430"})," \u0438, \u0442\u0435\u043c \u0441\u0430\u043c\u044b\u043c, \u0434\u043e\u0441\u0442\u0438\u0447\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u043e\u0441\u0442\u0438 \u0438 \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430 \u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u043c\u043e\u0434\u0443\u043b\u044f."]}),"\n",(0,r.jsx)(n.h3,{id:"1-access-control",children:"1. \u041a\u043e\u043d\u0442\u0440\u043e\u043b\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u0430"}),"\n",(0,r.jsxs)(n.p,{children:["Public API \u0434\u043e\u043b\u0436\u0435\u043d \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0442\u044c ",(0,r.jsx)(n.strong,{children:"\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u0430"})," \u043a \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u043c\u0443 \u043c\u043e\u0434\u0443\u043b\u044f"]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["\u0414\u0440\u0443\u0433\u0438\u0435 \u0447\u0430\u0441\u0442\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043c\u043e\u0433\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c ",(0,r.jsx)(n.strong,{children:"\u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0435 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438 \u043c\u043e\u0434\u0443\u043b\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u044b \u0432 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u043e\u043c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0435"})]}),"\n",(0,r.jsxs)(n.li,{children:["\u0412\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u044f\u044f \u0447\u0430\u0441\u0442\u044c \u043c\u043e\u0434\u0443\u043b\u044f \u0437\u0430 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u043c\u0438 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 ",(0,r.jsx)(n.strong,{children:"\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0430\u043c\u043e\u043c\u0443 \u043c\u043e\u0434\u0443\u043b\u044e"}),"."]}),"\n"]}),"\n",(0,r.jsx)(n.h4,{id:"examples",children:"\u041f\u0440\u0438\u043c\u0435\u0440\u044b"}),"\n",(0,r.jsx)(n.h5,{id:"suspension-from-private-imports",children:"\u041e\u0442\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u043e\u0442 \u043f\u0440\u0438\u0432\u0430\u0442\u043d\u044b\u0445 \u0438\u043c\u043f\u043e\u0440\u0442\u043e\u0432"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"\u041f\u043b\u043e\u0445\u043e"}),": \u0418\u0434\u0435\u0442 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0435 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u043a \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u043c \u0447\u0430\u0441\u0442\u044f\u043c \u043c\u043e\u0434\u0443\u043b\u044f, \u043c\u0438\u043d\u0443\u044f \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 - \u043e\u043f\u0430\u0441\u043d\u043e, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u043f\u0440\u0438 \u0440\u0435\u0444\u0430\u043a\u0442\u043e\u0440\u0438\u043d\u0433\u0435 \u043c\u043e\u0434\u0443\u043b\u044f"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-diff",children:'- import { Form } from "features/auth-form/components/view/form"\n'})}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"\u0425\u043e\u0440\u043e\u0448\u043e:"})," API \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0443\u0436\u043d\u043e\u0435 \u0438 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u043d\u043e\u0435, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0443 \u043c\u043e\u0434\u0443\u043b\u044f \u0442\u0435\u043f\u0435\u0440\u044c \u043d\u0443\u0436\u043d\u043e \u0434\u0443\u043c\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043e \u0442\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u043b\u043e\u043c\u0430\u0442\u044c Public API \u043f\u0440\u0438 \u0440\u0435\u0444\u0430\u043a\u0442\u043e\u0440\u0438\u043d\u0433\u0435"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-diff",children:'+ import { AuthForm } from "features/auth-form"\n'})}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"2-sustainability-for-changes",children:"2. \u0423\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u043e\u0441\u0442\u044c \u043a \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f\u043c"}),"\n",(0,r.jsxs)(n.p,{children:["Public API \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c ",(0,r.jsx)(n.strong,{children:"\u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u044b\u043c \u043a \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f\u043c"})," \u0432\u043d\u0443\u0442\u0440\u0438 \u043c\u043e\u0434\u0443\u043b\u044f"]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"\u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f, \u043b\u043e\u043c\u0430\u044e\u0449\u0438\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043c\u043e\u0434\u0443\u043b\u044f, \u0434\u043e\u043b\u0436\u043d\u044b \u043e\u0442\u0440\u0430\u0436\u0430\u0442\u044c\u0441\u044f \u0432 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0438 Public API"}),"\n"]}),"\n",(0,r.jsx)(n.h4,{id:"examples",children:"\u041f\u0440\u0438\u043c\u0435\u0440\u044b"}),"\n",(0,r.jsx)(n.h5,{id:"abstracting-from-the-implementation",children:"\u0410\u0431\u0441\u0442\u0440\u0430\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043e\u0442 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438"}),"\n",(0,r.jsx)(n.p,{children:"\u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442\u044c \u043a \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044e Public API"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"\u041f\u043b\u043e\u0445\u043e:"})," \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u0438\u043b\u0438 \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0435 \u044d\u0442\u043e\u0433\u043e \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430 \u0432\u043d\u0443\u0442\u0440\u0438 \u0444\u0438\u0447\u0438 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u0442 \u043a \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0440\u0435\u0444\u0430\u043a\u0442\u043e\u0440\u0438\u0442\u044c \u0438\u043c\u043f\u043e\u0440\u0442\u044b \u0432\u043e \u0432\u0441\u0435\u0445 \u043c\u0435\u0441\u0442\u0430\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430."]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-diff",children:'- import { Form } from "features/auth-form/ui/form"\n'})}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"\u0425\u043e\u0440\u043e\u0448\u043e:"}),' \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0444\u0438\u0447\u0438 \u043d\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442 \u0435\u0451 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u044e\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443, \u0432\u043d\u0435\u0448\u043d\u0438\u0435 "\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438" \u0444\u0438\u0447\u0438 \u043d\u0435 \u043f\u043e\u0441\u0442\u0440\u0430\u0434\u0430\u044e\u0442 \u043e\u0442 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u0438\u043b\u0438 \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u044f \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430 \u0432\u043d\u0443\u0442\u0440\u0438 \u0444\u0438\u0447\u0438']}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-diff",children:'+ import { AuthForm } from "features/auth-form"\n'})}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"3-integrability",children:"3. \u0418\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u0443\u0435\u043c\u043e\u0441\u0442\u044c"}),"\n",(0,r.jsxs)(n.p,{children:["Public API \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u043f\u043e\u0441\u043e\u0431\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c ",(0,r.jsx)(n.strong,{children:"\u043b\u0435\u0433\u043a\u043e\u0439 \u0438 \u0433\u0438\u0431\u043a\u043e\u0439 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438"})]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"\u0414\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0443\u0434\u043e\u0431\u0435\u043d \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u0447\u0430\u0441\u0442\u044f\u043c\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u0432 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438, \u0440\u0435\u0448\u0430\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u043a\u043e\u043b\u043b\u0438\u0437\u0438\u0438 \u0438\u043c\u0435\u043d"}),"\n"]}),"\n",(0,r.jsx)(n.h4,{id:"examples",children:"\u041f\u0440\u0438\u043c\u0435\u0440\u044b"}),"\n",(0,r.jsx)(n.h5,{id:"name-collision",children:"\u041a\u043e\u043b\u043b\u0438\u0437\u0438\u044f \u0438\u043c\u0435\u043d"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"\u041f\u043b\u043e\u0445\u043e:"})," \u0431\u0443\u0434\u0435\u0442 \u043a\u043e\u043b\u043b\u0438\u0437\u0438\u044f \u0438\u043c\u0435\u043d"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",metastring:'title="features/auth-form/index.ts"',children:'export { Form } from "./ui"\nexport * as model from "./model"\n'})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",metastring:'title="features/post-form/index.ts"',children:'export { Form } from "./ui"\nexport * as model from "./model"\n'})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-diff",children:'- import { Form, model } from "features/auth-form"\n- import { Form, model } from "features/post-form"\n'})}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"\u0425\u043e\u0440\u043e\u0448\u043e:"})," \u043a\u043e\u043b\u043b\u0438\u0437\u0438\u044f \u0440\u0435\u0448\u0435\u043d\u0430 \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",metastring:'title="features/auth-form/index.ts"',children:'export { Form as AuthForm } from "./ui"\nexport * as authFormModel from "./model"\n'})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",metastring:'title="features/post-form/index.ts"',children:'export { Form as PostForm } from "./ui"\nexport * as postFormModel from "./model"\n'})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-diff",children:'+ import { AuthForm, authFormModel } from "features/auth-form"\n+ import { PostForm, postFormModel } from "features/post-form"\n'})}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(n.h5,{id:"flexible-use",children:"\u0413\u0438\u0431\u043a\u043e\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"\u041f\u043b\u043e\u0445\u043e:"}),' \u043d\u0435\u0443\u0434\u043e\u0431\u043d\u043e \u043f\u0438\u0441\u0430\u0442\u044c, \u043d\u0435\u0443\u0434\u043e\u0431\u043d\u043e \u0447\u0438\u0442\u0430\u0442\u044c, "\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c" \u0444\u0438\u0447\u0438 \u0441\u0442\u0440\u0430\u0434\u0430\u0435\u0442']}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-diff",children:'- import { storeActionUpdateUserDetails } from "features/auth-form"\n- dispatch(storeActionUpdateUserDetails(...))\n'})}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"\u0425\u043e\u0440\u043e\u0448\u043e:"}),' "\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c" \u0444\u0438\u0447\u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043d\u0443\u0436\u043d\u044b\u043c \u0432\u0435\u0449\u0430\u043c \u0438\u0442\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e \u0438 \u0433\u0438\u0431\u043a\u043e']}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-diff",children:'+ import { authFormModel } from "features/auth-form"\n+ dispatch(authFormModel.effects.updateUserDetails(...)) // redux\n+ authFormModel.updateUserDetailsFx(...) // effector\n'})}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(n.h5,{id:"resolution-of-collisions",children:"\u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043a\u043e\u043b\u043b\u0438\u0437\u0438\u0439"}),"\n",(0,r.jsx)(n.p,{children:"\u041a\u043e\u043b\u043b\u0438\u0437\u0438\u044f \u0438\u043c\u0435\u043d \u0434\u043e\u043b\u0436\u043d\u0430 \u0440\u0435\u0448\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430, \u0430 \u043d\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"\u041f\u043b\u043e\u0445\u043e:"})," \u043a\u043e\u043b\u043b\u0438\u0437\u0438\u044f \u0438\u043c\u0435\u043d \u0440\u0435\u0448\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",metastring:'title="features/auth-form/index.ts"',children:'export { AuthForm } from "./ui"\nexport { authFormActions, authFormReducer } from "model"\n'})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",metastring:'title="features/post-form/index.ts"',children:'export { PostForm } from "./ui"\nexport { postFormActions, postFormReducer } from "model"\n'})}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"\u0425\u043e\u0440\u043e\u0448\u043e:"})," \u043a\u043e\u043b\u043b\u0438\u0437\u0438\u044f \u0438\u043c\u0435\u043d \u0440\u0435\u0448\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",metastring:'title="features/auth-form/model.ts"',children:"export { actions, reducer }\n"})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",metastring:'title="features/auth-form/index.ts"',children:'export { Form as AuthForm } from "./ui"\nexport * as authFormModel from "./model"\n'})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",metastring:'title="features/post-form/model.ts"',children:"export { actions, reducer }\n"})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",metastring:'title="features/post-form/index.ts"',children:'export { Form as PostForm } from "./ui"\nexport * as postFormModel from "./model"\n'})}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"about-re-exports",children:"\u041e \u0440\u0435\u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0430\u0445"}),"\n",(0,r.jsxs)(n.p,{children:["\u0412 JavaScript \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043c\u043e\u0434\u0443\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u0435\u0442\u0441\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0440\u0435\u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0430 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0435\u0439 \u0438\u0437\u043d\u0443\u0442\u0440\u0438 \u043c\u043e\u0434\u0443\u043b\u044f \u0432 ",(0,r.jsx)(n.code,{children:"index"})," \u0444\u0430\u0439\u043b\u0435:"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-ts",metastring:'title="**/**/index.ts"',children:'export { Form as AuthForm } from "./ui"\nexport * as authModel from "./model"\n'})}),"\n",(0,r.jsx)(n.h3,{id:"disadvantages",children:"\u041d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043a\u0438"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsxs)(n.p,{children:["\u0412 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u0431\u0430\u043d\u0434\u043b\u0435\u0440\u043e\u0432 \u0438\u0437-\u0437\u0430 \u0440\u0435\u044d\u043a\u0441\u043f\u043e\u0440\u0442\u043e\u0432 ",(0,r.jsx)(n.strong,{children:"\u0445\u0443\u0436\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043a\u043e\u0434-\u0441\u043f\u043b\u0438\u0442\u0442\u0438\u043d\u0433"}),", \u0442.\u043a. ",(0,r.jsx)(n.a,{href:"https://webpack.js.org/guides/tree-shaking/",children:"tree-shaking"})," \u043f\u0440\u0438 \u0442\u0430\u043a\u043e\u043c \u043f\u043e\u0434\u0445\u043e\u0434\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e \u043e\u0442\u0431\u0440\u043e\u0441\u0438\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043c\u043e\u0434\u0443\u043b\u044c \u0446\u0435\u043b\u0438\u043a\u043e\u043c, \u043d\u043e \u043d\u0435 \u0435\u0433\u043e \u0447\u0430\u0441\u0442\u044c."]}),"\n",(0,r.jsxs)(n.blockquote,{children:["\n",(0,r.jsxs)(n.p,{children:["\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0438\u043c\u043f\u043e\u0440\u0442 ",(0,r.jsx)(n.code,{children:"authModel"})," \u0432 \u043c\u043e\u0434\u0435\u043b\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u0442 \u043a \u043f\u043e\u043f\u0430\u0434\u0430\u043d\u0438\u044e \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430 ",(0,r.jsx)(n.code,{children:"AuthForm"})," \u0432 \u0447\u0430\u043d\u043a \u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u044d\u0442\u043e\u0442 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u0442\u0430\u043c \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f."]}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(n.li,{children:["\n",(0,r.jsx)(n.p,{children:'\u041a\u0430\u043a \u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u0435, \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0447\u0430\u043d\u043a\u0430 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0434\u043e\u0440\u043e\u0436\u0435, \u0442.\u043a. \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u0434\u043e\u043b\u0436\u0435\u043d \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0432\u0441\u0435 \u043c\u043e\u0434\u0443\u043b\u0438 \u0432 \u043d\u0435\u043c, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0438 \u0442\u0435, \u0447\u0442\u043e \u043f\u043e\u043f\u0430\u043b\u0438 \u0432 \u0431\u0430\u043d\u0434\u043b "\u0437\u0430 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044e"'}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"possible-solutions",children:"\u0412\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u043f\u0443\u0442\u0438 \u0440\u0435\u0448\u0435\u043d\u0438\u044f"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"webpack"})," \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c \u0444\u0430\u0439\u043b\u044b-\u0440\u0435\u044d\u043a\u0441\u043f\u043e\u0440\u0442\u044b \u043a\u0430\u043a ",(0,r.jsx)(n.a,{href:"https://webpack.js.org/guides/tree-shaking/#mark-the-file-as-side-effect-free",children:(0,r.jsx)(n.strong,{children:"side effects free"})})," - \u044d\u0442\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u0442 ",(0,r.jsx)(n.code,{children:"webpack"})," \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u0430\u0433\u0440\u0435\u0441\u0441\u0438\u0432\u043d\u044b\u0435 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u0442\u0430\u043a\u0438\u043c \u0444\u0430\u0439\u043b\u043e\u043c"]}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"see-also",children:"\u0421\u043c. \u0442\u0430\u043a\u0436\u0435"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"https://github.com/feature-sliced/documentation/discussions/41",children:"(\u041e\u0431\u0441\u0443\u0436\u0434\u0435\u043d\u0438\u0435) Public API \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u0438"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsxs)(n.a,{href:"https://ru.wikipedia.org/wiki/SOLID",children:["\u041f\u0440\u0438\u043d\u0446\u0438\u043f\u044b ",(0,r.jsx)(n.strong,{children:"SOLID"})]})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsxs)(n.a,{href:"https://ru.wikipedia.org/wiki/GRASP",children:["\u041f\u0430\u0442\u0442\u0435\u0440\u043d\u044b ",(0,r.jsx)(n.strong,{children:"GRASP"})]})}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(a,{...e})}):a(e)}},1100:(e,n,s)=>{s.d(n,{R:()=>t,x:()=>o});var r=s(758);const i={},l=r.createContext(i);function t(e){const n=r.useContext(l);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:t(e.components),r.createElement(l.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/ru/assets/js/3b64669e.8e1500cf.js b/ru/assets/js/3b64669e.0c0aa088.js similarity index 99% rename from ru/assets/js/3b64669e.8e1500cf.js rename to ru/assets/js/3b64669e.0c0aa088.js index e0c6ec9776..10223a30a3 100644 --- a/ru/assets/js/3b64669e.8e1500cf.js +++ b/ru/assets/js/3b64669e.0c0aa088.js @@ -1 +1 @@ -"use strict";(self.webpackChunk_feature_sliced_documentation=self.webpackChunk_feature_sliced_documentation||[]).push([[6400],{513:(n,e,t)=>{t.r(e),t.d(e,{assets:()=>a,contentTitle:()=>o,default:()=>l,frontMatter:()=>i,metadata:()=>d,toc:()=>u});var s=t(6070),r=t(1100);const i={sidebar_position:3,sidebar_label:"\u0422\u0438\u043f\u044b \u0437\u043d\u0430\u043d\u0438\u0439"},o="\u0422\u0438\u043f\u044b \u0437\u043d\u0430\u043d\u0438\u0439 \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0435",d={id:"about/understanding/knowledge-types",title:"\u0422\u0438\u043f\u044b \u0437\u043d\u0430\u043d\u0438\u0439 \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0435",description:'\u0412 \u043b\u044e\u0431\u043e\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0434\u0435\u043b\u0438\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 "\u0442\u0438\u043f\u044b \u0437\u043d\u0430\u043d\u0438\u0439":',source:"@site/i18n/ru/docusaurus-plugin-content-docs/current/about/understanding/knowledge-types.md",sourceDirName:"about/understanding",slug:"/about/understanding/knowledge-types",permalink:"/ru/docs/about/understanding/knowledge-types",draft:!1,unlisted:!1,editUrl:"https://github.com/feature-sliced/documentation/edit/master/i18n/ru/docusaurus-plugin-content-docs/current/about/understanding/knowledge-types.md",tags:[],version:"current",lastUpdatedAt:1727607766e3,sidebarPosition:3,frontMatter:{sidebar_position:3,sidebar_label:"\u0422\u0438\u043f\u044b \u0437\u043d\u0430\u043d\u0438\u0439"},sidebar:"aboutSidebar",previous:{title:"\u041f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u043d\u043e\u0441\u0442\u0435\u0439",permalink:"/ru/docs/about/understanding/needs-driven"},next:{title:"\u041d\u0435\u0439\u043c\u0438\u043d\u0433",permalink:"/ru/docs/about/understanding/naming"}},a={},u=[{value:"\u0421\u043c. \u0442\u0430\u043a\u0436\u0435",id:"see-also",level:2}];function c(n){const e={a:"a",admonition:"admonition",br:"br",h1:"h1",h2:"h2",header:"header",li:"li",p:"p",strong:"strong",ul:"ul",...(0,r.R)(),...n.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(e.header,{children:(0,s.jsx)(e.h1,{id:"\u0442\u0438\u043f\u044b-\u0437\u043d\u0430\u043d\u0438\u0439-\u0432-\u043f\u0440\u043e\u0435\u043a\u0442\u0435",children:"\u0422\u0438\u043f\u044b \u0437\u043d\u0430\u043d\u0438\u0439 \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0435"})}),"\n",(0,s.jsx)(e.p,{children:'\u0412 \u043b\u044e\u0431\u043e\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0434\u0435\u043b\u0438\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 "\u0442\u0438\u043f\u044b \u0437\u043d\u0430\u043d\u0438\u0439":'}),"\n",(0,s.jsxs)(e.ul,{children:["\n",(0,s.jsxs)(e.li,{children:["\n",(0,s.jsxs)(e.p,{children:[(0,s.jsx)(e.strong,{children:"\u0424\u0443\u043d\u0434\u0430\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0437\u043d\u0430\u043d\u0438\u044f"}),(0,s.jsx)(e.br,{}),"\n","\u0417\u043d\u0430\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u0441\u0438\u043b\u044c\u043d\u043e \u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f \u0441\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c, \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u044b, computer science, \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u044b \u0440\u0430\u0431\u043e\u0442\u044b \u044f\u0437\u044b\u043a\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u0435\u0433\u043e API."]}),"\n"]}),"\n",(0,s.jsxs)(e.li,{children:["\n",(0,s.jsxs)(e.p,{children:[(0,s.jsx)(e.strong,{children:"\u0422\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0441\u0442\u0435\u043a"}),(0,s.jsx)(e.br,{}),"\n","\u0417\u043d\u0430\u043d\u0438\u044f \u043e \u043d\u0430\u0431\u043e\u0440\u0435 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u0439, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0445 \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0435, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u044f\u0437\u044b\u043a\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0438 \u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438."]}),"\n"]}),"\n",(0,s.jsxs)(e.li,{children:["\n",(0,s.jsxs)(e.p,{children:[(0,s.jsx)(e.strong,{children:"\u041f\u0440\u043e\u0435\u043a\u0442\u043d\u044b\u0435 \u0437\u043d\u0430\u043d\u0438\u044f"}),(0,s.jsx)(e.br,{}),"\n","\u0417\u043d\u0430\u043d\u0438\u044f, \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u043d\u044b\u0435 \u0434\u043b\u044f \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0438 \u0431\u0435\u0441\u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0435 \u0432\u043d\u0435 \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430. \u042d\u0442\u0438 \u0437\u043d\u0430\u043d\u0438\u044f \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b \u043d\u043e\u0432\u044b\u043c \u0447\u043b\u0435\u043d\u0430\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u044b, \u0447\u0442\u043e\u0431 \u0432\u043d\u043e\u0441\u0438\u0442\u044c \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u0439 \u0432\u043a\u043b\u0430\u0434."]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(e.admonition,{type:"note",children:(0,s.jsxs)(e.p,{children:[(0,s.jsx)(e.strong,{children:"Feature-Sliced Design"}),' \u043f\u0440\u0438\u0437\u0432\u0430\u043d \u0443\u043c\u0435\u043d\u044c\u0448\u0438\u0442\u044c \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044c \u043e\u0442 "\u043f\u0440\u043e\u0435\u043a\u0442\u043d\u044b\u0445 \u0437\u043d\u0430\u043d\u0438\u0439", \u0432\u0437\u044f\u0442\u044c \u043d\u0430 \u0441\u0435\u0431\u044f \u0431\u043e\u043b\u044c\u0448\u0435 \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u0438, \u0438 \u043e\u0431\u043b\u0435\u0433\u0447\u0438\u0442\u044c \u043e\u043d\u0431\u043e\u0440\u0434\u0438\u043d\u0433 \u043d\u043e\u0432\u044b\u0445 \u0447\u043b\u0435\u043d\u043e\u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u044b.']})}),"\n",(0,s.jsx)(e.h2,{id:"see-also",children:"\u0421\u043c. \u0442\u0430\u043a\u0436\u0435"}),"\n",(0,s.jsxs)(e.ul,{children:["\n",(0,s.jsx)(e.li,{children:(0,s.jsx)(e.a,{href:"https://youtu.be/4xyb_tA-uw0?t=249",children:"(\u0412\u0438\u0434\u0435\u043e) \u0418\u043b\u044c\u044f \u041a\u043b\u0438\u043c\u043e\u0432 \u2014 \u041e \u0442\u0438\u043f\u0430\u0445 \u0437\u043d\u0430\u043d\u0438\u0439"})}),"\n"]})]})}function l(n={}){const{wrapper:e}={...(0,r.R)(),...n.components};return e?(0,s.jsx)(e,{...n,children:(0,s.jsx)(c,{...n})}):c(n)}},1100:(n,e,t)=>{t.d(e,{R:()=>o,x:()=>d});var s=t(758);const r={},i=s.createContext(r);function o(n){const e=s.useContext(i);return s.useMemo((function(){return"function"==typeof n?n(e):{...e,...n}}),[e,n])}function d(n){let e;return e=n.disableParentContext?"function"==typeof n.components?n.components(r):n.components||r:o(n.components),s.createElement(i.Provider,{value:e},n.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunk_feature_sliced_documentation=self.webpackChunk_feature_sliced_documentation||[]).push([[6400],{513:(n,e,t)=>{t.r(e),t.d(e,{assets:()=>a,contentTitle:()=>o,default:()=>l,frontMatter:()=>i,metadata:()=>d,toc:()=>u});var s=t(6070),r=t(1100);const i={sidebar_position:3,sidebar_label:"\u0422\u0438\u043f\u044b \u0437\u043d\u0430\u043d\u0438\u0439"},o="\u0422\u0438\u043f\u044b \u0437\u043d\u0430\u043d\u0438\u0439 \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0435",d={id:"about/understanding/knowledge-types",title:"\u0422\u0438\u043f\u044b \u0437\u043d\u0430\u043d\u0438\u0439 \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0435",description:'\u0412 \u043b\u044e\u0431\u043e\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0434\u0435\u043b\u0438\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 "\u0442\u0438\u043f\u044b \u0437\u043d\u0430\u043d\u0438\u0439":',source:"@site/i18n/ru/docusaurus-plugin-content-docs/current/about/understanding/knowledge-types.md",sourceDirName:"about/understanding",slug:"/about/understanding/knowledge-types",permalink:"/ru/docs/about/understanding/knowledge-types",draft:!1,unlisted:!1,editUrl:"https://github.com/feature-sliced/documentation/edit/master/i18n/ru/docusaurus-plugin-content-docs/current/about/understanding/knowledge-types.md",tags:[],version:"current",lastUpdatedAt:1728325386e3,sidebarPosition:3,frontMatter:{sidebar_position:3,sidebar_label:"\u0422\u0438\u043f\u044b \u0437\u043d\u0430\u043d\u0438\u0439"},sidebar:"aboutSidebar",previous:{title:"\u041f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u043d\u043e\u0441\u0442\u0435\u0439",permalink:"/ru/docs/about/understanding/needs-driven"},next:{title:"\u041d\u0435\u0439\u043c\u0438\u043d\u0433",permalink:"/ru/docs/about/understanding/naming"}},a={},u=[{value:"\u0421\u043c. \u0442\u0430\u043a\u0436\u0435",id:"see-also",level:2}];function c(n){const e={a:"a",admonition:"admonition",br:"br",h1:"h1",h2:"h2",header:"header",li:"li",p:"p",strong:"strong",ul:"ul",...(0,r.R)(),...n.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(e.header,{children:(0,s.jsx)(e.h1,{id:"\u0442\u0438\u043f\u044b-\u0437\u043d\u0430\u043d\u0438\u0439-\u0432-\u043f\u0440\u043e\u0435\u043a\u0442\u0435",children:"\u0422\u0438\u043f\u044b \u0437\u043d\u0430\u043d\u0438\u0439 \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0435"})}),"\n",(0,s.jsx)(e.p,{children:'\u0412 \u043b\u044e\u0431\u043e\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0434\u0435\u043b\u0438\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 "\u0442\u0438\u043f\u044b \u0437\u043d\u0430\u043d\u0438\u0439":'}),"\n",(0,s.jsxs)(e.ul,{children:["\n",(0,s.jsxs)(e.li,{children:["\n",(0,s.jsxs)(e.p,{children:[(0,s.jsx)(e.strong,{children:"\u0424\u0443\u043d\u0434\u0430\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0437\u043d\u0430\u043d\u0438\u044f"}),(0,s.jsx)(e.br,{}),"\n","\u0417\u043d\u0430\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u0441\u0438\u043b\u044c\u043d\u043e \u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f \u0441\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c, \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u044b, computer science, \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u044b \u0440\u0430\u0431\u043e\u0442\u044b \u044f\u0437\u044b\u043a\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u0435\u0433\u043e API."]}),"\n"]}),"\n",(0,s.jsxs)(e.li,{children:["\n",(0,s.jsxs)(e.p,{children:[(0,s.jsx)(e.strong,{children:"\u0422\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0441\u0442\u0435\u043a"}),(0,s.jsx)(e.br,{}),"\n","\u0417\u043d\u0430\u043d\u0438\u044f \u043e \u043d\u0430\u0431\u043e\u0440\u0435 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u0439, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0445 \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0435, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u044f\u0437\u044b\u043a\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0438 \u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438."]}),"\n"]}),"\n",(0,s.jsxs)(e.li,{children:["\n",(0,s.jsxs)(e.p,{children:[(0,s.jsx)(e.strong,{children:"\u041f\u0440\u043e\u0435\u043a\u0442\u043d\u044b\u0435 \u0437\u043d\u0430\u043d\u0438\u044f"}),(0,s.jsx)(e.br,{}),"\n","\u0417\u043d\u0430\u043d\u0438\u044f, \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u043d\u044b\u0435 \u0434\u043b\u044f \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0438 \u0431\u0435\u0441\u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0435 \u0432\u043d\u0435 \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430. \u042d\u0442\u0438 \u0437\u043d\u0430\u043d\u0438\u044f \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b \u043d\u043e\u0432\u044b\u043c \u0447\u043b\u0435\u043d\u0430\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u044b, \u0447\u0442\u043e\u0431 \u0432\u043d\u043e\u0441\u0438\u0442\u044c \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u0439 \u0432\u043a\u043b\u0430\u0434."]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(e.admonition,{type:"note",children:(0,s.jsxs)(e.p,{children:[(0,s.jsx)(e.strong,{children:"Feature-Sliced Design"}),' \u043f\u0440\u0438\u0437\u0432\u0430\u043d \u0443\u043c\u0435\u043d\u044c\u0448\u0438\u0442\u044c \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044c \u043e\u0442 "\u043f\u0440\u043e\u0435\u043a\u0442\u043d\u044b\u0445 \u0437\u043d\u0430\u043d\u0438\u0439", \u0432\u0437\u044f\u0442\u044c \u043d\u0430 \u0441\u0435\u0431\u044f \u0431\u043e\u043b\u044c\u0448\u0435 \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u0438, \u0438 \u043e\u0431\u043b\u0435\u0433\u0447\u0438\u0442\u044c \u043e\u043d\u0431\u043e\u0440\u0434\u0438\u043d\u0433 \u043d\u043e\u0432\u044b\u0445 \u0447\u043b\u0435\u043d\u043e\u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u044b.']})}),"\n",(0,s.jsx)(e.h2,{id:"see-also",children:"\u0421\u043c. \u0442\u0430\u043a\u0436\u0435"}),"\n",(0,s.jsxs)(e.ul,{children:["\n",(0,s.jsx)(e.li,{children:(0,s.jsx)(e.a,{href:"https://youtu.be/4xyb_tA-uw0?t=249",children:"(\u0412\u0438\u0434\u0435\u043e) \u0418\u043b\u044c\u044f \u041a\u043b\u0438\u043c\u043e\u0432 \u2014 \u041e \u0442\u0438\u043f\u0430\u0445 \u0437\u043d\u0430\u043d\u0438\u0439"})}),"\n"]})]})}function l(n={}){const{wrapper:e}={...(0,r.R)(),...n.components};return e?(0,s.jsx)(e,{...n,children:(0,s.jsx)(c,{...n})}):c(n)}},1100:(n,e,t)=>{t.d(e,{R:()=>o,x:()=>d});var s=t(758);const r={},i=s.createContext(r);function o(n){const e=s.useContext(i);return s.useMemo((function(){return"function"==typeof n?n(e):{...e,...n}}),[e,n])}function d(n){let e;return e=n.disableParentContext?"function"==typeof n.components?n.components(r):n.components||r:o(n.components),s.createElement(i.Provider,{value:e},n.children)}}}]); \ No newline at end of file diff --git a/ru/assets/js/44775544.c34d2da9.js b/ru/assets/js/44775544.9baa7621.js similarity index 99% rename from ru/assets/js/44775544.c34d2da9.js rename to ru/assets/js/44775544.9baa7621.js index b4085ff50a..018f057bc9 100644 --- a/ru/assets/js/44775544.c34d2da9.js +++ b/ru/assets/js/44775544.9baa7621.js @@ -1 +1 @@ -"use strict";(self.webpackChunk_feature_sliced_documentation=self.webpackChunk_feature_sliced_documentation||[]).push([[447],{1928:(e,n,i)=>{i.d(n,{Ay:()=>o,RM:()=>d});var s=i(6070),t=i(1100),r=(i(758),i(6783)),l=i(7765);const c=e=>{let{ticket:n}=e;const i=`https://github.com/feature-sliced/documentation/issues/${n}`;return(0,s.jsxs)("div",{children:[(0,s.jsx)("p",{children:(0,l.T)({id:"shared.wip.title"})}),(0,s.jsx)("p",{children:(0,l.T)({id:"shared.wip.subtitle"})}),(0,s.jsxs)("ul",{children:[(0,s.jsxs)("li",{children:[(0,l.T)({id:"shared.wip.var.feedback.base"}),(0,s.jsx)(r.A,{to:i,children:(0,l.T)({id:"shared.wip.var.feedback.link"})})]}),(0,s.jsxs)("li",{children:[(0,l.T)({id:"shared.wip.var.material.base"}),(0,s.jsx)(r.A,{to:"https://t.me/feature_sliced",children:(0,l.T)({id:"shared.wip.var.material.link"})})]}),(0,s.jsxs)("li",{children:[(0,l.T)({id:"shared.wip.var.contribute.base"}),(0,s.jsx)(r.A,{to:"https://github.com/feature-sliced/documentation/blob/master/CONTRIBUTING.md",children:(0,l.T)({id:"shared.wip.var.contribute.link"})})]})]}),(0,s.jsx)("br",{}),(0,s.jsx)("p",{children:(0,s.jsx)("i",{children:"\ud83c\udf70 Stay tuned!"})})]})},d=[];function a(e){const n={admonition:"admonition",...(0,t.R)(),...e.components};return(0,s.jsx)(n.admonition,{title:"WIP",type:"caution",children:(0,s.jsx)(c,{ticket:e.ticket})})}function o(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(a,{...e})}):a(e)}},6386:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>a,contentTitle:()=>c,default:()=>u,frontMatter:()=>l,metadata:()=>d,toc:()=>o});var s=i(6070),t=i(1100),r=i(1928);const l={sidebar_class_name:"sidebar-item--wip",sidebar_position:3},c="\u0410\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u044b",d={id:"about/alternatives",title:"\u0410\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u044b",description:"\u0418\u0441\u0442\u043e\u0440\u0438\u044f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u044b\u0445 \u043f\u043e\u0434\u0445\u043e\u0434\u043e\u0432",source:"@site/i18n/ru/docusaurus-plugin-content-docs/current/about/alternatives.mdx",sourceDirName:"about",slug:"/about/alternatives",permalink:"/ru/docs/about/alternatives",draft:!1,unlisted:!1,editUrl:"https://github.com/feature-sliced/documentation/edit/master/i18n/ru/docusaurus-plugin-content-docs/current/about/alternatives.mdx",tags:[],version:"current",lastUpdatedAt:1727607766e3,sidebarPosition:3,frontMatter:{sidebar_class_name:"sidebar-item--wip",sidebar_position:3},sidebar:"aboutSidebar",previous:{title:"\u041c\u043e\u0442\u0438\u0432\u0430\u0446\u0438\u044f",permalink:"/ru/docs/about/motivation"},next:{title:"\u041e\u0431 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0435",permalink:"/ru/docs/about/understanding/architecture"}},a={},o=[...r.RM,{value:"Big Ball of Mud",id:"big-ball-of-mud",level:2},...r.RM,{value:"Smart & Dumb components",id:"smart--dumb-components",level:2},...r.RM,{value:"Design Principles",id:"design-principles",level:2},...r.RM,{value:"DDD",id:"ddd",level:2},...r.RM,{value:"\u0421\u043c. \u0442\u0430\u043a\u0436\u0435",id:"see-also",level:2},{value:"Clean Architecture",id:"clean-architecture",level:2},...r.RM,{value:"Frameworks",id:"frameworks",level:2},...r.RM,{value:"Atomic Design",id:"atomic-design",level:2},{value:"\u0427\u0442\u043e \u044d\u0442\u043e?",id:"\u0447\u0442\u043e-\u044d\u0442\u043e",level:3},{value:"\u041f\u0440\u0438\u043c\u0435\u043d\u0438\u043c\u043e\u0441\u0442\u044c \u0432\u043e \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434\u0435",id:"\u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c\u043e\u0441\u0442\u044c-\u0432\u043e-\u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434\u0435",level:3},{value:"\u041a\u0430\u043a \u043e\u043d\u043e \u0441\u043e\u0447\u0435\u0442\u0430\u0435\u0442\u0441\u044f \u0441 FSD?",id:"\u043a\u0430\u043a-\u043e\u043d\u043e-\u0441\u043e\u0447\u0435\u0442\u0430\u0435\u0442\u0441\u044f-\u0441-fsd",level:3},{value:"Feature Driven",id:"feature-driven",level:2},...r.RM];function h(e){const n={a:"a",blockquote:"blockquote",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,t.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.header,{children:(0,s.jsx)(n.h1,{id:"\u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u044b",children:"\u0410\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u044b"})}),"\n",(0,s.jsx)(r.Ay,{ticket:"62"}),"\n",(0,s.jsx)(n.p,{children:"\u0418\u0441\u0442\u043e\u0440\u0438\u044f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u044b\u0445 \u043f\u043e\u0434\u0445\u043e\u0434\u043e\u0432"}),"\n",(0,s.jsx)(n.h2,{id:"big-ball-of-mud",children:"Big Ball of Mud"}),"\n",(0,s.jsx)(r.Ay,{ticket:"258"}),"\n",(0,s.jsxs)(n.blockquote,{children:["\n",(0,s.jsx)(n.p,{children:"\u0427\u0442\u043e \u044d\u0442\u043e; \u041f\u043e\u0447\u0435\u043c\u0443 \u0442\u0430\u043a \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u043e; \u041a\u043e\u0433\u0434\u0430 \u044d\u0442\u043e \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u043f\u0440\u0438\u043d\u043e\u0441\u0438\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b; \u041a\u0430\u043a \u0431\u044b\u0442\u044c; \u0418 \u043a\u0430\u043a \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u0432 \u044d\u0442\u043e\u043c FSD"}),"\n"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://oleg008.medium.com/last-words-on-ui-architecture-before-an-ai-takes-over-468c78f18f0d",children:"(\u0421\u0442\u0430\u0442\u044c\u044f) Oleg Isonen - Last words on UI architecture before an AI takes over"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://youtu.be/gna4Ynz1YNI",children:"(\u0414\u043e\u043a\u043b\u0430\u0434) \u042e\u043b\u0438\u044f \u041d\u0438\u043a\u043e\u043b\u0430\u0435\u0432\u0430, iSpring - Big Ball of Mud \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u043c\u043e\u043d\u043e\u043b\u0438\u0442\u0430, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u043c\u044b \u0441\u043f\u0440\u0430\u0432\u0438\u043b\u0438\u0441\u044c"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://thedomaindrivendesign.io/big-ball-of-mud/",children:"(\u0421\u0442\u0430\u0442\u044c\u044f) DDD - Big Ball of mud"})}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"smart--dumb-components",children:"Smart & Dumb components"}),"\n",(0,s.jsx)(r.Ay,{ticket:"214"}),"\n",(0,s.jsxs)(n.blockquote,{children:["\n",(0,s.jsx)(n.p,{children:"\u041e \u043f\u043e\u0434\u0445\u043e\u0434\u0435; \u041e \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c\u043e\u0441\u0442\u0438 \u0432 \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434\u0435; \u043f\u043e\u0437\u0438\u0446\u0438\u044f FSD"}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"\u041f\u0440\u043e \u0443\u0441\u0442\u0430\u0440\u0435\u043b\u043e\u0441\u0442\u044c, \u043f\u0440\u043e \u043d\u043e\u0432\u044b\u0439 \u0432\u0437\u0433\u043b\u044f\u0434 \u0441\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u043c\u0435\u0442\u043e\u0434\u043e\u043b\u043e\u0433\u0438\u0438"}),"\n",(0,s.jsx)(n.p,{children:"\u041f\u043e\u0447\u0435\u043c\u0443 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043d\u043e/\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043d\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 - \u0437\u043b\u043e"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://medium.com/@dan_abramov/smart-and-dumb-components-7ca2f9a7c7d0",children:"(\u0421\u0442\u0430\u0442\u044c\u044f) Dan Abramov - Presentational and Container Components (TLDR: deprecated)"})}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"design-principles",children:"Design Principles"}),"\n",(0,s.jsx)(r.Ay,{ticket:"59"}),"\n",(0,s.jsxs)(n.blockquote,{children:["\n",(0,s.jsx)(n.p,{children:"\u041f\u0440\u043e \u0447\u0442\u043e \u0440\u0435\u0447\u044c; \u043f\u043e\u0437\u0438\u0446\u0438\u044f FSD"}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"SOLID, GRASP, KISS, YAGNI, ... - \u0438 \u043f\u043e\u0447\u0435\u043c\u0443 \u043e\u043d\u0438 \u043f\u043b\u043e\u0445\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0432\u043c\u0435\u0441\u0442\u0435 \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435"}),"\n",(0,s.jsx)(n.p,{children:"\u0418 \u043a\u0430\u043a \u043e\u043d\u0430 \u0430\u0433\u0440\u0435\u0433\u0438\u0440\u0443\u0435\u0442 \u044d\u0442\u0438 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0438"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://youtu.be/SnzPAr_FJ7w?t=380",children:"(\u0414\u043e\u043a\u043b\u0430\u0434) \u0418\u043b\u044c\u044f \u0410\u0437\u0438\u043d - Feature-Sliced Design (\u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \u043f\u0440\u043e \u041f\u0440\u0438\u043d\u0446\u0438\u043f\u044b \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f)"})}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"ddd",children:"DDD"}),"\n",(0,s.jsx)(r.Ay,{ticket:"1"}),"\n",(0,s.jsxs)(n.blockquote,{children:["\n",(0,s.jsx)(n.p,{children:"\u041e \u043f\u043e\u0434\u0445\u043e\u0434\u0435; \u041f\u043e\u0447\u0435\u043c\u0443 \u043f\u043b\u043e\u0445\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435"}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"\u0412 \u0447\u0435\u043c \u043e\u0442\u043b\u0438\u0447\u0438\u0435, \u0447\u0435\u043c \u0443\u043b\u0443\u0447\u0448\u0430\u0435\u0442 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c\u043e\u0441\u0442\u044c, \u0433\u0434\u0435 \u043f\u0435\u0440\u0435\u043d\u0438\u043c\u0430\u0435\u0442 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0438"}),"\n",(0,s.jsx)(n.h2,{id:"see-also",children:"\u0421\u043c. \u0442\u0430\u043a\u0436\u0435"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://herbertograca.com/2017/11/16/explicit-architecture-01-ddd-hexagonal-onion-clean-cqrs-how-i-put-it-all-together/",children:"(\u0421\u0442\u0430\u0442\u044c\u044f) DDD, Hexagonal, Onion, Clean, CQRS, \u2026 How I put it all together"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://youtu.be/SnzPAr_FJ7w?t=528",children:"(\u0414\u043e\u043a\u043b\u0430\u0434) \u0418\u043b\u044c\u044f \u0410\u0437\u0438\u043d - Feature-Sliced Design (\u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \u043f\u0440\u043e Clean Architecture, DDD)"})}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"clean-architecture",children:"Clean Architecture"}),"\n",(0,s.jsx)(r.Ay,{ticket:"165"}),"\n",(0,s.jsxs)(n.blockquote,{children:["\n",(0,s.jsx)(n.p,{children:"\u041e \u043f\u043e\u0434\u0445\u043e\u0434\u0435; \u041e \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c\u043e\u0441\u0442\u0438 \u0432 \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434\u0435; \u043f\u043e\u0437\u0438\u0446\u0438\u044f FSD"}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"\u0412 \u0447\u0435\u043c \u0441\u0445\u043e\u0436\u0438 (\u043c\u043d\u043e\u0433\u0438\u043c), \u0447\u0435\u043c \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0442\u0441\u044f"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://t.me/feature_sliced/3897",children:"(\u0422\u0440\u0435\u0434) \u041f\u0440\u043e use-case/interactor \u0432 \u043c\u0435\u0442\u043e\u0434\u043e\u043b\u043e\u0433\u0438\u0438"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://t.me/feature_sliced/4592",children:"(\u0422\u0440\u0435\u0434) \u041f\u0440\u043e DI \u0432 \u043c\u0435\u0442\u043e\u0434\u043e\u043b\u043e\u0433\u0438\u0438"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://bespoyasov.ru/blog/clean-architecture-on-frontend/",children:"(\u0421\u0442\u0430\u0442\u044c\u044f) \u0410\u043b\u0435\u043a\u0441\u0430\u043d\u0434\u0440 \u0411\u0435\u0441\u043f\u043e\u044f\u0441\u043e\u0432 - \u0427\u0438\u0441\u0442\u0430\u044f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u043d\u0430 \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434\u0435"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://herbertograca.com/2017/11/16/explicit-architecture-01-ddd-hexagonal-onion-clean-cqrs-how-i-put-it-all-together/",children:"(\u0421\u0442\u0430\u0442\u044c\u044f) DDD, Hexagonal, Onion, Clean, CQRS, \u2026 How I put it all together"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://youtu.be/SnzPAr_FJ7w?t=528",children:"(\u0414\u043e\u043a\u043b\u0430\u0434) \u0418\u043b\u044c\u044f \u0410\u0437\u0438\u043d - Feature-Sliced Design (\u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \u043f\u0440\u043e Clean Architecture, DDD)"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://habr.com/ru/company/mobileup/blog/335382/",children:"(\u0421\u0442\u0430\u0442\u044c\u044f) \u0417\u0430\u0431\u043b\u0443\u0436\u0434\u0435\u043d\u0438\u044f Clean Architecture"})}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"frameworks",children:"Frameworks"}),"\n",(0,s.jsx)(r.Ay,{ticket:"58"}),"\n",(0,s.jsxs)(n.blockquote,{children:["\n",(0,s.jsx)(n.p,{children:"\u041e \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c\u043e\u0441\u0442\u0438 \u0432 \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434\u0435; \u041f\u043e\u0447\u0435\u043c\u0443 \u043e\u043d\u0438 \u043d\u0435 \u0440\u0435\u0448\u0430\u044e\u0442 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443; \u041f\u043e\u0447\u0435\u043c\u0443 \u044d\u0442\u043e \u043d\u0435 \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434; \u043f\u043e\u0437\u0438\u0446\u0438\u044f FSD"}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"Framework-agnostic, conventional-\u043f\u043e\u0434\u0445\u043e\u0434"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"/docs/about/motivation",children:"(\u0421\u0442\u0430\u0442\u044c\u044f) \u041f\u0440\u043e \u043f\u0440\u0438\u0447\u0438\u043d\u044b \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043c\u0435\u0442\u043e\u0434\u043e\u043b\u043e\u0433\u0438\u0438 (\u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \u043f\u0440\u043e \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0438)"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://t.me/feature_sliced/3867",children:"(\u0422\u0440\u0435\u0434) \u041f\u0440\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c\u043e\u0441\u0442\u044c \u043c\u0435\u0442\u043e\u0434\u043e\u043b\u043e\u0433\u0438\u0438 \u0434\u043b\u044f \u0440\u0430\u0437\u043d\u044b\u0445 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u043e\u0432"})}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"atomic-design",children:"Atomic Design"}),"\n",(0,s.jsx)(n.h3,{id:"\u0447\u0442\u043e-\u044d\u0442\u043e",children:"\u0427\u0442\u043e \u044d\u0442\u043e?"}),"\n",(0,s.jsx)(n.p,{children:"\u0412 Atomic Design \u0441\u0444\u0435\u0440\u0430 \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0430 \u043d\u0430 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0441\u043b\u043e\u0438.\xa0"}),"\n",(0,s.jsxs)(n.p,{children:["Atomic Design \u0440\u0430\u0437\u0431\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430 ",(0,s.jsx)(n.strong,{children:"5 \u0441\u043b\u043e\u0435\u0432"})," (\u0441\u0432\u0435\u0440\u0445\u0443 \u0432\u043d\u0438\u0437):"]}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"pages"})," - \u041d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e \u0441\u043b\u043e\u044e ",(0,s.jsx)(n.code,{children:"pages"})," \u0432 FSD."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"templates"})," - \u041a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u0437\u0430\u0434\u0430\u044e\u0449\u0438\u0435 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u0431\u0435\u0437 \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0438 \u043a \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0443."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"organisms"})," - \u041c\u043e\u0434\u0443\u043b\u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u0449\u0438\u0435 \u0438\u0437 \u043c\u043e\u043b\u0435\u043a\u0443\u043b, \u043e\u0431\u043b\u0430\u0434\u0430\u044e\u0449\u0438\u0435 \u0431\u0438\u0437\u043d\u0435\u0441 \u043b\u043e\u0433\u0438\u043a\u043e\u0439."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"moleculs"})," - \u0411\u043e\u043b\u0435\u0435 \u0441\u043b\u043e\u0436\u043d\u044b\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445, \u043a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u043d\u0435\u0442 \u0431\u0438\u0437\u043d\u0435\u0441 \u043b\u043e\u0433\u0438\u043a\u0438."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"atoms"})," - UI \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u0431\u0435\u0437 \u0431\u0438\u0437\u043d\u0435\u0441 \u043b\u043e\u0433\u0438\u043a\u0438."]}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["\u041c\u043e\u0434\u0443\u043b\u0438 \u043d\u0430 \u043e\u0434\u043d\u043e\u043c \u0441\u043b\u043e\u0435 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0443\u044e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0441 \u043c\u043e\u0434\u0443\u043b\u044f\u043c\u0438, \u043d\u0430\u0445\u043e\u0434\u044f\u0449\u0438\u043c\u0438\u0441\u044f \u043d\u0430 \u0441\u043b\u043e\u044f\u0445 \u043d\u0438\u0436\u0435, \u043a\u0430\u043a \u0432 FSD.\n\u0422\u043e \u0435\u0441\u0442\u044c, \u043c\u043e\u043b\u0435\u043a\u0443\u043b\u044b \u0441\u0442\u0440\u043e\u044f\u0442\u0441\u044f \u0438\u0437 \u0430\u0442\u043e\u043c\u043e\u0432, \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043c\u044b \u0438\u0437 \u043c\u043e\u043b\u0435\u043a\u0443\u043b, \u0448\u0430\u0431\u043b\u043e\u043d\u044b \u0438\u0437 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043c\u043e\u0432, \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0438\u0437 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432.\n\u0422\u0430\u043a\u0436\u0435 Atomic Design \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 ",(0,s.jsx)(n.strong,{children:"Public API"})," \u0432\u043d\u0443\u0442\u0440\u0438 \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u0434\u043b\u044f \u0438\u0437\u043e\u043b\u044f\u0446\u0438\u0438."]}),"\n",(0,s.jsx)(n.h3,{id:"\u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c\u043e\u0441\u0442\u044c-\u0432\u043e-\u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434\u0435",children:"\u041f\u0440\u0438\u043c\u0435\u043d\u0438\u043c\u043e\u0441\u0442\u044c \u0432\u043e \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434\u0435"}),"\n",(0,s.jsx)(n.p,{children:"Atomic Design \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0447\u0430\u0441\u0442\u043e \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445. Atomic Design \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u0435\u0435 \u0441\u0440\u0435\u0434\u0438 \u0432\u0435\u0431-\u0434\u0438\u0437\u0430\u0439\u043d\u0435\u0440\u043e\u0432,\xa0\n\u043d\u0435\u0436\u0435\u043b\u0438 \u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435. \u0412\u0435\u0431-\u0434\u0438\u0437\u0430\u0439\u043d\u0435\u0440\u044b \u0447\u0430\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 Atomic Design \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u0443\u0435\u043c\u044b\u0445 \u0438 \u043b\u0435\u0433\u043a\u043e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u0434\u0438\u0437\u0430\u0439\u043d\u043e\u0432.\xa0\n\u0412 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 Atomic Design \u0447\u0430\u0441\u0442\u043e \u0441\u043c\u0435\u0448\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0441 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u044b\u043c\u0438 \u043c\u0435\u0442\u043e\u0434\u043e\u043b\u043e\u0433\u0438\u044f\u043c\u0438."}),"\n",(0,s.jsx)(n.p,{children:"\u041e\u0434\u043d\u0430\u043a\u043e, \u0442\u0430\u043a \u043a\u0430\u043a Atomic Design \u043a\u043e\u043d\u0446\u0435\u043d\u0442\u0440\u0438\u0440\u0443\u0435\u0442 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 UI \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430\u0445 \u0438 \u0438\u0445 \u043a\u043e\u043c\u043f\u043e\u0437\u0438\u0446\u0438\u044e, \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438\n\u0431\u0438\u0437\u043d\u0435\u0441 \u043b\u043e\u0433\u0438\u043a\u0438 \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b."}),"\n",(0,s.jsx)(n.p,{children:"\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e Atomic Design \u043d\u0435 \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u0442 \u0447\u0435\u0442\u043a\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0434\u043b\u044f \u0431\u0438\u0437\u043d\u0435\u0441-\u043b\u043e\u0433\u0438\u043a\u0438,\xa0\n\u0447\u0442\u043e \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044e \u043f\u043e \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u043c \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430\u043c \u0438 \u0443\u0440\u043e\u0432\u043d\u044f\u043c, \u0443\u0441\u043b\u043e\u0436\u043d\u044f\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u0438 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435.\xa0\n\u0411\u0438\u0437\u043d\u0435\u0441-\u043b\u043e\u0433\u0438\u043a\u0430 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0440\u0430\u0437\u043c\u044b\u0442\u0430, \u0447\u0442\u043e \u0437\u0430\u0442\u0440\u0443\u0434\u043d\u044f\u0435\u0442\xa0\u0447\u0435\u0442\u043a\u043e\u0435 \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0438 \u0434\u0435\u043b\u0430\u0435\u0442 \u043a\u043e\u0434 \u043c\u0435\u043d\u0435\u0435\n\u043c\u043e\u0434\u0443\u043b\u044c\u043d\u044b\u043c \u0438 \u043f\u0435\u0440\u0435\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u043c."}),"\n",(0,s.jsx)(n.h3,{id:"\u043a\u0430\u043a-\u043e\u043d\u043e-\u0441\u043e\u0447\u0435\u0442\u0430\u0435\u0442\u0441\u044f-\u0441-fsd",children:"\u041a\u0430\u043a \u043e\u043d\u043e \u0441\u043e\u0447\u0435\u0442\u0430\u0435\u0442\u0441\u044f \u0441 FSD?"}),"\n",(0,s.jsxs)(n.p,{children:["\u0412 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 FSD \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b Atomic Design \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u044b \u0434\u043b\u044f\xa0\n\u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0433\u0438\u0431\u043a\u0438\u0445 \u0438 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u0443\u0435\u043c\u044b\u0445 UI \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432. \u0421\u043b\u043e\u0438 ",(0,s.jsx)(n.code,{children:"atoms"})," \u0438 ",(0,s.jsx)(n.code,{children:"molecules"})," \u043c\u043e\u0436\u043d\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0432\xa0\n",(0,s.jsx)(n.code,{children:"shared/ui"})," \u0432 FSD, \u0447\u0442\u043e \u0443\u043f\u0440\u043e\u0449\u0430\u0435\u0442 \u043f\u0435\u0440\u0435\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u0431\u0430\u0437\u043e\u0432\u044b\u0445 UI \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432.\xa0"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-sh",children:"\u251c\u2500\u2500 shared\n\u2502\xa0 \xa0\u251c\u2500\u2500 ui\xa0\n\u2502\xa0 \xa0\u2502\xa0 \xa0\u251c\u2500\u2500 atoms\n\u2502\xa0 \xa0\u2502\xa0 \xa0\u251c\u2500\u2500 molecules\n\u2502\xa0 \xa0...\n"})}),"\n",(0,s.jsx)(n.p,{children:"\u0421\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 FSD \u0438 Atomic Design \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442, \u0447\u0442\u043e \u043e\u0431\u0435 \u043c\u0435\u0442\u043e\u0434\u043e\u043b\u043e\u0433\u0438\u0438 \u0441\u0442\u0440\u0435\u043c\u044f\u0442\u0441\u044f \u043a \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0438 \u043f\u0435\u0440\u0435\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044e,\xa0\n\u043d\u043e \u0430\u043a\u0446\u0435\u043d\u0442\u0438\u0440\u0443\u044e\u0442 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u0440\u0430\u0437\u043d\u044b\u0445 \u0430\u0441\u043f\u0435\u043a\u0442\u0430\u0445. Atomic Design \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d \u043d\u0430 \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b\xa0\n\u0438 \u0438\u0445 \u043a\u043e\u043c\u043f\u043e\u0437\u0438\u0446\u0438\u044e. FSD \u0444\u043e\u043a\u0443\u0441\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043d\u0430 \u0440\u0430\u0437\u0431\u0438\u0435\u043d\u0438\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0430 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u0435 \u043c\u043e\u0434\u0443\u043b\u0438 \u0438 \u0438\u0445 \u0432\u0437\u0430\u0438\u043c\u043e\u0441\u0432\u044f\u0437\u0438."}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://atomicdesign.bradfrost.com/table-of-contents/",children:"\u041c\u0435\u0442\u043e\u0434\u043e\u043b\u043e\u0433\u0438\u044f Atomic Design"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://t.me/feature_sliced/1653",children:"(\u0422\u0440\u0435\u0434) \u041f\u0440\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c\u043e\u0441\u0442\u044c \u0432 shared/ui"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://youtu.be/Yi-A20x2dcA",children:"(\u0412\u0438\u0434\u0435\u043e) \u041a\u0440\u0430\u0442\u043a\u043e \u043e Atomic Design"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://youtu.be/SnzPAr_FJ7w?t=587",children:"(\u0414\u043e\u043a\u043b\u0430\u0434) \u0418\u043b\u044c\u044f \u0410\u0437\u0438\u043d - Feature-Sliced Design (\u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \u043f\u0440\u043e Atomic Design)"})}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"feature-driven",children:"Feature Driven"}),"\n",(0,s.jsx)(r.Ay,{ticket:"219"}),"\n",(0,s.jsxs)(n.blockquote,{children:["\n",(0,s.jsx)(n.p,{children:"\u041e \u043f\u043e\u0434\u0445\u043e\u0434\u0435; \u041e \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c\u043e\u0441\u0442\u0438 \u0432 \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434\u0435; \u043f\u043e\u0437\u0438\u0446\u0438\u044f FSD"}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"\u041f\u0440\u043e \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c, \u0438\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u0435 \u0438 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://youtu.be/BWAeYuWFHhs",children:"(\u0414\u043e\u043a\u043b\u0430\u0434) Oleg Isonen - Feature Driven Architecture"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://github.com/feature-sliced/documentation/tree/rc/feature-driven",children:"Feature Driven - \u041a\u0440\u0430\u0442\u043a\u0430\u044f \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f (\u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f FSD)"})}),"\n"]})]})}function u(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(h,{...e})}):h(e)}},1100:(e,n,i)=>{i.d(n,{R:()=>l,x:()=>c});var s=i(758);const t={},r=s.createContext(t);function l(e){const n=s.useContext(r);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:l(e.components),s.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunk_feature_sliced_documentation=self.webpackChunk_feature_sliced_documentation||[]).push([[447],{1928:(e,n,i)=>{i.d(n,{Ay:()=>o,RM:()=>d});var s=i(6070),t=i(1100),r=(i(758),i(6783)),l=i(7765);const c=e=>{let{ticket:n}=e;const i=`https://github.com/feature-sliced/documentation/issues/${n}`;return(0,s.jsxs)("div",{children:[(0,s.jsx)("p",{children:(0,l.T)({id:"shared.wip.title"})}),(0,s.jsx)("p",{children:(0,l.T)({id:"shared.wip.subtitle"})}),(0,s.jsxs)("ul",{children:[(0,s.jsxs)("li",{children:[(0,l.T)({id:"shared.wip.var.feedback.base"}),(0,s.jsx)(r.A,{to:i,children:(0,l.T)({id:"shared.wip.var.feedback.link"})})]}),(0,s.jsxs)("li",{children:[(0,l.T)({id:"shared.wip.var.material.base"}),(0,s.jsx)(r.A,{to:"https://t.me/feature_sliced",children:(0,l.T)({id:"shared.wip.var.material.link"})})]}),(0,s.jsxs)("li",{children:[(0,l.T)({id:"shared.wip.var.contribute.base"}),(0,s.jsx)(r.A,{to:"https://github.com/feature-sliced/documentation/blob/master/CONTRIBUTING.md",children:(0,l.T)({id:"shared.wip.var.contribute.link"})})]})]}),(0,s.jsx)("br",{}),(0,s.jsx)("p",{children:(0,s.jsx)("i",{children:"\ud83c\udf70 Stay tuned!"})})]})},d=[];function a(e){const n={admonition:"admonition",...(0,t.R)(),...e.components};return(0,s.jsx)(n.admonition,{title:"WIP",type:"caution",children:(0,s.jsx)(c,{ticket:e.ticket})})}function o(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(a,{...e})}):a(e)}},6386:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>a,contentTitle:()=>c,default:()=>u,frontMatter:()=>l,metadata:()=>d,toc:()=>o});var s=i(6070),t=i(1100),r=i(1928);const l={sidebar_class_name:"sidebar-item--wip",sidebar_position:3},c="\u0410\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u044b",d={id:"about/alternatives",title:"\u0410\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u044b",description:"\u0418\u0441\u0442\u043e\u0440\u0438\u044f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u044b\u0445 \u043f\u043e\u0434\u0445\u043e\u0434\u043e\u0432",source:"@site/i18n/ru/docusaurus-plugin-content-docs/current/about/alternatives.mdx",sourceDirName:"about",slug:"/about/alternatives",permalink:"/ru/docs/about/alternatives",draft:!1,unlisted:!1,editUrl:"https://github.com/feature-sliced/documentation/edit/master/i18n/ru/docusaurus-plugin-content-docs/current/about/alternatives.mdx",tags:[],version:"current",lastUpdatedAt:1728325386e3,sidebarPosition:3,frontMatter:{sidebar_class_name:"sidebar-item--wip",sidebar_position:3},sidebar:"aboutSidebar",previous:{title:"\u041c\u043e\u0442\u0438\u0432\u0430\u0446\u0438\u044f",permalink:"/ru/docs/about/motivation"},next:{title:"\u041e\u0431 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0435",permalink:"/ru/docs/about/understanding/architecture"}},a={},o=[...r.RM,{value:"Big Ball of Mud",id:"big-ball-of-mud",level:2},...r.RM,{value:"Smart & Dumb components",id:"smart--dumb-components",level:2},...r.RM,{value:"Design Principles",id:"design-principles",level:2},...r.RM,{value:"DDD",id:"ddd",level:2},...r.RM,{value:"\u0421\u043c. \u0442\u0430\u043a\u0436\u0435",id:"see-also",level:2},{value:"Clean Architecture",id:"clean-architecture",level:2},...r.RM,{value:"Frameworks",id:"frameworks",level:2},...r.RM,{value:"Atomic Design",id:"atomic-design",level:2},{value:"\u0427\u0442\u043e \u044d\u0442\u043e?",id:"\u0447\u0442\u043e-\u044d\u0442\u043e",level:3},{value:"\u041f\u0440\u0438\u043c\u0435\u043d\u0438\u043c\u043e\u0441\u0442\u044c \u0432\u043e \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434\u0435",id:"\u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c\u043e\u0441\u0442\u044c-\u0432\u043e-\u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434\u0435",level:3},{value:"\u041a\u0430\u043a \u043e\u043d\u043e \u0441\u043e\u0447\u0435\u0442\u0430\u0435\u0442\u0441\u044f \u0441 FSD?",id:"\u043a\u0430\u043a-\u043e\u043d\u043e-\u0441\u043e\u0447\u0435\u0442\u0430\u0435\u0442\u0441\u044f-\u0441-fsd",level:3},{value:"Feature Driven",id:"feature-driven",level:2},...r.RM];function h(e){const n={a:"a",blockquote:"blockquote",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,t.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.header,{children:(0,s.jsx)(n.h1,{id:"\u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u044b",children:"\u0410\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u044b"})}),"\n",(0,s.jsx)(r.Ay,{ticket:"62"}),"\n",(0,s.jsx)(n.p,{children:"\u0418\u0441\u0442\u043e\u0440\u0438\u044f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u044b\u0445 \u043f\u043e\u0434\u0445\u043e\u0434\u043e\u0432"}),"\n",(0,s.jsx)(n.h2,{id:"big-ball-of-mud",children:"Big Ball of Mud"}),"\n",(0,s.jsx)(r.Ay,{ticket:"258"}),"\n",(0,s.jsxs)(n.blockquote,{children:["\n",(0,s.jsx)(n.p,{children:"\u0427\u0442\u043e \u044d\u0442\u043e; \u041f\u043e\u0447\u0435\u043c\u0443 \u0442\u0430\u043a \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u043e; \u041a\u043e\u0433\u0434\u0430 \u044d\u0442\u043e \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u043f\u0440\u0438\u043d\u043e\u0441\u0438\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b; \u041a\u0430\u043a \u0431\u044b\u0442\u044c; \u0418 \u043a\u0430\u043a \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u0432 \u044d\u0442\u043e\u043c FSD"}),"\n"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://oleg008.medium.com/last-words-on-ui-architecture-before-an-ai-takes-over-468c78f18f0d",children:"(\u0421\u0442\u0430\u0442\u044c\u044f) Oleg Isonen - Last words on UI architecture before an AI takes over"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://youtu.be/gna4Ynz1YNI",children:"(\u0414\u043e\u043a\u043b\u0430\u0434) \u042e\u043b\u0438\u044f \u041d\u0438\u043a\u043e\u043b\u0430\u0435\u0432\u0430, iSpring - Big Ball of Mud \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u043c\u043e\u043d\u043e\u043b\u0438\u0442\u0430, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u043c\u044b \u0441\u043f\u0440\u0430\u0432\u0438\u043b\u0438\u0441\u044c"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://thedomaindrivendesign.io/big-ball-of-mud/",children:"(\u0421\u0442\u0430\u0442\u044c\u044f) DDD - Big Ball of mud"})}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"smart--dumb-components",children:"Smart & Dumb components"}),"\n",(0,s.jsx)(r.Ay,{ticket:"214"}),"\n",(0,s.jsxs)(n.blockquote,{children:["\n",(0,s.jsx)(n.p,{children:"\u041e \u043f\u043e\u0434\u0445\u043e\u0434\u0435; \u041e \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c\u043e\u0441\u0442\u0438 \u0432 \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434\u0435; \u043f\u043e\u0437\u0438\u0446\u0438\u044f FSD"}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"\u041f\u0440\u043e \u0443\u0441\u0442\u0430\u0440\u0435\u043b\u043e\u0441\u0442\u044c, \u043f\u0440\u043e \u043d\u043e\u0432\u044b\u0439 \u0432\u0437\u0433\u043b\u044f\u0434 \u0441\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u043c\u0435\u0442\u043e\u0434\u043e\u043b\u043e\u0433\u0438\u0438"}),"\n",(0,s.jsx)(n.p,{children:"\u041f\u043e\u0447\u0435\u043c\u0443 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043d\u043e/\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043d\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 - \u0437\u043b\u043e"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://medium.com/@dan_abramov/smart-and-dumb-components-7ca2f9a7c7d0",children:"(\u0421\u0442\u0430\u0442\u044c\u044f) Dan Abramov - Presentational and Container Components (TLDR: deprecated)"})}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"design-principles",children:"Design Principles"}),"\n",(0,s.jsx)(r.Ay,{ticket:"59"}),"\n",(0,s.jsxs)(n.blockquote,{children:["\n",(0,s.jsx)(n.p,{children:"\u041f\u0440\u043e \u0447\u0442\u043e \u0440\u0435\u0447\u044c; \u043f\u043e\u0437\u0438\u0446\u0438\u044f FSD"}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"SOLID, GRASP, KISS, YAGNI, ... - \u0438 \u043f\u043e\u0447\u0435\u043c\u0443 \u043e\u043d\u0438 \u043f\u043b\u043e\u0445\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0432\u043c\u0435\u0441\u0442\u0435 \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435"}),"\n",(0,s.jsx)(n.p,{children:"\u0418 \u043a\u0430\u043a \u043e\u043d\u0430 \u0430\u0433\u0440\u0435\u0433\u0438\u0440\u0443\u0435\u0442 \u044d\u0442\u0438 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0438"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://youtu.be/SnzPAr_FJ7w?t=380",children:"(\u0414\u043e\u043a\u043b\u0430\u0434) \u0418\u043b\u044c\u044f \u0410\u0437\u0438\u043d - Feature-Sliced Design (\u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \u043f\u0440\u043e \u041f\u0440\u0438\u043d\u0446\u0438\u043f\u044b \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f)"})}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"ddd",children:"DDD"}),"\n",(0,s.jsx)(r.Ay,{ticket:"1"}),"\n",(0,s.jsxs)(n.blockquote,{children:["\n",(0,s.jsx)(n.p,{children:"\u041e \u043f\u043e\u0434\u0445\u043e\u0434\u0435; \u041f\u043e\u0447\u0435\u043c\u0443 \u043f\u043b\u043e\u0445\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435"}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"\u0412 \u0447\u0435\u043c \u043e\u0442\u043b\u0438\u0447\u0438\u0435, \u0447\u0435\u043c \u0443\u043b\u0443\u0447\u0448\u0430\u0435\u0442 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c\u043e\u0441\u0442\u044c, \u0433\u0434\u0435 \u043f\u0435\u0440\u0435\u043d\u0438\u043c\u0430\u0435\u0442 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0438"}),"\n",(0,s.jsx)(n.h2,{id:"see-also",children:"\u0421\u043c. \u0442\u0430\u043a\u0436\u0435"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://herbertograca.com/2017/11/16/explicit-architecture-01-ddd-hexagonal-onion-clean-cqrs-how-i-put-it-all-together/",children:"(\u0421\u0442\u0430\u0442\u044c\u044f) DDD, Hexagonal, Onion, Clean, CQRS, \u2026 How I put it all together"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://youtu.be/SnzPAr_FJ7w?t=528",children:"(\u0414\u043e\u043a\u043b\u0430\u0434) \u0418\u043b\u044c\u044f \u0410\u0437\u0438\u043d - Feature-Sliced Design (\u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \u043f\u0440\u043e Clean Architecture, DDD)"})}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"clean-architecture",children:"Clean Architecture"}),"\n",(0,s.jsx)(r.Ay,{ticket:"165"}),"\n",(0,s.jsxs)(n.blockquote,{children:["\n",(0,s.jsx)(n.p,{children:"\u041e \u043f\u043e\u0434\u0445\u043e\u0434\u0435; \u041e \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c\u043e\u0441\u0442\u0438 \u0432 \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434\u0435; \u043f\u043e\u0437\u0438\u0446\u0438\u044f FSD"}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"\u0412 \u0447\u0435\u043c \u0441\u0445\u043e\u0436\u0438 (\u043c\u043d\u043e\u0433\u0438\u043c), \u0447\u0435\u043c \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0442\u0441\u044f"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://t.me/feature_sliced/3897",children:"(\u0422\u0440\u0435\u0434) \u041f\u0440\u043e use-case/interactor \u0432 \u043c\u0435\u0442\u043e\u0434\u043e\u043b\u043e\u0433\u0438\u0438"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://t.me/feature_sliced/4592",children:"(\u0422\u0440\u0435\u0434) \u041f\u0440\u043e DI \u0432 \u043c\u0435\u0442\u043e\u0434\u043e\u043b\u043e\u0433\u0438\u0438"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://bespoyasov.ru/blog/clean-architecture-on-frontend/",children:"(\u0421\u0442\u0430\u0442\u044c\u044f) \u0410\u043b\u0435\u043a\u0441\u0430\u043d\u0434\u0440 \u0411\u0435\u0441\u043f\u043e\u044f\u0441\u043e\u0432 - \u0427\u0438\u0441\u0442\u0430\u044f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u043d\u0430 \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434\u0435"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://herbertograca.com/2017/11/16/explicit-architecture-01-ddd-hexagonal-onion-clean-cqrs-how-i-put-it-all-together/",children:"(\u0421\u0442\u0430\u0442\u044c\u044f) DDD, Hexagonal, Onion, Clean, CQRS, \u2026 How I put it all together"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://youtu.be/SnzPAr_FJ7w?t=528",children:"(\u0414\u043e\u043a\u043b\u0430\u0434) \u0418\u043b\u044c\u044f \u0410\u0437\u0438\u043d - Feature-Sliced Design (\u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \u043f\u0440\u043e Clean Architecture, DDD)"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://habr.com/ru/company/mobileup/blog/335382/",children:"(\u0421\u0442\u0430\u0442\u044c\u044f) \u0417\u0430\u0431\u043b\u0443\u0436\u0434\u0435\u043d\u0438\u044f Clean Architecture"})}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"frameworks",children:"Frameworks"}),"\n",(0,s.jsx)(r.Ay,{ticket:"58"}),"\n",(0,s.jsxs)(n.blockquote,{children:["\n",(0,s.jsx)(n.p,{children:"\u041e \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c\u043e\u0441\u0442\u0438 \u0432 \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434\u0435; \u041f\u043e\u0447\u0435\u043c\u0443 \u043e\u043d\u0438 \u043d\u0435 \u0440\u0435\u0448\u0430\u044e\u0442 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443; \u041f\u043e\u0447\u0435\u043c\u0443 \u044d\u0442\u043e \u043d\u0435 \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434; \u043f\u043e\u0437\u0438\u0446\u0438\u044f FSD"}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"Framework-agnostic, conventional-\u043f\u043e\u0434\u0445\u043e\u0434"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"/docs/about/motivation",children:"(\u0421\u0442\u0430\u0442\u044c\u044f) \u041f\u0440\u043e \u043f\u0440\u0438\u0447\u0438\u043d\u044b \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043c\u0435\u0442\u043e\u0434\u043e\u043b\u043e\u0433\u0438\u0438 (\u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \u043f\u0440\u043e \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0438)"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://t.me/feature_sliced/3867",children:"(\u0422\u0440\u0435\u0434) \u041f\u0440\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c\u043e\u0441\u0442\u044c \u043c\u0435\u0442\u043e\u0434\u043e\u043b\u043e\u0433\u0438\u0438 \u0434\u043b\u044f \u0440\u0430\u0437\u043d\u044b\u0445 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u043e\u0432"})}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"atomic-design",children:"Atomic Design"}),"\n",(0,s.jsx)(n.h3,{id:"\u0447\u0442\u043e-\u044d\u0442\u043e",children:"\u0427\u0442\u043e \u044d\u0442\u043e?"}),"\n",(0,s.jsx)(n.p,{children:"\u0412 Atomic Design \u0441\u0444\u0435\u0440\u0430 \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0430 \u043d\u0430 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0441\u043b\u043e\u0438.\xa0"}),"\n",(0,s.jsxs)(n.p,{children:["Atomic Design \u0440\u0430\u0437\u0431\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430 ",(0,s.jsx)(n.strong,{children:"5 \u0441\u043b\u043e\u0435\u0432"})," (\u0441\u0432\u0435\u0440\u0445\u0443 \u0432\u043d\u0438\u0437):"]}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"pages"})," - \u041d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e \u0441\u043b\u043e\u044e ",(0,s.jsx)(n.code,{children:"pages"})," \u0432 FSD."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"templates"})," - \u041a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u0437\u0430\u0434\u0430\u044e\u0449\u0438\u0435 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u0431\u0435\u0437 \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0438 \u043a \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0443."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"organisms"})," - \u041c\u043e\u0434\u0443\u043b\u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u0449\u0438\u0435 \u0438\u0437 \u043c\u043e\u043b\u0435\u043a\u0443\u043b, \u043e\u0431\u043b\u0430\u0434\u0430\u044e\u0449\u0438\u0435 \u0431\u0438\u0437\u043d\u0435\u0441 \u043b\u043e\u0433\u0438\u043a\u043e\u0439."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"moleculs"})," - \u0411\u043e\u043b\u0435\u0435 \u0441\u043b\u043e\u0436\u043d\u044b\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445, \u043a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u043d\u0435\u0442 \u0431\u0438\u0437\u043d\u0435\u0441 \u043b\u043e\u0433\u0438\u043a\u0438."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"atoms"})," - UI \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u0431\u0435\u0437 \u0431\u0438\u0437\u043d\u0435\u0441 \u043b\u043e\u0433\u0438\u043a\u0438."]}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["\u041c\u043e\u0434\u0443\u043b\u0438 \u043d\u0430 \u043e\u0434\u043d\u043e\u043c \u0441\u043b\u043e\u0435 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0443\u044e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0441 \u043c\u043e\u0434\u0443\u043b\u044f\u043c\u0438, \u043d\u0430\u0445\u043e\u0434\u044f\u0449\u0438\u043c\u0438\u0441\u044f \u043d\u0430 \u0441\u043b\u043e\u044f\u0445 \u043d\u0438\u0436\u0435, \u043a\u0430\u043a \u0432 FSD.\n\u0422\u043e \u0435\u0441\u0442\u044c, \u043c\u043e\u043b\u0435\u043a\u0443\u043b\u044b \u0441\u0442\u0440\u043e\u044f\u0442\u0441\u044f \u0438\u0437 \u0430\u0442\u043e\u043c\u043e\u0432, \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043c\u044b \u0438\u0437 \u043c\u043e\u043b\u0435\u043a\u0443\u043b, \u0448\u0430\u0431\u043b\u043e\u043d\u044b \u0438\u0437 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043c\u043e\u0432, \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0438\u0437 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432.\n\u0422\u0430\u043a\u0436\u0435 Atomic Design \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 ",(0,s.jsx)(n.strong,{children:"Public API"})," \u0432\u043d\u0443\u0442\u0440\u0438 \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u0434\u043b\u044f \u0438\u0437\u043e\u043b\u044f\u0446\u0438\u0438."]}),"\n",(0,s.jsx)(n.h3,{id:"\u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c\u043e\u0441\u0442\u044c-\u0432\u043e-\u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434\u0435",children:"\u041f\u0440\u0438\u043c\u0435\u043d\u0438\u043c\u043e\u0441\u0442\u044c \u0432\u043e \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434\u0435"}),"\n",(0,s.jsx)(n.p,{children:"Atomic Design \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0447\u0430\u0441\u0442\u043e \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445. Atomic Design \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u0435\u0435 \u0441\u0440\u0435\u0434\u0438 \u0432\u0435\u0431-\u0434\u0438\u0437\u0430\u0439\u043d\u0435\u0440\u043e\u0432,\xa0\n\u043d\u0435\u0436\u0435\u043b\u0438 \u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435. \u0412\u0435\u0431-\u0434\u0438\u0437\u0430\u0439\u043d\u0435\u0440\u044b \u0447\u0430\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 Atomic Design \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u0443\u0435\u043c\u044b\u0445 \u0438 \u043b\u0435\u0433\u043a\u043e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u0434\u0438\u0437\u0430\u0439\u043d\u043e\u0432.\xa0\n\u0412 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 Atomic Design \u0447\u0430\u0441\u0442\u043e \u0441\u043c\u0435\u0448\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0441 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u044b\u043c\u0438 \u043c\u0435\u0442\u043e\u0434\u043e\u043b\u043e\u0433\u0438\u044f\u043c\u0438."}),"\n",(0,s.jsx)(n.p,{children:"\u041e\u0434\u043d\u0430\u043a\u043e, \u0442\u0430\u043a \u043a\u0430\u043a Atomic Design \u043a\u043e\u043d\u0446\u0435\u043d\u0442\u0440\u0438\u0440\u0443\u0435\u0442 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 UI \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430\u0445 \u0438 \u0438\u0445 \u043a\u043e\u043c\u043f\u043e\u0437\u0438\u0446\u0438\u044e, \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438\n\u0431\u0438\u0437\u043d\u0435\u0441 \u043b\u043e\u0433\u0438\u043a\u0438 \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b."}),"\n",(0,s.jsx)(n.p,{children:"\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e Atomic Design \u043d\u0435 \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u0442 \u0447\u0435\u0442\u043a\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0434\u043b\u044f \u0431\u0438\u0437\u043d\u0435\u0441-\u043b\u043e\u0433\u0438\u043a\u0438,\xa0\n\u0447\u0442\u043e \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044e \u043f\u043e \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u043c \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430\u043c \u0438 \u0443\u0440\u043e\u0432\u043d\u044f\u043c, \u0443\u0441\u043b\u043e\u0436\u043d\u044f\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u0438 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435.\xa0\n\u0411\u0438\u0437\u043d\u0435\u0441-\u043b\u043e\u0433\u0438\u043a\u0430 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0440\u0430\u0437\u043c\u044b\u0442\u0430, \u0447\u0442\u043e \u0437\u0430\u0442\u0440\u0443\u0434\u043d\u044f\u0435\u0442\xa0\u0447\u0435\u0442\u043a\u043e\u0435 \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0438 \u0434\u0435\u043b\u0430\u0435\u0442 \u043a\u043e\u0434 \u043c\u0435\u043d\u0435\u0435\n\u043c\u043e\u0434\u0443\u043b\u044c\u043d\u044b\u043c \u0438 \u043f\u0435\u0440\u0435\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u043c."}),"\n",(0,s.jsx)(n.h3,{id:"\u043a\u0430\u043a-\u043e\u043d\u043e-\u0441\u043e\u0447\u0435\u0442\u0430\u0435\u0442\u0441\u044f-\u0441-fsd",children:"\u041a\u0430\u043a \u043e\u043d\u043e \u0441\u043e\u0447\u0435\u0442\u0430\u0435\u0442\u0441\u044f \u0441 FSD?"}),"\n",(0,s.jsxs)(n.p,{children:["\u0412 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 FSD \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b Atomic Design \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u044b \u0434\u043b\u044f\xa0\n\u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0433\u0438\u0431\u043a\u0438\u0445 \u0438 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u0443\u0435\u043c\u044b\u0445 UI \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432. \u0421\u043b\u043e\u0438 ",(0,s.jsx)(n.code,{children:"atoms"})," \u0438 ",(0,s.jsx)(n.code,{children:"molecules"})," \u043c\u043e\u0436\u043d\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0432\xa0\n",(0,s.jsx)(n.code,{children:"shared/ui"})," \u0432 FSD, \u0447\u0442\u043e \u0443\u043f\u0440\u043e\u0449\u0430\u0435\u0442 \u043f\u0435\u0440\u0435\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u0431\u0430\u0437\u043e\u0432\u044b\u0445 UI \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432.\xa0"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-sh",children:"\u251c\u2500\u2500 shared\n\u2502\xa0 \xa0\u251c\u2500\u2500 ui\xa0\n\u2502\xa0 \xa0\u2502\xa0 \xa0\u251c\u2500\u2500 atoms\n\u2502\xa0 \xa0\u2502\xa0 \xa0\u251c\u2500\u2500 molecules\n\u2502\xa0 \xa0...\n"})}),"\n",(0,s.jsx)(n.p,{children:"\u0421\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 FSD \u0438 Atomic Design \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442, \u0447\u0442\u043e \u043e\u0431\u0435 \u043c\u0435\u0442\u043e\u0434\u043e\u043b\u043e\u0433\u0438\u0438 \u0441\u0442\u0440\u0435\u043c\u044f\u0442\u0441\u044f \u043a \u043c\u043e\u0434\u0443\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0438 \u043f\u0435\u0440\u0435\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044e,\xa0\n\u043d\u043e \u0430\u043a\u0446\u0435\u043d\u0442\u0438\u0440\u0443\u044e\u0442 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u0440\u0430\u0437\u043d\u044b\u0445 \u0430\u0441\u043f\u0435\u043a\u0442\u0430\u0445. Atomic Design \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d \u043d\u0430 \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b\xa0\n\u0438 \u0438\u0445 \u043a\u043e\u043c\u043f\u043e\u0437\u0438\u0446\u0438\u044e. FSD \u0444\u043e\u043a\u0443\u0441\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043d\u0430 \u0440\u0430\u0437\u0431\u0438\u0435\u043d\u0438\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0430 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u0435 \u043c\u043e\u0434\u0443\u043b\u0438 \u0438 \u0438\u0445 \u0432\u0437\u0430\u0438\u043c\u043e\u0441\u0432\u044f\u0437\u0438."}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://atomicdesign.bradfrost.com/table-of-contents/",children:"\u041c\u0435\u0442\u043e\u0434\u043e\u043b\u043e\u0433\u0438\u044f Atomic Design"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://t.me/feature_sliced/1653",children:"(\u0422\u0440\u0435\u0434) \u041f\u0440\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c\u043e\u0441\u0442\u044c \u0432 shared/ui"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://youtu.be/Yi-A20x2dcA",children:"(\u0412\u0438\u0434\u0435\u043e) \u041a\u0440\u0430\u0442\u043a\u043e \u043e Atomic Design"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://youtu.be/SnzPAr_FJ7w?t=587",children:"(\u0414\u043e\u043a\u043b\u0430\u0434) \u0418\u043b\u044c\u044f \u0410\u0437\u0438\u043d - Feature-Sliced Design (\u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \u043f\u0440\u043e Atomic Design)"})}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"feature-driven",children:"Feature Driven"}),"\n",(0,s.jsx)(r.Ay,{ticket:"219"}),"\n",(0,s.jsxs)(n.blockquote,{children:["\n",(0,s.jsx)(n.p,{children:"\u041e \u043f\u043e\u0434\u0445\u043e\u0434\u0435; \u041e \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c\u043e\u0441\u0442\u0438 \u0432 \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434\u0435; \u043f\u043e\u0437\u0438\u0446\u0438\u044f FSD"}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"\u041f\u0440\u043e \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c, \u0438\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u0435 \u0438 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://youtu.be/BWAeYuWFHhs",children:"(\u0414\u043e\u043a\u043b\u0430\u0434) Oleg Isonen - Feature Driven Architecture"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://github.com/feature-sliced/documentation/tree/rc/feature-driven",children:"Feature Driven - \u041a\u0440\u0430\u0442\u043a\u0430\u044f \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f (\u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f FSD)"})}),"\n"]})]})}function u(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(h,{...e})}):h(e)}},1100:(e,n,i)=>{i.d(n,{R:()=>l,x:()=>c});var s=i(758);const t={},r=s.createContext(t);function l(e){const n=s.useContext(r);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:l(e.components),s.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/ru/assets/js/457d5840.b0edcac0.js b/ru/assets/js/457d5840.bb98f460.js similarity index 99% rename from ru/assets/js/457d5840.b0edcac0.js rename to ru/assets/js/457d5840.bb98f460.js index 2f569faa8a..2f7cde7003 100644 --- a/ru/assets/js/457d5840.b0edcac0.js +++ b/ru/assets/js/457d5840.bb98f460.js @@ -1 +1 @@ -"use strict";(self.webpackChunk_feature_sliced_documentation=self.webpackChunk_feature_sliced_documentation||[]).push([[6744],{7716:(e,s,n)=>{n.r(s),n.d(s,{assets:()=>t,contentTitle:()=>d,default:()=>j,frontMatter:()=>l,metadata:()=>c,toc:()=>h});var i=n(6070),r=n(1100);const l={sidebar_position:1,pagination_next:"reference/slices-segments"},d="\u0421\u043b\u043e\u0438",c={id:"reference/layers",title:"\u0421\u043b\u043e\u0438",description:"\u0421\u043b\u043e\u0438 - \u044d\u0442\u043e \u043f\u0435\u0440\u0432\u044b\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u0438 \u0432 Feature-Sliced Design. \u0418\u0445 \u0446\u0435\u043b\u044c - \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u044c \u043a\u043e\u0434 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0442\u043e\u0433\u043e, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0435\u043c\u0443 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0438 \u043e\u0442 \u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0434\u0440\u0443\u0433\u0438\u0445 \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u043e\u043d \u0437\u0430\u0432\u0438\u0441\u0438\u0442.",source:"@site/i18n/ru/docusaurus-plugin-content-docs/current/reference/layers.mdx",sourceDirName:"reference",slug:"/reference/layers",permalink:"/ru/docs/reference/layers",draft:!1,unlisted:!1,editUrl:"https://github.com/feature-sliced/documentation/edit/master/i18n/ru/docusaurus-plugin-content-docs/current/reference/layers.mdx",tags:[],version:"current",lastUpdatedAt:1727607766e3,sidebarPosition:1,frontMatter:{sidebar_position:1,pagination_next:"reference/slices-segments"},sidebar:"referenceSidebar",previous:{title:"\ud83d\udcda \u0421\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u0438\u043a",permalink:"/ru/docs/reference/"},next:{title:"\u0421\u043b\u0430\u0439\u0441\u044b \u0438 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u044b",permalink:"/ru/docs/reference/slices-segments"}},t={},h=[{value:"\u041f\u0440\u0430\u0432\u0438\u043b\u043e \u0438\u043c\u043f\u043e\u0440\u0442\u043e\u0432 \u0434\u043b\u044f \u0441\u043b\u043e\u0451\u0432",id:"import-rule-on-layers",level:2},{value:"\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0441\u043b\u043e\u0451\u0432",id:"\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f-\u0441\u043b\u043e\u0451\u0432",level:2},{value:"Shared",id:"shared",level:3},{value:"Entities",id:"entities",level:3},{value:"Features",id:"features",level:3},{value:"Widgets",id:"widgets",level:3},{value:"Pages",id:"pages",level:3},{value:"Processes",id:"processes",level:3},{value:"App",id:"app",level:3}];function x(e){const s={a:"a",admonition:"admonition",blockquote:"blockquote",code:"code",em:"em",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",ol:"ol",p:"p",strong:"strong",ul:"ul",...(0,r.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(s.header,{children:(0,i.jsx)(s.h1,{id:"\u0441\u043b\u043e\u0438",children:"\u0421\u043b\u043e\u0438"})}),"\n",(0,i.jsx)(s.p,{children:"\u0421\u043b\u043e\u0438 - \u044d\u0442\u043e \u043f\u0435\u0440\u0432\u044b\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u0438 \u0432 Feature-Sliced Design. \u0418\u0445 \u0446\u0435\u043b\u044c - \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u044c \u043a\u043e\u0434 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0442\u043e\u0433\u043e, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0435\u043c\u0443 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0438 \u043e\u0442 \u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0434\u0440\u0443\u0433\u0438\u0445 \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u043e\u043d \u0437\u0430\u0432\u0438\u0441\u0438\u0442."}),"\n",(0,i.jsx)(s.admonition,{type:"note",children:(0,i.jsxs)(s.p,{children:["\u041d\u0430 \u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 ",(0,i.jsx)(s.em,{children:"\u043c\u043e\u0434\u0443\u043b\u044c"})," \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 \u043c\u043e\u0434\u0443\u043b\u044c \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 - \u0444\u0430\u0439\u043b \u0438\u043b\u0438 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u0441 \u0438\u043d\u0434\u0435\u043a\u0441\u043d\u044b\u043c \u0444\u0430\u0439\u043b\u043e\u043c. \u041d\u0435 \u043f\u0443\u0442\u0430\u0442\u044c \u0441 npm-\u043f\u0430\u043a\u0435\u0442\u0430\u043c\u0438."]})}),"\n",(0,i.jsx)(s.p,{children:"\u041a\u0430\u0436\u0434\u044b\u0439 \u0441\u043b\u043e\u0439 \u043d\u0435\u0441\u0435\u0442 \u0432 \u0441\u0435\u0431\u0435 \u043e\u0441\u043e\u0431\u044b\u0439 \u0441\u0435\u043c\u0430\u043d\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0441\u043c\u044b\u0441\u043b, \u043f\u043e\u043c\u043e\u0433\u0430\u044e\u0449\u0438\u0439 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c, \u043a\u0430\u043a\u0443\u044e \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0432\u043e\u0437\u043b\u043e\u0436\u0438\u0442\u044c \u043d\u0430 \u043c\u043e\u0434\u0443\u043b\u044c \u0432 \u0432\u0430\u0448\u0435\u043c \u043a\u043e\u0434\u0435. \u041d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0441\u043b\u043e\u0451\u0432 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432, \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0445 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c Feature-Sliced Design."}),"\n",(0,i.jsxs)(s.p,{children:["\u0412\u0441\u0435\u0433\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 ",(0,i.jsx)(s.strong,{children:"7 \u0441\u043b\u043e\u0451\u0432"}),", \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0445 \u043e\u0442 \u043d\u0430\u0438\u0431\u043e\u043b\u044c\u0448\u0435\u0439 \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0438\xa0\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043a \u043d\u0430\u0438\u043c\u0435\u043d\u044c\u0448\u0435\u0439:"]}),"\n",(0,i.jsx)("img",{src:"/img/layers/folders-graphic-light.svg#light-mode-only",width:"180",style:{float:"right",margin:"0 1em"},alt:"\u0414\u0435\u0440\u0435\u0432\u043e \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0441 \u043e\u0434\u043d\u043e\u0439 \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0439 \u043f\u0430\u043f\u043a\u043e\u0439 src \u0438 \u0441\u0435\u043c\u044c\u044e \u043f\u043e\u0434\u043f\u0430\u043f\u043a\u0430\u043c\u0438: app, processes, pages, widgets, features, entities, shared. \u041f\u0430\u043f\u043a\u0430 processes \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0430 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0442\u0443\u0441\u043a\u043b\u043e."}),"\n",(0,i.jsx)("img",{src:"/img/layers/folders-graphic-dark.svg#dark-mode-only",width:"180",style:{float:"right",margin:"0 1em"},alt:"\u0414\u0435\u0440\u0435\u0432\u043e \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0441 \u043e\u0434\u043d\u043e\u0439 \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0439 \u043f\u0430\u043f\u043a\u043e\u0439 src \u0438 \u0441\u0435\u043c\u044c\u044e \u043f\u043e\u0434\u043f\u0430\u043f\u043a\u0430\u043c\u0438: app, processes, pages, widgets, features, entities, shared. \u041f\u0430\u043f\u043a\u0430 processes \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0430 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0442\u0443\u0441\u043a\u043b\u043e."}),"\n",(0,i.jsxs)(s.ol,{children:["\n",(0,i.jsx)(s.li,{children:"App (\u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435)"}),"\n",(0,i.jsx)(s.li,{children:"Processes (\u041f\u0440\u043e\u0446\u0435\u0441\u0441\u044b, \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0438\u0439 \u0441\u043b\u043e\u0439)"}),"\n",(0,i.jsx)(s.li,{children:"Pages (\u0421\u0442\u0440\u0430\u043d\u0438\u0446\u044b)"}),"\n",(0,i.jsx)(s.li,{children:"Widgets (\u0412\u0438\u0434\u0436\u0435\u0442\u044b)"}),"\n",(0,i.jsx)(s.li,{children:"Features (\u0424\u0438\u0447\u0438/\u0444\u0443\u043d\u043a\u0446\u0438\u0438)"}),"\n",(0,i.jsx)(s.li,{children:"Entities (\u0421\u0443\u0449\u043d\u043e\u0441\u0442\u0438)"}),"\n",(0,i.jsx)(s.li,{children:"Shared (\u041e\u0431\u0449\u0438\u0439)"}),"\n"]}),"\n",(0,i.jsx)(s.p,{children:"\u0412\u044b \u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u043d\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u0435 \u0441\u043b\u043e\u0438 \u0432 \u0441\u0432\u043e\u0435\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0435 - \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0439\u0442\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0435, \u0447\u0442\u043e \u043f\u0440\u0438\u043d\u043e\u0441\u044f\u0442 \u043f\u043e\u043b\u044c\u0437\u0443 \u0432\u0430\u0448\u0435\u043c\u0443 \u043f\u0440\u043e\u0435\u043a\u0442\u0443."}),"\n",(0,i.jsx)(s.h2,{id:"import-rule-on-layers",children:"\u041f\u0440\u0430\u0432\u0438\u043b\u043e \u0438\u043c\u043f\u043e\u0440\u0442\u043e\u0432 \u0434\u043b\u044f \u0441\u043b\u043e\u0451\u0432"}),"\n",(0,i.jsxs)(s.p,{children:["\u0421\u043b\u043e\u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u0442 \u0438\u0437 ",(0,i.jsx)(s.em,{children:"\u0441\u043b\u0430\u0439\u0441\u043e\u0432"})," \u2014 \u0441\u0438\u043b\u044c\u043d\u043e \u0441\u0446\u0435\u043f\u043b\u0435\u043d\u043d\u044b\u0445 \u0433\u0440\u0443\u043f\u043f \u043c\u043e\u0434\u0443\u043b\u0435\u0439. Feature-Sliced Design \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043d\u0438\u0437\u043a\u0443\u044e \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u043e\u0441\u0442\u044c, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043c\u0435\u0436\u0434\u0443 \u0441\u043b\u0430\u0439\u0441\u0430\u043c\u0438 \u0440\u0435\u0433\u0443\u043b\u0438\u0440\u0443\u044e\u0442\u0441\u044f ",(0,i.jsx)(s.strong,{children:"\u043f\u0440\u0430\u0432\u0438\u043b\u043e\u043c \u0438\u043c\u043f\u043e\u0440\u0442\u043e\u0432 \u0434\u043b\u044f \u0441\u043b\u043e\u0451\u0432"}),":"]}),"\n",(0,i.jsxs)(s.blockquote,{children:["\n",(0,i.jsx)(s.p,{children:(0,i.jsx)(s.em,{children:"\u041c\u043e\u0434\u0443\u043b\u044c \u0432 \u0441\u043b\u0430\u0439\u0441\u0435 \u043c\u043e\u0436\u0435\u0442 \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u0440\u0443\u0433\u0438\u0435 \u0441\u043b\u0430\u0439\u0441\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u0435\u0441\u043b\u0438 \u043e\u043d\u0438 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u044b \u043d\u0430 \u0441\u043b\u043e\u044f\u0445 \u0441\u0442\u0440\u043e\u0433\u043e \u043d\u0438\u0436\u0435."})}),"\n"]}),"\n",(0,i.jsxs)(s.p,{children:["\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 ",(0,i.jsx)(s.code,{children:"~/features/aaa"}),", \u0441\u043b\u0430\u0439\u0441\u043e\u043c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f ",(0,i.jsx)(s.code,{children:"aaa"}),", \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0444\u0430\u0439\u043b ",(0,i.jsx)(s.code,{children:"~/features/aaa/api/request.ts"})," \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u0434 \u043d\u0438 \u0438\u0437 \u043a\u0430\u043a\u043e\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f \u0432 \u043f\u0430\u043f\u043a\u0443 \u0438\u0437 ",(0,i.jsx)(s.code,{children:"~/features/bbb"}),", \u043d\u043e \u043c\u043e\u0436\u0435\u0442 \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u0434 \u0438\u0437 ",(0,i.jsx)(s.code,{children:"~/entities"})," \u0438 ",(0,i.jsx)(s.code,{children:"~/shared"}),", \u0430 \u0442\u0430\u043a\u0436\u0435 \u0438\u0437 \u0441\u043e\u0441\u0435\u0434\u043d\u0438\u0445 \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u0432 ",(0,i.jsx)(s.code,{children:"~/features/aaa"}),"."]}),"\n",(0,i.jsx)(s.h2,{id:"\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f-\u0441\u043b\u043e\u0451\u0432",children:"\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0441\u043b\u043e\u0451\u0432"}),"\n",(0,i.jsx)(s.h3,{id:"shared",children:"Shared"}),"\n",(0,i.jsxs)(s.p,{children:["\u0418\u0437\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043c\u043e\u0434\u0443\u043b\u0438, \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u0438 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u0438, \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u043e\u0442 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0438\u043b\u0438 \u0431\u0438\u0437\u043d\u0435\u0441\u0430.\n\u0412\u043d\u0438\u043c\u0430\u043d\u0438\u0435: \u043d\u0435 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u0441\u043b\u043e\u0439 \u043a\u0430\u043a ",(0,i.jsx)(s.a,{href:"https://sova.dev/ru/why-utils-and-helpers-is-a-dump/",children:"\u0441\u0432\u0430\u043b\u043a\u0443 \u0443\u0442\u0438\u043b\u0438\u0442"}),"!"]}),"\n",(0,i.jsx)(s.p,{children:"\u042d\u0442\u043e\u0442 \u0441\u043b\u043e\u0439, \u0432 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 \u0434\u0440\u0443\u0433\u0438\u0445, \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u043d\u0435 \u0438\u0437 \u0441\u043b\u0430\u0439\u0441\u043e\u0432, \u0430 \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0438\u0437 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u043e\u0432."}),"\n",(0,i.jsxs)(s.p,{children:[(0,i.jsx)(s.strong,{children:"\u041f\u0440\u0438\u043c\u0435\u0440\u044b \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e"}),":"]}),"\n",(0,i.jsxs)(s.ul,{children:["\n",(0,i.jsx)(s.li,{children:"UI-\u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430"}),"\n",(0,i.jsx)(s.li,{children:"API-\u043a\u043b\u0438\u0435\u043d\u0442"}),"\n",(0,i.jsx)(s.li,{children:"\u041a\u043e\u0434, \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0439 \u0441 API \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430"}),"\n"]}),"\n",(0,i.jsx)(s.h3,{id:"entities",children:"Entities"}),"\n",(0,i.jsx)(s.p,{children:"\u041f\u043e\u043d\u044f\u0442\u0438\u044f \u0438\u0437 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043c\u0438\u0440\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u043c\u0435\u0441\u0442\u0435 \u043e\u0431\u0440\u0430\u0437\u0443\u044e\u0442 \u0441\u0443\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0442\u0430. \u041a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u044d\u0442\u043e \u0442\u0435\u0440\u043c\u0438\u043d\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0438\u0437\u043d\u0435\u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0434\u043b\u044f \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u0430."}),"\n",(0,i.jsx)(s.p,{children:"\u041a\u0430\u0436\u0434\u044b\u0439 \u0441\u043b\u0430\u0439\u0441 \u044d\u0442\u043e\u0433\u043e \u0441\u043b\u043e\u044f \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430, \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 CRUD (\u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435-\u0447\u0442\u0435\u043d\u0438\u0435-\u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435-\u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435)."}),"\n",(0,i.jsxs)(s.p,{children:[(0,i.jsx)(s.strong,{children:"\u041f\u0440\u0438\u043c\u0435\u0440\u044b \u0441\u043b\u0430\u0439\u0441\u043e\u0432"}),":"]}),"\n",(0,i.jsxs)("table",{children:[(0,i.jsx)("thead",{children:(0,i.jsxs)("tr",{children:[(0,i.jsx)("th",{children:" \u0414\u043b\u044f \u0441\u043e\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0435\u0442\u0438 "}),(0,i.jsx)("th",{children:" \u0414\u043b\u044f Git-\u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434\u0430 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, GitHub) "})]})}),(0,i.jsx)("tbody",{children:(0,i.jsxs)("tr",{children:[(0,i.jsx)("td",{children:(0,i.jsxs)("ul",{children:[(0,i.jsx)("li",{children:"\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c"}),(0,i.jsx)("li",{children:"\u041f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u044f"}),(0,i.jsx)("li",{children:"\u0413\u0440\u0443\u043f\u043f\u0430"})]})}),(0,i.jsx)("td",{children:(0,i.jsxs)("ul",{children:[(0,i.jsx)("li",{children:"\u0420\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439"}),(0,i.jsx)("li",{children:"\u0424\u0430\u0439\u043b"}),(0,i.jsx)("li",{children:"\u041a\u043e\u043c\u043c\u0438\u0442"})]})})]})})]}),"\n",(0,i.jsxs)(s.admonition,{type:"tip",children:[(0,i.jsxs)(s.p,{children:["\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c \u0432 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434\u0430 \u0434\u043b\u044f Git, \u0447\u0442\u043e ",(0,i.jsx)(s.em,{children:"\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439"})," \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 ",(0,i.jsx)(s.em,{children:"\u0444\u0430\u0439\u043b\u044b"}),". \u042d\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044c\u044e \u0431\u043e\u043b\u0435\u0435 \u0432\u044b\u0441\u043e\u043a\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f, \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0432\u043b\u043e\u0436\u0435\u043d\u044b \u0434\u0440\u0443\u0433\u0438\u0435 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438. \u042d\u0442\u043e \u0447\u0430\u0441\u0442\u0430\u044f \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f \u0441 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044f\u043c\u0438, \u0438 \u0438\u043d\u043e\u0433\u0434\u0430 \u0442\u0440\u0443\u0434\u043d\u043e \u0438\u043c\u0435\u0442\u044c \u0442\u0430\u043a\u0438\u0435 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438 \u0432\u044b\u0441\u043e\u043a\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f, \u043d\u0435 \u043d\u0430\u0440\u0443\u0448\u0430\u044f \u043f\u0440\u0430\u0432\u0438\u043b\u043e \u0438\u043c\u043f\u043e\u0440\u0442\u043e\u0432 \u0434\u043b\u044f \u0441\u043b\u043e\u0451\u0432."]}),(0,i.jsx)(s.p,{children:"\u0412\u043e\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u043f\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u044e \u044d\u0442\u043e\u0439 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b:"}),(0,i.jsxs)(s.ul,{children:["\n",(0,i.jsx)(s.li,{children:"UI \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0435\u0439 \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0441\u043b\u043e\u0442\u044b \u0434\u043b\u044f \u043c\u0435\u0441\u0442, \u043a\u0443\u0434\u0430 \u0431\u0443\u0434\u0443\u0442 \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438 \u043d\u0438\u0436\u043d\u0435\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f"}),"\n",(0,i.jsx)(s.li,{children:"\u0411\u0438\u0437\u043d\u0435\u0441-\u043b\u043e\u0433\u0438\u043a\u0430, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u0430\u044f \u0441 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435\u043c \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0435\u0439, \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0430 \u0432 Features (\u0432 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u0441\u043b\u0443\u0447\u0430\u0435\u0432)"}),"\n",(0,i.jsx)(s.li,{children:"\u0418\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0435\u0439 \u0438\u0437 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0438\u0437\u0432\u043b\u0435\u0447\u0435\u043d\u044b \u0432 \u0441\u043b\u043e\u0439 Shared, \u0440\u044f\u0434\u043e\u043c \u0441 API-\u043a\u043b\u0438\u0435\u043d\u0442\u043e\u043c"}),"\n"]})]}),"\n",(0,i.jsx)(s.h3,{id:"features",children:"Features"}),"\n",(0,i.jsx)(s.p,{children:"\u0414\u0435\u0439\u0441\u0442\u0432\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043c\u043e\u0436\u0435\u0442 \u0441\u043e\u0432\u0435\u0440\u0448\u0430\u0442\u044c \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u0434\u043b\u044f \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441 \u0431\u0438\u0437\u043d\u0435\u0441-\u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044f\u043c\u0438, \u0447\u0442\u043e\u0431 \u0434\u043e\u0441\u0442\u0438\u0447\u044c \u0446\u0435\u043d\u043d\u043e\u0433\u043e \u0434\u043b\u044f \u0441\u0435\u0431\u044f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430. \u0421\u044e\u0434\u0430 \u0442\u0430\u043a\u0436\u0435 \u0432\u0445\u043e\u0434\u044f\u0442 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u043e\u0442 \u0438\u043c\u0435\u043d\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u0447\u0442\u043e\u0431\u044b \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0434\u043b\u044f \u043d\u0435\u0433\u043e \u0446\u0435\u043d\u043d\u043e\u0441\u0442\u044c."}),"\n",(0,i.jsxs)(s.p,{children:["\u0421\u043b\u0430\u0439\u0441 \u043d\u0430 \u044d\u0442\u043e\u043c \u0441\u043b\u043e\u0435 \u043c\u043e\u0436\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c ",(0,i.jsx)(s.em,{children:"\u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0435"})," \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430, \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043a API, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f, \u0441\u043e\u0437\u0434\u0430\u044e\u0449\u0438\u0435 \u0446\u0435\u043d\u043d\u043e\u0441\u0442\u044c."]}),"\n",(0,i.jsxs)(s.p,{children:[(0,i.jsx)(s.strong,{children:"\u041f\u0440\u0438\u043c\u0435\u0440\u044b \u0441\u043b\u0430\u0439\u0441\u043e\u0432"}),":"]}),"\n",(0,i.jsxs)("table",{children:[(0,i.jsx)("thead",{children:(0,i.jsxs)("tr",{children:[(0,i.jsx)("th",{children:" \u0414\u043b\u044f \u0441\u043e\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0435\u0442\u0438 "}),(0,i.jsx)("th",{children:" \u0414\u043b\u044f Git-\u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434\u0430 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, GitHub) "}),(0,i.jsx)("th",{children:" \u0414\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043e\u0442 \u0438\u043c\u0435\u043d\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f "})]})}),(0,i.jsx)("tbody",{children:(0,i.jsxs)("tr",{children:[(0,i.jsx)("td",{children:(0,i.jsxs)("ul",{children:[(0,i.jsx)("li",{children:"\u0410\u0432\u0442\u043e\u0440\u0438\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f"}),(0,i.jsx)("li",{children:"\u0421\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u044e"}),(0,i.jsx)("li",{children:"\u0412\u0441\u0442\u0443\u043f\u0438\u0442\u044c \u0432 \u0433\u0440\u0443\u043f\u043f\u0443"})]})}),(0,i.jsx)("td",{children:(0,i.jsxs)("ul",{children:[(0,i.jsx)("li",{children:"\u0418\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0444\u0430\u0439\u043b"}),(0,i.jsx)("li",{children:"\u041e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439"}),(0,i.jsx)("li",{children:"\u0421\u043b\u0438\u0442\u044c \u0432\u0435\u0442\u043a\u0438"})]})}),(0,i.jsx)("td",{children:(0,i.jsxs)("ul",{children:[(0,i.jsx)("li",{children:"\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0442\u0451\u043c\u043d\u0443\u044e \u0442\u0435\u043c\u0443"}),(0,i.jsx)("li",{children:"\u0412\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u0432 \u0444\u043e\u043d\u0435"}),(0,i.jsx)("li",{children:"\u0414\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 User-Agent"})]})})]})})]}),"\n",(0,i.jsx)(s.h3,{id:"widgets",children:"Widgets"}),"\n",(0,i.jsx)(s.p,{children:"\u0421\u0430\u043c\u043e\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u044b\u0435 \u0431\u043b\u043e\u043a\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u0432\u043e\u0437\u043d\u0438\u043a\u043b\u0438 \u0438\u0437 \u043a\u043e\u043c\u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u0435\u0434\u0438\u043d\u0438\u0446 \u0431\u043e\u043b\u0435\u0435 \u043d\u0438\u0437\u043a\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f, \u0442\u0430\u043a\u0438\u0445 \u043a\u0430\u043a \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438 \u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438."}),"\n",(0,i.jsx)(s.p,{children:"\u042d\u0442\u043e\u0442 \u0441\u043b\u043e\u0439 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0437\u0430\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0441\u043b\u043e\u0442\u044b, \u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u0432 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0435 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0435\u0439, \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044f\u043c\u0438 \u0438 \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u044b\u043c\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u043c\u0438 \u0438\u0437 \u0444\u0438\u0447. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u0431\u044b\u0447\u043d\u043e \u043d\u0430 \u044d\u0442\u043e\u043c \u0441\u043b\u043e\u0435 \u043d\u0435 \u0440\u0430\u0437\u043c\u0435\u0449\u0430\u0435\u0442\u0441\u044f \u0431\u0438\u0437\u043d\u0435\u0441-\u043b\u043e\u0433\u0438\u043a\u0430, \u0432\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e \u043e\u043d\u0430 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0432 \u0444\u0438\u0447\u0430\u0445. \u041a\u0430\u0436\u0434\u044b\u0439 \u0441\u043b\u0430\u0439\u0441 \u043d\u0430 \u044d\u0442\u043e\u043c \u0441\u043b\u043e\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0433\u043e\u0442\u043e\u0432\u044b\u0435 \u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044e \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u0438 \u0438\u043d\u043e\u0433\u0434\u0430 \u043d\u0435-\u0431\u0438\u0437\u043d\u0435\u0441-\u043b\u043e\u0433\u0438\u043a\u0443, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0436\u0435\u0441\u0442\u044b, \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0441 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u043e\u0439 \u0438 \u0442.\u0434."}),"\n",(0,i.jsx)(s.p,{children:"\u0418\u043d\u043e\u0433\u0434\u0430 \u0443\u0434\u043e\u0431\u043d\u0435\u0435 \u0440\u0430\u0437\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0431\u0438\u0437\u043d\u0435\u0441-\u043b\u043e\u0433\u0438\u043a\u0443 \u043d\u0430 \u044d\u0442\u043e\u043c \u0441\u043b\u043e\u0435. \u0417\u0430\u0447\u0430\u0441\u0442\u0443\u044e, \u044d\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0442\u043e\u0433\u0434\u0430, \u043a\u043e\u0433\u0434\u0430 \u0432\u0438\u0434\u0436\u0435\u0442 \u0438\u043c\u0435\u0435\u0442 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043c\u043d\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0438 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b) \u0438 \u0431\u0438\u0437\u043d\u0435\u0441-\u043b\u043e\u0433\u0438\u043a\u0430 \u0432 \u043d\u0451\u043c \u043d\u0435 \u043f\u0435\u0440\u0435\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f."}),"\n",(0,i.jsxs)(s.p,{children:[(0,i.jsx)(s.strong,{children:"\u041f\u0440\u0438\u043c\u0435\u0440\u044b \u0441\u043b\u0430\u0439\u0441\u043e\u0432"}),":"]}),"\n",(0,i.jsxs)("table",{children:[(0,i.jsx)("thead",{children:(0,i.jsxs)("tr",{children:[(0,i.jsx)("th",{children:" \u0414\u043b\u044f \u0441\u043e\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0435\u0442\u0438 "}),(0,i.jsx)("th",{children:" \u0414\u043b\u044f Git-\u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434\u0430 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, GitHub) "})]})}),(0,i.jsx)("tbody",{children:(0,i.jsxs)("tr",{children:[(0,i.jsx)("td",{children:(0,i.jsxs)("ul",{children:[(0,i.jsx)("li",{children:"\u041a\u0430\u0440\u0442\u043e\u0447\u043a\u0430 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438"}),(0,i.jsx)("li",{children:"\u0428\u0430\u043f\u043a\u0430 \u043f\u0440\u043e\u0444\u0438\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f (\u0441 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f\u043c\u0438)"})]})}),(0,i.jsx)("td",{children:(0,i.jsxs)("ul",{children:[(0,i.jsx)("li",{children:"\u0421\u043f\u0438\u0441\u043e\u043a \u0444\u0430\u0439\u043b\u043e\u0432 \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 (\u0441 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f\u043c\u0438)"}),(0,i.jsx)("li",{children:"\u041a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439 \u0432 \u0432\u0435\u0442\u043a\u0435 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0435\u0432"}),(0,i.jsx)("li",{children:"\u041a\u0430\u0440\u0442\u043e\u0447\u043a\u0430 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f"})]})})]})})]}),"\n",(0,i.jsx)(s.admonition,{type:"tip",children:(0,i.jsxs)(s.p,{children:["\u0415\u0441\u043b\u0438 \u0432\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u0438 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0440\u043e\u0443\u0442\u0435\u0440 ",(0,i.jsx)(s.a,{href:"https://remix.run",children:"Remix"}),"), \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u043b\u043e\u0439 Widgets \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e \u0441\u043b\u043e\u044e Pages \u0432 \u043f\u043b\u043e\u0441\u043a\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u0438 - \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u044b\u0445 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043d\u044b\u0445 \u0431\u043b\u043e\u043a\u043e\u0432 \u0441 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435\u043c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441 \u0431\u044d\u043a\u0435\u043d\u0434\u0430, \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f\u043c\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0438 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0442\u0435\u043b\u044f\u043c\u0438 \u043e\u0448\u0438\u0431\u043e\u043a. \u0422\u0430\u043a\u0436\u0435 \u0437\u0434\u0435\u0441\u044c \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0437\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u043b\u0435\u0439\u0430\u0443\u0442\u044b \u0434\u043b\u044f \u0441\u043b\u043e\u044f Pages."]})}),"\n",(0,i.jsx)(s.h3,{id:"pages",children:"Pages"}),"\n",(0,i.jsx)(s.p,{children:"\u041f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u044b\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0434\u043b\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0447\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432\u0435\u0431-\u0441\u0430\u0439\u0442\u043e\u0432) \u0438\u043b\u0438 \u044d\u043a\u0440\u0430\u043d\u044b/\u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0438 \u0434\u043b\u044f \u044d\u043a\u0440\u0430\u043d\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439)."}),"\n",(0,i.jsx)(s.p,{children:"\u041f\u043e \u0441\u0432\u043e\u0435\u0439 \u043a\u043e\u043c\u043f\u043e\u0437\u0438\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u043f\u0440\u0438\u0440\u043e\u0434\u0435 \u044d\u0442\u043e\u0442 \u0441\u043b\u043e\u0439 \u043f\u043e\u0445\u043e\u0436 \u043d\u0430 Widgets, \u0445\u043e\u0442\u044c \u0438 \u0432 \u0431\u043e\u043b\u044c\u0448\u0435\u043c \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0435. \u041a\u0430\u0436\u0434\u044b\u0439 \u0441\u043b\u0430\u0439\u0441 \u043d\u0430 \u044d\u0442\u043e\u043c \u0441\u043b\u043e\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430, \u0433\u043e\u0442\u043e\u0432\u044b\u0435 \u043a \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044e \u043a \u0440\u043e\u0443\u0442\u0435\u0440\u0443, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043b\u043e\u0433\u0438\u043a\u0443 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043e\u0448\u0438\u0431\u043e\u043a."}),"\n",(0,i.jsxs)(s.p,{children:[(0,i.jsx)(s.strong,{children:"\u041f\u0440\u0438\u043c\u0435\u0440\u044b \u0441\u043b\u0430\u0439\u0441\u043e\u0432"}),":"]}),"\n",(0,i.jsxs)("table",{children:[(0,i.jsx)("thead",{children:(0,i.jsxs)("tr",{children:[(0,i.jsx)("th",{children:" \u0414\u043b\u044f \u0441\u043e\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0435\u0442\u0438 "}),(0,i.jsx)("th",{children:" \u0414\u043b\u044f Git-\u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434\u0430 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, GitHub) "})]})}),(0,i.jsx)("tbody",{children:(0,i.jsxs)("tr",{children:[(0,i.jsx)("td",{children:(0,i.jsxs)("ul",{children:[(0,i.jsx)("li",{children:"\u041b\u0435\u043d\u0442\u0430 \u043d\u043e\u0432\u043e\u0441\u0442\u0435\u0439"}),(0,i.jsx)("li",{children:"\u0421\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430"}),(0,i.jsx)("li",{children:"\u041f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0439 \u043f\u0440\u043e\u0444\u0438\u043b\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f"})]})}),(0,i.jsx)("td",{children:(0,i.jsxs)("ul",{children:[(0,i.jsx)("li",{children:"\u0421\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f"}),(0,i.jsx)("li",{children:"\u0420\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f"}),(0,i.jsx)("li",{children:"\u0412\u0435\u0442\u043a\u0438 \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438"})]})})]})})]}),"\n",(0,i.jsx)(s.h3,{id:"processes",children:"Processes"}),"\n",(0,i.jsx)(s.admonition,{type:"caution",children:(0,i.jsxs)(s.p,{children:["\u042d\u0442\u043e\u0442 \u0441\u043b\u043e\u0439 \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0438\u043c. \u0422\u0435\u043a\u0443\u0449\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442 \u0438\u0437\u0431\u0435\u0433\u0430\u0442\u044c \u0435\u0433\u043e \u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0442\u044c \u0435\u0433\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0432 ",(0,i.jsx)(s.code,{children:"features"})," \u0438 ",(0,i.jsx)(s.code,{children:"app"}),"."]})}),"\n",(0,i.jsx)(s.p,{children:"\u0412\u044b\u0445\u043e\u0434 \u0438\u0437 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0439, \u043a\u043e\u0433\u0434\u0430 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0441\u043b\u043e\u0436\u043d\u043e\u0435 \u043c\u043d\u043e\u0433\u043e\u0441\u0442\u0440\u0430\u043d\u0438\u0447\u043d\u043e\u0435 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435."}),"\n",(0,i.jsx)(s.p,{children:"\u042d\u0442\u043e\u0442 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u043d\u0430\u043c\u0435\u0440\u0435\u043d\u043d\u043e \u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u043c. \u0411\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0443 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u044d\u0442\u043e\u0442 \u0441\u043b\u043e\u0439 \u043d\u0435 \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u0442\u0441\u044f, \u043b\u043e\u0433\u0438\u043a\u0443 \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u0440\u043e\u0443\u0442\u0435\u0440\u0430 \u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 App. \u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u044d\u0442\u043e\u0433\u043e \u0441\u043b\u043e\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u043e\u0433\u0434\u0430, \u043a\u043e\u0433\u0434\u0430 \u0441\u043b\u043e\u0439 App \u0432\u044b\u0440\u0430\u0441\u0442\u0435\u0442 \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e, \u0447\u0442\u043e \u0441\u0442\u0430\u043d\u0435\u0442 \u043d\u0435\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u043c \u0438 \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0440\u0430\u0437\u0433\u0440\u0443\u0437\u043a\u0438."}),"\n",(0,i.jsx)(s.h3,{id:"app",children:"App"}),"\n",(0,i.jsx)(s.p,{children:"\u0412\u0441\u0451, \u0447\u0442\u043e \u043a\u0430\u0441\u0430\u0435\u0442\u0441\u044f \u0432\u0441\u0435\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u043a\u0430\u043a \u0432 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u0441\u043c\u044b\u0441\u043b\u0435 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u044b \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430), \u0442\u0430\u043a \u0438 \u0432 \u0431\u0438\u0437\u043d\u0435\u0441-\u0441\u043c\u044b\u0441\u043b\u0435 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u043a\u0430)."}),"\n",(0,i.jsx)(s.p,{children:"\u042d\u0442\u043e\u0442 \u0441\u043b\u043e\u0439 \u043e\u0431\u044b\u0447\u043d\u043e \u043d\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0441\u043b\u0430\u0439\u0441\u043e\u0432, \u043a\u0430\u043a \u0438 Shared, \u0432\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e \u043e\u043d \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u044b."}),"\n",(0,i.jsxs)(s.p,{children:[(0,i.jsx)(s.strong,{children:"\u041f\u0440\u0438\u043c\u0435\u0440\u044b \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e"}),":"]}),"\n",(0,i.jsxs)(s.ul,{children:["\n",(0,i.jsx)(s.li,{children:"\u0421\u0442\u0438\u043b\u0438"}),"\n",(0,i.jsx)(s.li,{children:"\u0420\u043e\u0443\u0442\u0435\u0440"}),"\n",(0,i.jsx)(s.li,{children:"\u0425\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u043f\u0440\u043e\u0447\u0438\u0435 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u044b \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430"}),"\n",(0,i.jsx)(s.li,{children:"\u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u043a\u0438"}),"\n"]})]})}function j(e={}){const{wrapper:s}={...(0,r.R)(),...e.components};return s?(0,i.jsx)(s,{...e,children:(0,i.jsx)(x,{...e})}):x(e)}},1100:(e,s,n)=>{n.d(s,{R:()=>d,x:()=>c});var i=n(758);const r={},l=i.createContext(r);function d(e){const s=i.useContext(l);return i.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function c(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:d(e.components),i.createElement(l.Provider,{value:s},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunk_feature_sliced_documentation=self.webpackChunk_feature_sliced_documentation||[]).push([[6744],{7716:(e,s,n)=>{n.r(s),n.d(s,{assets:()=>t,contentTitle:()=>d,default:()=>j,frontMatter:()=>l,metadata:()=>c,toc:()=>h});var i=n(6070),r=n(1100);const l={sidebar_position:1,pagination_next:"reference/slices-segments"},d="\u0421\u043b\u043e\u0438",c={id:"reference/layers",title:"\u0421\u043b\u043e\u0438",description:"\u0421\u043b\u043e\u0438 - \u044d\u0442\u043e \u043f\u0435\u0440\u0432\u044b\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u0438 \u0432 Feature-Sliced Design. \u0418\u0445 \u0446\u0435\u043b\u044c - \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u044c \u043a\u043e\u0434 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0442\u043e\u0433\u043e, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0435\u043c\u0443 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0438 \u043e\u0442 \u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0434\u0440\u0443\u0433\u0438\u0445 \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u043e\u043d \u0437\u0430\u0432\u0438\u0441\u0438\u0442.",source:"@site/i18n/ru/docusaurus-plugin-content-docs/current/reference/layers.mdx",sourceDirName:"reference",slug:"/reference/layers",permalink:"/ru/docs/reference/layers",draft:!1,unlisted:!1,editUrl:"https://github.com/feature-sliced/documentation/edit/master/i18n/ru/docusaurus-plugin-content-docs/current/reference/layers.mdx",tags:[],version:"current",lastUpdatedAt:1728325386e3,sidebarPosition:1,frontMatter:{sidebar_position:1,pagination_next:"reference/slices-segments"},sidebar:"referenceSidebar",previous:{title:"\ud83d\udcda \u0421\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u0438\u043a",permalink:"/ru/docs/reference/"},next:{title:"\u0421\u043b\u0430\u0439\u0441\u044b \u0438 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u044b",permalink:"/ru/docs/reference/slices-segments"}},t={},h=[{value:"\u041f\u0440\u0430\u0432\u0438\u043b\u043e \u0438\u043c\u043f\u043e\u0440\u0442\u043e\u0432 \u0434\u043b\u044f \u0441\u043b\u043e\u0451\u0432",id:"import-rule-on-layers",level:2},{value:"\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0441\u043b\u043e\u0451\u0432",id:"\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f-\u0441\u043b\u043e\u0451\u0432",level:2},{value:"Shared",id:"shared",level:3},{value:"Entities",id:"entities",level:3},{value:"Features",id:"features",level:3},{value:"Widgets",id:"widgets",level:3},{value:"Pages",id:"pages",level:3},{value:"Processes",id:"processes",level:3},{value:"App",id:"app",level:3}];function x(e){const s={a:"a",admonition:"admonition",blockquote:"blockquote",code:"code",em:"em",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",ol:"ol",p:"p",strong:"strong",ul:"ul",...(0,r.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(s.header,{children:(0,i.jsx)(s.h1,{id:"\u0441\u043b\u043e\u0438",children:"\u0421\u043b\u043e\u0438"})}),"\n",(0,i.jsx)(s.p,{children:"\u0421\u043b\u043e\u0438 - \u044d\u0442\u043e \u043f\u0435\u0440\u0432\u044b\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u0438 \u0432 Feature-Sliced Design. \u0418\u0445 \u0446\u0435\u043b\u044c - \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u044c \u043a\u043e\u0434 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0442\u043e\u0433\u043e, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0435\u043c\u0443 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0438 \u043e\u0442 \u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0434\u0440\u0443\u0433\u0438\u0445 \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u043e\u043d \u0437\u0430\u0432\u0438\u0441\u0438\u0442."}),"\n",(0,i.jsx)(s.admonition,{type:"note",children:(0,i.jsxs)(s.p,{children:["\u041d\u0430 \u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 ",(0,i.jsx)(s.em,{children:"\u043c\u043e\u0434\u0443\u043b\u044c"})," \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 \u043c\u043e\u0434\u0443\u043b\u044c \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 - \u0444\u0430\u0439\u043b \u0438\u043b\u0438 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u0441 \u0438\u043d\u0434\u0435\u043a\u0441\u043d\u044b\u043c \u0444\u0430\u0439\u043b\u043e\u043c. \u041d\u0435 \u043f\u0443\u0442\u0430\u0442\u044c \u0441 npm-\u043f\u0430\u043a\u0435\u0442\u0430\u043c\u0438."]})}),"\n",(0,i.jsx)(s.p,{children:"\u041a\u0430\u0436\u0434\u044b\u0439 \u0441\u043b\u043e\u0439 \u043d\u0435\u0441\u0435\u0442 \u0432 \u0441\u0435\u0431\u0435 \u043e\u0441\u043e\u0431\u044b\u0439 \u0441\u0435\u043c\u0430\u043d\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0441\u043c\u044b\u0441\u043b, \u043f\u043e\u043c\u043e\u0433\u0430\u044e\u0449\u0438\u0439 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c, \u043a\u0430\u043a\u0443\u044e \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0432\u043e\u0437\u043b\u043e\u0436\u0438\u0442\u044c \u043d\u0430 \u043c\u043e\u0434\u0443\u043b\u044c \u0432 \u0432\u0430\u0448\u0435\u043c \u043a\u043e\u0434\u0435. \u041d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0441\u043b\u043e\u0451\u0432 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432, \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0445 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c Feature-Sliced Design."}),"\n",(0,i.jsxs)(s.p,{children:["\u0412\u0441\u0435\u0433\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 ",(0,i.jsx)(s.strong,{children:"7 \u0441\u043b\u043e\u0451\u0432"}),", \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0445 \u043e\u0442 \u043d\u0430\u0438\u0431\u043e\u043b\u044c\u0448\u0435\u0439 \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0438\xa0\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043a \u043d\u0430\u0438\u043c\u0435\u043d\u044c\u0448\u0435\u0439:"]}),"\n",(0,i.jsx)("img",{src:"/img/layers/folders-graphic-light.svg#light-mode-only",width:"180",style:{float:"right",margin:"0 1em"},alt:"\u0414\u0435\u0440\u0435\u0432\u043e \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0441 \u043e\u0434\u043d\u043e\u0439 \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0439 \u043f\u0430\u043f\u043a\u043e\u0439 src \u0438 \u0441\u0435\u043c\u044c\u044e \u043f\u043e\u0434\u043f\u0430\u043f\u043a\u0430\u043c\u0438: app, processes, pages, widgets, features, entities, shared. \u041f\u0430\u043f\u043a\u0430 processes \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0430 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0442\u0443\u0441\u043a\u043b\u043e."}),"\n",(0,i.jsx)("img",{src:"/img/layers/folders-graphic-dark.svg#dark-mode-only",width:"180",style:{float:"right",margin:"0 1em"},alt:"\u0414\u0435\u0440\u0435\u0432\u043e \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0441 \u043e\u0434\u043d\u043e\u0439 \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0439 \u043f\u0430\u043f\u043a\u043e\u0439 src \u0438 \u0441\u0435\u043c\u044c\u044e \u043f\u043e\u0434\u043f\u0430\u043f\u043a\u0430\u043c\u0438: app, processes, pages, widgets, features, entities, shared. \u041f\u0430\u043f\u043a\u0430 processes \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0430 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0442\u0443\u0441\u043a\u043b\u043e."}),"\n",(0,i.jsxs)(s.ol,{children:["\n",(0,i.jsx)(s.li,{children:"App (\u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435)"}),"\n",(0,i.jsx)(s.li,{children:"Processes (\u041f\u0440\u043e\u0446\u0435\u0441\u0441\u044b, \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0438\u0439 \u0441\u043b\u043e\u0439)"}),"\n",(0,i.jsx)(s.li,{children:"Pages (\u0421\u0442\u0440\u0430\u043d\u0438\u0446\u044b)"}),"\n",(0,i.jsx)(s.li,{children:"Widgets (\u0412\u0438\u0434\u0436\u0435\u0442\u044b)"}),"\n",(0,i.jsx)(s.li,{children:"Features (\u0424\u0438\u0447\u0438/\u0444\u0443\u043d\u043a\u0446\u0438\u0438)"}),"\n",(0,i.jsx)(s.li,{children:"Entities (\u0421\u0443\u0449\u043d\u043e\u0441\u0442\u0438)"}),"\n",(0,i.jsx)(s.li,{children:"Shared (\u041e\u0431\u0449\u0438\u0439)"}),"\n"]}),"\n",(0,i.jsx)(s.p,{children:"\u0412\u044b \u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u043d\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u0435 \u0441\u043b\u043e\u0438 \u0432 \u0441\u0432\u043e\u0435\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0435 - \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0439\u0442\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0435, \u0447\u0442\u043e \u043f\u0440\u0438\u043d\u043e\u0441\u044f\u0442 \u043f\u043e\u043b\u044c\u0437\u0443 \u0432\u0430\u0448\u0435\u043c\u0443 \u043f\u0440\u043e\u0435\u043a\u0442\u0443."}),"\n",(0,i.jsx)(s.h2,{id:"import-rule-on-layers",children:"\u041f\u0440\u0430\u0432\u0438\u043b\u043e \u0438\u043c\u043f\u043e\u0440\u0442\u043e\u0432 \u0434\u043b\u044f \u0441\u043b\u043e\u0451\u0432"}),"\n",(0,i.jsxs)(s.p,{children:["\u0421\u043b\u043e\u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u0442 \u0438\u0437 ",(0,i.jsx)(s.em,{children:"\u0441\u043b\u0430\u0439\u0441\u043e\u0432"})," \u2014 \u0441\u0438\u043b\u044c\u043d\u043e \u0441\u0446\u0435\u043f\u043b\u0435\u043d\u043d\u044b\u0445 \u0433\u0440\u0443\u043f\u043f \u043c\u043e\u0434\u0443\u043b\u0435\u0439. Feature-Sliced Design \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043d\u0438\u0437\u043a\u0443\u044e \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u043e\u0441\u0442\u044c, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043c\u0435\u0436\u0434\u0443 \u0441\u043b\u0430\u0439\u0441\u0430\u043c\u0438 \u0440\u0435\u0433\u0443\u043b\u0438\u0440\u0443\u044e\u0442\u0441\u044f ",(0,i.jsx)(s.strong,{children:"\u043f\u0440\u0430\u0432\u0438\u043b\u043e\u043c \u0438\u043c\u043f\u043e\u0440\u0442\u043e\u0432 \u0434\u043b\u044f \u0441\u043b\u043e\u0451\u0432"}),":"]}),"\n",(0,i.jsxs)(s.blockquote,{children:["\n",(0,i.jsx)(s.p,{children:(0,i.jsx)(s.em,{children:"\u041c\u043e\u0434\u0443\u043b\u044c \u0432 \u0441\u043b\u0430\u0439\u0441\u0435 \u043c\u043e\u0436\u0435\u0442 \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u0440\u0443\u0433\u0438\u0435 \u0441\u043b\u0430\u0439\u0441\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u0435\u0441\u043b\u0438 \u043e\u043d\u0438 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u044b \u043d\u0430 \u0441\u043b\u043e\u044f\u0445 \u0441\u0442\u0440\u043e\u0433\u043e \u043d\u0438\u0436\u0435."})}),"\n"]}),"\n",(0,i.jsxs)(s.p,{children:["\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 ",(0,i.jsx)(s.code,{children:"~/features/aaa"}),", \u0441\u043b\u0430\u0439\u0441\u043e\u043c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f ",(0,i.jsx)(s.code,{children:"aaa"}),", \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0444\u0430\u0439\u043b ",(0,i.jsx)(s.code,{children:"~/features/aaa/api/request.ts"})," \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u0434 \u043d\u0438 \u0438\u0437 \u043a\u0430\u043a\u043e\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f \u0432 \u043f\u0430\u043f\u043a\u0443 \u0438\u0437 ",(0,i.jsx)(s.code,{children:"~/features/bbb"}),", \u043d\u043e \u043c\u043e\u0436\u0435\u0442 \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u0434 \u0438\u0437 ",(0,i.jsx)(s.code,{children:"~/entities"})," \u0438 ",(0,i.jsx)(s.code,{children:"~/shared"}),", \u0430 \u0442\u0430\u043a\u0436\u0435 \u0438\u0437 \u0441\u043e\u0441\u0435\u0434\u043d\u0438\u0445 \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u0432 ",(0,i.jsx)(s.code,{children:"~/features/aaa"}),"."]}),"\n",(0,i.jsx)(s.h2,{id:"\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f-\u0441\u043b\u043e\u0451\u0432",children:"\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0441\u043b\u043e\u0451\u0432"}),"\n",(0,i.jsx)(s.h3,{id:"shared",children:"Shared"}),"\n",(0,i.jsxs)(s.p,{children:["\u0418\u0437\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043c\u043e\u0434\u0443\u043b\u0438, \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u0438 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u0438, \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u043e\u0442 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0438\u043b\u0438 \u0431\u0438\u0437\u043d\u0435\u0441\u0430.\n\u0412\u043d\u0438\u043c\u0430\u043d\u0438\u0435: \u043d\u0435 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u0441\u043b\u043e\u0439 \u043a\u0430\u043a ",(0,i.jsx)(s.a,{href:"https://sova.dev/ru/why-utils-and-helpers-is-a-dump/",children:"\u0441\u0432\u0430\u043b\u043a\u0443 \u0443\u0442\u0438\u043b\u0438\u0442"}),"!"]}),"\n",(0,i.jsx)(s.p,{children:"\u042d\u0442\u043e\u0442 \u0441\u043b\u043e\u0439, \u0432 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 \u0434\u0440\u0443\u0433\u0438\u0445, \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u043d\u0435 \u0438\u0437 \u0441\u043b\u0430\u0439\u0441\u043e\u0432, \u0430 \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0438\u0437 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u043e\u0432."}),"\n",(0,i.jsxs)(s.p,{children:[(0,i.jsx)(s.strong,{children:"\u041f\u0440\u0438\u043c\u0435\u0440\u044b \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e"}),":"]}),"\n",(0,i.jsxs)(s.ul,{children:["\n",(0,i.jsx)(s.li,{children:"UI-\u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430"}),"\n",(0,i.jsx)(s.li,{children:"API-\u043a\u043b\u0438\u0435\u043d\u0442"}),"\n",(0,i.jsx)(s.li,{children:"\u041a\u043e\u0434, \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0439 \u0441 API \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430"}),"\n"]}),"\n",(0,i.jsx)(s.h3,{id:"entities",children:"Entities"}),"\n",(0,i.jsx)(s.p,{children:"\u041f\u043e\u043d\u044f\u0442\u0438\u044f \u0438\u0437 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043c\u0438\u0440\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u043c\u0435\u0441\u0442\u0435 \u043e\u0431\u0440\u0430\u0437\u0443\u044e\u0442 \u0441\u0443\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0442\u0430. \u041a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u044d\u0442\u043e \u0442\u0435\u0440\u043c\u0438\u043d\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0438\u0437\u043d\u0435\u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0434\u043b\u044f \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u0430."}),"\n",(0,i.jsx)(s.p,{children:"\u041a\u0430\u0436\u0434\u044b\u0439 \u0441\u043b\u0430\u0439\u0441 \u044d\u0442\u043e\u0433\u043e \u0441\u043b\u043e\u044f \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430, \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 CRUD (\u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435-\u0447\u0442\u0435\u043d\u0438\u0435-\u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435-\u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435)."}),"\n",(0,i.jsxs)(s.p,{children:[(0,i.jsx)(s.strong,{children:"\u041f\u0440\u0438\u043c\u0435\u0440\u044b \u0441\u043b\u0430\u0439\u0441\u043e\u0432"}),":"]}),"\n",(0,i.jsxs)("table",{children:[(0,i.jsx)("thead",{children:(0,i.jsxs)("tr",{children:[(0,i.jsx)("th",{children:" \u0414\u043b\u044f \u0441\u043e\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0435\u0442\u0438 "}),(0,i.jsx)("th",{children:" \u0414\u043b\u044f Git-\u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434\u0430 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, GitHub) "})]})}),(0,i.jsx)("tbody",{children:(0,i.jsxs)("tr",{children:[(0,i.jsx)("td",{children:(0,i.jsxs)("ul",{children:[(0,i.jsx)("li",{children:"\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c"}),(0,i.jsx)("li",{children:"\u041f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u044f"}),(0,i.jsx)("li",{children:"\u0413\u0440\u0443\u043f\u043f\u0430"})]})}),(0,i.jsx)("td",{children:(0,i.jsxs)("ul",{children:[(0,i.jsx)("li",{children:"\u0420\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439"}),(0,i.jsx)("li",{children:"\u0424\u0430\u0439\u043b"}),(0,i.jsx)("li",{children:"\u041a\u043e\u043c\u043c\u0438\u0442"})]})})]})})]}),"\n",(0,i.jsxs)(s.admonition,{type:"tip",children:[(0,i.jsxs)(s.p,{children:["\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c \u0432 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434\u0430 \u0434\u043b\u044f Git, \u0447\u0442\u043e ",(0,i.jsx)(s.em,{children:"\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439"})," \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 ",(0,i.jsx)(s.em,{children:"\u0444\u0430\u0439\u043b\u044b"}),". \u042d\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044c\u044e \u0431\u043e\u043b\u0435\u0435 \u0432\u044b\u0441\u043e\u043a\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f, \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0432\u043b\u043e\u0436\u0435\u043d\u044b \u0434\u0440\u0443\u0433\u0438\u0435 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438. \u042d\u0442\u043e \u0447\u0430\u0441\u0442\u0430\u044f \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f \u0441 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044f\u043c\u0438, \u0438 \u0438\u043d\u043e\u0433\u0434\u0430 \u0442\u0440\u0443\u0434\u043d\u043e \u0438\u043c\u0435\u0442\u044c \u0442\u0430\u043a\u0438\u0435 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438 \u0432\u044b\u0441\u043e\u043a\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f, \u043d\u0435 \u043d\u0430\u0440\u0443\u0448\u0430\u044f \u043f\u0440\u0430\u0432\u0438\u043b\u043e \u0438\u043c\u043f\u043e\u0440\u0442\u043e\u0432 \u0434\u043b\u044f \u0441\u043b\u043e\u0451\u0432."]}),(0,i.jsx)(s.p,{children:"\u0412\u043e\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u043f\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u044e \u044d\u0442\u043e\u0439 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b:"}),(0,i.jsxs)(s.ul,{children:["\n",(0,i.jsx)(s.li,{children:"UI \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0435\u0439 \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0441\u043b\u043e\u0442\u044b \u0434\u043b\u044f \u043c\u0435\u0441\u0442, \u043a\u0443\u0434\u0430 \u0431\u0443\u0434\u0443\u0442 \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438 \u043d\u0438\u0436\u043d\u0435\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f"}),"\n",(0,i.jsx)(s.li,{children:"\u0411\u0438\u0437\u043d\u0435\u0441-\u043b\u043e\u0433\u0438\u043a\u0430, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u0430\u044f \u0441 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435\u043c \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0435\u0439, \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0430 \u0432 Features (\u0432 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u0441\u043b\u0443\u0447\u0430\u0435\u0432)"}),"\n",(0,i.jsx)(s.li,{children:"\u0418\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0435\u0439 \u0438\u0437 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0438\u0437\u0432\u043b\u0435\u0447\u0435\u043d\u044b \u0432 \u0441\u043b\u043e\u0439 Shared, \u0440\u044f\u0434\u043e\u043c \u0441 API-\u043a\u043b\u0438\u0435\u043d\u0442\u043e\u043c"}),"\n"]})]}),"\n",(0,i.jsx)(s.h3,{id:"features",children:"Features"}),"\n",(0,i.jsx)(s.p,{children:"\u0414\u0435\u0439\u0441\u0442\u0432\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043c\u043e\u0436\u0435\u0442 \u0441\u043e\u0432\u0435\u0440\u0448\u0430\u0442\u044c \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u0434\u043b\u044f \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441 \u0431\u0438\u0437\u043d\u0435\u0441-\u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044f\u043c\u0438, \u0447\u0442\u043e\u0431 \u0434\u043e\u0441\u0442\u0438\u0447\u044c \u0446\u0435\u043d\u043d\u043e\u0433\u043e \u0434\u043b\u044f \u0441\u0435\u0431\u044f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430. \u0421\u044e\u0434\u0430 \u0442\u0430\u043a\u0436\u0435 \u0432\u0445\u043e\u0434\u044f\u0442 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u043e\u0442 \u0438\u043c\u0435\u043d\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u0447\u0442\u043e\u0431\u044b \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0434\u043b\u044f \u043d\u0435\u0433\u043e \u0446\u0435\u043d\u043d\u043e\u0441\u0442\u044c."}),"\n",(0,i.jsxs)(s.p,{children:["\u0421\u043b\u0430\u0439\u0441 \u043d\u0430 \u044d\u0442\u043e\u043c \u0441\u043b\u043e\u0435 \u043c\u043e\u0436\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c ",(0,i.jsx)(s.em,{children:"\u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0435"})," \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430, \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043a API, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f, \u0441\u043e\u0437\u0434\u0430\u044e\u0449\u0438\u0435 \u0446\u0435\u043d\u043d\u043e\u0441\u0442\u044c."]}),"\n",(0,i.jsxs)(s.p,{children:[(0,i.jsx)(s.strong,{children:"\u041f\u0440\u0438\u043c\u0435\u0440\u044b \u0441\u043b\u0430\u0439\u0441\u043e\u0432"}),":"]}),"\n",(0,i.jsxs)("table",{children:[(0,i.jsx)("thead",{children:(0,i.jsxs)("tr",{children:[(0,i.jsx)("th",{children:" \u0414\u043b\u044f \u0441\u043e\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0435\u0442\u0438 "}),(0,i.jsx)("th",{children:" \u0414\u043b\u044f Git-\u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434\u0430 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, GitHub) "}),(0,i.jsx)("th",{children:" \u0414\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043e\u0442 \u0438\u043c\u0435\u043d\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f "})]})}),(0,i.jsx)("tbody",{children:(0,i.jsxs)("tr",{children:[(0,i.jsx)("td",{children:(0,i.jsxs)("ul",{children:[(0,i.jsx)("li",{children:"\u0410\u0432\u0442\u043e\u0440\u0438\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f"}),(0,i.jsx)("li",{children:"\u0421\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u044e"}),(0,i.jsx)("li",{children:"\u0412\u0441\u0442\u0443\u043f\u0438\u0442\u044c \u0432 \u0433\u0440\u0443\u043f\u043f\u0443"})]})}),(0,i.jsx)("td",{children:(0,i.jsxs)("ul",{children:[(0,i.jsx)("li",{children:"\u0418\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0444\u0430\u0439\u043b"}),(0,i.jsx)("li",{children:"\u041e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439"}),(0,i.jsx)("li",{children:"\u0421\u043b\u0438\u0442\u044c \u0432\u0435\u0442\u043a\u0438"})]})}),(0,i.jsx)("td",{children:(0,i.jsxs)("ul",{children:[(0,i.jsx)("li",{children:"\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0442\u0451\u043c\u043d\u0443\u044e \u0442\u0435\u043c\u0443"}),(0,i.jsx)("li",{children:"\u0412\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u0432 \u0444\u043e\u043d\u0435"}),(0,i.jsx)("li",{children:"\u0414\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 User-Agent"})]})})]})})]}),"\n",(0,i.jsx)(s.h3,{id:"widgets",children:"Widgets"}),"\n",(0,i.jsx)(s.p,{children:"\u0421\u0430\u043c\u043e\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u044b\u0435 \u0431\u043b\u043e\u043a\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u0432\u043e\u0437\u043d\u0438\u043a\u043b\u0438 \u0438\u0437 \u043a\u043e\u043c\u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u0435\u0434\u0438\u043d\u0438\u0446 \u0431\u043e\u043b\u0435\u0435 \u043d\u0438\u0437\u043a\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f, \u0442\u0430\u043a\u0438\u0445 \u043a\u0430\u043a \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438 \u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438."}),"\n",(0,i.jsx)(s.p,{children:"\u042d\u0442\u043e\u0442 \u0441\u043b\u043e\u0439 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0437\u0430\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0441\u043b\u043e\u0442\u044b, \u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u0432 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0435 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0435\u0439, \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044f\u043c\u0438 \u0438 \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u044b\u043c\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u043c\u0438 \u0438\u0437 \u0444\u0438\u0447. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u0431\u044b\u0447\u043d\u043e \u043d\u0430 \u044d\u0442\u043e\u043c \u0441\u043b\u043e\u0435 \u043d\u0435 \u0440\u0430\u0437\u043c\u0435\u0449\u0430\u0435\u0442\u0441\u044f \u0431\u0438\u0437\u043d\u0435\u0441-\u043b\u043e\u0433\u0438\u043a\u0430, \u0432\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e \u043e\u043d\u0430 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0432 \u0444\u0438\u0447\u0430\u0445. \u041a\u0430\u0436\u0434\u044b\u0439 \u0441\u043b\u0430\u0439\u0441 \u043d\u0430 \u044d\u0442\u043e\u043c \u0441\u043b\u043e\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0433\u043e\u0442\u043e\u0432\u044b\u0435 \u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044e \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u0438 \u0438\u043d\u043e\u0433\u0434\u0430 \u043d\u0435-\u0431\u0438\u0437\u043d\u0435\u0441-\u043b\u043e\u0433\u0438\u043a\u0443, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0436\u0435\u0441\u0442\u044b, \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0441 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u043e\u0439 \u0438 \u0442.\u0434."}),"\n",(0,i.jsx)(s.p,{children:"\u0418\u043d\u043e\u0433\u0434\u0430 \u0443\u0434\u043e\u0431\u043d\u0435\u0435 \u0440\u0430\u0437\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0431\u0438\u0437\u043d\u0435\u0441-\u043b\u043e\u0433\u0438\u043a\u0443 \u043d\u0430 \u044d\u0442\u043e\u043c \u0441\u043b\u043e\u0435. \u0417\u0430\u0447\u0430\u0441\u0442\u0443\u044e, \u044d\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0442\u043e\u0433\u0434\u0430, \u043a\u043e\u0433\u0434\u0430 \u0432\u0438\u0434\u0436\u0435\u0442 \u0438\u043c\u0435\u0435\u0442 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043c\u043d\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0438 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b) \u0438 \u0431\u0438\u0437\u043d\u0435\u0441-\u043b\u043e\u0433\u0438\u043a\u0430 \u0432 \u043d\u0451\u043c \u043d\u0435 \u043f\u0435\u0440\u0435\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f."}),"\n",(0,i.jsxs)(s.p,{children:[(0,i.jsx)(s.strong,{children:"\u041f\u0440\u0438\u043c\u0435\u0440\u044b \u0441\u043b\u0430\u0439\u0441\u043e\u0432"}),":"]}),"\n",(0,i.jsxs)("table",{children:[(0,i.jsx)("thead",{children:(0,i.jsxs)("tr",{children:[(0,i.jsx)("th",{children:" \u0414\u043b\u044f \u0441\u043e\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0435\u0442\u0438 "}),(0,i.jsx)("th",{children:" \u0414\u043b\u044f Git-\u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434\u0430 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, GitHub) "})]})}),(0,i.jsx)("tbody",{children:(0,i.jsxs)("tr",{children:[(0,i.jsx)("td",{children:(0,i.jsxs)("ul",{children:[(0,i.jsx)("li",{children:"\u041a\u0430\u0440\u0442\u043e\u0447\u043a\u0430 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438"}),(0,i.jsx)("li",{children:"\u0428\u0430\u043f\u043a\u0430 \u043f\u0440\u043e\u0444\u0438\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f (\u0441 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f\u043c\u0438)"})]})}),(0,i.jsx)("td",{children:(0,i.jsxs)("ul",{children:[(0,i.jsx)("li",{children:"\u0421\u043f\u0438\u0441\u043e\u043a \u0444\u0430\u0439\u043b\u043e\u0432 \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 (\u0441 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f\u043c\u0438)"}),(0,i.jsx)("li",{children:"\u041a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439 \u0432 \u0432\u0435\u0442\u043a\u0435 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0435\u0432"}),(0,i.jsx)("li",{children:"\u041a\u0430\u0440\u0442\u043e\u0447\u043a\u0430 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f"})]})})]})})]}),"\n",(0,i.jsx)(s.admonition,{type:"tip",children:(0,i.jsxs)(s.p,{children:["\u0415\u0441\u043b\u0438 \u0432\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u0438 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0440\u043e\u0443\u0442\u0435\u0440 ",(0,i.jsx)(s.a,{href:"https://remix.run",children:"Remix"}),"), \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u043b\u043e\u0439 Widgets \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e \u0441\u043b\u043e\u044e Pages \u0432 \u043f\u043b\u043e\u0441\u043a\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u0438 - \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u044b\u0445 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043d\u044b\u0445 \u0431\u043b\u043e\u043a\u043e\u0432 \u0441 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435\u043c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441 \u0431\u044d\u043a\u0435\u043d\u0434\u0430, \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f\u043c\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0438 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0442\u0435\u043b\u044f\u043c\u0438 \u043e\u0448\u0438\u0431\u043e\u043a. \u0422\u0430\u043a\u0436\u0435 \u0437\u0434\u0435\u0441\u044c \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0437\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u043b\u0435\u0439\u0430\u0443\u0442\u044b \u0434\u043b\u044f \u0441\u043b\u043e\u044f Pages."]})}),"\n",(0,i.jsx)(s.h3,{id:"pages",children:"Pages"}),"\n",(0,i.jsx)(s.p,{children:"\u041f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u044b\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0434\u043b\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0447\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432\u0435\u0431-\u0441\u0430\u0439\u0442\u043e\u0432) \u0438\u043b\u0438 \u044d\u043a\u0440\u0430\u043d\u044b/\u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0438 \u0434\u043b\u044f \u044d\u043a\u0440\u0430\u043d\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439)."}),"\n",(0,i.jsx)(s.p,{children:"\u041f\u043e \u0441\u0432\u043e\u0435\u0439 \u043a\u043e\u043c\u043f\u043e\u0437\u0438\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u043f\u0440\u0438\u0440\u043e\u0434\u0435 \u044d\u0442\u043e\u0442 \u0441\u043b\u043e\u0439 \u043f\u043e\u0445\u043e\u0436 \u043d\u0430 Widgets, \u0445\u043e\u0442\u044c \u0438 \u0432 \u0431\u043e\u043b\u044c\u0448\u0435\u043c \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0435. \u041a\u0430\u0436\u0434\u044b\u0439 \u0441\u043b\u0430\u0439\u0441 \u043d\u0430 \u044d\u0442\u043e\u043c \u0441\u043b\u043e\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430, \u0433\u043e\u0442\u043e\u0432\u044b\u0435 \u043a \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044e \u043a \u0440\u043e\u0443\u0442\u0435\u0440\u0443, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043b\u043e\u0433\u0438\u043a\u0443 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043e\u0448\u0438\u0431\u043e\u043a."}),"\n",(0,i.jsxs)(s.p,{children:[(0,i.jsx)(s.strong,{children:"\u041f\u0440\u0438\u043c\u0435\u0440\u044b \u0441\u043b\u0430\u0439\u0441\u043e\u0432"}),":"]}),"\n",(0,i.jsxs)("table",{children:[(0,i.jsx)("thead",{children:(0,i.jsxs)("tr",{children:[(0,i.jsx)("th",{children:" \u0414\u043b\u044f \u0441\u043e\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0435\u0442\u0438 "}),(0,i.jsx)("th",{children:" \u0414\u043b\u044f Git-\u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434\u0430 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, GitHub) "})]})}),(0,i.jsx)("tbody",{children:(0,i.jsxs)("tr",{children:[(0,i.jsx)("td",{children:(0,i.jsxs)("ul",{children:[(0,i.jsx)("li",{children:"\u041b\u0435\u043d\u0442\u0430 \u043d\u043e\u0432\u043e\u0441\u0442\u0435\u0439"}),(0,i.jsx)("li",{children:"\u0421\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430"}),(0,i.jsx)("li",{children:"\u041f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0439 \u043f\u0440\u043e\u0444\u0438\u043b\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f"})]})}),(0,i.jsx)("td",{children:(0,i.jsxs)("ul",{children:[(0,i.jsx)("li",{children:"\u0421\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f"}),(0,i.jsx)("li",{children:"\u0420\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f"}),(0,i.jsx)("li",{children:"\u0412\u0435\u0442\u043a\u0438 \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438"})]})})]})})]}),"\n",(0,i.jsx)(s.h3,{id:"processes",children:"Processes"}),"\n",(0,i.jsx)(s.admonition,{type:"caution",children:(0,i.jsxs)(s.p,{children:["\u042d\u0442\u043e\u0442 \u0441\u043b\u043e\u0439 \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0438\u043c. \u0422\u0435\u043a\u0443\u0449\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442 \u0438\u0437\u0431\u0435\u0433\u0430\u0442\u044c \u0435\u0433\u043e \u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0442\u044c \u0435\u0433\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0432 ",(0,i.jsx)(s.code,{children:"features"})," \u0438 ",(0,i.jsx)(s.code,{children:"app"}),"."]})}),"\n",(0,i.jsx)(s.p,{children:"\u0412\u044b\u0445\u043e\u0434 \u0438\u0437 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0439, \u043a\u043e\u0433\u0434\u0430 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0441\u043b\u043e\u0436\u043d\u043e\u0435 \u043c\u043d\u043e\u0433\u043e\u0441\u0442\u0440\u0430\u043d\u0438\u0447\u043d\u043e\u0435 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435."}),"\n",(0,i.jsx)(s.p,{children:"\u042d\u0442\u043e\u0442 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u043d\u0430\u043c\u0435\u0440\u0435\u043d\u043d\u043e \u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u043c. \u0411\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0443 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u044d\u0442\u043e\u0442 \u0441\u043b\u043e\u0439 \u043d\u0435 \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u0442\u0441\u044f, \u043b\u043e\u0433\u0438\u043a\u0443 \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u0440\u043e\u0443\u0442\u0435\u0440\u0430 \u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 App. \u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u044d\u0442\u043e\u0433\u043e \u0441\u043b\u043e\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u043e\u0433\u0434\u0430, \u043a\u043e\u0433\u0434\u0430 \u0441\u043b\u043e\u0439 App \u0432\u044b\u0440\u0430\u0441\u0442\u0435\u0442 \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e, \u0447\u0442\u043e \u0441\u0442\u0430\u043d\u0435\u0442 \u043d\u0435\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u043c \u0438 \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0440\u0430\u0437\u0433\u0440\u0443\u0437\u043a\u0438."}),"\n",(0,i.jsx)(s.h3,{id:"app",children:"App"}),"\n",(0,i.jsx)(s.p,{children:"\u0412\u0441\u0451, \u0447\u0442\u043e \u043a\u0430\u0441\u0430\u0435\u0442\u0441\u044f \u0432\u0441\u0435\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u043a\u0430\u043a \u0432 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u0441\u043c\u044b\u0441\u043b\u0435 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u044b \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430), \u0442\u0430\u043a \u0438 \u0432 \u0431\u0438\u0437\u043d\u0435\u0441-\u0441\u043c\u044b\u0441\u043b\u0435 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u043a\u0430)."}),"\n",(0,i.jsx)(s.p,{children:"\u042d\u0442\u043e\u0442 \u0441\u043b\u043e\u0439 \u043e\u0431\u044b\u0447\u043d\u043e \u043d\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0441\u043b\u0430\u0439\u0441\u043e\u0432, \u043a\u0430\u043a \u0438 Shared, \u0432\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e \u043e\u043d \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u044b."}),"\n",(0,i.jsxs)(s.p,{children:[(0,i.jsx)(s.strong,{children:"\u041f\u0440\u0438\u043c\u0435\u0440\u044b \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e"}),":"]}),"\n",(0,i.jsxs)(s.ul,{children:["\n",(0,i.jsx)(s.li,{children:"\u0421\u0442\u0438\u043b\u0438"}),"\n",(0,i.jsx)(s.li,{children:"\u0420\u043e\u0443\u0442\u0435\u0440"}),"\n",(0,i.jsx)(s.li,{children:"\u0425\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u043f\u0440\u043e\u0447\u0438\u0435 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u044b \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430"}),"\n",(0,i.jsx)(s.li,{children:"\u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u043a\u0438"}),"\n"]})]})}function j(e={}){const{wrapper:s}={...(0,r.R)(),...e.components};return s?(0,i.jsx)(s,{...e,children:(0,i.jsx)(x,{...e})}):x(e)}},1100:(e,s,n)=>{n.d(s,{R:()=>d,x:()=>c});var i=n(758);const r={},l=i.createContext(r);function d(e){const s=i.useContext(l);return i.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function c(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:d(e.components),i.createElement(l.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/ru/assets/js/4eea1952.a012775a.js b/ru/assets/js/4eea1952.76ec5d8f.js similarity index 98% rename from ru/assets/js/4eea1952.a012775a.js rename to ru/assets/js/4eea1952.76ec5d8f.js index 25d90ecf01..e06c368c43 100644 --- a/ru/assets/js/4eea1952.a012775a.js +++ b/ru/assets/js/4eea1952.76ec5d8f.js @@ -1 +1 @@ -"use strict";(self.webpackChunk_feature_sliced_documentation=self.webpackChunk_feature_sliced_documentation||[]).push([[887],{1928:(e,t,i)=>{i.d(t,{Ay:()=>u,RM:()=>a});var n=i(6070),s=i(1100),r=(i(758),i(6783)),c=i(7765);const d=e=>{let{ticket:t}=e;const i=`https://github.com/feature-sliced/documentation/issues/${t}`;return(0,n.jsxs)("div",{children:[(0,n.jsx)("p",{children:(0,c.T)({id:"shared.wip.title"})}),(0,n.jsx)("p",{children:(0,c.T)({id:"shared.wip.subtitle"})}),(0,n.jsxs)("ul",{children:[(0,n.jsxs)("li",{children:[(0,c.T)({id:"shared.wip.var.feedback.base"}),(0,n.jsx)(r.A,{to:i,children:(0,c.T)({id:"shared.wip.var.feedback.link"})})]}),(0,n.jsxs)("li",{children:[(0,c.T)({id:"shared.wip.var.material.base"}),(0,n.jsx)(r.A,{to:"https://t.me/feature_sliced",children:(0,c.T)({id:"shared.wip.var.material.link"})})]}),(0,n.jsxs)("li",{children:[(0,c.T)({id:"shared.wip.var.contribute.base"}),(0,n.jsx)(r.A,{to:"https://github.com/feature-sliced/documentation/blob/master/CONTRIBUTING.md",children:(0,c.T)({id:"shared.wip.var.contribute.link"})})]})]}),(0,n.jsx)("br",{}),(0,n.jsx)("p",{children:(0,n.jsx)("i",{children:"\ud83c\udf70 Stay tuned!"})})]})},a=[];function o(e){const t={admonition:"admonition",...(0,s.R)(),...e.components};return(0,n.jsx)(t.admonition,{title:"WIP",type:"caution",children:(0,n.jsx)(d,{ticket:e.ticket})})}function u(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(o,{...e})}):o(e)}},3906:(e,t,i)=>{i.r(t),i.d(t,{assets:()=>o,contentTitle:()=>d,default:()=>p,frontMatter:()=>c,metadata:()=>a,toc:()=>u});var n=i(6070),s=i(1100),r=i(1928);const c={sidebar_class_name:"sidebar-item--wip",unlisted:!0},d="\u041c\u0435\u0442\u0440\u0438\u043a\u0430",a={id:"guides/examples/metric",title:"\u041c\u0435\u0442\u0440\u0438\u043a\u0430",description:"\u041f\u0440\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u044b \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043c\u0435\u0442\u0440\u0438\u043a\u0438 \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438",source:"@site/i18n/ru/docusaurus-plugin-content-docs/current/guides/examples/metric.mdx",sourceDirName:"guides/examples",slug:"/guides/examples/metric",permalink:"/ru/docs/guides/examples/metric",draft:!1,unlisted:!0,editUrl:"https://github.com/feature-sliced/documentation/edit/master/i18n/ru/docusaurus-plugin-content-docs/current/guides/examples/metric.mdx",tags:[],version:"current",lastUpdatedAt:1727607766e3,frontMatter:{sidebar_class_name:"sidebar-item--wip",unlisted:!0},sidebar:"guidesSidebar"},o={},u=[...r.RM];function l(e){const t={blockquote:"blockquote",h1:"h1",header:"header",p:"p",...(0,s.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.header,{children:(0,n.jsx)(t.h1,{id:"\u043c\u0435\u0442\u0440\u0438\u043a\u0430",children:"\u041c\u0435\u0442\u0440\u0438\u043a\u0430"})}),"\n",(0,n.jsx)(r.Ay,{ticket:"181"}),"\n",(0,n.jsxs)(t.blockquote,{children:["\n",(0,n.jsx)(t.p,{children:"\u041f\u0440\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u044b \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043c\u0435\u0442\u0440\u0438\u043a\u0438 \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438"}),"\n"]})]})}function p(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(l,{...e})}):l(e)}},1100:(e,t,i)=>{i.d(t,{R:()=>c,x:()=>d});var n=i(758);const s={},r=n.createContext(s);function c(e){const t=n.useContext(r);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function d(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:c(e.components),n.createElement(r.Provider,{value:t},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunk_feature_sliced_documentation=self.webpackChunk_feature_sliced_documentation||[]).push([[887],{1928:(e,t,i)=>{i.d(t,{Ay:()=>u,RM:()=>a});var n=i(6070),s=i(1100),r=(i(758),i(6783)),c=i(7765);const d=e=>{let{ticket:t}=e;const i=`https://github.com/feature-sliced/documentation/issues/${t}`;return(0,n.jsxs)("div",{children:[(0,n.jsx)("p",{children:(0,c.T)({id:"shared.wip.title"})}),(0,n.jsx)("p",{children:(0,c.T)({id:"shared.wip.subtitle"})}),(0,n.jsxs)("ul",{children:[(0,n.jsxs)("li",{children:[(0,c.T)({id:"shared.wip.var.feedback.base"}),(0,n.jsx)(r.A,{to:i,children:(0,c.T)({id:"shared.wip.var.feedback.link"})})]}),(0,n.jsxs)("li",{children:[(0,c.T)({id:"shared.wip.var.material.base"}),(0,n.jsx)(r.A,{to:"https://t.me/feature_sliced",children:(0,c.T)({id:"shared.wip.var.material.link"})})]}),(0,n.jsxs)("li",{children:[(0,c.T)({id:"shared.wip.var.contribute.base"}),(0,n.jsx)(r.A,{to:"https://github.com/feature-sliced/documentation/blob/master/CONTRIBUTING.md",children:(0,c.T)({id:"shared.wip.var.contribute.link"})})]})]}),(0,n.jsx)("br",{}),(0,n.jsx)("p",{children:(0,n.jsx)("i",{children:"\ud83c\udf70 Stay tuned!"})})]})},a=[];function o(e){const t={admonition:"admonition",...(0,s.R)(),...e.components};return(0,n.jsx)(t.admonition,{title:"WIP",type:"caution",children:(0,n.jsx)(d,{ticket:e.ticket})})}function u(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(o,{...e})}):o(e)}},3906:(e,t,i)=>{i.r(t),i.d(t,{assets:()=>o,contentTitle:()=>d,default:()=>p,frontMatter:()=>c,metadata:()=>a,toc:()=>u});var n=i(6070),s=i(1100),r=i(1928);const c={sidebar_class_name:"sidebar-item--wip",unlisted:!0},d="\u041c\u0435\u0442\u0440\u0438\u043a\u0430",a={id:"guides/examples/metric",title:"\u041c\u0435\u0442\u0440\u0438\u043a\u0430",description:"\u041f\u0440\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u044b \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043c\u0435\u0442\u0440\u0438\u043a\u0438 \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438",source:"@site/i18n/ru/docusaurus-plugin-content-docs/current/guides/examples/metric.mdx",sourceDirName:"guides/examples",slug:"/guides/examples/metric",permalink:"/ru/docs/guides/examples/metric",draft:!1,unlisted:!0,editUrl:"https://github.com/feature-sliced/documentation/edit/master/i18n/ru/docusaurus-plugin-content-docs/current/guides/examples/metric.mdx",tags:[],version:"current",lastUpdatedAt:1728325386e3,frontMatter:{sidebar_class_name:"sidebar-item--wip",unlisted:!0},sidebar:"guidesSidebar"},o={},u=[...r.RM];function l(e){const t={blockquote:"blockquote",h1:"h1",header:"header",p:"p",...(0,s.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.header,{children:(0,n.jsx)(t.h1,{id:"\u043c\u0435\u0442\u0440\u0438\u043a\u0430",children:"\u041c\u0435\u0442\u0440\u0438\u043a\u0430"})}),"\n",(0,n.jsx)(r.Ay,{ticket:"181"}),"\n",(0,n.jsxs)(t.blockquote,{children:["\n",(0,n.jsx)(t.p,{children:"\u041f\u0440\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u044b \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043c\u0435\u0442\u0440\u0438\u043a\u0438 \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438"}),"\n"]})]})}function p(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(l,{...e})}):l(e)}},1100:(e,t,i)=>{i.d(t,{R:()=>c,x:()=>d});var n=i(758);const s={},r=n.createContext(s);function c(e){const t=n.useContext(r);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function d(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:c(e.components),n.createElement(r.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/ru/assets/js/58b64b99.ceda65a2.js b/ru/assets/js/58b64b99.7a2c20a7.js similarity index 99% rename from ru/assets/js/58b64b99.ceda65a2.js rename to ru/assets/js/58b64b99.7a2c20a7.js index 59b818a8b4..1e33d2a33e 100644 --- a/ru/assets/js/58b64b99.ceda65a2.js +++ b/ru/assets/js/58b64b99.7a2c20a7.js @@ -1 +1 @@ -"use strict";(self.webpackChunk_feature_sliced_documentation=self.webpackChunk_feature_sliced_documentation||[]).push([[8056],{3870:(e,s,n)=>{n.r(s),n.d(s,{assets:()=>p,contentTitle:()=>r,default:()=>l,frontMatter:()=>c,metadata:()=>i,toc:()=>a});var t=n(6070),d=n(1100);const c={sidebar_position:10},r="\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0441 NextJS",i={id:"guides/tech/with-nextjs",title:"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0441 NextJS",description:"\u0412 NextJS \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c FSD, \u043d\u043e \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u044e\u0442 \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u044b \u0438\u0437-\u0437\u0430 \u0440\u0430\u0437\u043b\u0438\u0447\u0438\u0439 \u043c\u0435\u0436\u0434\u0443 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f\u043c\u0438 \u043a \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 NextJS \u0438 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0430\u043c\u0438 FSD \u0432 \u0434\u0432\u0443\u0445 \u043f\u0443\u043d\u043a\u0442\u0430\u0445:",source:"@site/i18n/ru/docusaurus-plugin-content-docs/current/guides/tech/with-nextjs.mdx",sourceDirName:"guides/tech",slug:"/guides/tech/with-nextjs",permalink:"/ru/docs/guides/tech/with-nextjs",draft:!1,unlisted:!1,editUrl:"https://github.com/feature-sliced/documentation/edit/master/i18n/ru/docusaurus-plugin-content-docs/current/guides/tech/with-nextjs.mdx",tags:[],version:"current",lastUpdatedAt:1727607766e3,sidebarPosition:10,frontMatter:{sidebar_position:10},sidebar:"guidesSidebar",previous:{title:"\u041c\u0438\u0433\u0440\u0430\u0446\u0438\u044f \u0441 v1",permalink:"/ru/docs/guides/migration/from-v1"},next:{title:"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0441 NuxtJS",permalink:"/ru/docs/guides/tech/with-nuxtjs"}},p={},a=[{value:"\u041a\u043e\u043d\u0444\u043b\u0438\u043a\u0442 \u043c\u0435\u0436\u0434\u0443 FSD \u0438 NextJS \u0432 \u0441\u043b\u043e\u0435 pages",id:"pages-conflict",level:2},{value:"\u041f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u043f\u0430\u043f\u043a\u0438 pages NextJS \u0432 \u043a\u043e\u0440\u043d\u0435\u0432\u0443\u044e \u043f\u0430\u043f\u043a\u0443 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 (\u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f)",id:"\u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u0435-\u043f\u0430\u043f\u043a\u0438-pages-nextjs-\u0432-\u043a\u043e\u0440\u043d\u0435\u0432\u0443\u044e-\u043f\u0430\u043f\u043a\u0443-\u043f\u0440\u043e\u0435\u043a\u0442\u0430-\u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f",level:3},{value:"\u041f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0430\u043f\u043a\u0438 pages \u0432 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435 FSD",id:"\u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0435-\u043f\u0430\u043f\u043a\u0438-pages-\u0432-\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435-fsd",level:3},{value:"\u041e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u043f\u0430\u043f\u043a\u0438 app \u0432 NextJS",id:"app-absence",level:2},{value:"\u0418\u043c\u043f\u043e\u0440\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0432 pages/_app.tsx",id:"\u0438\u043c\u043f\u043e\u0440\u0442-\u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438-\u0432-pages_apptsx",level:3},{value:"\u0420\u0430\u0431\u043e\u0442\u0430 \u0441 App Router",id:"app-router",level:2},{value:"\u0421\u043c. \u0442\u0430\u043a\u0436\u0435",id:"see-also",level:2}];function o(e){const s={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",img:"img",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,d.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(s.header,{children:(0,t.jsx)(s.h1,{id:"\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435-\u0441-nextjs",children:"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0441 NextJS"})}),"\n",(0,t.jsx)(s.p,{children:"\u0412 NextJS \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c FSD, \u043d\u043e \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u044e\u0442 \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u044b \u0438\u0437-\u0437\u0430 \u0440\u0430\u0437\u043b\u0438\u0447\u0438\u0439 \u043c\u0435\u0436\u0434\u0443 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f\u043c\u0438 \u043a \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 NextJS \u0438 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0430\u043c\u0438 FSD \u0432 \u0434\u0432\u0443\u0445 \u043f\u0443\u043d\u043a\u0442\u0430\u0445:\xa0"}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:["\u041c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u044f \u0444\u0430\u0439\u043b\u043e\u0432 \u0432 \u0441\u043b\u043e\u0435 ",(0,t.jsx)(s.code,{children:"pages"})]}),"\n",(0,t.jsxs)(s.li,{children:["\u041a\u043e\u043d\u0444\u043b\u0438\u043a\u0442 \u0438\u043b\u0438 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u0441\u043b\u043e\u044f ",(0,t.jsx)(s.code,{children:"app"})," \u0432 NextJS"]}),"\n"]}),"\n",(0,t.jsxs)(s.h2,{id:"pages-conflict",children:["\u041a\u043e\u043d\u0444\u043b\u0438\u043a\u0442 \u043c\u0435\u0436\u0434\u0443 FSD \u0438 NextJS \u0432 \u0441\u043b\u043e\u0435 ",(0,t.jsx)(s.code,{children:"pages"})]}),"\n",(0,t.jsxs)(s.p,{children:["NextJS \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0430\u043f\u043a\u0443 ",(0,t.jsx)(s.code,{children:"pages"})," \u0434\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u043e\u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. NextJS \u043e\u0436\u0438\u0434\u0430\u0435\u0442, \u0447\u0442\u043e \u0444\u0430\u0439\u043b\u044b \u0432 \u043f\u0430\u043f\u043a\u0435 ",(0,t.jsx)(s.code,{children:"pages"})," \u0431\u0443\u0434\u0443\u0442 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c URL-\u0430\u0434\u0440\u0435\u0441\u0430\u043c.\n\u042d\u0442\u043e\u0442 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u0438 ",(0,t.jsx)(s.strong,{children:"\u043d\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442"})," \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u0438 FSD, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0432 \u0442\u0430\u043a\u043e\u043c \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u0435 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u043d\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u043c \u0441\u043e\u0431\u043b\u044e\u0441\u0442\u0438 \u043f\u043b\u043e\u0441\u043a\u0443\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0441\u043b\u0430\u0439\u0441\u043e\u0432."]}),"\n",(0,t.jsxs)(s.h3,{id:"\u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u0435-\u043f\u0430\u043f\u043a\u0438-pages-nextjs-\u0432-\u043a\u043e\u0440\u043d\u0435\u0432\u0443\u044e-\u043f\u0430\u043f\u043a\u0443-\u043f\u0440\u043e\u0435\u043a\u0442\u0430-\u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f",children:["\u041f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u043f\u0430\u043f\u043a\u0438 ",(0,t.jsx)(s.code,{children:"pages"})," NextJS \u0432 \u043a\u043e\u0440\u043d\u0435\u0432\u0443\u044e \u043f\u0430\u043f\u043a\u0443 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 (\u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f)"]}),"\n",(0,t.jsxs)(s.p,{children:["\u041f\u043e\u0434\u0445\u043e\u0434 \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u0438 \u043f\u0430\u043f\u043a\u0438 ",(0,t.jsx)(s.code,{children:"pages"})," NextJS \u0432 \u043a\u043e\u0440\u043d\u0435\u0432\u0443\u044e \u043f\u0430\u043f\u043a\u0443 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0438 \u0438\u043c\u043f\u043e\u0440\u0442\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 FSD \u0432 \u043f\u0430\u043f\u043a\u0443 ",(0,t.jsx)(s.code,{children:"pages"})," NextJS. \u042d\u0442\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442\n\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 FSD \u0432\u043d\u0443\u0442\u0440\u0438 \u043f\u0430\u043f\u043a\u0438 ",(0,t.jsx)(s.code,{children:"src"}),"."]}),"\n",(0,t.jsx)(s.pre,{children:(0,t.jsx)(s.code,{className:"language-sh",children:"\u251c\u2500\u2500 pages # \u041f\u0430\u043f\u043a\u0430 pages (NextJS)\n\u251c\u2500\u2500 src\n\u2502 \u251c\u2500\u2500 app\n\u2502 \u251c\u2500\u2500 entities\n\u2502 \u251c\u2500\u2500 features\n\u2502 \u251c\u2500\u2500 pages # \u041f\u0430\u043f\u043a\u0430 pages (FSD)\n\u2502 \u251c\u2500\u2500 shared\n\u2502 \u251c\u2500\u2500 widgets\n"})}),"\n",(0,t.jsxs)(s.h3,{id:"\u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0435-\u043f\u0430\u043f\u043a\u0438-pages-\u0432-\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435-fsd",children:["\u041f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0430\u043f\u043a\u0438 ",(0,t.jsx)(s.code,{children:"pages"})," \u0432 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435 FSD"]}),"\n",(0,t.jsxs)(s.p,{children:["\u0414\u0440\u0443\u0433\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0440\u0435\u0448\u0438\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 - \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u0442\u044c \u0441\u043b\u043e\u0439 ",(0,t.jsx)(s.code,{children:"pages"})," \u0432 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435 FSD, \u0447\u0442\u043e\u0431\u044b \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u043e\u0432 \u0441 \u043f\u0430\u043f\u043a\u043e\u0439 ",(0,t.jsx)(s.code,{children:"pages"})," NextJS.\n\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u0442\u044c \u0441\u043b\u043e\u0439 ",(0,t.jsx)(s.code,{children:"pages"})," \u0432 FSD \u0432 ",(0,t.jsx)(s.code,{children:"views"}),".\xa0\n\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0432 \u043f\u0430\u043f\u043a\u0435 ",(0,t.jsx)(s.code,{children:"src"})," \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f \u0431\u0435\u0437 \u043f\u0440\u043e\u0442\u0438\u0432\u043e\u0440\u0435\u0447\u0438\u0439 \u0441 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f\u043c\u0438 NextJS."]}),"\n",(0,t.jsx)(s.pre,{children:(0,t.jsx)(s.code,{className:"language-sh",children:"\u251c\u2500\u2500 app\n\u251c\u2500\u2500 entities\n\u251c\u2500\u2500 features\n\u251c\u2500\u2500 pages # \u041f\u0430\u043f\u043a\u0430 pages (NextJS)\n\u251c\u2500\u2500 views # \u041f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u043f\u0430\u043f\u043a\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 FSD\n\u251c\u2500\u2500 shared\n\u251c\u2500\u2500 widgets\n"})}),"\n",(0,t.jsxs)(s.p,{children:["\u0423\u0447\u0442\u0438\u0442\u0435, \u0447\u0442\u043e \u0432 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u0437\u0430\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u043e \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0435 \u0432 \u0432\u0438\u0434\u043d\u043e\u043c \u043c\u0435\u0441\u0442\u0435 \u2014 \u0432 README \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0438\u043b\u0438 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438. \u042d\u0442\u043e \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0435 \u2014 \u0447\u0430\u0441\u0442\u044c ",(0,t.jsx)(s.a,{href:"/docs/about/understanding/knowledge-types",children:'"\u043f\u0440\u043e\u0435\u043a\u0442\u043d\u044b\u0445 \u0437\u043d\u0430\u043d\u0438\u0439"'}),"."]}),"\n",(0,t.jsxs)(s.h2,{id:"app-absence",children:["\u041e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u043f\u0430\u043f\u043a\u0438 ",(0,t.jsx)(s.code,{children:"app"})," \u0432 NextJS"]}),"\n",(0,t.jsxs)(s.p,{children:["\u0412 NextJS \u043d\u0438\u0436\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 13 \u043d\u0435\u0442 \u044f\u0432\u043d\u043e\u0439 \u043f\u0430\u043f\u043a\u0438 ",(0,t.jsx)(s.code,{children:"app"}),", \u0432\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e NextJS \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0444\u0430\u0439\u043b ",(0,t.jsx)(s.code,{children:"_app.tsx"}),",\n\u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u0433\u0440\u0430\u0435\u0442 \u0440\u043e\u043b\u044c \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430 \u043e\u0431\u0435\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044f \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u043f\u0440\u043e\u0435\u043a\u0442\u0430."]}),"\n",(0,t.jsxs)(s.h3,{id:"\u0438\u043c\u043f\u043e\u0440\u0442-\u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438-\u0432-pages_apptsx",children:["\u0418\u043c\u043f\u043e\u0440\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0432 ",(0,t.jsx)(s.code,{children:"pages/_app.tsx"})]}),"\n",(0,t.jsxs)(s.p,{children:["\u0427\u0442\u043e\u0431\u044b \u0440\u0435\u0448\u0438\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u044f \u043f\u0430\u043f\u043a\u0438 ",(0,t.jsx)(s.code,{children:"app"})," \u0432 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435 NextJS, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 ",(0,t.jsx)(s.code,{children:"App"})," \u0432\u043d\u0443\u0442\u0440\u0438 \u0441\u043b\u043e\u044f ",(0,t.jsx)(s.code,{children:"app"})," \u0438 \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 ",(0,t.jsx)(s.code,{children:"App"})," \u0432 ",(0,t.jsx)(s.code,{children:"pages/_app.tsx"}),", \u0447\u0442\u043e\u0431\u044b NextJS \u043c\u043e\u0433 \u0441 \u043d\u0438\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c.\n\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:"]}),"\n",(0,t.jsx)(s.pre,{children:(0,t.jsx)(s.code,{className:"language-tsx",children:"// app/providers/index.tsx\n\nconst App = ({ Component, pageProps }: AppProps) => {\n return (\n \n \n \n \n \n \n \n );\n};\n\nexport default App;\n"})}),"\n",(0,t.jsxs)(s.p,{children:["\u0417\u0430\u0442\u0435\u043c \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 ",(0,t.jsx)(s.code,{children:"App"})," \u0438 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u0442\u0438\u043b\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0432 ",(0,t.jsx)(s.code,{children:"pages/_app.tsx"})," \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:"]}),"\n",(0,t.jsx)(s.pre,{children:(0,t.jsx)(s.code,{className:"language-tsx",children:"// pages/_app.tsx\n\nimport 'app/styles/index.scss'\n\nexport { default } from 'app/providers';\n"})}),"\n",(0,t.jsx)(s.h2,{id:"app-router",children:"\u0420\u0430\u0431\u043e\u0442\u0430 \u0441 App Router"}),"\n",(0,t.jsxs)(s.p,{children:["App Router \u0441\u0442\u0430\u043b \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u044b\u043c \u0432 NextJS \u0432\u0435\u0440\u0441\u0438\u0438 13.4. App Router \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0430\u043f\u043a\u0443 ",(0,t.jsx)(s.code,{children:"app"})," \u0434\u043b\u044f \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u0432\u043c\u0435\u0441\u0442\u043e \u043f\u0430\u043f\u043a\u0438 ",(0,t.jsx)(s.code,{children:"pages"}),".\n\u0414\u043b\u044f \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u044f \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0430\u043c FSD, \u0432\u0430\u043c \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043e\u0431\u0440\u0430\u0449\u0430\u0442\u044c\u0441\u044f \u0441 \u043f\u0430\u043f\u043a\u043e\u0439 ",(0,t.jsx)(s.code,{children:"app"})," NextJS \u0442\u0430\u043a \u0436\u0435, \u043a\u0430\u043a \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f\n\u0434\u043b\u044f \u0443\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u0430 \u0441 \u043f\u0430\u043f\u043a\u043e\u0439 ",(0,t.jsx)(s.code,{children:"pages"})," NextJS."]}),"\n",(0,t.jsxs)(s.p,{children:["\u041f\u043e\u0434\u0445\u043e\u0434 \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u0438 \u043f\u0430\u043f\u043a\u0438 ",(0,t.jsx)(s.code,{children:"app"})," NextJS \u0432 \u043a\u043e\u0440\u043d\u0435\u0432\u0443\u044e \u043f\u0430\u043f\u043a\u0443 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0438 \u0438\u043c\u043f\u043e\u0440\u0442\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 FSD \u0432 \u043f\u0430\u043f\u043a\u0443 ",(0,t.jsx)(s.code,{children:"app"})," NextJS. \u042d\u0442\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442\n\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 FSD \u0432\u043d\u0443\u0442\u0440\u0438 \u043f\u0430\u043f\u043a\u0438 ",(0,t.jsx)(s.code,{children:"src"}),". \u0412\u0430\u043c \u0442\u0430\u043a\u0436\u0435 \u0441\u0442\u043e\u0438\u0442 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 \u043a\u043e\u0440\u043d\u0435\u0432\u0443\u044e \u043f\u0430\u043f\u043a\u0443 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043f\u0430\u043f\u043a\u0443 ",(0,t.jsx)(s.code,{children:"pages"}),", \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e App Router \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c \u0441 Pages Router."]}),"\n",(0,t.jsx)(s.pre,{children:(0,t.jsx)(s.code,{children:"\u251c\u2500\u2500 app # \u041f\u0430\u043f\u043a\u0430 app (NextJS)\n\u251c\u2500\u2500 pages # \u041f\u0443\u0441\u0442\u0430\u044f \u043f\u0430\u043f\u043a\u0430 pages (NextJS)\n\u2502 \u251c\u2500\u2500 README.md # \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0442\u043e\u0433\u043e, \u0437\u0430\u0447\u0435\u043c \u043d\u0443\u0436\u043d\u0430 \u044d\u0442\u0430 \u043f\u0430\u043f\u043a\u0430\n\u251c\u2500\u2500 src\n\u2502 \u251c\u2500\u2500 app # \u041f\u0430\u043f\u043a\u0430 app (FSD)\n\u2502 \u251c\u2500\u2500 entities\n\u2502 \u251c\u2500\u2500 features\n\u2502 \u251c\u2500\u2500 pages # \u041f\u0430\u043f\u043a\u0430 pages (FSD)\n\u2502 \u251c\u2500\u2500 shared\n\u2502 \u251c\u2500\u2500 widgets\n"})}),"\n",(0,t.jsx)(s.p,{children:(0,t.jsx)(s.a,{href:"https://stackblitz.com/edit/stackblitz-starters-aiez55?file=README.md",children:(0,t.jsx)(s.img,{src:"https://developer.stackblitz.com/img/open_in_stackblitz.svg",alt:"\u041e\u0442\u043a\u0440\u044b\u0442\u044c \u0432 StackBlitz"})})}),"\n",(0,t.jsx)(s.h2,{id:"see-also",children:"\u0421\u043c. \u0442\u0430\u043a\u0436\u0435"}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsx)(s.li,{children:(0,t.jsx)(s.a,{href:"https://t.me/feature_sliced/3623",children:"(\u0422\u0440\u0435\u0434) \u041f\u0440\u043e pages \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e \u0432 NextJS"})}),"\n"]})]})}function l(e={}){const{wrapper:s}={...(0,d.R)(),...e.components};return s?(0,t.jsx)(s,{...e,children:(0,t.jsx)(o,{...e})}):o(e)}},1100:(e,s,n)=>{n.d(s,{R:()=>r,x:()=>i});var t=n(758);const d={},c=t.createContext(d);function r(e){const s=t.useContext(c);return t.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function i(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(d):e.components||d:r(e.components),t.createElement(c.Provider,{value:s},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunk_feature_sliced_documentation=self.webpackChunk_feature_sliced_documentation||[]).push([[8056],{3870:(e,s,n)=>{n.r(s),n.d(s,{assets:()=>p,contentTitle:()=>r,default:()=>l,frontMatter:()=>c,metadata:()=>i,toc:()=>a});var t=n(6070),d=n(1100);const c={sidebar_position:10},r="\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0441 NextJS",i={id:"guides/tech/with-nextjs",title:"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0441 NextJS",description:"\u0412 NextJS \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c FSD, \u043d\u043e \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u044e\u0442 \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u044b \u0438\u0437-\u0437\u0430 \u0440\u0430\u0437\u043b\u0438\u0447\u0438\u0439 \u043c\u0435\u0436\u0434\u0443 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f\u043c\u0438 \u043a \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 NextJS \u0438 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0430\u043c\u0438 FSD \u0432 \u0434\u0432\u0443\u0445 \u043f\u0443\u043d\u043a\u0442\u0430\u0445:",source:"@site/i18n/ru/docusaurus-plugin-content-docs/current/guides/tech/with-nextjs.mdx",sourceDirName:"guides/tech",slug:"/guides/tech/with-nextjs",permalink:"/ru/docs/guides/tech/with-nextjs",draft:!1,unlisted:!1,editUrl:"https://github.com/feature-sliced/documentation/edit/master/i18n/ru/docusaurus-plugin-content-docs/current/guides/tech/with-nextjs.mdx",tags:[],version:"current",lastUpdatedAt:1728325386e3,sidebarPosition:10,frontMatter:{sidebar_position:10},sidebar:"guidesSidebar",previous:{title:"\u041c\u0438\u0433\u0440\u0430\u0446\u0438\u044f \u0441 v1",permalink:"/ru/docs/guides/migration/from-v1"},next:{title:"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0441 NuxtJS",permalink:"/ru/docs/guides/tech/with-nuxtjs"}},p={},a=[{value:"\u041a\u043e\u043d\u0444\u043b\u0438\u043a\u0442 \u043c\u0435\u0436\u0434\u0443 FSD \u0438 NextJS \u0432 \u0441\u043b\u043e\u0435 pages",id:"pages-conflict",level:2},{value:"\u041f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u043f\u0430\u043f\u043a\u0438 pages NextJS \u0432 \u043a\u043e\u0440\u043d\u0435\u0432\u0443\u044e \u043f\u0430\u043f\u043a\u0443 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 (\u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f)",id:"\u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u0435-\u043f\u0430\u043f\u043a\u0438-pages-nextjs-\u0432-\u043a\u043e\u0440\u043d\u0435\u0432\u0443\u044e-\u043f\u0430\u043f\u043a\u0443-\u043f\u0440\u043e\u0435\u043a\u0442\u0430-\u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f",level:3},{value:"\u041f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0430\u043f\u043a\u0438 pages \u0432 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435 FSD",id:"\u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0435-\u043f\u0430\u043f\u043a\u0438-pages-\u0432-\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435-fsd",level:3},{value:"\u041e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u043f\u0430\u043f\u043a\u0438 app \u0432 NextJS",id:"app-absence",level:2},{value:"\u0418\u043c\u043f\u043e\u0440\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0432 pages/_app.tsx",id:"\u0438\u043c\u043f\u043e\u0440\u0442-\u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438-\u0432-pages_apptsx",level:3},{value:"\u0420\u0430\u0431\u043e\u0442\u0430 \u0441 App Router",id:"app-router",level:2},{value:"\u0421\u043c. \u0442\u0430\u043a\u0436\u0435",id:"see-also",level:2}];function o(e){const s={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",img:"img",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,d.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(s.header,{children:(0,t.jsx)(s.h1,{id:"\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435-\u0441-nextjs",children:"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0441 NextJS"})}),"\n",(0,t.jsx)(s.p,{children:"\u0412 NextJS \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c FSD, \u043d\u043e \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u044e\u0442 \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u044b \u0438\u0437-\u0437\u0430 \u0440\u0430\u0437\u043b\u0438\u0447\u0438\u0439 \u043c\u0435\u0436\u0434\u0443 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f\u043c\u0438 \u043a \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 NextJS \u0438 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0430\u043c\u0438 FSD \u0432 \u0434\u0432\u0443\u0445 \u043f\u0443\u043d\u043a\u0442\u0430\u0445:\xa0"}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:["\u041c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u044f \u0444\u0430\u0439\u043b\u043e\u0432 \u0432 \u0441\u043b\u043e\u0435 ",(0,t.jsx)(s.code,{children:"pages"})]}),"\n",(0,t.jsxs)(s.li,{children:["\u041a\u043e\u043d\u0444\u043b\u0438\u043a\u0442 \u0438\u043b\u0438 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u0441\u043b\u043e\u044f ",(0,t.jsx)(s.code,{children:"app"})," \u0432 NextJS"]}),"\n"]}),"\n",(0,t.jsxs)(s.h2,{id:"pages-conflict",children:["\u041a\u043e\u043d\u0444\u043b\u0438\u043a\u0442 \u043c\u0435\u0436\u0434\u0443 FSD \u0438 NextJS \u0432 \u0441\u043b\u043e\u0435 ",(0,t.jsx)(s.code,{children:"pages"})]}),"\n",(0,t.jsxs)(s.p,{children:["NextJS \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0430\u043f\u043a\u0443 ",(0,t.jsx)(s.code,{children:"pages"})," \u0434\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u043e\u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. NextJS \u043e\u0436\u0438\u0434\u0430\u0435\u0442, \u0447\u0442\u043e \u0444\u0430\u0439\u043b\u044b \u0432 \u043f\u0430\u043f\u043a\u0435 ",(0,t.jsx)(s.code,{children:"pages"})," \u0431\u0443\u0434\u0443\u0442 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c URL-\u0430\u0434\u0440\u0435\u0441\u0430\u043c.\n\u042d\u0442\u043e\u0442 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u0438 ",(0,t.jsx)(s.strong,{children:"\u043d\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442"})," \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u0438 FSD, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0432 \u0442\u0430\u043a\u043e\u043c \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u0435 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u043d\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u043c \u0441\u043e\u0431\u043b\u044e\u0441\u0442\u0438 \u043f\u043b\u043e\u0441\u043a\u0443\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0441\u043b\u0430\u0439\u0441\u043e\u0432."]}),"\n",(0,t.jsxs)(s.h3,{id:"\u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u0435-\u043f\u0430\u043f\u043a\u0438-pages-nextjs-\u0432-\u043a\u043e\u0440\u043d\u0435\u0432\u0443\u044e-\u043f\u0430\u043f\u043a\u0443-\u043f\u0440\u043e\u0435\u043a\u0442\u0430-\u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f",children:["\u041f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u043f\u0430\u043f\u043a\u0438 ",(0,t.jsx)(s.code,{children:"pages"})," NextJS \u0432 \u043a\u043e\u0440\u043d\u0435\u0432\u0443\u044e \u043f\u0430\u043f\u043a\u0443 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 (\u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f)"]}),"\n",(0,t.jsxs)(s.p,{children:["\u041f\u043e\u0434\u0445\u043e\u0434 \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u0438 \u043f\u0430\u043f\u043a\u0438 ",(0,t.jsx)(s.code,{children:"pages"})," NextJS \u0432 \u043a\u043e\u0440\u043d\u0435\u0432\u0443\u044e \u043f\u0430\u043f\u043a\u0443 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0438 \u0438\u043c\u043f\u043e\u0440\u0442\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 FSD \u0432 \u043f\u0430\u043f\u043a\u0443 ",(0,t.jsx)(s.code,{children:"pages"})," NextJS. \u042d\u0442\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442\n\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 FSD \u0432\u043d\u0443\u0442\u0440\u0438 \u043f\u0430\u043f\u043a\u0438 ",(0,t.jsx)(s.code,{children:"src"}),"."]}),"\n",(0,t.jsx)(s.pre,{children:(0,t.jsx)(s.code,{className:"language-sh",children:"\u251c\u2500\u2500 pages # \u041f\u0430\u043f\u043a\u0430 pages (NextJS)\n\u251c\u2500\u2500 src\n\u2502 \u251c\u2500\u2500 app\n\u2502 \u251c\u2500\u2500 entities\n\u2502 \u251c\u2500\u2500 features\n\u2502 \u251c\u2500\u2500 pages # \u041f\u0430\u043f\u043a\u0430 pages (FSD)\n\u2502 \u251c\u2500\u2500 shared\n\u2502 \u251c\u2500\u2500 widgets\n"})}),"\n",(0,t.jsxs)(s.h3,{id:"\u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0435-\u043f\u0430\u043f\u043a\u0438-pages-\u0432-\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435-fsd",children:["\u041f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0430\u043f\u043a\u0438 ",(0,t.jsx)(s.code,{children:"pages"})," \u0432 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435 FSD"]}),"\n",(0,t.jsxs)(s.p,{children:["\u0414\u0440\u0443\u0433\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0440\u0435\u0448\u0438\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 - \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u0442\u044c \u0441\u043b\u043e\u0439 ",(0,t.jsx)(s.code,{children:"pages"})," \u0432 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435 FSD, \u0447\u0442\u043e\u0431\u044b \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u043e\u0432 \u0441 \u043f\u0430\u043f\u043a\u043e\u0439 ",(0,t.jsx)(s.code,{children:"pages"})," NextJS.\n\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u0442\u044c \u0441\u043b\u043e\u0439 ",(0,t.jsx)(s.code,{children:"pages"})," \u0432 FSD \u0432 ",(0,t.jsx)(s.code,{children:"views"}),".\xa0\n\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0432 \u043f\u0430\u043f\u043a\u0435 ",(0,t.jsx)(s.code,{children:"src"})," \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f \u0431\u0435\u0437 \u043f\u0440\u043e\u0442\u0438\u0432\u043e\u0440\u0435\u0447\u0438\u0439 \u0441 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f\u043c\u0438 NextJS."]}),"\n",(0,t.jsx)(s.pre,{children:(0,t.jsx)(s.code,{className:"language-sh",children:"\u251c\u2500\u2500 app\n\u251c\u2500\u2500 entities\n\u251c\u2500\u2500 features\n\u251c\u2500\u2500 pages # \u041f\u0430\u043f\u043a\u0430 pages (NextJS)\n\u251c\u2500\u2500 views # \u041f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u043f\u0430\u043f\u043a\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 FSD\n\u251c\u2500\u2500 shared\n\u251c\u2500\u2500 widgets\n"})}),"\n",(0,t.jsxs)(s.p,{children:["\u0423\u0447\u0442\u0438\u0442\u0435, \u0447\u0442\u043e \u0432 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u0437\u0430\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u043e \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0435 \u0432 \u0432\u0438\u0434\u043d\u043e\u043c \u043c\u0435\u0441\u0442\u0435 \u2014 \u0432 README \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0438\u043b\u0438 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438. \u042d\u0442\u043e \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0435 \u2014 \u0447\u0430\u0441\u0442\u044c ",(0,t.jsx)(s.a,{href:"/docs/about/understanding/knowledge-types",children:'"\u043f\u0440\u043e\u0435\u043a\u0442\u043d\u044b\u0445 \u0437\u043d\u0430\u043d\u0438\u0439"'}),"."]}),"\n",(0,t.jsxs)(s.h2,{id:"app-absence",children:["\u041e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u043f\u0430\u043f\u043a\u0438 ",(0,t.jsx)(s.code,{children:"app"})," \u0432 NextJS"]}),"\n",(0,t.jsxs)(s.p,{children:["\u0412 NextJS \u043d\u0438\u0436\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 13 \u043d\u0435\u0442 \u044f\u0432\u043d\u043e\u0439 \u043f\u0430\u043f\u043a\u0438 ",(0,t.jsx)(s.code,{children:"app"}),", \u0432\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e NextJS \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0444\u0430\u0439\u043b ",(0,t.jsx)(s.code,{children:"_app.tsx"}),",\n\u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u0433\u0440\u0430\u0435\u0442 \u0440\u043e\u043b\u044c \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430 \u043e\u0431\u0435\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044f \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u043f\u0440\u043e\u0435\u043a\u0442\u0430."]}),"\n",(0,t.jsxs)(s.h3,{id:"\u0438\u043c\u043f\u043e\u0440\u0442-\u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438-\u0432-pages_apptsx",children:["\u0418\u043c\u043f\u043e\u0440\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0432 ",(0,t.jsx)(s.code,{children:"pages/_app.tsx"})]}),"\n",(0,t.jsxs)(s.p,{children:["\u0427\u0442\u043e\u0431\u044b \u0440\u0435\u0448\u0438\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u044f \u043f\u0430\u043f\u043a\u0438 ",(0,t.jsx)(s.code,{children:"app"})," \u0432 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435 NextJS, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 ",(0,t.jsx)(s.code,{children:"App"})," \u0432\u043d\u0443\u0442\u0440\u0438 \u0441\u043b\u043e\u044f ",(0,t.jsx)(s.code,{children:"app"})," \u0438 \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 ",(0,t.jsx)(s.code,{children:"App"})," \u0432 ",(0,t.jsx)(s.code,{children:"pages/_app.tsx"}),", \u0447\u0442\u043e\u0431\u044b NextJS \u043c\u043e\u0433 \u0441 \u043d\u0438\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c.\n\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:"]}),"\n",(0,t.jsx)(s.pre,{children:(0,t.jsx)(s.code,{className:"language-tsx",children:"// app/providers/index.tsx\n\nconst App = ({ Component, pageProps }: AppProps) => {\n return (\n \n \n \n \n \n \n \n );\n};\n\nexport default App;\n"})}),"\n",(0,t.jsxs)(s.p,{children:["\u0417\u0430\u0442\u0435\u043c \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 ",(0,t.jsx)(s.code,{children:"App"})," \u0438 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u0442\u0438\u043b\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0432 ",(0,t.jsx)(s.code,{children:"pages/_app.tsx"})," \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:"]}),"\n",(0,t.jsx)(s.pre,{children:(0,t.jsx)(s.code,{className:"language-tsx",children:"// pages/_app.tsx\n\nimport 'app/styles/index.scss'\n\nexport { default } from 'app/providers';\n"})}),"\n",(0,t.jsx)(s.h2,{id:"app-router",children:"\u0420\u0430\u0431\u043e\u0442\u0430 \u0441 App Router"}),"\n",(0,t.jsxs)(s.p,{children:["App Router \u0441\u0442\u0430\u043b \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u044b\u043c \u0432 NextJS \u0432\u0435\u0440\u0441\u0438\u0438 13.4. App Router \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0430\u043f\u043a\u0443 ",(0,t.jsx)(s.code,{children:"app"})," \u0434\u043b\u044f \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u0432\u043c\u0435\u0441\u0442\u043e \u043f\u0430\u043f\u043a\u0438 ",(0,t.jsx)(s.code,{children:"pages"}),".\n\u0414\u043b\u044f \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u044f \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0430\u043c FSD, \u0432\u0430\u043c \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043e\u0431\u0440\u0430\u0449\u0430\u0442\u044c\u0441\u044f \u0441 \u043f\u0430\u043f\u043a\u043e\u0439 ",(0,t.jsx)(s.code,{children:"app"})," NextJS \u0442\u0430\u043a \u0436\u0435, \u043a\u0430\u043a \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f\n\u0434\u043b\u044f \u0443\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u0430 \u0441 \u043f\u0430\u043f\u043a\u043e\u0439 ",(0,t.jsx)(s.code,{children:"pages"})," NextJS."]}),"\n",(0,t.jsxs)(s.p,{children:["\u041f\u043e\u0434\u0445\u043e\u0434 \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u0438 \u043f\u0430\u043f\u043a\u0438 ",(0,t.jsx)(s.code,{children:"app"})," NextJS \u0432 \u043a\u043e\u0440\u043d\u0435\u0432\u0443\u044e \u043f\u0430\u043f\u043a\u0443 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0438 \u0438\u043c\u043f\u043e\u0440\u0442\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 FSD \u0432 \u043f\u0430\u043f\u043a\u0443 ",(0,t.jsx)(s.code,{children:"app"})," NextJS. \u042d\u0442\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442\n\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 FSD \u0432\u043d\u0443\u0442\u0440\u0438 \u043f\u0430\u043f\u043a\u0438 ",(0,t.jsx)(s.code,{children:"src"}),". \u0412\u0430\u043c \u0442\u0430\u043a\u0436\u0435 \u0441\u0442\u043e\u0438\u0442 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 \u043a\u043e\u0440\u043d\u0435\u0432\u0443\u044e \u043f\u0430\u043f\u043a\u0443 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043f\u0430\u043f\u043a\u0443 ",(0,t.jsx)(s.code,{children:"pages"}),", \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e App Router \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c \u0441 Pages Router."]}),"\n",(0,t.jsx)(s.pre,{children:(0,t.jsx)(s.code,{children:"\u251c\u2500\u2500 app # \u041f\u0430\u043f\u043a\u0430 app (NextJS)\n\u251c\u2500\u2500 pages # \u041f\u0443\u0441\u0442\u0430\u044f \u043f\u0430\u043f\u043a\u0430 pages (NextJS)\n\u2502 \u251c\u2500\u2500 README.md # \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0442\u043e\u0433\u043e, \u0437\u0430\u0447\u0435\u043c \u043d\u0443\u0436\u043d\u0430 \u044d\u0442\u0430 \u043f\u0430\u043f\u043a\u0430\n\u251c\u2500\u2500 src\n\u2502 \u251c\u2500\u2500 app # \u041f\u0430\u043f\u043a\u0430 app (FSD)\n\u2502 \u251c\u2500\u2500 entities\n\u2502 \u251c\u2500\u2500 features\n\u2502 \u251c\u2500\u2500 pages # \u041f\u0430\u043f\u043a\u0430 pages (FSD)\n\u2502 \u251c\u2500\u2500 shared\n\u2502 \u251c\u2500\u2500 widgets\n"})}),"\n",(0,t.jsx)(s.p,{children:(0,t.jsx)(s.a,{href:"https://stackblitz.com/edit/stackblitz-starters-aiez55?file=README.md",children:(0,t.jsx)(s.img,{src:"https://developer.stackblitz.com/img/open_in_stackblitz.svg",alt:"\u041e\u0442\u043a\u0440\u044b\u0442\u044c \u0432 StackBlitz"})})}),"\n",(0,t.jsx)(s.h2,{id:"see-also",children:"\u0421\u043c. \u0442\u0430\u043a\u0436\u0435"}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsx)(s.li,{children:(0,t.jsx)(s.a,{href:"https://t.me/feature_sliced/3623",children:"(\u0422\u0440\u0435\u0434) \u041f\u0440\u043e pages \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e \u0432 NextJS"})}),"\n"]})]})}function l(e={}){const{wrapper:s}={...(0,d.R)(),...e.components};return s?(0,t.jsx)(s,{...e,children:(0,t.jsx)(o,{...e})}):o(e)}},1100:(e,s,n)=>{n.d(s,{R:()=>r,x:()=>i});var t=n(758);const d={},c=t.createContext(d);function r(e){const s=t.useContext(c);return t.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function i(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(d):e.components||d:r(e.components),t.createElement(c.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/ru/assets/js/62f42e37.6b46c782.js b/ru/assets/js/62f42e37.e70b6e8f.js similarity index 99% rename from ru/assets/js/62f42e37.6b46c782.js rename to ru/assets/js/62f42e37.e70b6e8f.js index 5199571dd8..9f696673db 100644 --- a/ru/assets/js/62f42e37.6b46c782.js +++ b/ru/assets/js/62f42e37.e70b6e8f.js @@ -1 +1 @@ -"use strict";(self.webpackChunk_feature_sliced_documentation=self.webpackChunk_feature_sliced_documentation||[]).push([[1268],{6990:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>l,contentTitle:()=>c,default:()=>u,frontMatter:()=>i,metadata:()=>d,toc:()=>o});var t=s(6070),r=s(1100);const i={sidebar_position:10},c="\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0441 NuxtJS",d={id:"guides/tech/with-nuxtjs",title:"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0441 NuxtJS",description:"\u0412 NuxtJS \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c FSD, \u043e\u0434\u043d\u0430\u043a\u043e \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u044e\u0442 \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u044b \u0438\u0437-\u0437\u0430 \u0440\u0430\u0437\u043b\u0438\u0447\u0438\u0439 \u043c\u0435\u0436\u0434\u0443 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f\u043c\u0438 \u043a \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 NuxtJS \u0438 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0430\u043c\u0438 FSD:",source:"@site/i18n/ru/docusaurus-plugin-content-docs/current/guides/tech/with-nuxtjs.mdx",sourceDirName:"guides/tech",slug:"/guides/tech/with-nuxtjs",permalink:"/ru/docs/guides/tech/with-nuxtjs",draft:!1,unlisted:!1,editUrl:"https://github.com/feature-sliced/documentation/edit/master/i18n/ru/docusaurus-plugin-content-docs/current/guides/tech/with-nuxtjs.mdx",tags:[],version:"current",lastUpdatedAt:1727607766e3,sidebarPosition:10,frontMatter:{sidebar_position:10},sidebar:"guidesSidebar",previous:{title:"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0441 NextJS",permalink:"/ru/docs/guides/tech/with-nextjs"},next:{title:"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0441 React Query",permalink:"/ru/docs/guides/tech/with-react-query"}},l={},o=[{value:"\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0430\u043b\u0438\u0430\u0441\u0430 \u0434\u043b\u044f src \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438",id:"\u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435-\u0430\u043b\u0438\u0430\u0441\u0430-\u0434\u043b\u044f-src-\u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438",level:2},{value:"\u0412\u044b\u0431\u043e\u0440 \u0441\u043f\u043e\u0441\u043e\u0431\u0430 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0440\u043e\u0443\u0442\u0435\u0440\u0430",id:"\u0432\u044b\u0431\u043e\u0440-\u0441\u043f\u043e\u0441\u043e\u0431\u0430-\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438-\u0440\u043e\u0443\u0442\u0435\u0440\u0430",level:2},{value:"\u0420\u043e\u0443\u0442\u0438\u043d\u0433 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u043d\u0444\u0438\u0433\u0430",id:"\u0440\u043e\u0443\u0442\u0438\u043d\u0433-\u0441-\u043f\u043e\u043c\u043e\u0449\u044c\u044e-\u043a\u043e\u043d\u0444\u0438\u0433\u0430",level:3},{value:"\u0424\u0430\u0439\u043b\u043e\u0432\u044b\u0439 \u0440\u043e\u0443\u0442\u0438\u043d\u0433",id:"\u0444\u0430\u0439\u043b\u043e\u0432\u044b\u0439-\u0440\u043e\u0443\u0442\u0438\u043d\u0433",level:3},{value:"\u0427\u0442\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u0441 layouts?",id:"\u0447\u0442\u043e-\u0434\u0435\u043b\u0430\u0442\u044c-\u0441-layouts",level:2},{value:"\u0421\u043c. \u0442\u0430\u043a\u0436\u0435",id:"\u0441\u043c-\u0442\u0430\u043a\u0436\u0435",level:2}];function a(e){const n={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",p:"p",pre:"pre",ul:"ul",...(0,r.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.header,{children:(0,t.jsx)(n.h1,{id:"\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435-\u0441-nuxtjs",children:"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0441 NuxtJS"})}),"\n",(0,t.jsx)(n.p,{children:"\u0412 NuxtJS \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c FSD, \u043e\u0434\u043d\u0430\u043a\u043e \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u044e\u0442 \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u044b \u0438\u0437-\u0437\u0430 \u0440\u0430\u0437\u043b\u0438\u0447\u0438\u0439 \u043c\u0435\u0436\u0434\u0443 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f\u043c\u0438 \u043a \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 NuxtJS \u0438 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0430\u043c\u0438 FSD:"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["\u0418\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e, NuxtJS \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 \u0444\u0430\u0439\u043b\u043e\u0432\u0443\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0431\u0435\u0437 \u043f\u0430\u043f\u043a\u0438 ",(0,t.jsx)(n.code,{children:"src"}),", \u0442\u043e \u0435\u0441\u0442\u044c \u0432 \u043a\u043e\u0440\u043d\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430."]}),"\n",(0,t.jsxs)(n.li,{children:["\u0424\u0430\u0439\u043b\u043e\u0432\u044b\u0439 \u0440\u043e\u0443\u0442\u0438\u043d\u0433 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u043f\u0430\u043f\u043a\u0435 ",(0,t.jsx)(n.code,{children:"pages"}),", \u0430 \u0432 FSD \u044d\u0442\u0430 \u043f\u0430\u043f\u043a\u0430 \u043e\u0442\u0432\u0435\u0434\u0435\u043d\u0430 \u043f\u043e\u0434 \u043f\u043b\u043e\u0441\u043a\u0443\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0441\u043b\u0430\u0439\u0441\u043e\u0432."]}),"\n"]}),"\n",(0,t.jsxs)(n.h2,{id:"\u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435-\u0430\u043b\u0438\u0430\u0441\u0430-\u0434\u043b\u044f-src-\u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438",children:["\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0430\u043b\u0438\u0430\u0441\u0430 \u0434\u043b\u044f ",(0,t.jsx)(n.code,{children:"src"})," \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438"]}),"\n",(0,t.jsxs)(n.p,{children:["\u0414\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u043e\u0431\u044c\u0435\u043a\u0442 ",(0,t.jsx)(n.code,{children:"alias"})," \u0432 \u0432\u0430\u0448 \u043a\u043e\u043d\u0444\u0438\u0433:"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-ts",metastring:'title="nuxt.config.ts"',children:"export default defineNuxtConfig({\n devtools: { enabled: true }, // \u041d\u0435 \u043e\u0442\u043d\u043e\u0441\u044f\u0442\u0441\u044f \u043a FSD, \u0432\u043a\u043b\u044e\u0447\u0451\u043d\u044b \u043f\u0440\u0438 \u0441\u0442\u0430\u0440\u0442\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\n alias: {\n \"@\": '../src'\n },\n})\n"})}),"\n",(0,t.jsx)(n.h2,{id:"\u0432\u044b\u0431\u043e\u0440-\u0441\u043f\u043e\u0441\u043e\u0431\u0430-\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438-\u0440\u043e\u0443\u0442\u0435\u0440\u0430",children:"\u0412\u044b\u0431\u043e\u0440 \u0441\u043f\u043e\u0441\u043e\u0431\u0430 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0440\u043e\u0443\u0442\u0435\u0440\u0430"}),"\n",(0,t.jsxs)(n.p,{children:["\u0412 NuxtJS \u0435\u0441\u0442\u044c \u0434\u0432\u0430 \u0441\u043f\u043e\u0441\u043e\u0431\u0430 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0440\u043e\u0443\u0442\u0438\u043d\u0433\u0430 - \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u043d\u0444\u0438\u0433\u0430 \u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b.\n\u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u0441 \u0444\u0430\u0439\u043b\u043e\u0432\u044b\u043c \u0440\u043e\u0443\u0442\u0438\u043d\u0433\u043e\u043c \u0432\u044b \u0431\u0443\u0434\u0435\u0442\u0435 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c index.vue \u0444\u0430\u0439\u043b\u044b \u0432 \u043f\u0430\u043f\u043a\u0430\u0445 \u0432\u043d\u0443\u0442\u0440\u0438 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 app/routes, \u0430 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0430 - \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c \u0440\u043e\u0443\u0442\u044b \u0432 ",(0,t.jsx)(n.code,{children:"router.options.ts"})," \u0444\u0430\u0439\u043b\u0435."]}),"\n",(0,t.jsx)(n.h3,{id:"\u0440\u043e\u0443\u0442\u0438\u043d\u0433-\u0441-\u043f\u043e\u043c\u043e\u0449\u044c\u044e-\u043a\u043e\u043d\u0444\u0438\u0433\u0430",children:"\u0420\u043e\u0443\u0442\u0438\u043d\u0433 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u043d\u0444\u0438\u0433\u0430"}),"\n",(0,t.jsxs)(n.p,{children:["\u0412 \u0441\u043b\u043e\u0435 ",(0,t.jsx)(n.code,{children:"app"})," \u0441\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u0444\u0430\u0439\u043b ",(0,t.jsx)(n.code,{children:"router.options.ts"}),", \u0438 \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0439\u0442\u0435 \u0438\u0437 \u043d\u0435\u0433\u043e \u043e\u0431\u044c\u0435\u043a\u0442 \u043a\u043e\u043d\u0444\u0438\u0433\u0430:"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-ts",metastring:'title="app/router.options.ts"',children:"import type { RouterConfig } from '@nuxt/schema';\n\nexport default {\n routes: (_routes) => [],\n};\n\n"})}),"\n",(0,t.jsxs)(n.p,{children:["\u0427\u0442\u043e\u0431\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 ",(0,t.jsx)(n.code,{children:"Home"})," \u0432 \u043f\u0440\u043e\u0435\u043a\u0442, \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0448\u0430\u0433\u0438:"]}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u043b\u0430\u0439\u0441 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0432\u043d\u0443\u0442\u0440\u0438 \u0441\u043b\u043e\u044f ",(0,t.jsx)(n.code,{children:"pages"})]}),"\n",(0,t.jsxs)(n.li,{children:["\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0440\u043e\u0443\u0442 \u0432 \u043a\u043e\u043d\u0444\u0438\u0433 ",(0,t.jsx)(n.code,{children:"app/router.config.ts"})]}),"\n"]}),"\n",(0,t.jsxs)(n.p,{children:["\u0414\u043b\u044f \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u043b\u0430\u0439\u0441 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0441\u044f ",(0,t.jsx)(n.a,{href:"https://github.com/feature-sliced/cli",children:"CLI"}),":"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-shell",children:"fsd pages home\n"})}),"\n",(0,t.jsxs)(n.p,{children:["\u0421\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u0444\u0430\u0439\u043b ",(0,t.jsx)(n.code,{children:"home-page.vue"})," \u0432\u043d\u0443\u0442\u0440\u0438 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430 ui, \u043e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 \u043a \u043d\u0435\u043c\u0443 \u0434\u043e\u0441\u0442\u0443\u043f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Public API"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-ts",metastring:'title="src/pages/home/index.ts"',children:"export { default as HomePage } from './ui/home-page';\n"})}),"\n",(0,t.jsx)(n.p,{children:"\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0444\u0430\u0439\u043b\u043e\u0432\u0430\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0442\u0430\u043a:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-sh",children:"|\u2500\u2500 src\n\u2502 \u251c\u2500\u2500 app\n\u2502 \u2502 \u251c\u2500\u2500 router.config.ts\n\u2502 \u251c\u2500\u2500 pages\n\u2502 \u2502 \u251c\u2500\u2500 home\n\u2502 \u2502 \u2502 \u251c\u2500\u2500 ui\n\u2502 \u2502 \u2502 \u2502 \u251c\u2500\u2500 home-page.vue\n\u2502 \u2502 \u2502 \u251c\u2500\u2500 index.ts\n"})}),"\n",(0,t.jsx)(n.p,{children:"\u041d\u0430\u043a\u043e\u043d\u0435\u0446, \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0440\u043e\u0443\u0442 \u0432 \u043a\u043e\u043d\u0444\u0438\u0433:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-ts",metastring:'title="app/router.config.ts"',children:"import type { RouterConfig } from '@nuxt/schema'\n\nexport default {\n routes: (_routes) => [\n {\n name: 'home',\n path: '/',\n component: () => import('@/pages/home.vue').then(r => r.default || r)\n }\n ],\n}\n"})}),"\n",(0,t.jsx)(n.h3,{id:"\u0444\u0430\u0439\u043b\u043e\u0432\u044b\u0439-\u0440\u043e\u0443\u0442\u0438\u043d\u0433",children:"\u0424\u0430\u0439\u043b\u043e\u0432\u044b\u0439 \u0440\u043e\u0443\u0442\u0438\u043d\u0433"}),"\n",(0,t.jsxs)(n.p,{children:["\u0412 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c, \u0441\u043e\u0437\u0434\u0430\u0439\u0442\u0435 ",(0,t.jsx)(n.code,{children:"src"})," \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e \u0432 \u043a\u043e\u0440\u043d\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0441\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u0432\u043d\u0443\u0442\u0440\u0438 \u044d\u0442\u043e\u0439 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u0441\u043b\u043e\u0438 app \u0438 pages \u0438 \u043f\u0430\u043f\u043a\u0443 routes \u0432\u043d\u0443\u0442\u0440\u0438 \u0441\u043b\u043e\u044f app.\n\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0432\u0430\u0448\u0430 \u0444\u0430\u0439\u043b\u043e\u0432\u0430\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0442\u0430\u043a:"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-sh",children:"\u251c\u2500\u2500 src\n\u2502 \u251c\u2500\u2500 app\n\u2502 \u2502 \u251c\u2500\u2500 routes\n\u2502 \u251c\u2500\u2500 pages # \u041f\u0430\u043f\u043a\u0430 pages, \u0437\u0430\u043a\u0440\u0435\u043f\u043b\u0451\u043d\u043d\u0430\u044f \u0437\u0430 FSD\n"})}),"\n",(0,t.jsxs)(n.p,{children:["\u0414\u043b\u044f \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b NuxtJS \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u043f\u0430\u043f\u043a\u0443 routes \u0432\u043d\u0443\u0442\u0440\u0438 \u0441\u043b\u043e\u044f ",(0,t.jsx)(n.code,{children:"app"})," \u0434\u043b\u044f \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0433\u043e \u0440\u043e\u0443\u0442\u0438\u043d\u0433\u0430, \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c ",(0,t.jsx)(n.code,{children:"nuxt.config.ts"})," \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-ts",metastring:'title="nuxt.config.ts"',children:"export default defineNuxtConfig({\n devtools: { enabled: true }, // \u041d\u0435 \u043e\u0442\u043d\u043e\u0441\u044f\u0442\u0441\u044f \u043a FSD, \u0432\u043a\u043b\u044e\u0447\u0451\u043d\u044b \u043f\u0440\u0438 \u0441\u0442\u0430\u0440\u0442\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\n alias: {\n \"@\": '../src'\n },\n dir: {\n pages: './src/app/routes'\n }\n})\n"})}),"\n",(0,t.jsxs)(n.p,{children:["\u0422\u0435\u043f\u0435\u0440\u044c, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0440\u043e\u0443\u0442\u044b \u0434\u043b\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0432\u043d\u0443\u0442\u0440\u0438 ",(0,t.jsx)(n.code,{children:"app"})," \u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u043a \u043d\u0438\u043c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0438\u0437 ",(0,t.jsx)(n.code,{children:"pages"}),"."]}),"\n",(0,t.jsxs)(n.p,{children:["\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0447\u0442\u043e\u0431\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 ",(0,t.jsx)(n.code,{children:"Home"})," \u0432 \u043f\u0440\u043e\u0435\u043a\u0442, \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0448\u0430\u0433\u0438:"]}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u043b\u0430\u0439\u0441 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0432\u043d\u0443\u0442\u0440\u0438 \u0441\u043b\u043e\u044f ",(0,t.jsx)(n.code,{children:"pages"})]}),"\n",(0,t.jsxs)(n.li,{children:["\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0440\u043e\u0443\u0442 \u0432\u043d\u0443\u0442\u0440\u044c \u0441\u043b\u043e\u044f ",(0,t.jsx)(n.code,{children:"app"})]}),"\n",(0,t.jsx)(n.li,{children:"\u0421\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0438\u0437 \u0441\u043b\u0430\u0439\u0441\u0430 \u0441 \u0440\u043e\u0443\u0442\u043e\u043c"}),"\n"]}),"\n",(0,t.jsxs)(n.p,{children:["\u0414\u043b\u044f \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u043b\u0430\u0439\u0441 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0441\u044f ",(0,t.jsx)(n.a,{href:"https://github.com/feature-sliced/cli",children:"CLI"}),":"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-shell",children:"fsd pages home\n"})}),"\n",(0,t.jsxs)(n.p,{children:["\u0421\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u0444\u0430\u0439\u043b ",(0,t.jsx)(n.code,{children:"home-page.vue"})," \u0432\u043d\u0443\u0442\u0440\u0438 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430 ui, \u043e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 \u043a \u043d\u0435\u043c\u0443 \u0434\u043e\u0441\u0442\u0443\u043f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Public API"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-ts",metastring:'title="src/pages/home/index.ts"',children:"export { default as HomePage } from './ui/home-page';\n"})}),"\n",(0,t.jsxs)(n.p,{children:["\u0421\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u0440\u043e\u0443\u0442 \u0434\u043b\u044f \u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0432\u043d\u0443\u0442\u0440\u0438 \u0441\u043b\u043e\u044f ",(0,t.jsx)(n.code,{children:"app"}),":"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-sh",children:"\n\u251c\u2500\u2500 src\n\u2502 \u251c\u2500\u2500 app\n\u2502 \u2502 \u251c\u2500\u2500 routes\n\u2502 \u2502 \u2502 \u251c\u2500\u2500 index.vue\n\u2502 \u251c\u2500\u2500 pages\n\u2502 \u2502 \u251c\u2500\u2500 home\n\u2502 \u2502 \u2502 \u251c\u2500\u2500 ui\n\u2502 \u2502 \u2502 \u2502 \u251c\u2500\u2500 home-page.vue\n\u2502 \u2502 \u2502 \u251c\u2500\u2500 index.ts\n"})}),"\n",(0,t.jsxs)(n.p,{children:["\u0414\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0432\u043d\u0443\u0442\u0440\u044c ",(0,t.jsx)(n.code,{children:"index.vue"})," \u0444\u0430\u0439\u043b\u0430 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u0432\u0430\u0448\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b:"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-html",metastring:'title="src/app/routes/index.vue"',children:" - + +

    🌎 FSD international community

    · 2 мин. чтения
    Anton Medvedev
    FSD core-team member
    post-cover
    diff --git a/ru/blog/archive.html b/ru/blog/archive.html index 64f3d7b6e8..0b78f1166d 100644 --- a/ru/blog/archive.html +++ b/ru/blog/archive.html @@ -9,8 +9,8 @@ - - + + diff --git a/ru/blog/international-community.html b/ru/blog/international-community.html index 761b949ed1..705b6ef240 100644 --- a/ru/blog/international-community.html +++ b/ru/blog/international-community.html @@ -9,8 +9,8 @@ - - + +

    🌎 FSD international community

    · 2 мин. чтения
    Anton Medvedev
    FSD core-team member
    post-cover
    diff --git a/ru/blog/rebranding-stable.html b/ru/blog/rebranding-stable.html index c8e0b4dad4..456aa36024 100644 --- a/ru/blog/rebranding-stable.html +++ b/ru/blog/rebranding-stable.html @@ -9,8 +9,8 @@ - - + +

    💥 FSD rebranding!

    · 2 мин. чтения
    Ilya Azin
    FSD core-team member
    logo-primary
    diff --git a/ru/blog/tags.html b/ru/blog/tags.html index ec737cbf03..bbb7f839ac 100644 --- a/ru/blog/tags.html +++ b/ru/blog/tags.html @@ -9,8 +9,8 @@ - - + + diff --git a/ru/blog/tags/brand.html b/ru/blog/tags/brand.html index f85deec0dd..3409f783e3 100644 --- a/ru/blog/tags/brand.html +++ b/ru/blog/tags/brand.html @@ -9,8 +9,8 @@ - - + +

    1 запись с тегом "brand"

    Посмотреть все теги

    💥 FSD rebranding!

    · 2 мин. чтения
    Ilya Azin
    FSD core-team member
    logo-primary
    diff --git a/ru/blog/tags/community.html b/ru/blog/tags/community.html index c7d690daa4..b81bf8a932 100644 --- a/ru/blog/tags/community.html +++ b/ru/blog/tags/community.html @@ -9,8 +9,8 @@ - - + +

    1 запись с тегом "community"

    Посмотреть все теги

    🌎 FSD international community

    · 2 мин. чтения
    Anton Medvedev
    FSD core-team member
    post-cover
    diff --git a/ru/blog/tags/discord.html b/ru/blog/tags/discord.html index c2f460d11b..6cfc5c14c5 100644 --- a/ru/blog/tags/discord.html +++ b/ru/blog/tags/discord.html @@ -9,8 +9,8 @@ - - + +

    1 запись с тегом "discord"

    Посмотреть все теги

    🌎 FSD international community

    · 2 мин. чтения
    Anton Medvedev
    FSD core-team member
    post-cover
    diff --git a/ru/blog/tags/promo.html b/ru/blog/tags/promo.html index bc05affbe4..61dd47a606 100644 --- a/ru/blog/tags/promo.html +++ b/ru/blog/tags/promo.html @@ -9,8 +9,8 @@ - - + +

    2 записи с тегом "promo"

    Посмотреть все теги

    🌎 FSD international community

    · 2 мин. чтения
    Anton Medvedev
    FSD core-team member
    post-cover
    diff --git a/ru/community.html b/ru/community.html index 3bca959300..9e98cda67c 100644 --- a/ru/community.html +++ b/ru/community.html @@ -9,8 +9,8 @@ - - + + +
    Contributing

    HowTo, Workflow, Support

    \ No newline at end of file diff --git a/ru/community/team.html b/ru/community/team.html index 5babd76531..6ebb6623a0 100644 --- a/ru/community/team.html +++ b/ru/community/team.html @@ -9,8 +9,8 @@ - - + + +

    Companies

    \ No newline at end of file diff --git a/ru/docs.html b/ru/docs.html index cc9923a9ea..84f43e4ce5 100644 --- a/ru/docs.html +++ b/ru/docs.html @@ -9,8 +9,8 @@ - - + +
    +
    🛠 Примеры

    Примеры проектов, спроектированных по Feature-Sliced Design

    \ No newline at end of file diff --git a/ru/docs/about.html b/ru/docs/about.html index 6581b7a41d..481ae2b4cf 100644 --- a/ru/docs/about.html +++ b/ru/docs/about.html @@ -9,8 +9,8 @@ - - + +
    +
    Продвижение

    О продвижении и интеграции FSD в компаниях

    Интеграция • Продвижение в команде • Продвижение в компании
    \ No newline at end of file diff --git a/ru/docs/about/alternatives.html b/ru/docs/about/alternatives.html index 6602efba83..490c983564 100644 --- a/ru/docs/about/alternatives.html +++ b/ru/docs/about/alternatives.html @@ -9,8 +9,8 @@ - - + + +
    \ No newline at end of file diff --git a/ru/docs/about/mission.html b/ru/docs/about/mission.html index 4585f28816..b0c865666b 100644 --- a/ru/docs/about/mission.html +++ b/ru/docs/about/mission.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/ru/docs/about/motivation.html b/ru/docs/about/motivation.html index 3eaaf2450c..e4504cdcdf 100644 --- a/ru/docs/about/motivation.html +++ b/ru/docs/about/motivation.html @@ -9,8 +9,8 @@ - - + +
    + \ No newline at end of file diff --git a/ru/docs/about/promote/for-company.html b/ru/docs/about/promote/for-company.html index 12abc7562b..7c012ebcc0 100644 --- a/ru/docs/about/promote/for-company.html +++ b/ru/docs/about/promote/for-company.html @@ -9,8 +9,8 @@ - - + +
    +

    Как подготовить и оправдать план по переезду на методологию?

    \ No newline at end of file diff --git a/ru/docs/about/promote/for-team.html b/ru/docs/about/promote/for-team.html index 3173f7df58..3d86b3ceaa 100644 --- a/ru/docs/about/promote/for-team.html +++ b/ru/docs/about/promote/for-team.html @@ -9,8 +9,8 @@ - - + +
    + \ No newline at end of file diff --git a/ru/docs/about/promote/integration.html b/ru/docs/about/promote/integration.html index af014c993f..98d5a92ccd 100644 --- a/ru/docs/about/promote/integration.html +++ b/ru/docs/about/promote/integration.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/ru/docs/about/promote/partial-application.html b/ru/docs/about/promote/partial-application.html index b6522bec57..2a40bffc92 100644 --- a/ru/docs/about/promote/partial-application.html +++ b/ru/docs/about/promote/partial-application.html @@ -9,14 +9,14 @@ - - + +

    Частичное применение

    WIP

    Статья находится в процессе написания

    Чтобы ускорить ее появление, можно:


    🍰 Stay tuned!

    Как частично применять методологию? Имеет ли смысл? Что если игнорировать?

    -
    + \ No newline at end of file diff --git a/ru/docs/about/understanding/abstractions.html b/ru/docs/about/understanding/abstractions.html index f1e4ed815a..dd7e4a37ce 100644 --- a/ru/docs/about/understanding/abstractions.html +++ b/ru/docs/about/understanding/abstractions.html @@ -9,8 +9,8 @@ - - + +
    + \ No newline at end of file diff --git a/ru/docs/about/understanding/architecture.html b/ru/docs/about/understanding/architecture.html index 5c1376efa7..ae43040892 100644 --- a/ru/docs/about/understanding/architecture.html +++ b/ru/docs/about/understanding/architecture.html @@ -9,8 +9,8 @@ - - + +
    + \ No newline at end of file diff --git a/ru/docs/about/understanding/knowledge-types.html b/ru/docs/about/understanding/knowledge-types.html index 95aa7ce4e4..d49ffbe0c1 100644 --- a/ru/docs/about/understanding/knowledge-types.html +++ b/ru/docs/about/understanding/knowledge-types.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/ru/docs/about/understanding/naming.html b/ru/docs/about/understanding/naming.html index aa102f5433..99b4da6685 100644 --- a/ru/docs/about/understanding/naming.html +++ b/ru/docs/about/understanding/naming.html @@ -9,8 +9,8 @@ - - + +
    + \ No newline at end of file diff --git a/ru/docs/about/understanding/needs-driven.html b/ru/docs/about/understanding/needs-driven.html index 2cdcf38141..3fc04db34c 100644 --- a/ru/docs/about/understanding/needs-driven.html +++ b/ru/docs/about/understanding/needs-driven.html @@ -9,8 +9,8 @@ - - + +
    + \ No newline at end of file diff --git a/ru/docs/about/understanding/signals.html b/ru/docs/about/understanding/signals.html index 5d435f4203..cbbe306e7a 100644 --- a/ru/docs/about/understanding/signals.html +++ b/ru/docs/about/understanding/signals.html @@ -9,8 +9,8 @@ - - + +
    + \ No newline at end of file diff --git a/ru/docs/branding.html b/ru/docs/branding.html index af4a15ded2..563b83b1d0 100644 --- a/ru/docs/branding.html +++ b/ru/docs/branding.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/ru/docs/get-started.html b/ru/docs/get-started.html index 81cf3081f9..9e1efde12c 100644 --- a/ru/docs/get-started.html +++ b/ru/docs/get-started.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/ru/docs/get-started/cheatsheet.html b/ru/docs/get-started/cheatsheet.html index 072d61bc11..6d4b4e5e7c 100644 --- a/ru/docs/get-started/cheatsheet.html +++ b/ru/docs/get-started/cheatsheet.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/ru/docs/get-started/faq.html b/ru/docs/get-started/faq.html index dc31a1fe0d..f67b05aa9c 100644 --- a/ru/docs/get-started/faq.html +++ b/ru/docs/get-started/faq.html @@ -9,8 +9,8 @@ - - + +
    +

    Ответили здесь

    \ No newline at end of file diff --git a/ru/docs/get-started/overview.html b/ru/docs/get-started/overview.html index 60a472bff8..ff0b277adb 100644 --- a/ru/docs/get-started/overview.html +++ b/ru/docs/get-started/overview.html @@ -9,8 +9,8 @@ - - + +

    Обзор

    @@ -129,6 +129,6 @@

    Следующи
  • Хотите разобраться в том, как мыслить по-FSD-шному? Прочтите Туториал.
  • Предпочитаете учиться на примерах? У нас их много в разделе Примеры.
  • Есть вопросы? Загляните в наш чат Telegram и спросите у сообщества.
  • -

    + \ No newline at end of file diff --git a/ru/docs/get-started/tutorial.html b/ru/docs/get-started/tutorial.html index c8ad7029f0..6965a90bdb 100644 --- a/ru/docs/get-started/tutorial.html +++ b/ru/docs/get-started/tutorial.html @@ -9,8 +9,8 @@ - - + +

    Туториал

    @@ -272,6 +272,6 @@

    app/routes/editor._index.tsx, app/routes/editor.$slug.tsx (одинаковое содержимое)
    import { ArticleEditPage } from "pages/article-edit";

    export { loader, action } from "pages/article-edit";

    export default ArticleEditPage;

    Мы закончили! Войдите в систему и попробуйте создать новую статью. Или “забудьте” написать статью и посмотрите, как сработает валидация.

    Редактор статей Conduit, в поле заголовка которого написано “New article”, а остальные поля пусты. Над формой есть две ошибки: “Describe what this article is about” и “Write the article itself”.

    Редактор статей Conduit, в поле заголовка которого написано “New article”, а остальные поля пусты. Над формой есть две ошибки: “Describe what this article is about” и “Write the article itself”.
    -

    Страницы профиля и настроек очень похожи на страницы чтения и редактирования статей, они оставлены в качестве упражнения для читателя, то есть для вас :)

    +

    Страницы профиля и настроек очень похожи на страницы чтения и редактирования статей, они оставлены в качестве упражнения для читателя, то есть для вас :)

    \ No newline at end of file diff --git a/ru/docs/guides.html b/ru/docs/guides.html index 4435c99485..b7a77dcb19 100644 --- a/ru/docs/guides.html +++ b/ru/docs/guides.html @@ -9,8 +9,8 @@ - - + +
    +
    Code Issues (Smells)

    Общие архитектурные проблемы для выявления в коде

    Десегментация • Роутинг • Кросс-импорты
    \ No newline at end of file diff --git a/ru/docs/guides/examples.html b/ru/docs/guides/examples.html index b5a0f735ed..dd1524cb1b 100644 --- a/ru/docs/guides/examples.html +++ b/ru/docs/guides/examples.html @@ -9,8 +9,8 @@ - - + +
    +
    Лейауты страниц

    Основные кейсы с лейаутами

    Где хранить • Использование виджетов в лейауте
    \ No newline at end of file diff --git a/ru/docs/guides/examples/auth.html b/ru/docs/guides/examples/auth.html index 68ff6a9028..153496ebec 100644 --- a/ru/docs/guides/examples/auth.html +++ b/ru/docs/guides/examples/auth.html @@ -9,8 +9,8 @@ - - + +

    Авторизация

    @@ -164,6 +164,6 @@

    Автоматический логаут

    -

    Не забудьте предусмотреть ситуации сбоя запроса на логаут или сбоя запроса на обновление токена. В обоих случаях вам следует очистить хранилище токенов. Если вы храните свой токен в Entities, этот код можно поместить в сегмент model, поскольку это чистая бизнес-логика. Если вы храните токен в Shared, размещение этой логики в shared/api может раздуть сегмент и размыть его предназначение. Если вы замечаете, что ваш сегмент api содержит две несвязанные вещи, рассмотрите возможность выделения логики управления токенами в другой сегмент, например, shared/auth.

    +

    Не забудьте предусмотреть ситуации сбоя запроса на логаут или сбоя запроса на обновление токена. В обоих случаях вам следует очистить хранилище токенов. Если вы храните свой токен в Entities, этот код можно поместить в сегмент model, поскольку это чистая бизнес-логика. Если вы храните токен в Shared, размещение этой логики в shared/api может раздуть сегмент и размыть его предназначение. Если вы замечаете, что ваш сегмент api содержит две несвязанные вещи, рассмотрите возможность выделения логики управления токенами в другой сегмент, например, shared/auth.

    \ No newline at end of file diff --git a/ru/docs/guides/examples/autocompleted.html b/ru/docs/guides/examples/autocompleted.html index ef21b34719..0013454b67 100644 --- a/ru/docs/guides/examples/autocompleted.html +++ b/ru/docs/guides/examples/autocompleted.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/ru/docs/guides/examples/browser-api.html b/ru/docs/guides/examples/browser-api.html index 8b8a15b47a..89accbb517 100644 --- a/ru/docs/guides/examples/browser-api.html +++ b/ru/docs/guides/examples/browser-api.html @@ -9,8 +9,8 @@ - - + +
    Unlisted page
    This page is unlisted. Search engines will not index it, and only users having a direct link can access it.
    + \ No newline at end of file diff --git a/ru/docs/guides/examples/cms.html b/ru/docs/guides/examples/cms.html index aa89ce0559..44f6c49172 100644 --- a/ru/docs/guides/examples/cms.html +++ b/ru/docs/guides/examples/cms.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/ru/docs/guides/examples/feedback.html b/ru/docs/guides/examples/feedback.html index eccd18e5be..382f1848ff 100644 --- a/ru/docs/guides/examples/feedback.html +++ b/ru/docs/guides/examples/feedback.html @@ -9,14 +9,14 @@ - - + +
    Unlisted page
    This page is unlisted. Search engines will not index it, and only users having a direct link can access it.

    Обратная связь

    WIP

    Статья находится в процессе написания

    Чтобы ускорить ее появление, можно:


    🍰 Stay tuned!

    Errors, Alerts, Notifications, ...

    -
    + \ No newline at end of file diff --git a/ru/docs/guides/examples/i18n.html b/ru/docs/guides/examples/i18n.html index 6347fcdada..b8104d1b71 100644 --- a/ru/docs/guides/examples/i18n.html +++ b/ru/docs/guides/examples/i18n.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/ru/docs/guides/examples/metric.html b/ru/docs/guides/examples/metric.html index 07ce539f88..a63fa96cc8 100644 --- a/ru/docs/guides/examples/metric.html +++ b/ru/docs/guides/examples/metric.html @@ -9,14 +9,14 @@ - - + +
    Unlisted page
    This page is unlisted. Search engines will not index it, and only users having a direct link can access it.

    Метрика

    WIP

    Статья находится в процессе написания

    Чтобы ускорить ее появление, можно:


    🍰 Stay tuned!

    Про способы инициализировать метрики в приложении

    -
    + \ No newline at end of file diff --git a/ru/docs/guides/examples/monorepo.html b/ru/docs/guides/examples/monorepo.html index c0124acbd9..2ee36f47f1 100644 --- a/ru/docs/guides/examples/monorepo.html +++ b/ru/docs/guides/examples/monorepo.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/ru/docs/guides/examples/page-layout.html b/ru/docs/guides/examples/page-layout.html index ca1a7f97e2..28e56d7082 100644 --- a/ru/docs/guides/examples/page-layout.html +++ b/ru/docs/guides/examples/page-layout.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/ru/docs/guides/examples/platforms.html b/ru/docs/guides/examples/platforms.html index 1fe50dd58f..74c8d352a0 100644 --- a/ru/docs/guides/examples/platforms.html +++ b/ru/docs/guides/examples/platforms.html @@ -9,14 +9,14 @@ - - + +
    Unlisted page
    This page is unlisted. Search engines will not index it, and only users having a direct link can access it.

    Desktop/Touch платформы

    WIP

    Статья находится в процессе написания

    Чтобы ускорить ее появление, можно:


    🍰 Stay tuned!

    Про применение методологии для desktop/touch

    -
    + \ No newline at end of file diff --git a/ru/docs/guides/examples/ssr.html b/ru/docs/guides/examples/ssr.html index 784fddd561..85929ce839 100644 --- a/ru/docs/guides/examples/ssr.html +++ b/ru/docs/guides/examples/ssr.html @@ -9,14 +9,14 @@ - - + +
    Unlisted page
    This page is unlisted. Search engines will not index it, and only users having a direct link can access it.

    SSR

    WIP

    Статья находится в процессе написания

    Чтобы ускорить ее появление, можно:


    🍰 Stay tuned!

    Про реализацию SSR с применением методологии

    -
    + \ No newline at end of file diff --git a/ru/docs/guides/examples/theme.html b/ru/docs/guides/examples/theme.html index bc0d9da231..ce817647ae 100644 --- a/ru/docs/guides/examples/theme.html +++ b/ru/docs/guides/examples/theme.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/ru/docs/guides/examples/types.html b/ru/docs/guides/examples/types.html index 371ca1859e..f8a27a7089 100644 --- a/ru/docs/guides/examples/types.html +++ b/ru/docs/guides/examples/types.html @@ -9,8 +9,8 @@ - - + +

    Типы

    @@ -138,6 +138,6 @@

    shared/lib/untyped-packages/use-react-screenshot.d.ts
    // У этой библиотеки нет типов, и мы не хотели заморачиваться с написанием своих.
    declare module "use-react-screenshot";

    Автогенерация типов

    -

    Часто бывает полезно генерировать типы из внешних источников, например, генерировать типы бэкенда из схемы OpenAPI. В этом случае создайте специальное место в вашем коде для этих типов, например, shared/api/openapi. Идеально, если вы также включите README в эту папку, который описывает, что это за файлы, как их перегенерировать и т. д.

    +

    Часто бывает полезно генерировать типы из внешних источников, например, генерировать типы бэкенда из схемы OpenAPI. В этом случае создайте специальное место в вашем коде для этих типов, например, shared/api/openapi. Идеально, если вы также включите README в эту папку, который описывает, что это за файлы, как их перегенерировать и т. д.

    \ No newline at end of file diff --git a/ru/docs/guides/examples/white-labels.html b/ru/docs/guides/examples/white-labels.html index 563447e66a..4985bed968 100644 --- a/ru/docs/guides/examples/white-labels.html +++ b/ru/docs/guides/examples/white-labels.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/ru/docs/guides/issues/cross-imports.html b/ru/docs/guides/issues/cross-imports.html index c138d8b1dc..232e8f453f 100644 --- a/ru/docs/guides/issues/cross-imports.html +++ b/ru/docs/guides/issues/cross-imports.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/ru/docs/guides/issues/desegmented.html b/ru/docs/guides/issues/desegmented.html index 640f0bde38..24b4d429ff 100644 --- a/ru/docs/guides/issues/desegmented.html +++ b/ru/docs/guides/issues/desegmented.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/ru/docs/guides/issues/routes.html b/ru/docs/guides/issues/routes.html index dd2a869d4a..f15fb83040 100644 --- a/ru/docs/guides/issues/routes.html +++ b/ru/docs/guides/issues/routes.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/ru/docs/guides/migration/from-custom.html b/ru/docs/guides/migration/from-custom.html index f2530a99af..46d7d536d0 100644 --- a/ru/docs/guides/migration/from-custom.html +++ b/ru/docs/guides/migration/from-custom.html @@ -9,8 +9,8 @@ - - + +
    + \ No newline at end of file diff --git a/ru/docs/guides/migration/from-v1.html b/ru/docs/guides/migration/from-v1.html index 6a00d2aad3..69bd2949fe 100644 --- a/ru/docs/guides/migration/from-v1.html +++ b/ru/docs/guides/migration/from-v1.html @@ -9,8 +9,8 @@ - - + +
    + \ No newline at end of file diff --git a/ru/docs/guides/tech/with-nextjs.html b/ru/docs/guides/tech/with-nextjs.html index 00be0f283a..63cbe36520 100644 --- a/ru/docs/guides/tech/with-nextjs.html +++ b/ru/docs/guides/tech/with-nextjs.html @@ -9,8 +9,8 @@ - - + +
    + \ No newline at end of file diff --git a/ru/docs/guides/tech/with-nuxtjs.html b/ru/docs/guides/tech/with-nuxtjs.html index 1fbe405421..9249ed2ff6 100644 --- a/ru/docs/guides/tech/with-nuxtjs.html +++ b/ru/docs/guides/tech/with-nuxtjs.html @@ -9,8 +9,8 @@ - - + +
    + \ No newline at end of file diff --git a/ru/docs/guides/tech/with-react-query.html b/ru/docs/guides/tech/with-react-query.html index 05cb6b5d65..60cde18ec8 100644 --- a/ru/docs/guides/tech/with-react-query.html +++ b/ru/docs/guides/tech/with-react-query.html @@ -9,8 +9,8 @@ - - + +
    + \ No newline at end of file diff --git a/ru/docs/guides/tech/with-sveltekit.html b/ru/docs/guides/tech/with-sveltekit.html index a33a743da7..ba4b749061 100644 --- a/ru/docs/guides/tech/with-sveltekit.html +++ b/ru/docs/guides/tech/with-sveltekit.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/ru/docs/reference.html b/ru/docs/reference.html index b822b032c3..ec8ced61b4 100644 --- a/ru/docs/reference.html +++ b/ru/docs/reference.html @@ -9,8 +9,8 @@ - - + + +
    Public API

    Практики по проектированию устойчивых и удобных для интеграции модулей

    \ No newline at end of file diff --git a/ru/docs/reference/isolation.html b/ru/docs/reference/isolation.html index 8a3caf47b0..05d01f5e27 100644 --- a/ru/docs/reference/isolation.html +++ b/ru/docs/reference/isolation.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/ru/docs/reference/isolation/coupling-cohesion.html b/ru/docs/reference/isolation/coupling-cohesion.html index 6401004039..c7b26d490e 100644 --- a/ru/docs/reference/isolation/coupling-cohesion.html +++ b/ru/docs/reference/isolation/coupling-cohesion.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/ru/docs/reference/isolation/decouple-entities.html b/ru/docs/reference/isolation/decouple-entities.html index e88148ad1b..efe39ece87 100644 --- a/ru/docs/reference/isolation/decouple-entities.html +++ b/ru/docs/reference/isolation/decouple-entities.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/ru/docs/reference/layers.html b/ru/docs/reference/layers.html index 23ff29ed44..908f7ed0d7 100644 --- a/ru/docs/reference/layers.html +++ b/ru/docs/reference/layers.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/ru/docs/reference/public-api.html b/ru/docs/reference/public-api.html index fb4e55870f..cb7fc2eeef 100644 --- a/ru/docs/reference/public-api.html +++ b/ru/docs/reference/public-api.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/ru/docs/reference/slices-segments.html b/ru/docs/reference/slices-segments.html index e974f94509..feda633e8f 100644 --- a/ru/docs/reference/slices-segments.html +++ b/ru/docs/reference/slices-segments.html @@ -9,8 +9,8 @@ - - + +

    Слайсы и сегменты

    @@ -38,6 +38,6 @@

    Сегме

    Другие сегменты допускаются, но должны создаваться только по необходимости. Наиболее распространенными местами для других сегментов являются слои App и Shared, где срезы не имеют смысла.

    Примеры

    -
    Layeruimodellibapi
    SharedUI-библиотекаОбычно не используетсяУтилитарные модули из нескольких связанных файлов.
    Если вам нужны индивидуальные вспомогательные функции, обратите внимание на библиотеки утилит, например, lodash-es.
    Примитивный API-клиент с дополнительными функциями, такими как аутентификация или кэширование.
    EntitiesСкелет бизнес-сущности со слотами для интерактивных элементовХранилище объектов этой сущности, а также функции для обработки этих объектов.
    Этот сегмент лучше всего подходит для хранения данных с сервера. Если вы используете TanStack Query или другие методы неявного хранения, вы можете опустить этот сегмент.
    Функции над объектами этой сущности, не связанные с хранением данныхAPI-методы, использующие API-клиент из Shared для упрощения коммуникации с бэкендом
    FeaturesИнтерактивные элементы, позволяющие пользователям использовать эту функциюБизнес-логика и хранилище инфраструктурных данных, если требуется (например, текущая тема приложения). Здесь лежит код, который непосредственно создает пользу для пользователяИнфраструктурный код, который позволяет сегменту model более кратко описать бизнес-логикуAPI-методы, представляющие эту функцию на бэкенде.
    Может объединять API-методы из Entities.
    WidgetsКомпозиция Entities и Features в самодостаточные блоки интерфейса.
    Также может содержать ограничители ошибок и состояния загрузки.
    Хранилище инфраструктурных данных, если требуетсяНе-бизнес-взаимодействия (например, жесты) и прочий код, необходимый для функционирования этого блока на страницеОбычно не используется, но может содержать загрузчики данных в контексте вложенного роутинга (например, Remix)
    PagesКомпозиция Entities, Features и Widgets в полноценные страницы.
    Также может содержать ограничители ошибок и состояния загрузки.
    Обычно не используетсяНе-бизнес-взаимодействия (например, жесты) и прочий код, необходимый для создания полноценного пользовательского опыта на этой страницеЗагрузчики данных для фреймворков, ориентированных на SSR (рендеринг на сервере)
    +
    Layeruimodellibapi
    SharedUI-библиотекаОбычно не используетсяУтилитарные модули из нескольких связанных файлов.
    Если вам нужны индивидуальные вспомогательные функции, обратите внимание на библиотеки утилит, например, lodash-es.
    Примитивный API-клиент с дополнительными функциями, такими как аутентификация или кэширование.
    EntitiesСкелет бизнес-сущности со слотами для интерактивных элементовХранилище объектов этой сущности, а также функции для обработки этих объектов.
    Этот сегмент лучше всего подходит для хранения данных с сервера. Если вы используете TanStack Query или другие методы неявного хранения, вы можете опустить этот сегмент.
    Функции над объектами этой сущности, не связанные с хранением данныхAPI-методы, использующие API-клиент из Shared для упрощения коммуникации с бэкендом
    FeaturesИнтерактивные элементы, позволяющие пользователям использовать эту функциюБизнес-логика и хранилище инфраструктурных данных, если требуется (например, текущая тема приложения). Здесь лежит код, который непосредственно создает пользу для пользователяИнфраструктурный код, который позволяет сегменту model более кратко описать бизнес-логикуAPI-методы, представляющие эту функцию на бэкенде.
    Может объединять API-методы из Entities.
    WidgetsКомпозиция Entities и Features в самодостаточные блоки интерфейса.
    Также может содержать ограничители ошибок и состояния загрузки.
    Хранилище инфраструктурных данных, если требуетсяНе-бизнес-взаимодействия (например, жесты) и прочий код, необходимый для функционирования этого блока на страницеОбычно не используется, но может содержать загрузчики данных в контексте вложенного роутинга (например, Remix)
    PagesКомпозиция Entities, Features и Widgets в полноценные страницы.
    Также может содержать ограничители ошибок и состояния загрузки.
    Обычно не используетсяНе-бизнес-взаимодействия (например, жесты) и прочий код, необходимый для создания полноценного пользовательского опыта на этой страницеЗагрузчики данных для фреймворков, ориентированных на SSR (рендеринг на сервере)
    \ No newline at end of file diff --git a/ru/examples.html b/ru/examples.html index d6c9d80ed1..bd9d81cc13 100644 --- a/ru/examples.html +++ b/ru/examples.html @@ -9,8 +9,8 @@ - - + +

    Примеры

    Список сайтов, сделанных людьми с FSD

    v2
    Tiny Bunny Mini Game

    Mini-game "21 points" in the universe of the visual novel "Tiny Bunny".

    reactredux-toolkittypescript
    v2
    Roke.to Business

    Business branch of Roketo, a crypto streaming service which allows paying people by the second

    reacteffectortailwindcssturbo
    v2
    Roke.to dApp

    A crypto streaming service which allows paying people by the second

    reacteffectortailwindcss
    v2
    IT bookstore

    Catalog for viewing and searching information technology books

    reactredux toolkittypescriptreact routervitescss
    v2
    Moke Smoke (React Native example)

    An application that helps you quit smoking, published in the App Store and Google. Developed with React Native

    reactrtkpersisttypescriptfirebase
    v2
    Moonlogs (Effector + Forest example)

    Moonlogs is a business-event logging tool with a built-in user-friendly web interface for easy access to events

    foresteffectortailwindtypescriptgo
    v2
    Posts (React Query example)

    Example of using FSD with React Query (Mutation, Query, Pagination)

    reactreact-querytypescriptmaterial ui
    v2
    FalkChat

    FalkChat is your go-to destination for seamless and engaging online conversations.

    reactnextprettierclerktypescripttailwindshadcn/uizustand
    v2
    Polka

    The application is a bookshelf where you can add your favorite books. The application works with the Google Books API.

    vue3piniatypescriptvue-routereslintprettiervitevuetify
    v2
    Fake Cyber Web Store

    Example web store on Vue3

    vue3piniatypescriptfirebasevue-routereslintprettiervite
    v2
    VK Audiopad

    Chrome extension for VK Music

    reactvkuitypescript
    v2
    Сryptolight

    Cryptocurrency review site based on Feature-Sliced Design (Architectural methodology for frontend projects).

    reacteffectornextuitypescriptvite
    v2
    Money Flow

    A mobile application for tracking your expenses and incomes.

    capacitorjsreactreact-routerzustandvitetypescriptmobileandroidios
    v2
    E-Commerce

    This project is an online store built using React. It provides the ability to view the product catalog and product pages

    reactmobxwebpacktypescriptssr
    v2
    Todo app (Vue 3 + Pinia)

    QuickStart todo-app example for Vue developers with pinia store

    vue 3piniavitetypescript
    v2
    Conduit

    A social blogging site powered by Feature-Sliced Design architectural methodology.

    reactreact-routerreact-queryzustandvitetypescript
    v2
    Kinomore (React+Effector)

    Large project on the effector/fsd stack

    reacteffectortypescriptnextjsreact-testing-library
    v2
    Sudoku (React+Effector)

    A simple crossword of numbers on effector / fsd

    reacteffectortypescriptvitetailwindatomic-router
    v2
    Nukeapp (React+ReduxToolkit)

    Shopping app build on React/ReduxToolkit stack

    reactredux-toolkittypescriptvite
    v2
    Simple Greenhouse App (React+MobX)

    Simple demonstration of how FSD can be implemented with TypeScript, React.js, MobX and Firebase

    reactmobxtypescriptfirebasemuivite
    v2
    Todo App (ReactNative+Redux)

    QuickStart todo-app example for ReactNative(Expo) developers

    react-nativeexporedux
    v2
    Rastrr

    A simple and free graphic editor for novice artists

    svelte
    v2
    Draw, I'll Help

    A drawing app with shape correction powered by ML

    svelte
    v2
    Cast

    A podcast listening PWA with automated quality assurance

    svelte
    v2
    Loripsum generator

    Simple fish text generator

    reacteffector
    v2
    Projentry (demo)

    Assistant for your projects

    reactantd
    v2
    Todo App (Angular 13)

    QuickStart todo-app example for Angular developers

    angularrxjs
    v2
    Todo App (Vue 3)

    QuickStart todo-app example for Vue developers

    vuevuexantd
    v2
    Todo App (React+Redux)

    QuickStart todo-app example for React developers (Redux version)

    reactreduxantd
    v2
    Todo App (React+Effector)

    QuickStart todo-app example for React developers (Effector version)

    reacteffectorantd
    v2
    Github Client

    React & GraphQL powered github web-client

    reactgraphqlantd
    v2
    Cardbox

    The best solutions from developers in one place

    reacteffector
    diff --git a/ru/index.html b/ru/index.html index efe465ee87..b98aa293f0 100644 --- a/ru/index.html +++ b/ru/index.html @@ -9,8 +9,8 @@ - - + +

    Feature-Sliced Design

    Архитектурная методология для фронтенд проектов

    Преимущества

    Явная бизнес-логика

    Архитектуру легко осваивать, поскольку она состоит из доменных модулей

    Адаптивность

    Компоненты архитектуры можно гибко заменять, добавлять под новые условия

    Технический долг

    Каждый модуль можно независимо модифицировать / переписать без сайд-эффектов

    Явная переиспользуемость

    Сохраняется баланс между DRY и локальной кастомизацией

    Концепции

    Public API

    Каждый модуль должен иметь на верхнем уровне декларацию своего публичного API

    Изоляция

    Модуль не должен зависеть напрямую от других модулей того же слоя или вышележаших слоев

    Понимание потребностей

    Ориентирование на потребности бизнеса и пользователя

    Схема

    Компании, использующие методологию

    Методология используется в Вашей компании? Сообщите нам
    diff --git a/ru/nav.html b/ru/nav.html index 2a2d5c70b2..4626f89d33 100644 --- a/ru/nav.html +++ b/ru/nav.html @@ -9,8 +9,8 @@ - - + +

    🧭 Навигация

    Устаревшие ссылки

    После реструктуризации документации, некоторые ссылки на статьи изменились. Ниже можно найти страницу, которую вы, возможно, искали.

    Но для совместимости есть редиректы со старых ссылок

    🚀 Get Started

    ⚡️ Simplified and merged

    Tutorial

    old: /docs/get-started/quick-start
    new: /docs/get-started/tutorial

    Basics

    old: /docs/get-started/basics
    new: /docs/get-started/overview

    Decompose Cheatsheet

    old: /docs/get-started/tutorial/decompose; diff --git a/ru/search.html b/ru/search.html index 6456c5e719..1e2f2b025b 100644 --- a/ru/search.html +++ b/ru/search.html @@ -9,8 +9,8 @@ - - + + diff --git a/ru/versions.html b/ru/versions.html index f854e8020c..f413f6a353 100644 --- a/ru/versions.html +++ b/ru/versions.html @@ -9,8 +9,8 @@ - - + +

    Версии Feature-Sliced Design

    Feature-Sliced Design v2.0.0 (Current)

    Здесь можно найти документацию для текущей опубликованной версии

    v2.0.0 🍰Release NotesDocumentationMigration from v1

    Feature Slices v1 (Legacy)

    Здесь можно найти документацию для старых версий feature-slices

    v1.0Documentation
    v0.1Documentation

    Feature Driven (Legacy)

    Здесь можно найти документацию для старых версий feature-driven

    v0.1Documentation
    Example (kof)Github
    diff --git a/search.html b/search.html index 2e9f363626..88c3058f01 100644 --- a/search.html +++ b/search.html @@ -9,8 +9,8 @@ - - + + diff --git a/uz/404.html b/uz/404.html index c2f4bc592e..f3db26450c 100644 --- a/uz/404.html +++ b/uz/404.html @@ -9,8 +9,8 @@ - - + +

    Sahifa topilmadi

    Afsuski, siz hohlagan sahifa topilmadi

    Iltimos, ushbu havolaga kirgan sayt egasiga havola ishlamayotganligi haqida xabar bering.

    diff --git a/uz/assets/js/022a3ac7.ad4cacab.js b/uz/assets/js/022a3ac7.83e1f395.js similarity index 98% rename from uz/assets/js/022a3ac7.ad4cacab.js rename to uz/assets/js/022a3ac7.83e1f395.js index 5717f85622..c5300402e2 100644 --- a/uz/assets/js/022a3ac7.ad4cacab.js +++ b/uz/assets/js/022a3ac7.83e1f395.js @@ -1,2 +1,2 @@ -/*! For license information please see 022a3ac7.ad4cacab.js.LICENSE.txt */ -"use strict";(self.webpackChunk_feature_sliced_documentation=self.webpackChunk_feature_sliced_documentation||[]).push([[9856],{923:(e,t,a)=>{a.d(t,{A:()=>o});var n=a(991),s=a(758);const c={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M917.7 148.8l-42.4-42.4c-1.6-1.6-3.6-2.3-5.7-2.3s-4.1.8-5.7 2.3l-76.1 76.1a199.27 199.27 0 00-112.1-34.3c-51.2 0-102.4 19.5-141.5 58.6L432.3 308.7a8.03 8.03 0 000 11.3L704 591.7c1.6 1.6 3.6 2.3 5.7 2.3 2 0 4.1-.8 5.7-2.3l101.9-101.9c68.9-69 77-175.7 24.3-253.5l76.1-76.1c3.1-3.2 3.1-8.3 0-11.4zM769.1 441.7l-59.4 59.4-186.8-186.8 59.4-59.4c24.9-24.9 58.1-38.7 93.4-38.7 35.3 0 68.4 13.7 93.4 38.7 24.9 24.9 38.7 58.1 38.7 93.4 0 35.3-13.8 68.4-38.7 93.4zm-190.2 105a8.03 8.03 0 00-11.3 0L501 613.3 410.7 523l66.7-66.7c3.1-3.1 3.1-8.2 0-11.3L441 408.6a8.03 8.03 0 00-11.3 0L363 475.3l-43-43a7.85 7.85 0 00-5.7-2.3c-2 0-4.1.8-5.7 2.3L206.8 534.2c-68.9 69-77 175.7-24.3 253.5l-76.1 76.1a8.03 8.03 0 000 11.3l42.4 42.4c1.6 1.6 3.6 2.3 5.7 2.3s4.1-.8 5.7-2.3l76.1-76.1c33.7 22.9 72.9 34.3 112.1 34.3 51.2 0 102.4-19.5 141.5-58.6l101.9-101.9c3.1-3.1 3.1-8.2 0-11.3l-43-43 66.7-66.7c3.1-3.1 3.1-8.2 0-11.3l-36.6-36.2zM441.7 769.1a131.32 131.32 0 01-93.4 38.7c-35.3 0-68.4-13.7-93.4-38.7a131.32 131.32 0 01-38.7-93.4c0-35.3 13.7-68.4 38.7-93.4l59.4-59.4 186.8 186.8-59.4 59.4z"}}]},name:"api",theme:"outlined"};var i=a(9820),r=function(e,t){return s.createElement(i.A,(0,n.A)({},e,{ref:t,icon:c}))};const o=s.forwardRef(r)},7946:(e,t,a)=>{a.d(t,{Ay:()=>o,RM:()=>i});var n=a(6070),s=a(1100),c=a(5988);const i=[];function r(e){return(0,n.jsx)(c.A,{...e})}function o(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(r,{...e})}):r(e)}},2459:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>y,contentTitle:()=>_,default:()=>A,frontMatter:()=>z,metadata:()=>j,toc:()=>M});var n=a(6070),s=a(1100),c=a(7946),i=a(991),r=a(758);const o={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"defs",attrs:{},children:[{tag:"style",attrs:{}}]},{tag:"path",attrs:{d:"M912 820.1V203.9c28-9.9 48-36.6 48-67.9 0-39.8-32.2-72-72-72-31.3 0-58 20-67.9 48H203.9C194 84 167.3 64 136 64c-39.8 0-72 32.2-72 72 0 31.3 20 58 48 67.9v616.2C84 830 64 856.7 64 888c0 39.8 32.2 72 72 72 31.3 0 58-20 67.9-48h616.2c9.9 28 36.6 48 67.9 48 39.8 0 72-32.2 72-72 0-31.3-20-58-48-67.9zM888 112c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zM136 912c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24-10.7 24-24 24zm0-752c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24-10.7 24-24 24zm704 680H184V184h656v656zm48 72c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24-10.7 24-24 24z"}},{tag:"path",attrs:{d:"M288 474h448c8.8 0 16-7.2 16-16V282c0-8.8-7.2-16-16-16H288c-8.8 0-16 7.2-16 16v176c0 8.8 7.2 16 16 16zm56-136h336v64H344v-64zm-56 420h448c8.8 0 16-7.2 16-16V566c0-8.8-7.2-16-16-16H288c-8.8 0-16 7.2-16 16v176c0 8.8 7.2 16 16 16zm56-136h336v64H344v-64z"}}]},name:"group",theme:"outlined"};var l=a(9820),d=function(e,t){return r.createElement(l.A,(0,i.A)({},e,{ref:t,icon:o}))};const u=r.forwardRef(d);const m={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M464 144H160c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V160c0-8.8-7.2-16-16-16zm-52 268H212V212h200v200zm452-268H560c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V160c0-8.8-7.2-16-16-16zm-52 268H612V212h200v200zM464 544H160c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V560c0-8.8-7.2-16-16-16zm-52 268H212V612h200v200zm452-268H560c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V560c0-8.8-7.2-16-16-16zm-52 268H612V612h200v200z"}}]},name:"appstore",theme:"outlined"};var h=function(e,t){return r.createElement(l.A,(0,i.A)({},e,{ref:t,icon:m}))};const f=r.forwardRef(h);const p={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"defs",attrs:{},children:[{tag:"style",attrs:{}}]},{tag:"path",attrs:{d:"M843.5 737.4c-12.4-75.2-79.2-129.1-155.3-125.4S550.9 676 546 752c-153.5-4.8-208-40.7-199.1-113.7 3.3-27.3 19.8-41.9 50.1-49 18.4-4.3 38.8-4.9 57.3-3.2 1.7.2 3.5.3 5.2.5 11.3 2.7 22.8 5 34.3 6.8 34.1 5.6 68.8 8.4 101.8 6.6 92.8-5 156-45.9 159.2-132.7 3.1-84.1-54.7-143.7-147.9-183.6-29.9-12.8-61.6-22.7-93.3-30.2-14.3-3.4-26.3-5.7-35.2-7.2-7.9-75.9-71.5-133.8-147.8-134.4-76.3-.6-140.9 56.1-150.1 131.9s40 146.3 114.2 163.9c74.2 17.6 149.9-23.3 175.7-95.1 9.4 1.7 18.7 3.6 28 5.8 28.2 6.6 56.4 15.4 82.4 26.6 70.7 30.2 109.3 70.1 107.5 119.9-1.6 44.6-33.6 65.2-96.2 68.6-27.5 1.5-57.6-.9-87.3-5.8-8.3-1.4-15.9-2.8-22.6-4.3-3.9-.8-6.6-1.5-7.8-1.8l-3.1-.6c-2.2-.3-5.9-.8-10.7-1.3-25-2.3-52.1-1.5-78.5 4.6-55.2 12.9-93.9 47.2-101.1 105.8-15.7 126.2 78.6 184.7 276 188.9 29.1 70.4 106.4 107.9 179.6 87 73.3-20.9 119.3-93.4 106.9-168.6zM329.1 345.2a83.3 83.3 0 11.01-166.61 83.3 83.3 0 01-.01 166.61zM695.6 845a83.3 83.3 0 11.01-166.61A83.3 83.3 0 01695.6 845z"}}]},name:"node-index",theme:"outlined"};var v=function(e,t){return r.createElement(l.A,(0,i.A)({},e,{ref:t,icon:p}))};const g=r.forwardRef(v);var x=a(923);const z={sidebar_position:0,hide_table_of_contents:!0,pagination_prev:"guides/index"},_="\ud83d\udcda Malumot",j={id:"reference/index",title:"\ud83d\udcda Malumot",description:"Feature-Sliced Design asosiy tushunchalarining batafsil tavsifi.",source:"@site/i18n/uz/docusaurus-plugin-content-docs/current/reference/index.mdx",sourceDirName:"reference",slug:"/reference/",permalink:"/uz/docs/reference/",draft:!1,unlisted:!1,editUrl:"https://github.com/feature-sliced/documentation/edit/master/i18n/uz/docusaurus-plugin-content-docs/current/reference/index.mdx",tags:[],version:"current",lastUpdatedAt:1727607766e3,sidebarPosition:0,frontMatter:{sidebar_position:0,hide_table_of_contents:!0,pagination_prev:"guides/index"},sidebar:"referenceSidebar",previous:{title:"\ud83c\udfaf Guides",permalink:"/uz/docs/guides/"},next:{title:"Qatlamlar",permalink:"/uz/docs/reference/layers"}},y={},M=[...c.RM,...c.RM,...c.RM,...c.RM];function b(e){const t={h1:"h1",header:"header",p:"p",...(0,s.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.header,{children:(0,n.jsx)(t.h1,{id:"-malumot",children:"\ud83d\udcda Malumot"})}),"\n",(0,n.jsx)("p",{class:"summary",children:(0,n.jsx)(t.p,{children:"Feature-Sliced Design asosiy tushunchalarining batafsil tavsifi."})}),"\n",(0,n.jsx)(c.Ay,{title:"Qatlamlar",description:"Qatlamning ta'rifi va barcha qatlamlar uchun tushuntirishlar",to:"/docs/reference/layers",Icon:u}),"\n",(0,n.jsx)(c.Ay,{title:"Bo'lak va segmentlar",description:"Bo'lak va segmentning ta'riflari, turli qatlamlardagi segmentlar uchun kontent misollari",to:"/docs/reference/slices-segments",Icon:f}),"\n",(0,n.jsx)(c.Ay,{title:"Izolyatsiya",description:"O'lchovli va samarali modul o'zaro ta'siri uchun amaliyotlar",to:"/docs/reference/isolation",Icon:g}),"\n",(0,n.jsx)(c.Ay,{title:"Ommaviy API",description:"Kengaytiriladigan va integratsiyalashuvi oson modullarni loyihalash amaliyoti",to:"/docs/reference/public-api",Icon:x.A})]})}function A(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(b,{...e})}):b(e)}},5988:(e,t,a)=>{a.d(t,{Y:()=>r,A:()=>l});a(758);var n=a(3526),s=a(6783);const c={root:"root_GfON",rootDisabled:"rootDisabled_SFUB",details:"details_xxkR",detailsTags:"detailsTags_uTQx",icon:"icon_ciqP",title:"title_pSH5",description:"description__Fep",miniTheme:"miniTheme_ePfp",primaryTheme:"primaryTheme_CilO",defaultTheme:"defaultTheme_j3I8"};var i=a(6070);const r=e=>{const{title:t,description:a,to:r,Icon:l,tags:d,className:u,disabled:m,theme:h="default"}=e;return(0,i.jsxs)(s.A,{className:(0,n.A)(c.root,u,m&&c.rootDisabled,c[`${h}Theme`]),to:r,children:[(0,i.jsx)(o,{Icon:l}),(0,i.jsxs)("div",{className:c.details,children:[(0,i.jsxs)("div",{className:c.detailsMain,children:[(0,i.jsx)("span",{className:c.title,children:t}),(0,i.jsx)("p",{className:c.description,children:a})]}),d&&(0,i.jsx)("div",{className:c.detailsTags,children:d.join(" \u2022 ")})]})]})},o=e=>{let{Icon:t}=e;return t?"string"==typeof t?(0,i.jsx)("span",{className:c.icon,children:t}):(0,i.jsx)(t,{className:c.icon}):null},l=r},1100:(e,t,a)=>{a.d(t,{R:()=>i,x:()=>r});var n=a(758);const s={},c=n.createContext(s);function i(e){const t=n.useContext(c);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function r(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:i(e.components),n.createElement(c.Provider,{value:t},e.children)}}}]); \ No newline at end of file +/*! For license information please see 022a3ac7.83e1f395.js.LICENSE.txt */ +"use strict";(self.webpackChunk_feature_sliced_documentation=self.webpackChunk_feature_sliced_documentation||[]).push([[9856],{923:(e,t,a)=>{a.d(t,{A:()=>o});var n=a(991),s=a(758);const c={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M917.7 148.8l-42.4-42.4c-1.6-1.6-3.6-2.3-5.7-2.3s-4.1.8-5.7 2.3l-76.1 76.1a199.27 199.27 0 00-112.1-34.3c-51.2 0-102.4 19.5-141.5 58.6L432.3 308.7a8.03 8.03 0 000 11.3L704 591.7c1.6 1.6 3.6 2.3 5.7 2.3 2 0 4.1-.8 5.7-2.3l101.9-101.9c68.9-69 77-175.7 24.3-253.5l76.1-76.1c3.1-3.2 3.1-8.3 0-11.4zM769.1 441.7l-59.4 59.4-186.8-186.8 59.4-59.4c24.9-24.9 58.1-38.7 93.4-38.7 35.3 0 68.4 13.7 93.4 38.7 24.9 24.9 38.7 58.1 38.7 93.4 0 35.3-13.8 68.4-38.7 93.4zm-190.2 105a8.03 8.03 0 00-11.3 0L501 613.3 410.7 523l66.7-66.7c3.1-3.1 3.1-8.2 0-11.3L441 408.6a8.03 8.03 0 00-11.3 0L363 475.3l-43-43a7.85 7.85 0 00-5.7-2.3c-2 0-4.1.8-5.7 2.3L206.8 534.2c-68.9 69-77 175.7-24.3 253.5l-76.1 76.1a8.03 8.03 0 000 11.3l42.4 42.4c1.6 1.6 3.6 2.3 5.7 2.3s4.1-.8 5.7-2.3l76.1-76.1c33.7 22.9 72.9 34.3 112.1 34.3 51.2 0 102.4-19.5 141.5-58.6l101.9-101.9c3.1-3.1 3.1-8.2 0-11.3l-43-43 66.7-66.7c3.1-3.1 3.1-8.2 0-11.3l-36.6-36.2zM441.7 769.1a131.32 131.32 0 01-93.4 38.7c-35.3 0-68.4-13.7-93.4-38.7a131.32 131.32 0 01-38.7-93.4c0-35.3 13.7-68.4 38.7-93.4l59.4-59.4 186.8 186.8-59.4 59.4z"}}]},name:"api",theme:"outlined"};var i=a(9820),r=function(e,t){return s.createElement(i.A,(0,n.A)({},e,{ref:t,icon:c}))};const o=s.forwardRef(r)},7946:(e,t,a)=>{a.d(t,{Ay:()=>o,RM:()=>i});var n=a(6070),s=a(1100),c=a(5988);const i=[];function r(e){return(0,n.jsx)(c.A,{...e})}function o(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(r,{...e})}):r(e)}},2459:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>y,contentTitle:()=>_,default:()=>A,frontMatter:()=>z,metadata:()=>j,toc:()=>M});var n=a(6070),s=a(1100),c=a(7946),i=a(991),r=a(758);const o={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"defs",attrs:{},children:[{tag:"style",attrs:{}}]},{tag:"path",attrs:{d:"M912 820.1V203.9c28-9.9 48-36.6 48-67.9 0-39.8-32.2-72-72-72-31.3 0-58 20-67.9 48H203.9C194 84 167.3 64 136 64c-39.8 0-72 32.2-72 72 0 31.3 20 58 48 67.9v616.2C84 830 64 856.7 64 888c0 39.8 32.2 72 72 72 31.3 0 58-20 67.9-48h616.2c9.9 28 36.6 48 67.9 48 39.8 0 72-32.2 72-72 0-31.3-20-58-48-67.9zM888 112c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zM136 912c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24-10.7 24-24 24zm0-752c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24-10.7 24-24 24zm704 680H184V184h656v656zm48 72c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24-10.7 24-24 24z"}},{tag:"path",attrs:{d:"M288 474h448c8.8 0 16-7.2 16-16V282c0-8.8-7.2-16-16-16H288c-8.8 0-16 7.2-16 16v176c0 8.8 7.2 16 16 16zm56-136h336v64H344v-64zm-56 420h448c8.8 0 16-7.2 16-16V566c0-8.8-7.2-16-16-16H288c-8.8 0-16 7.2-16 16v176c0 8.8 7.2 16 16 16zm56-136h336v64H344v-64z"}}]},name:"group",theme:"outlined"};var l=a(9820),d=function(e,t){return r.createElement(l.A,(0,i.A)({},e,{ref:t,icon:o}))};const u=r.forwardRef(d);const m={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M464 144H160c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V160c0-8.8-7.2-16-16-16zm-52 268H212V212h200v200zm452-268H560c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V160c0-8.8-7.2-16-16-16zm-52 268H612V212h200v200zM464 544H160c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V560c0-8.8-7.2-16-16-16zm-52 268H212V612h200v200zm452-268H560c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V560c0-8.8-7.2-16-16-16zm-52 268H612V612h200v200z"}}]},name:"appstore",theme:"outlined"};var h=function(e,t){return r.createElement(l.A,(0,i.A)({},e,{ref:t,icon:m}))};const f=r.forwardRef(h);const p={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"defs",attrs:{},children:[{tag:"style",attrs:{}}]},{tag:"path",attrs:{d:"M843.5 737.4c-12.4-75.2-79.2-129.1-155.3-125.4S550.9 676 546 752c-153.5-4.8-208-40.7-199.1-113.7 3.3-27.3 19.8-41.9 50.1-49 18.4-4.3 38.8-4.9 57.3-3.2 1.7.2 3.5.3 5.2.5 11.3 2.7 22.8 5 34.3 6.8 34.1 5.6 68.8 8.4 101.8 6.6 92.8-5 156-45.9 159.2-132.7 3.1-84.1-54.7-143.7-147.9-183.6-29.9-12.8-61.6-22.7-93.3-30.2-14.3-3.4-26.3-5.7-35.2-7.2-7.9-75.9-71.5-133.8-147.8-134.4-76.3-.6-140.9 56.1-150.1 131.9s40 146.3 114.2 163.9c74.2 17.6 149.9-23.3 175.7-95.1 9.4 1.7 18.7 3.6 28 5.8 28.2 6.6 56.4 15.4 82.4 26.6 70.7 30.2 109.3 70.1 107.5 119.9-1.6 44.6-33.6 65.2-96.2 68.6-27.5 1.5-57.6-.9-87.3-5.8-8.3-1.4-15.9-2.8-22.6-4.3-3.9-.8-6.6-1.5-7.8-1.8l-3.1-.6c-2.2-.3-5.9-.8-10.7-1.3-25-2.3-52.1-1.5-78.5 4.6-55.2 12.9-93.9 47.2-101.1 105.8-15.7 126.2 78.6 184.7 276 188.9 29.1 70.4 106.4 107.9 179.6 87 73.3-20.9 119.3-93.4 106.9-168.6zM329.1 345.2a83.3 83.3 0 11.01-166.61 83.3 83.3 0 01-.01 166.61zM695.6 845a83.3 83.3 0 11.01-166.61A83.3 83.3 0 01695.6 845z"}}]},name:"node-index",theme:"outlined"};var v=function(e,t){return r.createElement(l.A,(0,i.A)({},e,{ref:t,icon:p}))};const g=r.forwardRef(v);var x=a(923);const z={sidebar_position:0,hide_table_of_contents:!0,pagination_prev:"guides/index"},_="\ud83d\udcda Malumot",j={id:"reference/index",title:"\ud83d\udcda Malumot",description:"Feature-Sliced Design asosiy tushunchalarining batafsil tavsifi.",source:"@site/i18n/uz/docusaurus-plugin-content-docs/current/reference/index.mdx",sourceDirName:"reference",slug:"/reference/",permalink:"/uz/docs/reference/",draft:!1,unlisted:!1,editUrl:"https://github.com/feature-sliced/documentation/edit/master/i18n/uz/docusaurus-plugin-content-docs/current/reference/index.mdx",tags:[],version:"current",lastUpdatedAt:1728325386e3,sidebarPosition:0,frontMatter:{sidebar_position:0,hide_table_of_contents:!0,pagination_prev:"guides/index"},sidebar:"referenceSidebar",previous:{title:"\ud83c\udfaf Guides",permalink:"/uz/docs/guides/"},next:{title:"Qatlamlar",permalink:"/uz/docs/reference/layers"}},y={},M=[...c.RM,...c.RM,...c.RM,...c.RM];function b(e){const t={h1:"h1",header:"header",p:"p",...(0,s.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.header,{children:(0,n.jsx)(t.h1,{id:"-malumot",children:"\ud83d\udcda Malumot"})}),"\n",(0,n.jsx)("p",{class:"summary",children:(0,n.jsx)(t.p,{children:"Feature-Sliced Design asosiy tushunchalarining batafsil tavsifi."})}),"\n",(0,n.jsx)(c.Ay,{title:"Qatlamlar",description:"Qatlamning ta'rifi va barcha qatlamlar uchun tushuntirishlar",to:"/docs/reference/layers",Icon:u}),"\n",(0,n.jsx)(c.Ay,{title:"Bo'lak va segmentlar",description:"Bo'lak va segmentning ta'riflari, turli qatlamlardagi segmentlar uchun kontent misollari",to:"/docs/reference/slices-segments",Icon:f}),"\n",(0,n.jsx)(c.Ay,{title:"Izolyatsiya",description:"O'lchovli va samarali modul o'zaro ta'siri uchun amaliyotlar",to:"/docs/reference/isolation",Icon:g}),"\n",(0,n.jsx)(c.Ay,{title:"Ommaviy API",description:"Kengaytiriladigan va integratsiyalashuvi oson modullarni loyihalash amaliyoti",to:"/docs/reference/public-api",Icon:x.A})]})}function A(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(b,{...e})}):b(e)}},5988:(e,t,a)=>{a.d(t,{Y:()=>r,A:()=>l});a(758);var n=a(3526),s=a(6783);const c={root:"root_GfON",rootDisabled:"rootDisabled_SFUB",details:"details_xxkR",detailsTags:"detailsTags_uTQx",icon:"icon_ciqP",title:"title_pSH5",description:"description__Fep",miniTheme:"miniTheme_ePfp",primaryTheme:"primaryTheme_CilO",defaultTheme:"defaultTheme_j3I8"};var i=a(6070);const r=e=>{const{title:t,description:a,to:r,Icon:l,tags:d,className:u,disabled:m,theme:h="default"}=e;return(0,i.jsxs)(s.A,{className:(0,n.A)(c.root,u,m&&c.rootDisabled,c[`${h}Theme`]),to:r,children:[(0,i.jsx)(o,{Icon:l}),(0,i.jsxs)("div",{className:c.details,children:[(0,i.jsxs)("div",{className:c.detailsMain,children:[(0,i.jsx)("span",{className:c.title,children:t}),(0,i.jsx)("p",{className:c.description,children:a})]}),d&&(0,i.jsx)("div",{className:c.detailsTags,children:d.join(" \u2022 ")})]})]})},o=e=>{let{Icon:t}=e;return t?"string"==typeof t?(0,i.jsx)("span",{className:c.icon,children:t}):(0,i.jsx)(t,{className:c.icon}):null},l=r},1100:(e,t,a)=>{a.d(t,{R:()=>i,x:()=>r});var n=a(758);const s={},c=n.createContext(s);function i(e){const t=n.useContext(c);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function r(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:i(e.components),n.createElement(c.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/uz/assets/js/022a3ac7.ad4cacab.js.LICENSE.txt b/uz/assets/js/022a3ac7.83e1f395.js.LICENSE.txt similarity index 100% rename from uz/assets/js/022a3ac7.ad4cacab.js.LICENSE.txt rename to uz/assets/js/022a3ac7.83e1f395.js.LICENSE.txt diff --git a/uz/assets/js/0499e362.73fb0383.js b/uz/assets/js/0499e362.12e093af.js similarity index 98% rename from uz/assets/js/0499e362.73fb0383.js rename to uz/assets/js/0499e362.12e093af.js index e97781e31f..d446b76ce9 100644 --- a/uz/assets/js/0499e362.73fb0383.js +++ b/uz/assets/js/0499e362.12e093af.js @@ -1 +1 @@ -"use strict";(self.webpackChunk_feature_sliced_documentation=self.webpackChunk_feature_sliced_documentation||[]).push([[4005],{1539:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>c,contentTitle:()=>r,default:()=>h,frontMatter:()=>o,metadata:()=>a,toc:()=>d});var i=s(6070),n=s(1100);const o={unlisted:!0},r="Decomposition cheatsheet",a={id:"get-started/cheatsheet",title:"Decomposition cheatsheet",description:"Use this as a quick reference when you're deciding how to decompose your UI. PDF versions are also available below, so you can print it out and keep one under your pillow.",source:"@site/i18n/en/docusaurus-plugin-content-docs/current/get-started/cheatsheet.mdx",sourceDirName:"get-started",slug:"/get-started/cheatsheet",permalink:"/uz/docs/get-started/cheatsheet",draft:!1,unlisted:!0,editUrl:"https://github.com/feature-sliced/documentation/edit/master/i18n/en/docusaurus-plugin-content-docs/current/get-started/cheatsheet.mdx",tags:[],version:"current",lastUpdatedAt:1727607766e3,frontMatter:{unlisted:!0},sidebar:"getstartedSidebar"},c={},d=[{value:"Choosing a layer",id:"choosing-a-layer",level:2},{value:"Examples",id:"examples",level:2},{value:"Tweet",id:"tweet",level:3},{value:"GitHub",id:"github",level:3},{value:"See also",id:"see-also",level:2}];function l(e){const t={a:"a",h1:"h1",h2:"h2",h3:"h3",header:"header",img:"img",li:"li",p:"p",ul:"ul",...(0,n.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(t.header,{children:(0,i.jsx)(t.h1,{id:"decomposition-cheatsheet",children:"Decomposition cheatsheet"})}),"\n",(0,i.jsx)(t.p,{children:"Use this as a quick reference when you're deciding how to decompose your UI. PDF versions are also available below, so you can print it out and keep one under your pillow."}),"\n",(0,i.jsx)(t.h2,{id:"choosing-a-layer",children:"Choosing a layer"}),"\n",(0,i.jsx)(t.p,{children:(0,i.jsx)(t.a,{target:"_blank","data-noBrokenLinkCheck":!0,href:s(9603).A+"",children:"Download PDF"})}),"\n",(0,i.jsx)(t.p,{children:(0,i.jsx)(t.img,{alt:"Definitions of all layers and self-check questions",src:s(4603).A+"",width:"1684",height:"1190"})}),"\n",(0,i.jsx)(t.h2,{id:"examples",children:"Examples"}),"\n",(0,i.jsx)(t.h3,{id:"tweet",children:"Tweet"}),"\n",(0,i.jsx)(t.p,{children:(0,i.jsx)(t.img,{alt:"decomposed-tweet-bordered-bgLight",src:s(8898).A+"",width:"1200",height:"2364"})}),"\n",(0,i.jsx)(t.h3,{id:"github",children:"GitHub"}),"\n",(0,i.jsx)(t.p,{children:(0,i.jsx)(t.img,{alt:"decomposed-github-bordered",src:s(8142).A+"",width:"2291",height:"1080"})}),"\n",(0,i.jsx)(t.h2,{id:"see-also",children:"See also"}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsx)(t.li,{children:(0,i.jsx)(t.a,{href:"https://t.me/feature_sliced/4262",children:"(Thread) General logic for features and entities"})}),"\n",(0,i.jsx)(t.li,{children:(0,i.jsx)(t.a,{href:"https://t.me/feature_sliced/4210",children:"(Thread) Decomposition of swollen logic"})}),"\n",(0,i.jsx)(t.li,{children:(0,i.jsx)(t.a,{href:"https://t.me/feature_sliced/4088",children:"(Thread) About understanding the areas of responsibility during decomposition"})}),"\n",(0,i.jsx)(t.li,{children:(0,i.jsx)(t.a,{href:"https://t.me/feature_sliced/3828",children:"(Thread) Decomposition of the Product List widget"})}),"\n",(0,i.jsx)(t.li,{children:(0,i.jsx)(t.a,{href:"https://www.pluralsight.com/guides/how-to-organize-your-react-+-redux-codebase",children:"(Article) Different approaches to the decomposition of logic"})}),"\n",(0,i.jsx)(t.li,{children:(0,i.jsx)(t.a,{href:"https://t.me/feature_sliced/3776",children:"(Thread) About the difference between features and entities"})}),"\n",(0,i.jsx)(t.li,{children:(0,i.jsx)(t.a,{href:"https://t.me/feature_sliced/3248",children:"(Thread) About the difference between things and entities (2)"})}),"\n",(0,i.jsx)(t.li,{children:(0,i.jsx)(t.a,{href:"https://t.me/feature_sliced/3833",children:"(Thread) About the application of criteria for decomposition"})}),"\n"]})]})}function h(e={}){const{wrapper:t}={...(0,n.R)(),...e.components};return t?(0,i.jsx)(t,{...e,children:(0,i.jsx)(l,{...e})}):l(e)}},9603:(e,t,s)=>{s.d(t,{A:()=>i});const i=s.p+"assets/files/choosing-a-layer-en-12fdf3265c8fc4f6b58687352b81fce7.pdf"},4603:(e,t,s)=>{s.d(t,{A:()=>i});const i=s.p+"assets/images/choosing-a-layer-en-5b67f20bb921ba17d78a56c0dc7654a9.jpg"},8142:(e,t,s)=>{s.d(t,{A:()=>i});const i=s.p+"assets/images/decompose-github-a0eeb839a4b5ef5c480a73726a4451b0.jpg"},8898:(e,t,s)=>{s.d(t,{A:()=>i});const i=s.p+"assets/images/decompose-twitter-7b9a50f879d763c49305b3bf0751ee35.png"},1100:(e,t,s)=>{s.d(t,{R:()=>r,x:()=>a});var i=s(758);const n={},o=i.createContext(n);function r(e){const t=i.useContext(o);return i.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:r(e.components),i.createElement(o.Provider,{value:t},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunk_feature_sliced_documentation=self.webpackChunk_feature_sliced_documentation||[]).push([[4005],{1539:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>c,contentTitle:()=>r,default:()=>h,frontMatter:()=>o,metadata:()=>a,toc:()=>d});var i=s(6070),n=s(1100);const o={unlisted:!0},r="Decomposition cheatsheet",a={id:"get-started/cheatsheet",title:"Decomposition cheatsheet",description:"Use this as a quick reference when you're deciding how to decompose your UI. PDF versions are also available below, so you can print it out and keep one under your pillow.",source:"@site/i18n/en/docusaurus-plugin-content-docs/current/get-started/cheatsheet.mdx",sourceDirName:"get-started",slug:"/get-started/cheatsheet",permalink:"/uz/docs/get-started/cheatsheet",draft:!1,unlisted:!0,editUrl:"https://github.com/feature-sliced/documentation/edit/master/i18n/en/docusaurus-plugin-content-docs/current/get-started/cheatsheet.mdx",tags:[],version:"current",lastUpdatedAt:1728325386e3,frontMatter:{unlisted:!0},sidebar:"getstartedSidebar"},c={},d=[{value:"Choosing a layer",id:"choosing-a-layer",level:2},{value:"Examples",id:"examples",level:2},{value:"Tweet",id:"tweet",level:3},{value:"GitHub",id:"github",level:3},{value:"See also",id:"see-also",level:2}];function l(e){const t={a:"a",h1:"h1",h2:"h2",h3:"h3",header:"header",img:"img",li:"li",p:"p",ul:"ul",...(0,n.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(t.header,{children:(0,i.jsx)(t.h1,{id:"decomposition-cheatsheet",children:"Decomposition cheatsheet"})}),"\n",(0,i.jsx)(t.p,{children:"Use this as a quick reference when you're deciding how to decompose your UI. PDF versions are also available below, so you can print it out and keep one under your pillow."}),"\n",(0,i.jsx)(t.h2,{id:"choosing-a-layer",children:"Choosing a layer"}),"\n",(0,i.jsx)(t.p,{children:(0,i.jsx)(t.a,{target:"_blank","data-noBrokenLinkCheck":!0,href:s(9603).A+"",children:"Download PDF"})}),"\n",(0,i.jsx)(t.p,{children:(0,i.jsx)(t.img,{alt:"Definitions of all layers and self-check questions",src:s(4603).A+"",width:"1684",height:"1190"})}),"\n",(0,i.jsx)(t.h2,{id:"examples",children:"Examples"}),"\n",(0,i.jsx)(t.h3,{id:"tweet",children:"Tweet"}),"\n",(0,i.jsx)(t.p,{children:(0,i.jsx)(t.img,{alt:"decomposed-tweet-bordered-bgLight",src:s(8898).A+"",width:"1200",height:"2364"})}),"\n",(0,i.jsx)(t.h3,{id:"github",children:"GitHub"}),"\n",(0,i.jsx)(t.p,{children:(0,i.jsx)(t.img,{alt:"decomposed-github-bordered",src:s(8142).A+"",width:"2291",height:"1080"})}),"\n",(0,i.jsx)(t.h2,{id:"see-also",children:"See also"}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsx)(t.li,{children:(0,i.jsx)(t.a,{href:"https://t.me/feature_sliced/4262",children:"(Thread) General logic for features and entities"})}),"\n",(0,i.jsx)(t.li,{children:(0,i.jsx)(t.a,{href:"https://t.me/feature_sliced/4210",children:"(Thread) Decomposition of swollen logic"})}),"\n",(0,i.jsx)(t.li,{children:(0,i.jsx)(t.a,{href:"https://t.me/feature_sliced/4088",children:"(Thread) About understanding the areas of responsibility during decomposition"})}),"\n",(0,i.jsx)(t.li,{children:(0,i.jsx)(t.a,{href:"https://t.me/feature_sliced/3828",children:"(Thread) Decomposition of the Product List widget"})}),"\n",(0,i.jsx)(t.li,{children:(0,i.jsx)(t.a,{href:"https://www.pluralsight.com/guides/how-to-organize-your-react-+-redux-codebase",children:"(Article) Different approaches to the decomposition of logic"})}),"\n",(0,i.jsx)(t.li,{children:(0,i.jsx)(t.a,{href:"https://t.me/feature_sliced/3776",children:"(Thread) About the difference between features and entities"})}),"\n",(0,i.jsx)(t.li,{children:(0,i.jsx)(t.a,{href:"https://t.me/feature_sliced/3248",children:"(Thread) About the difference between things and entities (2)"})}),"\n",(0,i.jsx)(t.li,{children:(0,i.jsx)(t.a,{href:"https://t.me/feature_sliced/3833",children:"(Thread) About the application of criteria for decomposition"})}),"\n"]})]})}function h(e={}){const{wrapper:t}={...(0,n.R)(),...e.components};return t?(0,i.jsx)(t,{...e,children:(0,i.jsx)(l,{...e})}):l(e)}},9603:(e,t,s)=>{s.d(t,{A:()=>i});const i=s.p+"assets/files/choosing-a-layer-en-12fdf3265c8fc4f6b58687352b81fce7.pdf"},4603:(e,t,s)=>{s.d(t,{A:()=>i});const i=s.p+"assets/images/choosing-a-layer-en-5b67f20bb921ba17d78a56c0dc7654a9.jpg"},8142:(e,t,s)=>{s.d(t,{A:()=>i});const i=s.p+"assets/images/decompose-github-a0eeb839a4b5ef5c480a73726a4451b0.jpg"},8898:(e,t,s)=>{s.d(t,{A:()=>i});const i=s.p+"assets/images/decompose-twitter-7b9a50f879d763c49305b3bf0751ee35.png"},1100:(e,t,s)=>{s.d(t,{R:()=>r,x:()=>a});var i=s(758);const n={},o=i.createContext(n);function r(e){const t=i.useContext(o);return i.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:r(e.components),i.createElement(o.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/uz/assets/js/066221cc.71a2ab79.js b/uz/assets/js/066221cc.84e17c5f.js similarity index 99% rename from uz/assets/js/066221cc.71a2ab79.js rename to uz/assets/js/066221cc.84e17c5f.js index dd6453300d..53e885ec08 100644 --- a/uz/assets/js/066221cc.71a2ab79.js +++ b/uz/assets/js/066221cc.84e17c5f.js @@ -1 +1 @@ -"use strict";(self.webpackChunk_feature_sliced_documentation=self.webpackChunk_feature_sliced_documentation||[]).push([[3120],{3760:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>l,contentTitle:()=>o,default:()=>h,frontMatter:()=>r,metadata:()=>a,toc:()=>d});var i=s(6070),t=s(1100);const r={sidebar_position:1},o="Overview",a={id:"get-started/overview",title:"Overview",description:"Feature-Sliced Design (FSD) is an architectural methodology for scaffolding front-end applications. Simply put, it's a compilation of rules and conventions on organizing code. The main purpose of this methodology is to make the project more understandable and stable in the face of ever-changing business requirements.",source:"@site/i18n/en/docusaurus-plugin-content-docs/current/get-started/overview.mdx",sourceDirName:"get-started",slug:"/get-started/overview",permalink:"/uz/docs/get-started/overview",draft:!1,unlisted:!1,editUrl:"https://github.com/feature-sliced/documentation/edit/master/i18n/en/docusaurus-plugin-content-docs/current/get-started/overview.mdx",tags:[],version:"current",lastUpdatedAt:1727607766e3,sidebarPosition:1,frontMatter:{sidebar_position:1},sidebar:"getstartedSidebar",previous:{title:"\ud83d\ude80 Get Started",permalink:"/uz/docs/get-started/"},next:{title:"Tutorial",permalink:"/uz/docs/get-started/tutorial"}},l={},d=[{value:"Is it right for me?",id:"is-it-right-for-me",level:2},{value:"Basic example",id:"basic-example",level:2},{value:"Concepts",id:"concepts",level:2},{value:"Layers",id:"layers",level:3},{value:"Slices",id:"slices",level:3},{value:"Segments",id:"segments",level:3},{value:"Advantages",id:"advantages",level:2},{value:"Incremental adoption",id:"incremental-adoption",level:2},{value:"Next steps",id:"next-steps",level:2}];function c(e){const n={a:"a",br:"br",code:"code",em:"em",h1:"h1",h2:"h2",h3:"h3",header:"header",img:"img",li:"li",ol:"ol",p:"p",strong:"strong",ul:"ul",...(0,t.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.header,{children:(0,i.jsx)(n.h1,{id:"overview",children:"Overview"})}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Feature-Sliced Design"})," (FSD) is an architectural methodology for scaffolding front-end applications. Simply put, it's a compilation of rules and conventions on organizing code. The main purpose of this methodology is to make the project more understandable and stable in the face of ever-changing business requirements."]}),"\n",(0,i.jsxs)(n.p,{children:["Apart from a set of conventions, FSD is also a toolchain. We have a ",(0,i.jsx)(n.a,{href:"https://github.com/feature-sliced/steiger",children:"linter"})," to check your project's architecture, ",(0,i.jsx)(n.a,{href:"https://github.com/feature-sliced/awesome?tab=readme-ov-file#tools",children:"folder generators"})," through a CLI or IDEs, as well as a rich library of ",(0,i.jsx)(n.a,{href:"/examples",children:"examples"}),"."]}),"\n",(0,i.jsx)(n.h2,{id:"is-it-right-for-me",children:"Is it right for me?"}),"\n",(0,i.jsx)(n.p,{children:"FSD can be implemented in projects and teams of any size. It is right for your project if:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["You're doing ",(0,i.jsx)(n.strong,{children:"frontend"})," (UI on web, mobile, desktop, etc.)"]}),"\n",(0,i.jsxs)(n.li,{children:["You're building an ",(0,i.jsx)(n.strong,{children:"application"}),", not a library"]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"And that's it! There are no restrictions on what programming language, UI framework, or state manager you use. You can also adopt FSD incrementally, use it in monorepos, and scale to great lengths by breaking your app into packages and implementing FSD individually within them."}),"\n",(0,i.jsxs)(n.p,{children:["If you already have an architecture and you're considering a switch to FSD, make sure that the current architecture is ",(0,i.jsx)(n.strong,{children:"causing trouble"})," in your team. For example, if your project has grown too large and inter-connected to efficiently implement new features, or if you're expecting a lot of new members to join the team. If the current architecture works, maybe it's not worth changing. But if you do decide to migrate, see the ",(0,i.jsx)(n.a,{href:"/docs/guides/migration/from-custom",children:"Migration"})," section for guidance."]}),"\n",(0,i.jsx)(n.h2,{id:"basic-example",children:"Basic example"}),"\n",(0,i.jsx)(n.p,{children:"Here is a simple project that implements FSD:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"\ud83d\udcc1 app"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"\ud83d\udcc1 pages"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"\ud83d\udcc1 shared"})}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["These top-level folders are called ",(0,i.jsx)(n.em,{children:"layers"}),". Let's look deeper:"]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"\ud83d\udcc2 app"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"\ud83d\udcc1 routes"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"\ud83d\udcc1 analytics"})}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"\ud83d\udcc2 pages"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"\ud83d\udcc1 home"})}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"\ud83d\udcc2 article-reader"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"\ud83d\udcc1 ui"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"\ud83d\udcc1 api"})}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"\ud83d\udcc1 settings"})}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"\ud83d\udcc2 shared"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"\ud83d\udcc1 ui"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"\ud83d\udcc1 api"})}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["Folders inside ",(0,i.jsx)(n.code,{children:"\ud83d\udcc2 pages"})," are called ",(0,i.jsx)(n.em,{children:"slices"}),". They divide the layer by domain (in this case, by pages)."]}),"\n",(0,i.jsxs)(n.p,{children:["Folders inside ",(0,i.jsx)(n.code,{children:"\ud83d\udcc2 app"}),", ",(0,i.jsx)(n.code,{children:"\ud83d\udcc2 shared"}),", and ",(0,i.jsx)(n.code,{children:"\ud83d\udcc2 pages/article-reader"})," are called ",(0,i.jsx)(n.em,{children:"segments"}),", and they divide slices (or layers) by technical purpose, i.e. what the code is for."]}),"\n",(0,i.jsx)(n.h2,{id:"concepts",children:"Concepts"}),"\n",(0,i.jsx)(n.p,{children:"Layers, slices, and segments form a hierarchy like this:"}),"\n",(0,i.jsxs)("figure",{children:[(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"Hierarchy of FSD concepts, described below",src:s(9273).A+"",width:"1355",height:"754"})}),(0,i.jsxs)("figcaption",{style:{fontStyle:"italic",fontSize:"0.9em"},children:[(0,i.jsx)("p",{children:'Pictured above: three pillars, labeled left to right as "Layers", "Slices", and "Segments" respectively.'}),(0,i.jsx)("p",{children:'The "Layers" pillar contains seven divisions arranged top to bottom and labeled "app", "processes", "pages", "widgets", "features", "entities", and "shared". The "processes" division is crossed out. The "entities" division is connected to the second pillar "Slices" in a way that conveys that the second pillar is the content of "entities".'}),(0,i.jsx)("p",{children:'The "Slices" pillar contains three divisions arranged top to bottom and labeled "user", "post", and "comment". The "post" division is connected to the third pillar "Segments" in the same way such that it\'s the content of "post".'}),(0,i.jsx)("p",{children:'The "Segments" pillar contains three divisions, arranged top to bottom and labeled "ui", "model", and "api".'})]})]}),"\n",(0,i.jsx)(n.h3,{id:"layers",children:"Layers"}),"\n",(0,i.jsx)(n.p,{children:"Layers are standardized across all FSD projects. You don't have to use all of the layers, but their names are important. There are currently seven of them (from top to bottom):"}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsx)(n.li,{children:"App* \u2014 everything that makes the app run \u2014 routing, entrypoints, global styles, providers."}),"\n",(0,i.jsx)(n.li,{children:"Processes (deprecated) \u2014 complex inter-page scenarios."}),"\n",(0,i.jsx)(n.li,{children:"Pages \u2014 full pages or large parts of a page in nested routing."}),"\n",(0,i.jsx)(n.li,{children:"Widgets \u2014 large self-contained chunks of functionality or UI, usually delivering an entire use case."}),"\n",(0,i.jsxs)(n.li,{children:["Features \u2014 ",(0,i.jsx)(n.em,{children:"reused"})," implementations of entire product features, i.e. actions that bring business value to the user."]}),"\n",(0,i.jsxs)(n.li,{children:["Entities \u2014 business entities that the project works with, like ",(0,i.jsx)(n.code,{children:"user"})," or ",(0,i.jsx)(n.code,{children:"product"}),"."]}),"\n",(0,i.jsx)(n.li,{children:"Shared* \u2014 reusable functionality, especially when it's detached from the specifics of the project/business, though not necessarily."}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.em,{children:"* \u2014 these layers, App and Shared, unlike the other layers, don't have slices, and are made up of segments directly."})}),"\n",(0,i.jsx)(n.p,{children:"The trick with layers is that modules on one layer can only know about and import from modules from the layers strictly below."}),"\n",(0,i.jsx)(n.h3,{id:"slices",children:"Slices"}),"\n",(0,i.jsx)(n.p,{children:"Next up are slices, which partition the code by business domain. You're free to choose any names for them, and create as many as you wish. Slices make your codebase easier to navigate by keeping logically related modules close together."}),"\n",(0,i.jsx)(n.p,{children:"Slices cannot use other slices on the same layer, and that helps with high cohesion and low coupling."}),"\n",(0,i.jsx)(n.h3,{id:"segments",children:"Segments"}),"\n",(0,i.jsx)(n.p,{children:"Slices, as well as layers App and Shared, consist of segments, and segments group your code by its purpose. Segment names are not constrained by the standard, but there are several conventional names for the most common purposes:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"ui"})," \u2014 everything related to UI display: UI components, date formatters, styles, etc."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"api"})," \u2014 backend interactions: request functions, data types, mappers, etc."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"model"})," \u2014 the data model: schemas, interfaces, stores, and business logic."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"lib"})," \u2014 library code that other modules on this slice need."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"config"})," \u2014 configuration files and feature flags."]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"Usually these segments are enough for most layers, you would only create your own segments in Shared or App, but this is not a rule."}),"\n",(0,i.jsx)(n.h2,{id:"advantages",children:"Advantages"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Uniformity"}),(0,i.jsx)(n.br,{}),"\n","Since the structure is standardized, projects become more uniform, which makes onboarding new members easier for the team."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Stability in face of changes and refactoring"}),(0,i.jsx)(n.br,{}),"\n","A module on one layer cannot use other modules on the same layer, or the layers above.",(0,i.jsx)(n.br,{}),"\n","This allows you to make isolated modifications without unforeseen consequences to the rest of the app."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Controlled reuse of logic"}),(0,i.jsx)(n.br,{}),"\n","Depending on the layer, you can make code very reusable or very local.",(0,i.jsx)(n.br,{}),"\n","This keeps a balance between following the ",(0,i.jsx)(n.strong,{children:"DRY"})," principle and practicality."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Orientation to business and users needs"}),(0,i.jsx)(n.br,{}),"\n","The app is split into business domains and usage of the business language is encouraged in naming, so that you can do useful product work without fully understanding all other unrelated parts of the project."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"incremental-adoption",children:"Incremental adoption"}),"\n",(0,i.jsx)(n.p,{children:"If you have an existing codebase that you want to migrate to FSD, we suggest the following strategy. We found it useful in our own migration experience."}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.p,{children:"Start by slowly shaping up the App and Shared layers module-by-module to create a foundation."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.p,{children:"Distribute all of the existing UI across Widgets and Pages using broad strokes, even if they have dependencies that violate the rules of FSD."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.p,{children:"Start gradually resolving import violations and also extracting Entities and possibly even Features."}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"It's advised to refrain from adding new large entities while refactoring or refactoring only certain parts of the project."}),"\n",(0,i.jsx)(n.h2,{id:"next-steps",children:"Next steps"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Want to get a good grasp of how to think in FSD?"})," Check out the ",(0,i.jsx)(n.a,{href:"/docs/get-started/tutorial",children:"Tutorial"}),"."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Prefer to learn from examples?"})," We have a lot in the ",(0,i.jsx)(n.a,{href:"/examples",children:"Examples"})," section."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Have questions?"})," Drop by our ",(0,i.jsx)(n.a,{href:"https://t.me/feature_sliced",children:"Telegram chat"})," and get help from the community."]}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(c,{...e})}):c(e)}},9273:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/visual_schema-e826067f573946613dcdc76e3f585082.jpg"},1100:(e,n,s)=>{s.d(n,{R:()=>o,x:()=>a});var i=s(758);const t={},r=i.createContext(t);function o(e){const n=i.useContext(r);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:o(e.components),i.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunk_feature_sliced_documentation=self.webpackChunk_feature_sliced_documentation||[]).push([[3120],{3760:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>l,contentTitle:()=>o,default:()=>h,frontMatter:()=>r,metadata:()=>a,toc:()=>d});var i=s(6070),t=s(1100);const r={sidebar_position:1},o="Overview",a={id:"get-started/overview",title:"Overview",description:"Feature-Sliced Design (FSD) is an architectural methodology for scaffolding front-end applications. Simply put, it's a compilation of rules and conventions on organizing code. The main purpose of this methodology is to make the project more understandable and stable in the face of ever-changing business requirements.",source:"@site/i18n/en/docusaurus-plugin-content-docs/current/get-started/overview.mdx",sourceDirName:"get-started",slug:"/get-started/overview",permalink:"/uz/docs/get-started/overview",draft:!1,unlisted:!1,editUrl:"https://github.com/feature-sliced/documentation/edit/master/i18n/en/docusaurus-plugin-content-docs/current/get-started/overview.mdx",tags:[],version:"current",lastUpdatedAt:1728325386e3,sidebarPosition:1,frontMatter:{sidebar_position:1},sidebar:"getstartedSidebar",previous:{title:"\ud83d\ude80 Get Started",permalink:"/uz/docs/get-started/"},next:{title:"Tutorial",permalink:"/uz/docs/get-started/tutorial"}},l={},d=[{value:"Is it right for me?",id:"is-it-right-for-me",level:2},{value:"Basic example",id:"basic-example",level:2},{value:"Concepts",id:"concepts",level:2},{value:"Layers",id:"layers",level:3},{value:"Slices",id:"slices",level:3},{value:"Segments",id:"segments",level:3},{value:"Advantages",id:"advantages",level:2},{value:"Incremental adoption",id:"incremental-adoption",level:2},{value:"Next steps",id:"next-steps",level:2}];function c(e){const n={a:"a",br:"br",code:"code",em:"em",h1:"h1",h2:"h2",h3:"h3",header:"header",img:"img",li:"li",ol:"ol",p:"p",strong:"strong",ul:"ul",...(0,t.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.header,{children:(0,i.jsx)(n.h1,{id:"overview",children:"Overview"})}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Feature-Sliced Design"})," (FSD) is an architectural methodology for scaffolding front-end applications. Simply put, it's a compilation of rules and conventions on organizing code. The main purpose of this methodology is to make the project more understandable and stable in the face of ever-changing business requirements."]}),"\n",(0,i.jsxs)(n.p,{children:["Apart from a set of conventions, FSD is also a toolchain. We have a ",(0,i.jsx)(n.a,{href:"https://github.com/feature-sliced/steiger",children:"linter"})," to check your project's architecture, ",(0,i.jsx)(n.a,{href:"https://github.com/feature-sliced/awesome?tab=readme-ov-file#tools",children:"folder generators"})," through a CLI or IDEs, as well as a rich library of ",(0,i.jsx)(n.a,{href:"/examples",children:"examples"}),"."]}),"\n",(0,i.jsx)(n.h2,{id:"is-it-right-for-me",children:"Is it right for me?"}),"\n",(0,i.jsx)(n.p,{children:"FSD can be implemented in projects and teams of any size. It is right for your project if:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["You're doing ",(0,i.jsx)(n.strong,{children:"frontend"})," (UI on web, mobile, desktop, etc.)"]}),"\n",(0,i.jsxs)(n.li,{children:["You're building an ",(0,i.jsx)(n.strong,{children:"application"}),", not a library"]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"And that's it! There are no restrictions on what programming language, UI framework, or state manager you use. You can also adopt FSD incrementally, use it in monorepos, and scale to great lengths by breaking your app into packages and implementing FSD individually within them."}),"\n",(0,i.jsxs)(n.p,{children:["If you already have an architecture and you're considering a switch to FSD, make sure that the current architecture is ",(0,i.jsx)(n.strong,{children:"causing trouble"})," in your team. For example, if your project has grown too large and inter-connected to efficiently implement new features, or if you're expecting a lot of new members to join the team. If the current architecture works, maybe it's not worth changing. But if you do decide to migrate, see the ",(0,i.jsx)(n.a,{href:"/docs/guides/migration/from-custom",children:"Migration"})," section for guidance."]}),"\n",(0,i.jsx)(n.h2,{id:"basic-example",children:"Basic example"}),"\n",(0,i.jsx)(n.p,{children:"Here is a simple project that implements FSD:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"\ud83d\udcc1 app"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"\ud83d\udcc1 pages"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"\ud83d\udcc1 shared"})}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["These top-level folders are called ",(0,i.jsx)(n.em,{children:"layers"}),". Let's look deeper:"]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"\ud83d\udcc2 app"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"\ud83d\udcc1 routes"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"\ud83d\udcc1 analytics"})}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"\ud83d\udcc2 pages"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"\ud83d\udcc1 home"})}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"\ud83d\udcc2 article-reader"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"\ud83d\udcc1 ui"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"\ud83d\udcc1 api"})}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"\ud83d\udcc1 settings"})}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"\ud83d\udcc2 shared"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"\ud83d\udcc1 ui"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"\ud83d\udcc1 api"})}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["Folders inside ",(0,i.jsx)(n.code,{children:"\ud83d\udcc2 pages"})," are called ",(0,i.jsx)(n.em,{children:"slices"}),". They divide the layer by domain (in this case, by pages)."]}),"\n",(0,i.jsxs)(n.p,{children:["Folders inside ",(0,i.jsx)(n.code,{children:"\ud83d\udcc2 app"}),", ",(0,i.jsx)(n.code,{children:"\ud83d\udcc2 shared"}),", and ",(0,i.jsx)(n.code,{children:"\ud83d\udcc2 pages/article-reader"})," are called ",(0,i.jsx)(n.em,{children:"segments"}),", and they divide slices (or layers) by technical purpose, i.e. what the code is for."]}),"\n",(0,i.jsx)(n.h2,{id:"concepts",children:"Concepts"}),"\n",(0,i.jsx)(n.p,{children:"Layers, slices, and segments form a hierarchy like this:"}),"\n",(0,i.jsxs)("figure",{children:[(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"Hierarchy of FSD concepts, described below",src:s(9273).A+"",width:"1355",height:"754"})}),(0,i.jsxs)("figcaption",{style:{fontStyle:"italic",fontSize:"0.9em"},children:[(0,i.jsx)("p",{children:'Pictured above: three pillars, labeled left to right as "Layers", "Slices", and "Segments" respectively.'}),(0,i.jsx)("p",{children:'The "Layers" pillar contains seven divisions arranged top to bottom and labeled "app", "processes", "pages", "widgets", "features", "entities", and "shared". The "processes" division is crossed out. The "entities" division is connected to the second pillar "Slices" in a way that conveys that the second pillar is the content of "entities".'}),(0,i.jsx)("p",{children:'The "Slices" pillar contains three divisions arranged top to bottom and labeled "user", "post", and "comment". The "post" division is connected to the third pillar "Segments" in the same way such that it\'s the content of "post".'}),(0,i.jsx)("p",{children:'The "Segments" pillar contains three divisions, arranged top to bottom and labeled "ui", "model", and "api".'})]})]}),"\n",(0,i.jsx)(n.h3,{id:"layers",children:"Layers"}),"\n",(0,i.jsx)(n.p,{children:"Layers are standardized across all FSD projects. You don't have to use all of the layers, but their names are important. There are currently seven of them (from top to bottom):"}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsx)(n.li,{children:"App* \u2014 everything that makes the app run \u2014 routing, entrypoints, global styles, providers."}),"\n",(0,i.jsx)(n.li,{children:"Processes (deprecated) \u2014 complex inter-page scenarios."}),"\n",(0,i.jsx)(n.li,{children:"Pages \u2014 full pages or large parts of a page in nested routing."}),"\n",(0,i.jsx)(n.li,{children:"Widgets \u2014 large self-contained chunks of functionality or UI, usually delivering an entire use case."}),"\n",(0,i.jsxs)(n.li,{children:["Features \u2014 ",(0,i.jsx)(n.em,{children:"reused"})," implementations of entire product features, i.e. actions that bring business value to the user."]}),"\n",(0,i.jsxs)(n.li,{children:["Entities \u2014 business entities that the project works with, like ",(0,i.jsx)(n.code,{children:"user"})," or ",(0,i.jsx)(n.code,{children:"product"}),"."]}),"\n",(0,i.jsx)(n.li,{children:"Shared* \u2014 reusable functionality, especially when it's detached from the specifics of the project/business, though not necessarily."}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.em,{children:"* \u2014 these layers, App and Shared, unlike the other layers, don't have slices, and are made up of segments directly."})}),"\n",(0,i.jsx)(n.p,{children:"The trick with layers is that modules on one layer can only know about and import from modules from the layers strictly below."}),"\n",(0,i.jsx)(n.h3,{id:"slices",children:"Slices"}),"\n",(0,i.jsx)(n.p,{children:"Next up are slices, which partition the code by business domain. You're free to choose any names for them, and create as many as you wish. Slices make your codebase easier to navigate by keeping logically related modules close together."}),"\n",(0,i.jsx)(n.p,{children:"Slices cannot use other slices on the same layer, and that helps with high cohesion and low coupling."}),"\n",(0,i.jsx)(n.h3,{id:"segments",children:"Segments"}),"\n",(0,i.jsx)(n.p,{children:"Slices, as well as layers App and Shared, consist of segments, and segments group your code by its purpose. Segment names are not constrained by the standard, but there are several conventional names for the most common purposes:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"ui"})," \u2014 everything related to UI display: UI components, date formatters, styles, etc."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"api"})," \u2014 backend interactions: request functions, data types, mappers, etc."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"model"})," \u2014 the data model: schemas, interfaces, stores, and business logic."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"lib"})," \u2014 library code that other modules on this slice need."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"config"})," \u2014 configuration files and feature flags."]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"Usually these segments are enough for most layers, you would only create your own segments in Shared or App, but this is not a rule."}),"\n",(0,i.jsx)(n.h2,{id:"advantages",children:"Advantages"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Uniformity"}),(0,i.jsx)(n.br,{}),"\n","Since the structure is standardized, projects become more uniform, which makes onboarding new members easier for the team."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Stability in face of changes and refactoring"}),(0,i.jsx)(n.br,{}),"\n","A module on one layer cannot use other modules on the same layer, or the layers above.",(0,i.jsx)(n.br,{}),"\n","This allows you to make isolated modifications without unforeseen consequences to the rest of the app."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Controlled reuse of logic"}),(0,i.jsx)(n.br,{}),"\n","Depending on the layer, you can make code very reusable or very local.",(0,i.jsx)(n.br,{}),"\n","This keeps a balance between following the ",(0,i.jsx)(n.strong,{children:"DRY"})," principle and practicality."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Orientation to business and users needs"}),(0,i.jsx)(n.br,{}),"\n","The app is split into business domains and usage of the business language is encouraged in naming, so that you can do useful product work without fully understanding all other unrelated parts of the project."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"incremental-adoption",children:"Incremental adoption"}),"\n",(0,i.jsx)(n.p,{children:"If you have an existing codebase that you want to migrate to FSD, we suggest the following strategy. We found it useful in our own migration experience."}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.p,{children:"Start by slowly shaping up the App and Shared layers module-by-module to create a foundation."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.p,{children:"Distribute all of the existing UI across Widgets and Pages using broad strokes, even if they have dependencies that violate the rules of FSD."}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.p,{children:"Start gradually resolving import violations and also extracting Entities and possibly even Features."}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"It's advised to refrain from adding new large entities while refactoring or refactoring only certain parts of the project."}),"\n",(0,i.jsx)(n.h2,{id:"next-steps",children:"Next steps"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Want to get a good grasp of how to think in FSD?"})," Check out the ",(0,i.jsx)(n.a,{href:"/docs/get-started/tutorial",children:"Tutorial"}),"."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Prefer to learn from examples?"})," We have a lot in the ",(0,i.jsx)(n.a,{href:"/examples",children:"Examples"})," section."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Have questions?"})," Drop by our ",(0,i.jsx)(n.a,{href:"https://t.me/feature_sliced",children:"Telegram chat"})," and get help from the community."]}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(c,{...e})}):c(e)}},9273:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/visual_schema-e826067f573946613dcdc76e3f585082.jpg"},1100:(e,n,s)=>{s.d(n,{R:()=>o,x:()=>a});var i=s(758);const t={},r=i.createContext(t);function o(e){const n=i.useContext(r);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:o(e.components),i.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/uz/assets/js/0a4ee302.d33b4f03.js b/uz/assets/js/0a4ee302.dc42dfbb.js similarity index 99% rename from uz/assets/js/0a4ee302.d33b4f03.js rename to uz/assets/js/0a4ee302.dc42dfbb.js index d973b5f837..4b10d1f077 100644 --- a/uz/assets/js/0a4ee302.d33b4f03.js +++ b/uz/assets/js/0a4ee302.dc42dfbb.js @@ -1 +1 @@ -"use strict";(self.webpackChunk_feature_sliced_documentation=self.webpackChunk_feature_sliced_documentation||[]).push([[5977],{1540:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>a,contentTitle:()=>r,default:()=>u,frontMatter:()=>o,metadata:()=>c,toc:()=>d});var s=t(6070),i=t(1100);const o={sidebar_position:10},r="Usage with NuxtJS",c={id:"guides/tech/with-nuxtjs",title:"Usage with NuxtJS",description:"It is possible to implement FSD in a NuxtJS project, but conflicts arise due to the differences between NuxtJS project structure requirements and FSD principles:",source:"@site/i18n/en/docusaurus-plugin-content-docs/current/guides/tech/with-nuxtjs.mdx",sourceDirName:"guides/tech",slug:"/guides/tech/with-nuxtjs",permalink:"/uz/docs/guides/tech/with-nuxtjs",draft:!1,unlisted:!1,editUrl:"https://github.com/feature-sliced/documentation/edit/master/i18n/en/docusaurus-plugin-content-docs/current/guides/tech/with-nuxtjs.mdx",tags:[],version:"current",lastUpdatedAt:1727607766e3,sidebarPosition:10,frontMatter:{sidebar_position:10},sidebar:"guidesSidebar",previous:{title:"Usage with NextJS",permalink:"/uz/docs/guides/tech/with-nextjs"},next:{title:"Usage with React Query",permalink:"/uz/docs/guides/tech/with-react-query"}},a={},d=[{value:"Adding an alias for the src directory",id:"adding-an-alias-for-the-src-directory",level:2},{value:"Choose how to configure the router",id:"choose-how-to-configure-the-router",level:2},{value:"Routing using config",id:"routing-using-config",level:3},{value:"File Routing",id:"file-routing",level:3},{value:"What to do with layouts?",id:"what-to-do-with-layouts",level:2},{value:"See also",id:"see-also",level:2}];function l(e){const n={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",p:"p",pre:"pre",ul:"ul",...(0,i.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.header,{children:(0,s.jsx)(n.h1,{id:"usage-with-nuxtjs",children:"Usage with NuxtJS"})}),"\n",(0,s.jsx)(n.p,{children:"It is possible to implement FSD in a NuxtJS project, but conflicts arise due to the differences between NuxtJS project structure requirements and FSD principles:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["Initially, NuxtJS offers a project file structure without a ",(0,s.jsx)(n.code,{children:"src"})," folder, i.e. in the root of the project."]}),"\n",(0,s.jsxs)(n.li,{children:["The file routing is in the ",(0,s.jsx)(n.code,{children:"pages"})," folder, while in FSD this folder is reserved for the flat slice structure."]}),"\n"]}),"\n",(0,s.jsxs)(n.h2,{id:"adding-an-alias-for-the-src-directory",children:["Adding an alias for the ",(0,s.jsx)(n.code,{children:"src"})," directory"]}),"\n",(0,s.jsxs)(n.p,{children:["Add an ",(0,s.jsx)(n.code,{children:"alias"})," object to your config:"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-ts",metastring:'title="nuxt.config.ts"',children:"export default defineNuxtConfig({\n devtools: { enabled: true }, // Not FSD related, enabled at project startup\n alias: {\n \"@\": '../src'\n },\n})\n"})}),"\n",(0,s.jsx)(n.h2,{id:"choose-how-to-configure-the-router",children:"Choose how to configure the router"}),"\n",(0,s.jsxs)(n.p,{children:["In NuxtJS, there are two ways to customize the routing - using a config and using a file structure.\nIn the case of file-based routing, you will create index.vue files in folders inside the app/routes directory, and in the case of configure, you will configure the routers in the ",(0,s.jsx)(n.code,{children:"router.options.ts"})," file."]}),"\n",(0,s.jsx)(n.h3,{id:"routing-using-config",children:"Routing using config"}),"\n",(0,s.jsxs)(n.p,{children:["In the ",(0,s.jsx)(n.code,{children:"app"})," layer, create a ",(0,s.jsx)(n.code,{children:"router.options.ts"})," file, and export a config object from it:"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-ts",metastring:'title="app/router.options.ts"',children:"import type { RouterConfig } from '@nuxt/schema';\n\nexport default {\n routes: (_routes) => [],\n};\n\n"})}),"\n",(0,s.jsxs)(n.p,{children:["To add a ",(0,s.jsx)(n.code,{children:"Home"})," page to your project, you need to do the following steps:"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["Add a page slice inside the ",(0,s.jsx)(n.code,{children:"pages"})," layer"]}),"\n",(0,s.jsxs)(n.li,{children:["Add the appropriate route to the ",(0,s.jsx)(n.code,{children:"app/router.config.ts"})," config"]}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["To create a page slice, let's use the ",(0,s.jsx)(n.a,{href:"https://github.com/feature-sliced/cli",children:"CLI"}),":"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-shell",children:"fsd pages home\n"})}),"\n",(0,s.jsxs)(n.p,{children:["Create a ",(0,s.jsx)(n.code,{children:"home-page.vue"})," file inside the ui segment, access it using the Public API"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-ts",metastring:'title="src/pages/home/index.ts"',children:"export { default as HomePage } from './ui/home-page';\n"})}),"\n",(0,s.jsx)(n.p,{children:"Thus, the file structure will look like this:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-sh",children:"|\u2500\u2500 src\n\u2502 \u251c\u2500\u2500 app\n\u2502 \u2502 \u251c\u2500\u2500 router.config.ts\n\u2502 \u251c\u2500\u2500 pages\n\u2502 \u2502 \u251c\u2500\u2500 home\n\u2502 \u2502 \u2502 \u251c\u2500\u2500 ui\n\u2502 \u2502 \u2502 \u2502 \u251c\u2500\u2500 home-page.vue\n\u2502 \u2502 \u2502 \u251c\u2500\u2500 index.ts\n"})}),"\n",(0,s.jsx)(n.p,{children:"Finally, let's add a root to the config:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-ts",metastring:'title="app/router.config.ts"',children:"import type { RouterConfig } from '@nuxt/schema'\n\nexport default {\n routes: (_routes) => [\n {\n name: 'home',\n path: '/',\n component: () => import('@/pages/home.vue').then(r => r.default || r)\n }\n ],\n}\n"})}),"\n",(0,s.jsx)(n.h3,{id:"file-routing",children:"File Routing"}),"\n",(0,s.jsxs)(n.p,{children:["First of all, create a ",(0,s.jsx)(n.code,{children:"src"})," directory in the root of your project, and create app and pages layers inside this directory and a routes folder inside the app layer.\nThus, your file structure should look like this:"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-sh",children:"\u251c\u2500\u2500 src\n\u2502 \u251c\u2500\u2500 app\n\u2502 \u2502 \u251c\u2500\u2500 routes\n\u2502 \u251c\u2500\u2500 pages # Pages folder, related to FSD\n"})}),"\n",(0,s.jsxs)(n.p,{children:["In order for NuxtJS to use the routes folder inside the ",(0,s.jsx)(n.code,{children:"app"})," layer for file routing, you need to modify ",(0,s.jsx)(n.code,{children:"nuxt.config.ts"})," as follows:"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-ts",metastring:'title="nuxt.config.ts"',children:"export default defineNuxtConfig({\n devtools: { enabled: true }, // Not FSD related, enabled at project startup\n alias: {\n \"@\": '../src'\n },\n dir: {\n pages: './src/app/routes'\n }\n})\n"})}),"\n",(0,s.jsxs)(n.p,{children:["Now, you can create routes for pages within ",(0,s.jsx)(n.code,{children:"app"})," and connect pages from ",(0,s.jsx)(n.code,{children:"pages"})," to them."]}),"\n",(0,s.jsxs)(n.p,{children:["For example, to add a ",(0,s.jsx)(n.code,{children:"Home"})," page to your project, you need to do the following steps:"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["Add a page slice inside the ",(0,s.jsx)(n.code,{children:"pages"})," layer"]}),"\n",(0,s.jsxs)(n.li,{children:["Add the corresponding root inside the ",(0,s.jsx)(n.code,{children:"app"})," layer"]}),"\n",(0,s.jsx)(n.li,{children:"Align the page from the slice with the root"}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["To create a page slice, let's use the ",(0,s.jsx)(n.a,{href:"https://github.com/feature-sliced/cli",children:"CLI"}),":"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-shell",children:"fsd pages home\n"})}),"\n",(0,s.jsxs)(n.p,{children:["Create a ",(0,s.jsx)(n.code,{children:"home-page.vue"})," file inside the ui segment, access it using the Public API"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-ts",metastring:'title="src/pages/home/index.ts"',children:"export { default as HomePage } from './ui/home-page';\n"})}),"\n",(0,s.jsxs)(n.p,{children:["Create a root for this page inside the ",(0,s.jsx)(n.code,{children:"app"})," layer:"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-sh",children:"\n\u251c\u2500\u2500 src\n\u2502 \u251c\u2500\u2500 app\n\u2502 \u2502 \u251c\u2500\u2500 routes\n\u2502 \u2502 \u2502 \u251c\u2500\u2500 index.vue\n\u2502 \u251c\u2500\u2500 pages\n\u2502 \u2502 \u251c\u2500\u2500 home\n\u2502 \u2502 \u2502 \u251c\u2500\u2500 ui\n\u2502 \u2502 \u2502 \u2502 \u251c\u2500\u2500 home-page.vue\n\u2502 \u2502 \u2502 \u251c\u2500\u2500 index.ts\n"})}),"\n",(0,s.jsxs)(n.p,{children:["Add your page component inside the ",(0,s.jsx)(n.code,{children:"index.vue"})," file:"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-html",metastring:'title="src/app/routes/index.vue"',children:" - + +

    🌎 FSD international community

    · 2 min. o'qish
    Anton Medvedev
    FSD core-team member
    post-cover
    diff --git a/uz/blog/archive.html b/uz/blog/archive.html index 0a9676142e..18a6cd0767 100644 --- a/uz/blog/archive.html +++ b/uz/blog/archive.html @@ -9,8 +9,8 @@ - - + + diff --git a/uz/blog/international-community.html b/uz/blog/international-community.html index 5425d751c1..0ac0f39573 100644 --- a/uz/blog/international-community.html +++ b/uz/blog/international-community.html @@ -9,8 +9,8 @@ - - + +

    🌎 FSD international community

    · 2 min. o'qish
    Anton Medvedev
    FSD core-team member
    post-cover
    diff --git a/uz/blog/rebranding-stable.html b/uz/blog/rebranding-stable.html index 8013f0d77b..5bcde81daa 100644 --- a/uz/blog/rebranding-stable.html +++ b/uz/blog/rebranding-stable.html @@ -9,8 +9,8 @@ - - + +

    💥 FSD rebranding!

    · 2 min. o'qish
    Ilya Azin
    FSD core-team member
    logo-primary
    diff --git a/uz/blog/tags.html b/uz/blog/tags.html index 3ef13091c7..adf8012c97 100644 --- a/uz/blog/tags.html +++ b/uz/blog/tags.html @@ -9,8 +9,8 @@ - - + + diff --git a/uz/blog/tags/brand.html b/uz/blog/tags/brand.html index 73be3d6117..253fefce29 100644 --- a/uz/blog/tags/brand.html +++ b/uz/blog/tags/brand.html @@ -9,8 +9,8 @@ - - + +

    Bir post "brand" bilan

    Hamma teglarni ko'rish

    💥 FSD rebranding!

    · 2 min. o'qish
    Ilya Azin
    FSD core-team member
    logo-primary
    diff --git a/uz/blog/tags/community.html b/uz/blog/tags/community.html index b12b30372a..ef4cbf61ec 100644 --- a/uz/blog/tags/community.html +++ b/uz/blog/tags/community.html @@ -9,8 +9,8 @@ - - + +

    Bir post "community" bilan

    Hamma teglarni ko'rish

    🌎 FSD international community

    · 2 min. o'qish
    Anton Medvedev
    FSD core-team member
    post-cover
    diff --git a/uz/blog/tags/discord.html b/uz/blog/tags/discord.html index 2bd153c2b3..9106ff096b 100644 --- a/uz/blog/tags/discord.html +++ b/uz/blog/tags/discord.html @@ -9,8 +9,8 @@ - - + +

    Bir post "discord" bilan

    Hamma teglarni ko'rish

    🌎 FSD international community

    · 2 min. o'qish
    Anton Medvedev
    FSD core-team member
    post-cover
    diff --git a/uz/blog/tags/promo.html b/uz/blog/tags/promo.html index bff85b1954..26fbeef7b3 100644 --- a/uz/blog/tags/promo.html +++ b/uz/blog/tags/promo.html @@ -9,8 +9,8 @@ - - + +

    2 ta post "promo" bilan

    Hamma teglarni ko'rish

    🌎 FSD international community

    · 2 min. o'qish
    Anton Medvedev
    FSD core-team member
    post-cover
    diff --git a/uz/community.html b/uz/community.html index 288e1fcede..ab9df40698 100644 --- a/uz/community.html +++ b/uz/community.html @@ -9,8 +9,8 @@ - - + + +
    Contributing

    HowTo, Workflow, Support

    \ No newline at end of file diff --git a/uz/community/team.html b/uz/community/team.html index 8dc3731c2f..bc2ed62688 100644 --- a/uz/community/team.html +++ b/uz/community/team.html @@ -9,8 +9,8 @@ - - + + +

    Companies

    \ No newline at end of file diff --git a/uz/docs.html b/uz/docs.html index 3e527d554d..34a4d7d120 100644 --- a/uz/docs.html +++ b/uz/docs.html @@ -9,8 +9,8 @@ - - + + +
    🛠 Misollar

    Feature-Sliced Design da qurilgan loyihalar

    \ No newline at end of file diff --git a/uz/docs/about.html b/uz/docs/about.html index f69ee1ed11..62efc12183 100644 --- a/uz/docs/about.html +++ b/uz/docs/about.html @@ -9,8 +9,8 @@ - - + + +
    Promote

    About promotion and integration FSD at companies

    Integration • Promoting in team • Promoting in company
    \ No newline at end of file diff --git a/uz/docs/about/alternatives.html b/uz/docs/about/alternatives.html index a3112b353c..66adeb9ebe 100644 --- a/uz/docs/about/alternatives.html +++ b/uz/docs/about/alternatives.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/uz/docs/about/mission.html b/uz/docs/about/mission.html index b9ba1577c5..5d555a155a 100644 --- a/uz/docs/about/mission.html +++ b/uz/docs/about/mission.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/uz/docs/about/motivation.html b/uz/docs/about/motivation.html index e1b9cb0430..99f1366569 100644 --- a/uz/docs/about/motivation.html +++ b/uz/docs/about/motivation.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/uz/docs/about/promote/for-company.html b/uz/docs/about/promote/for-company.html index 1a2845369b..9d57e1ffda 100644 --- a/uz/docs/about/promote/for-company.html +++ b/uz/docs/about/promote/for-company.html @@ -9,8 +9,8 @@ - - + + +

    How to prepare and justify a plan to move to the methodology?

    \ No newline at end of file diff --git a/uz/docs/about/promote/for-team.html b/uz/docs/about/promote/for-team.html index bbfa6e150e..838dd4c7bc 100644 --- a/uz/docs/about/promote/for-team.html +++ b/uz/docs/about/promote/for-team.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/uz/docs/about/promote/integration.html b/uz/docs/about/promote/integration.html index 2c6eeffc86..8e9e0ac8dd 100644 --- a/uz/docs/about/promote/integration.html +++ b/uz/docs/about/promote/integration.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/uz/docs/about/promote/partial-application.html b/uz/docs/about/promote/partial-application.html index 468d2a7974..72a0f51853 100644 --- a/uz/docs/about/promote/partial-application.html +++ b/uz/docs/about/promote/partial-application.html @@ -9,14 +9,14 @@ - - + +
    + \ No newline at end of file diff --git a/uz/docs/about/understanding/abstractions.html b/uz/docs/about/understanding/abstractions.html index b77bbb1f2d..7eba7a6bc3 100644 --- a/uz/docs/about/understanding/abstractions.html +++ b/uz/docs/about/understanding/abstractions.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/uz/docs/about/understanding/architecture.html b/uz/docs/about/understanding/architecture.html index 0407083005..771de1a4b0 100644 --- a/uz/docs/about/understanding/architecture.html +++ b/uz/docs/about/understanding/architecture.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/uz/docs/about/understanding/knowledge-types.html b/uz/docs/about/understanding/knowledge-types.html index 5a3bf1ba4d..4386403e3a 100644 --- a/uz/docs/about/understanding/knowledge-types.html +++ b/uz/docs/about/understanding/knowledge-types.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/uz/docs/about/understanding/naming.html b/uz/docs/about/understanding/naming.html index f52fdaf4ba..1464059831 100644 --- a/uz/docs/about/understanding/naming.html +++ b/uz/docs/about/understanding/naming.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/uz/docs/about/understanding/needs-driven.html b/uz/docs/about/understanding/needs-driven.html index 9f66cb9ae5..97645bdb94 100644 --- a/uz/docs/about/understanding/needs-driven.html +++ b/uz/docs/about/understanding/needs-driven.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/uz/docs/about/understanding/signals.html b/uz/docs/about/understanding/signals.html index e5ffa4ee7e..1e00ce38d7 100644 --- a/uz/docs/about/understanding/signals.html +++ b/uz/docs/about/understanding/signals.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/uz/docs/branding.html b/uz/docs/branding.html index 8cf37eda67..ba40360787 100644 --- a/uz/docs/branding.html +++ b/uz/docs/branding.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/uz/docs/get-started.html b/uz/docs/get-started.html index 0dadca62d0..58ddeeb035 100644 --- a/uz/docs/get-started.html +++ b/uz/docs/get-started.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/uz/docs/get-started/cheatsheet.html b/uz/docs/get-started/cheatsheet.html index a0250c5204..fc9cea7bd7 100644 --- a/uz/docs/get-started/cheatsheet.html +++ b/uz/docs/get-started/cheatsheet.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/uz/docs/get-started/faq.html b/uz/docs/get-started/faq.html index 277944a395..3a9f58bdef 100644 --- a/uz/docs/get-started/faq.html +++ b/uz/docs/get-started/faq.html @@ -9,8 +9,8 @@ - - + + +

    Answered here

    \ No newline at end of file diff --git a/uz/docs/get-started/overview.html b/uz/docs/get-started/overview.html index f89fd6d634..af528a10f5 100644 --- a/uz/docs/get-started/overview.html +++ b/uz/docs/get-started/overview.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/uz/docs/get-started/tutorial.html b/uz/docs/get-started/tutorial.html index 7b6c5b371c..238f5ee89b 100644 --- a/uz/docs/get-started/tutorial.html +++ b/uz/docs/get-started/tutorial.html @@ -9,8 +9,8 @@ - - + +

    Tutorial

    @@ -272,6 +272,6 @@

    Article edito
    app/routes/editor._index.tsx, app/routes/editor.$slug.tsx (same content)
    import { ArticleEditPage } from "pages/article-edit";

    export { loader, action } from "pages/article-edit";

    export default ArticleEditPage;

    We’re done now! Log in and try creating a new article. Or “forget” to write the article and see the validation kick in.

    The Conduit article editor, with the title field saying “New article” and the rest of the fields empty. Above the form there are two errors: “Describe what this article is about” and “Write the article itself”.

    The Conduit article editor, with the title field saying “New article” and the rest of the fields empty. Above the form there are two errors: “Describe what this article is about” and “Write the article itself”.
    -

    The profile and settings pages are very similar to the article reader and editor, they are left as an exercise for the reader, that’s you :)

    +

    The profile and settings pages are very similar to the article reader and editor, they are left as an exercise for the reader, that’s you :)

    \ No newline at end of file diff --git a/uz/docs/guides.html b/uz/docs/guides.html index 21ff6cec78..cfea2b70c9 100644 --- a/uz/docs/guides.html +++ b/uz/docs/guides.html @@ -9,8 +9,8 @@ - - + + +
    Code Issues (Smells)

    General architecture issues for legacy code

    Desegmented • Routing • Cross-imports
    \ No newline at end of file diff --git a/uz/docs/guides/examples.html b/uz/docs/guides/examples.html index 8133e8b9e2..90c9a9b943 100644 --- a/uz/docs/guides/examples.html +++ b/uz/docs/guides/examples.html @@ -9,8 +9,8 @@ - - + + +
    Page layouts

    Main cases with layouts

    Where to store them • Using widgets in layouts
    \ No newline at end of file diff --git a/uz/docs/guides/examples/auth.html b/uz/docs/guides/examples/auth.html index fcd7f70ff6..436f033a36 100644 --- a/uz/docs/guides/examples/auth.html +++ b/uz/docs/guides/examples/auth.html @@ -9,8 +9,8 @@ - - + +

    Authentication

    @@ -164,6 +164,6 @@

    Automatic logout

    -

    Don't forget to build failsafes for when a request to log out fails, or a request to refresh a login token fails. In both of these cases, you should clear the token store. If you keep your token in Entities, this code can be placed in the model segment as it is pure business logic. If you keep your token in Shared, placing this logic in shared/api might bloat the segment and dilute its purpose. If you're noticing that your API segment contains two several unrelated things, consider splitting out the token management logic into another segment, for example, shared/auth.

    +

    Don't forget to build failsafes for when a request to log out fails, or a request to refresh a login token fails. In both of these cases, you should clear the token store. If you keep your token in Entities, this code can be placed in the model segment as it is pure business logic. If you keep your token in Shared, placing this logic in shared/api might bloat the segment and dilute its purpose. If you're noticing that your API segment contains two several unrelated things, consider splitting out the token management logic into another segment, for example, shared/auth.

    \ No newline at end of file diff --git a/uz/docs/guides/examples/autocompleted.html b/uz/docs/guides/examples/autocompleted.html index dc3856f4b9..3aa7ae471e 100644 --- a/uz/docs/guides/examples/autocompleted.html +++ b/uz/docs/guides/examples/autocompleted.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/uz/docs/guides/examples/browser-api.html b/uz/docs/guides/examples/browser-api.html index a208847ce2..9b480fb228 100644 --- a/uz/docs/guides/examples/browser-api.html +++ b/uz/docs/guides/examples/browser-api.html @@ -9,8 +9,8 @@ - - + +
    Unlisted page
    This page is unlisted. Search engines will not index it, and only users having a direct link can access it.

    Browser API

    @@ -18,6 +18,6 @@

    About working with the Browser API: localStorage, audio Api, bluetooth API, etc.

    You can ask about the idea in more detail @alex_novi

    -
    + \ No newline at end of file diff --git a/uz/docs/guides/examples/cms.html b/uz/docs/guides/examples/cms.html index 05abf9628a..85b8da369b 100644 --- a/uz/docs/guides/examples/cms.html +++ b/uz/docs/guides/examples/cms.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/uz/docs/guides/examples/feedback.html b/uz/docs/guides/examples/feedback.html index ba49c1d77f..4796eccc39 100644 --- a/uz/docs/guides/examples/feedback.html +++ b/uz/docs/guides/examples/feedback.html @@ -9,14 +9,14 @@ - - + +
    Unlisted page
    This page is unlisted. Search engines will not index it, and only users having a direct link can access it.
    + \ No newline at end of file diff --git a/uz/docs/guides/examples/i18n.html b/uz/docs/guides/examples/i18n.html index 05bcd55281..c031d9280d 100644 --- a/uz/docs/guides/examples/i18n.html +++ b/uz/docs/guides/examples/i18n.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/uz/docs/guides/examples/metric.html b/uz/docs/guides/examples/metric.html index fcb3f04438..981b31b96a 100644 --- a/uz/docs/guides/examples/metric.html +++ b/uz/docs/guides/examples/metric.html @@ -9,14 +9,14 @@ - - + +
    Unlisted page
    This page is unlisted. Search engines will not index it, and only users having a direct link can access it.
    + \ No newline at end of file diff --git a/uz/docs/guides/examples/monorepo.html b/uz/docs/guides/examples/monorepo.html index aea055dbe7..6d2c36688c 100644 --- a/uz/docs/guides/examples/monorepo.html +++ b/uz/docs/guides/examples/monorepo.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/uz/docs/guides/examples/page-layout.html b/uz/docs/guides/examples/page-layout.html index 64e49b7c69..286af78803 100644 --- a/uz/docs/guides/examples/page-layout.html +++ b/uz/docs/guides/examples/page-layout.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/uz/docs/guides/examples/platforms.html b/uz/docs/guides/examples/platforms.html index a56d9fd6fb..63ce82b46b 100644 --- a/uz/docs/guides/examples/platforms.html +++ b/uz/docs/guides/examples/platforms.html @@ -9,14 +9,14 @@ - - + +
    Unlisted page
    This page is unlisted. Search engines will not index it, and only users having a direct link can access it.
    + \ No newline at end of file diff --git a/uz/docs/guides/examples/ssr.html b/uz/docs/guides/examples/ssr.html index adfb570237..ac8715cefc 100644 --- a/uz/docs/guides/examples/ssr.html +++ b/uz/docs/guides/examples/ssr.html @@ -9,14 +9,14 @@ - - + +
    Unlisted page
    This page is unlisted. Search engines will not index it, and only users having a direct link can access it.
    + \ No newline at end of file diff --git a/uz/docs/guides/examples/theme.html b/uz/docs/guides/examples/theme.html index 08bd686c07..568681ce66 100644 --- a/uz/docs/guides/examples/theme.html +++ b/uz/docs/guides/examples/theme.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/uz/docs/guides/examples/types.html b/uz/docs/guides/examples/types.html index ff6d53a2d0..e1f618481e 100644 --- a/uz/docs/guides/examples/types.html +++ b/uz/docs/guides/examples/types.html @@ -9,8 +9,8 @@ - - + +

    Types

    @@ -142,6 +142,6 @@

    shared/lib/untyped-packages/use-react-screenshot.d.ts
    // This library doesn't have typings, and we didn't want to bother writing our own.
    declare module "use-react-screenshot";

    Auto-generation of types

    -

    It's common to generate types from external sources, for example, generating backend types from an OpenAPI schema. In this case, create a dedicated place in your codebase for these types, like shared/api/openapi. Ideally, you should also include a README in that folder that describes what these files are, how to regenerate them, etc.

    +

    It's common to generate types from external sources, for example, generating backend types from an OpenAPI schema. In this case, create a dedicated place in your codebase for these types, like shared/api/openapi. Ideally, you should also include a README in that folder that describes what these files are, how to regenerate them, etc.

    \ No newline at end of file diff --git a/uz/docs/guides/examples/white-labels.html b/uz/docs/guides/examples/white-labels.html index 767b150cd6..5187ed333a 100644 --- a/uz/docs/guides/examples/white-labels.html +++ b/uz/docs/guides/examples/white-labels.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/uz/docs/guides/issues/cross-imports.html b/uz/docs/guides/issues/cross-imports.html index c6a011aa50..ad8818bbcf 100644 --- a/uz/docs/guides/issues/cross-imports.html +++ b/uz/docs/guides/issues/cross-imports.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/uz/docs/guides/issues/desegmented.html b/uz/docs/guides/issues/desegmented.html index 9ffb11f749..e8ba81a015 100644 --- a/uz/docs/guides/issues/desegmented.html +++ b/uz/docs/guides/issues/desegmented.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/uz/docs/guides/issues/routes.html b/uz/docs/guides/issues/routes.html index e01918867b..a564d844d5 100644 --- a/uz/docs/guides/issues/routes.html +++ b/uz/docs/guides/issues/routes.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/uz/docs/guides/migration/from-custom.html b/uz/docs/guides/migration/from-custom.html index 4fee215816..eadbd62466 100644 --- a/uz/docs/guides/migration/from-custom.html +++ b/uz/docs/guides/migration/from-custom.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/uz/docs/guides/migration/from-v1.html b/uz/docs/guides/migration/from-v1.html index 57fe35329e..d4e543b220 100644 --- a/uz/docs/guides/migration/from-v1.html +++ b/uz/docs/guides/migration/from-v1.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/uz/docs/guides/tech/with-nextjs.html b/uz/docs/guides/tech/with-nextjs.html index a181d0dbc6..56441aab80 100644 --- a/uz/docs/guides/tech/with-nextjs.html +++ b/uz/docs/guides/tech/with-nextjs.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/uz/docs/guides/tech/with-nuxtjs.html b/uz/docs/guides/tech/with-nuxtjs.html index 887d857eed..5b68b6a834 100644 --- a/uz/docs/guides/tech/with-nuxtjs.html +++ b/uz/docs/guides/tech/with-nuxtjs.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/uz/docs/guides/tech/with-react-query.html b/uz/docs/guides/tech/with-react-query.html index e3634534b0..610384e796 100644 --- a/uz/docs/guides/tech/with-react-query.html +++ b/uz/docs/guides/tech/with-react-query.html @@ -9,8 +9,8 @@ - - + +
    + \ No newline at end of file diff --git a/uz/docs/guides/tech/with-sveltekit.html b/uz/docs/guides/tech/with-sveltekit.html index ffe3af458f..e3d1793517 100644 --- a/uz/docs/guides/tech/with-sveltekit.html +++ b/uz/docs/guides/tech/with-sveltekit.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/uz/docs/reference.html b/uz/docs/reference.html index 6293cb2fcb..2a68de6275 100644 --- a/uz/docs/reference.html +++ b/uz/docs/reference.html @@ -9,8 +9,8 @@ - - + + +
    Ommaviy API

    Kengaytiriladigan va integratsiyalashuvi oson modullarni loyihalash amaliyoti

    \ No newline at end of file diff --git a/uz/docs/reference/isolation.html b/uz/docs/reference/isolation.html index 774644943c..13d448f701 100644 --- a/uz/docs/reference/isolation.html +++ b/uz/docs/reference/isolation.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/uz/docs/reference/isolation/coupling-cohesion.html b/uz/docs/reference/isolation/coupling-cohesion.html index 18fb75247f..00b500b053 100644 --- a/uz/docs/reference/isolation/coupling-cohesion.html +++ b/uz/docs/reference/isolation/coupling-cohesion.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/uz/docs/reference/isolation/decouple-entities.html b/uz/docs/reference/isolation/decouple-entities.html index a31f235254..be71f30c66 100644 --- a/uz/docs/reference/isolation/decouple-entities.html +++ b/uz/docs/reference/isolation/decouple-entities.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/uz/docs/reference/layers.html b/uz/docs/reference/layers.html index a6d20232c0..220985c02a 100644 --- a/uz/docs/reference/layers.html +++ b/uz/docs/reference/layers.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/uz/docs/reference/public-api.html b/uz/docs/reference/public-api.html index 84563d8178..2294567863 100644 --- a/uz/docs/reference/public-api.html +++ b/uz/docs/reference/public-api.html @@ -9,8 +9,8 @@ - - + + + \ No newline at end of file diff --git a/uz/docs/reference/slices-segments.html b/uz/docs/reference/slices-segments.html index 6e8cb5e36e..0c1501c1bf 100644 --- a/uz/docs/reference/slices-segments.html +++ b/uz/docs/reference/slices-segments.html @@ -9,8 +9,8 @@ - - + +

    Slices and segments

    @@ -38,6 +38,6 @@

    SegmentsExamples

    -
    Layeruimodellibapi
    SharedUI kitUsually not usedUtility modules of several related files.
    If you need to use individual helpers, consider using utility libraries such as lodash-es.
    Rudimentary API client with additional features like authentication or caching.
    EntitiesSkeleton of a business entity with slots for interactive elementsData storage of instances of this entity as well as functions for manipulating that data.
    This segment is most fit for storing server-side data. If you use TanStack Query or other methods of implicit storage, you may choose to omit this segment.
    Functions for manipulating instances of this entity that aren't related to storageAPI methods using the API client from Shared for easy communication with the backend
    FeaturesInteractive elements that enable users to use this featureBusiness logic and infrastructure data storage, if needed (e.g., current app theme). This is the code that actually produces value for the user.Infrastructural code that helps to concisely describe the business logic in the model segmentAPI methods that represent this feature on the backend.
    May compose API methods from Entities.
    WidgetsComposition of Entities and Features into self-contained UI blocks.
    Can also contain error boundaries and loading states.
    Infrastructure data storage, if neededNon-business interactions (e.g., gestures) and other necessary code for the block to function on a pageUsually not used, but can contain data loaders in nested routing contexts (e.g., Remix)
    PagesComposition of Entities, Features and Widgets into complete pages.
    Can also contain error boundaries and loading states.
    Usually not usedNon-business interactions (e.g., gestures) and other necessary code for the page to deliver a complete user experienceData loaders for SSR-oriented frameworks
    +
    Layeruimodellibapi
    SharedUI kitUsually not usedUtility modules of several related files.
    If you need to use individual helpers, consider using utility libraries such as lodash-es.
    Rudimentary API client with additional features like authentication or caching.
    EntitiesSkeleton of a business entity with slots for interactive elementsData storage of instances of this entity as well as functions for manipulating that data.
    This segment is most fit for storing server-side data. If you use TanStack Query or other methods of implicit storage, you may choose to omit this segment.
    Functions for manipulating instances of this entity that aren't related to storageAPI methods using the API client from Shared for easy communication with the backend
    FeaturesInteractive elements that enable users to use this featureBusiness logic and infrastructure data storage, if needed (e.g., current app theme). This is the code that actually produces value for the user.Infrastructural code that helps to concisely describe the business logic in the model segmentAPI methods that represent this feature on the backend.
    May compose API methods from Entities.
    WidgetsComposition of Entities and Features into self-contained UI blocks.
    Can also contain error boundaries and loading states.
    Infrastructure data storage, if neededNon-business interactions (e.g., gestures) and other necessary code for the block to function on a pageUsually not used, but can contain data loaders in nested routing contexts (e.g., Remix)
    PagesComposition of Entities, Features and Widgets into complete pages.
    Can also contain error boundaries and loading states.
    Usually not usedNon-business interactions (e.g., gestures) and other necessary code for the page to deliver a complete user experienceData loaders for SSR-oriented frameworks
    \ No newline at end of file diff --git a/uz/examples.html b/uz/examples.html index 445be90be5..65f28b41a0 100644 --- a/uz/examples.html +++ b/uz/examples.html @@ -9,8 +9,8 @@ - - + +

    Namunalar

    FSD yordamida yaratilgan veb-saytlar ro'yxati

    v2
    Tiny Bunny Mini Game

    Mini-game "21 points" in the universe of the visual novel "Tiny Bunny".

    reactredux-toolkittypescript
    v2
    Roke.to Business

    Business branch of Roketo, a crypto streaming service which allows paying people by the second

    reacteffectortailwindcssturbo
    v2
    Roke.to dApp

    A crypto streaming service which allows paying people by the second

    reacteffectortailwindcss
    v2
    IT bookstore

    Catalog for viewing and searching information technology books

    reactredux toolkittypescriptreact routervitescss
    v2
    Moke Smoke (React Native example)

    An application that helps you quit smoking, published in the App Store and Google. Developed with React Native

    reactrtkpersisttypescriptfirebase
    v2
    Moonlogs (Effector + Forest example)

    Moonlogs is a business-event logging tool with a built-in user-friendly web interface for easy access to events

    foresteffectortailwindtypescriptgo
    v2
    Posts (React Query example)

    Example of using FSD with React Query (Mutation, Query, Pagination)

    reactreact-querytypescriptmaterial ui
    v2
    FalkChat

    FalkChat is your go-to destination for seamless and engaging online conversations.

    reactnextprettierclerktypescripttailwindshadcn/uizustand
    v2
    Polka

    The application is a bookshelf where you can add your favorite books. The application works with the Google Books API.

    vue3piniatypescriptvue-routereslintprettiervitevuetify
    v2
    Fake Cyber Web Store

    Example web store on Vue3

    vue3piniatypescriptfirebasevue-routereslintprettiervite
    v2
    VK Audiopad

    Chrome extension for VK Music

    reactvkuitypescript
    v2
    Сryptolight

    Cryptocurrency review site based on Feature-Sliced Design (Architectural methodology for frontend projects).

    reacteffectornextuitypescriptvite
    v2
    Money Flow

    A mobile application for tracking your expenses and incomes.

    capacitorjsreactreact-routerzustandvitetypescriptmobileandroidios
    v2
    E-Commerce

    This project is an online store built using React. It provides the ability to view the product catalog and product pages

    reactmobxwebpacktypescriptssr
    v2
    Todo app (Vue 3 + Pinia)

    QuickStart todo-app example for Vue developers with pinia store

    vue 3piniavitetypescript
    v2
    Conduit

    A social blogging site powered by Feature-Sliced Design architectural methodology.

    reactreact-routerreact-queryzustandvitetypescript
    v2
    Kinomore (React+Effector)

    Large project on the effector/fsd stack

    reacteffectortypescriptnextjsreact-testing-library
    v2
    Sudoku (React+Effector)

    A simple crossword of numbers on effector / fsd

    reacteffectortypescriptvitetailwindatomic-router
    v2
    Nukeapp (React+ReduxToolkit)

    Shopping app build on React/ReduxToolkit stack

    reactredux-toolkittypescriptvite
    v2
    Simple Greenhouse App (React+MobX)

    Simple demonstration of how FSD can be implemented with TypeScript, React.js, MobX and Firebase

    reactmobxtypescriptfirebasemuivite
    v2
    Todo App (ReactNative+Redux)

    QuickStart todo-app example for ReactNative(Expo) developers

    react-nativeexporedux
    v2
    Rastrr

    A simple and free graphic editor for novice artists

    svelte
    v2
    Draw, I'll Help

    A drawing app with shape correction powered by ML

    svelte
    v2
    Cast

    A podcast listening PWA with automated quality assurance

    svelte
    v2
    Loripsum generator

    Simple fish text generator

    reacteffector
    v2
    Projentry (demo)

    Assistant for your projects

    reactantd
    v2
    Todo App (Angular 13)

    QuickStart todo-app example for Angular developers

    angularrxjs
    v2
    Todo App (Vue 3)

    QuickStart todo-app example for Vue developers

    vuevuexantd
    v2
    Todo App (React+Redux)

    QuickStart todo-app example for React developers (Redux version)

    reactreduxantd
    v2
    Todo App (React+Effector)

    QuickStart todo-app example for React developers (Effector version)

    reacteffectorantd
    v2
    Github Client

    React & GraphQL powered github web-client

    reactgraphqlantd
    v2
    Cardbox

    The best solutions from developers in one place

    reacteffector
    diff --git a/uz/index.html b/uz/index.html index 47a3d15527..c89db31b48 100644 --- a/uz/index.html +++ b/uz/index.html @@ -9,8 +9,8 @@ - - + +

    Feature-Sliced Design

    Front-end loyihalari uchun arxitektura metodologiyasi

    Afzalliklari

    Aniq biznes mantiq

    Arxitekturani o'rganish oson, chunki u domen modullaridan iborat

    Moslashuvchanlik

    Arxitektura komponentlarini moslashuvchan tarzda almashtirish, yangi sharoitlarda qo'shish mumkin

    Texnik qarz

    Har bir modul nojo'ya ta'sirlarsiz mustaqil ravishda o'zgartirilishi/qayta yozilishi mumkin

    Aniq qayta foydalanish mumkinligi

    DRY va lokal moslashtirish o'rtasidagi muvozanatni saqlaydi

    Tushunchalar

    Ommaviy API

    Har bir modul yuqori darajadagi umumiy API deklaratsiyasiga ega bo'lishi kerak

    Izolyatsiya

    Modul to'g'ridan-to'g'ri bir xil qatlamdagi boshqa modullarga yoki uning ustidagi qatlamlarga bog'liq bo'lmasligi kerak.

    Ehtiyojlarni tushunish

    Biznes va foydalanuvchi ehtiyojlariga e'tibor qarating

    Sxema

    Metodologiyadan foydalanadigan kompaniyalar

    Sizning kompaniyangizda metodologiya qo'llaniladimi? Habar bering
    diff --git a/uz/nav.html b/uz/nav.html index 6d453a5add..a2c831ec74 100644 --- a/uz/nav.html +++ b/uz/nav.html @@ -9,8 +9,8 @@ - - + +

    🧭 Navigatsiya

    Eskirgan havolalar

    Hujjatlarni qayta tuzilgandan so'ng, maqolalarda ba'zi havolalar o'zgartirildi. Quyida siz izlayotgan sahifani topishingiz mumkin.

    Lekin moslik uchun eski havolalardan qayta yo'naltirishlar mavjud

    🚀 Get Started

    ⚡️ Simplified and merged

    Tutorial

    old: /docs/get-started/quick-start
    new: /docs/get-started/tutorial

    Basics

    old: /docs/get-started/basics
    new: /docs/get-started/overview

    Decompose Cheatsheet

    old: /docs/get-started/tutorial/decompose; diff --git a/uz/search.html b/uz/search.html index cd8d36d25a..847b660d49 100644 --- a/uz/search.html +++ b/uz/search.html @@ -9,8 +9,8 @@ - - + + diff --git a/uz/versions.html b/uz/versions.html index 68aaac6f56..21d0cc265a 100644 --- a/uz/versions.html +++ b/uz/versions.html @@ -9,8 +9,8 @@ - - + +

    Feature-Sliced Design versiyalari

    Feature-Sliced Design v2.0.0 (Current)

    Bu yerda siz joriy nashr etilgan versiya uchun hujjatlarni topishingiz mumkin

    v2.0.0 🍰Release NotesDocumentationMigration from v1

    Feature Slices v1 (Legacy)

    Bu yerda feature-slices ning eski versiyalari uchun hujjatlarni topishingiz mumkin

    v1.0Documentation
    v0.1Documentation

    Feature Driven (Legacy)

    Bu yerda feature-driven ning eski versiyalari uchun hujjatlarni topishingiz mumkin

    v0.1Documentation
    Example (kof)Github
    diff --git a/versions.html b/versions.html index 9aceab44d7..4a5aeabc34 100644 --- a/versions.html +++ b/versions.html @@ -9,8 +9,8 @@ - - + +

    Feature-Sliced Design versions

    Feature-Sliced Design v2.0.0 (Current)

    The documentation for the currently published version can be found here

    v2.0.0 🍰Release NotesDocumentationMigration from v1

    Feature Slices v1 (Legacy)

    Documentation for older versions of feature-slices can be found here

    v1.0Documentation
    v0.1Documentation

    Feature Driven (Legacy)

    Documentation for older versions of feature-driven can be found here

    v0.1Documentation
    Example (kof)Github