برنامه نویسی

ساختارهای پوشه بهینه برای پروژه های React Native / React JS

Summarize this content to 400 words in Persian Lang

انتخاب معماری مناسب برای پروژه React یا React Native به چندین عامل کلیدی بستگی دارد:

اندازه و پیچیدگی پروژه
اندازه تیم و گردش کار
مقیاس پذیری آینده

1. اندازه و پیچیدگی پروژه

الف) پروژه های کوچک: برای پروژه های کوچکتر با الزامات ساده، یک معماری ساده با حداقل لایه ها اغلب کافی است. استفاده از اجزای کاربردی با قلاب ها و مدیریت حالت اولیه می تواند پایگاه کد را تمیز و قابل مدیریت نگه دارد.

ب) پروژه های بزرگ: پروژه های بزرگتر با الزامات پیچیده تر ممکن است از معماری ساختارمندتری بهره مند شوند. این می‌تواند شامل کتابخانه‌های مدیریت دولتی مانند Redux یا MobX و تفکیک واضح نگرانی‌ها بین ارائه و منطق تجاری باشد.

2. اندازه تیم و گردش کار

الف) تیم های کوچک: تیم های کوچک می توانند از معماری ساده ای بهره مند شوند که توسعه سریع و سهولت ارتباط را ارتقا می دهد. درک مشترک و نقاط هماهنگی کمتر کلیدی است. معماری مبتنی بر مؤلفه با خدمات و خدمات مشترک به خوبی کار می کند.

ب) تیم های بزرگ: تیم های بزرگتر ممکن است به معماری مدولارتر و مقیاس پذیرتر نیاز داشته باشند. استفاده از الگوهای طراحی مانند کامپوننت های Container/Presentational، ساختارهای پوشه مبتنی بر ویژگی، و قراردادهای کد سختگیرانه می تواند به مدیریت پیچیدگی کمک کند. ترکیب آزمایش خودکار و خطوط لوله یکپارچه سازی مداوم نیز می تواند همکاری روان را تسهیل کند.

3. مقیاس پذیری آینده

الف) ملاحظات مقیاس پذیری: برنامه ریزی برای رشد آینده ضروری است. معماری که از ماژولار بودن، قابلیت استفاده مجدد و قابلیت نگهداری پشتیبانی می کند، مقیاس بندی را تسهیل می کند. پیاده‌سازی بارگذاری تنبل، تقسیم کد و فرانت‌اندهای میکرو می‌تواند به مدیریت پیچیدگی فزاینده با رشد پروژه کمک کند.

مثلا:برنامه جدید رسانه های اجتماعی با یک تیم کوچک که انتظار داریم در طول زمان رشد کند، این روشی است که می توانیم براساس نیاز/اندازه تیم انتخاب کنیم.

1. ساختار تخت

پروژه های کوچک، نمونه های اولیه یا دموهای سریع.111

my-small-project/
src/
App.js
index.js
ComponentA.js
ComponentB.js
package.json
README.md

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

2. ساختار مبتنی بر ویژگی

پروژه های متوسط ​​تا بزرگ با ویژگی ها یا ماژول های متمایز

my-feature-based-project/
src/
features/
auth/
components/
Login.js
Register.js
screens/
LoginScreen.js
RegisterScreen.js
services/
authService.js
authSlice.js
profile/
components/
ProfileDetails.js
screens/
ProfileScreen.js
services/
profileService.js
profileSlice.js
store/
rootReducer.js
store.js
App.js
index.js
package.json
README.md

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

3. ساختار لایه ای

پروژه هایی که نیاز به تفکیک روشن دغدغه ها دارند.

my-layered-project/
src/
components/
Button.js
Header.js
screens/
HomeScreen.js
LoginScreen.js
services/
apiService.js
utils/
helpers.js
hooks/
useAuth.js
App.js
index.js
package.json
README.md

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

4. ساختار دامنه محور

برنامه های کاربردی پیچیده با حوزه های تجاری متمایز.

my-domain-driven-project/
src/
domains/
user/
components/
UserDetails.js
screens/
UserScreen.js
services/
userService.js
event/
components/
EventDetails.js
screens/
EventScreen.js
services/
eventService.js
store/
rootReducer.js
store.js
App.js
index.js
package.json
README.md

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

5. ساختار طراحی اتمی

طراحی سیستم ها و کتابخانه های مؤلفه UI.

src/
components/
atoms/
molecules/
organisms/
templates/
pages/

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

6. ساختار اردک

پروژه هایی که از Redux برای مدیریت دولتی استفاده می کنند.

my-redux-duck-project/
src/
store/
ducks/
auth.js
profile.js
rootReducer.js
store.js
App.js
index.js
package.json
README.md

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

7. ساختار MONOREPO

کد برای چندین پروژه در یک مخزن واحد مانند react native، react js و غیره ذخیره می شود.

my-monorepo-project/
packages/
app1/
src/
components/
Button.js
Header.js
screens/
HomeScreen.js
LoginScreen.js
store/
ducks/
auth.js
events.js
index.js
services/
apiService.js
utils/
helpers.js
App.js
__tests__/
unit/
Button.test.js
integration/
App.test.js
e2e/
tests/
app.test.js
config/
wdio.conf.js
package.json
app2/
src/
components/
Footer.js
NavBar.js
screens/
DashboardScreen.js
SettingsScreen.js
store/
ducks/
user.js
posts.js
index.js
services/
userService.js
utils/
formatters.js
App.js
__tests__/
unit/
Footer.test.js
integration/
App.test.js
e2e/
tests/
app.test.js
config/
wdio.conf.js
package.json
shared-components/
src/
Button.js
Header.js
__tests__/
unit/
Button.test.js
package.json
utils/
src/
api.js
helpers.js
__tests__/
unit/
api.test.js
package.json
.github/
workflows/
ci.yml
package.json
lerna.json
yarn.lock
jest.config.js
README.md

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

8. ساختار ریز جلو

هر micro-frontend یک برنامه frontend مستقل قابل تحویل است.

my-react-native-app/
src/
features/
auth/
components/
screens/
services/
profile/
components/
screens/
services/
chat/
components/
screens/
services/
store/
rootReducer.js
store.js
App.js
index.js
package.json
README.md

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

چند نمونه از برنامه هایی که می توان از ساختارهای خاص استفاده کرد

الف)اینستاگرام

instagram/
src/
features/
feed/
components/
screens/
services/
stories/
components/
screens/
services/
reels/
components/
screens/
services/
messaging/
components/
screens/
services/
profile/
components/
screens/
services/
store/
rootReducer.js
store.js
App.js
index.js
package.json
README.md

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

ب) FLIPKART

flipkart/
packages/
product-listing/
src/
components/
screens/
services/
__tests__/
package.json
checkout/
src/
components/
screens/
services/
__tests__/
package.json
user-account/
src/
components/
screens/
services/
__tests__/
package.json
marketing/
src/
components/
screens/
services/
__tests__/
package.json
package.json
lerna.json
yarn.lock
README.md

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

الف) SPOTIFY

spotify/
src/
domains/
user/
components/
screens/
services/
playlist/
components/
screens/
services/
music/
components/
screens/
services/
recommendations/
components/
screens/
services/
store/
rootReducer.js
store.js
App.js
index.js
package.json
README.md

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

انتخاب معماری مناسب برای پروژه React یا React Native به چندین عامل کلیدی بستگی دارد:

  1. اندازه و پیچیدگی پروژه
  2. اندازه تیم و گردش کار
  3. مقیاس پذیری آینده

1. اندازه و پیچیدگی پروژه

الف) پروژه های کوچک: برای پروژه های کوچکتر با الزامات ساده، یک معماری ساده با حداقل لایه ها اغلب کافی است. استفاده از اجزای کاربردی با قلاب ها و مدیریت حالت اولیه می تواند پایگاه کد را تمیز و قابل مدیریت نگه دارد.

ب) پروژه های بزرگ: پروژه های بزرگتر با الزامات پیچیده تر ممکن است از معماری ساختارمندتری بهره مند شوند. این می‌تواند شامل کتابخانه‌های مدیریت دولتی مانند Redux یا MobX و تفکیک واضح نگرانی‌ها بین ارائه و منطق تجاری باشد.


2. اندازه تیم و گردش کار

الف) تیم های کوچک: تیم های کوچک می توانند از معماری ساده ای بهره مند شوند که توسعه سریع و سهولت ارتباط را ارتقا می دهد. درک مشترک و نقاط هماهنگی کمتر کلیدی است. معماری مبتنی بر مؤلفه با خدمات و خدمات مشترک به خوبی کار می کند.

ب) تیم های بزرگ: تیم های بزرگتر ممکن است به معماری مدولارتر و مقیاس پذیرتر نیاز داشته باشند. استفاده از الگوهای طراحی مانند کامپوننت های Container/Presentational، ساختارهای پوشه مبتنی بر ویژگی، و قراردادهای کد سختگیرانه می تواند به مدیریت پیچیدگی کمک کند.
ترکیب آزمایش خودکار و خطوط لوله یکپارچه سازی مداوم نیز می تواند همکاری روان را تسهیل کند.


3. مقیاس پذیری آینده

الف) ملاحظات مقیاس پذیری: برنامه ریزی برای رشد آینده ضروری است. معماری که از ماژولار بودن، قابلیت استفاده مجدد و قابلیت نگهداری پشتیبانی می کند، مقیاس بندی را تسهیل می کند. پیاده‌سازی بارگذاری تنبل، تقسیم کد و فرانت‌اندهای میکرو می‌تواند به مدیریت پیچیدگی فزاینده با رشد پروژه کمک کند.


مثلا:
برنامه جدید رسانه های اجتماعی با یک تیم کوچک که انتظار داریم در طول زمان رشد کند، این روشی است که می توانیم براساس نیاز/اندازه تیم انتخاب کنیم.
توضیحات تصویر



1. ساختار تخت

پروژه های کوچک، نمونه های اولیه یا دموهای سریع.111

my-small-project/
  src/
    App.js
    index.js
    ComponentA.js
    ComponentB.js
  package.json
  README.md
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید


2. ساختار مبتنی بر ویژگی

پروژه های متوسط ​​تا بزرگ با ویژگی ها یا ماژول های متمایز

my-feature-based-project/
  src/
    features/
      auth/
        components/
          Login.js
          Register.js
        screens/
          LoginScreen.js
          RegisterScreen.js
        services/
          authService.js
        authSlice.js
      profile/
        components/
          ProfileDetails.js
        screens/
          ProfileScreen.js
        services/
          profileService.js
        profileSlice.js
  store/
    rootReducer.js
    store.js
  App.js
  index.js
  package.json
  README.md
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید


3. ساختار لایه ای

پروژه هایی که نیاز به تفکیک روشن دغدغه ها دارند.

my-layered-project/
  src/
    components/
      Button.js
      Header.js
    screens/
      HomeScreen.js
      LoginScreen.js
    services/
      apiService.js
    utils/
      helpers.js
    hooks/
      useAuth.js
  App.js
  index.js
  package.json
  README.md
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید


4. ساختار دامنه محور

برنامه های کاربردی پیچیده با حوزه های تجاری متمایز.

my-domain-driven-project/
  src/
    domains/
      user/
        components/
          UserDetails.js
        screens/
          UserScreen.js
        services/
          userService.js
      event/
        components/
          EventDetails.js
        screens/
          EventScreen.js
        services/
          eventService.js
  store/
    rootReducer.js
    store.js
  App.js
  index.js
  package.json
  README.md
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید


5. ساختار طراحی اتمی

طراحی سیستم ها و کتابخانه های مؤلفه UI.

src/
  components/
    atoms/
    molecules/
    organisms/
    templates/
    pages/
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید


6. ساختار اردک

پروژه هایی که از Redux برای مدیریت دولتی استفاده می کنند.

my-redux-duck-project/
  src/
    store/
      ducks/
        auth.js
        profile.js
      rootReducer.js
      store.js
  App.js
  index.js
  package.json
  README.md
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید


7. ساختار MONOREPO

کد برای چندین پروژه در یک مخزن واحد مانند react native، react js و غیره ذخیره می شود.

my-monorepo-project/
  packages/
    app1/
      src/
        components/
          Button.js
          Header.js
        screens/
          HomeScreen.js
          LoginScreen.js
        store/
          ducks/
            auth.js
            events.js
          index.js
        services/
          apiService.js
        utils/
          helpers.js
        App.js
      __tests__/
        unit/
          Button.test.js
        integration/
          App.test.js
      e2e/
        tests/
          app.test.js
        config/
          wdio.conf.js
      package.json
    app2/
      src/
        components/
          Footer.js
          NavBar.js
        screens/
          DashboardScreen.js
          SettingsScreen.js
        store/
          ducks/
            user.js
            posts.js
          index.js
        services/
          userService.js
        utils/
          formatters.js
        App.js
      __tests__/
        unit/
          Footer.test.js
        integration/
          App.test.js
      e2e/
        tests/
          app.test.js
        config/
          wdio.conf.js
      package.json
    shared-components/
      src/
        Button.js
        Header.js
      __tests__/
        unit/
          Button.test.js
      package.json
    utils/
      src/
        api.js
        helpers.js
      __tests__/
        unit/
          api.test.js
      package.json
  .github/
    workflows/
      ci.yml
  package.json
  lerna.json
  yarn.lock
  jest.config.js
  README.md

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید


8. ساختار ریز جلو

هر micro-frontend یک برنامه frontend مستقل قابل تحویل است.

my-react-native-app/
  src/
    features/
      auth/
        components/
        screens/
        services/
      profile/
        components/
        screens/
        services/
      chat/
        components/
        screens/
        services/
  store/
    rootReducer.js
    store.js
  App.js
  index.js
  package.json
  README.md
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید



چند نمونه از برنامه هایی که می توان از ساختارهای خاص استفاده کرد

الف)اینستاگرام
توضیحات تصویر

instagram/
  src/
    features/
      feed/
        components/
        screens/
        services/
      stories/
        components/
        screens/
        services/
      reels/
        components/
        screens/
        services/
      messaging/
        components/
        screens/
        services/
      profile/
        components/
        screens/
        services/
  store/
    rootReducer.js
    store.js
  App.js
  index.js
  package.json
  README.md
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

ب) FLIPKART
توضیحات تصویر

flipkart/
  packages/
    product-listing/
      src/
        components/
        screens/
        services/
      __tests__/
      package.json
    checkout/
      src/
        components/
        screens/
        services/
      __tests__/
      package.json
    user-account/
      src/
        components/
        screens/
        services/
      __tests__/
      package.json
    marketing/
      src/
        components/
        screens/
        services/
      __tests__/
      package.json
  package.json
  lerna.json
  yarn.lock
  README.md
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

الف) SPOTIFY
توضیحات تصویر

spotify/
  src/
    domains/
      user/
        components/
        screens/
        services/
      playlist/
        components/
        screens/
        services/
      music/
        components/
        screens/
        services/
      recommendations/
        components/
        screens/
        services/
  store/
    rootReducer.js
    store.js
  App.js
  index.js
  package.json
  README.md
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا