برنامه نویسی

ساخت برنامه های الکترونیکی مانند Nestjs: معماری مدولار ، مدیریت چند پنجره و ارتباط IPC تایپ شده

هنگامی که ما برنامه های الکترونیکی را توسعه می دهیم ، فرآیند اصلی اغلب به یک ظروف سرباز یا مسافر تبدیل می شود: منطق ایجاد پنجره در همه جا پراکنده است ، ipcMain دستگیرندگان به طور ضرورت در همه جا ثبت می شوند و منطق ارتباطات کاملاً با هم همراه است. با رشد برنامه ، تعمیر و نگهداری به طور فزاینده ای دشوار می شود.

من به عنوان یک توسعه دهنده کامل با تجربه در Nestjs ، می خواستم تفکر مدولار Nest را در فرآیند اصلی الکترونی اعمال کنم.

به همین دلیل من این پروژه را ایجاد کردم:

👉 مخزن GitHub: X29W/Electronest


✨ این پروژه چیست؟

این یک الگوی الکترونیکی بسیار مقیاس پذیر و زیبا + Vite + Nestjs است که از آن پشتیبانی می کند:

  • 💠 معماری فرآیند اصلی با الهام از Nestjs
  • 🪟 سیستم مدیریت چند پنجره مدولار
  • 🔌 ارتباطات IPC مبتنی بر دکوراتور نوع ، دکوراتور
  • 📦 سرور مستقل Nestjs یکپارچه شده در الکترونی
  • 🔄 ثبت نام خودکار ماژول ها ، خدمات و گیرنده های IPC
  • 💡 ایده آل برای کاربردهای بزرگ الکترون

🔍 نوآوری های اصلی

1. 🧱 معماری الهام گرفته از Nestjs برای فرآیند اصلی الکترون

الهام گرفته از @Module()با @Injectable()وت @Controller() در Nestjs ، این پروژه معماری مشابهی را برای فرآیند اصلی الکترون به ارمغان می آورد.

  • منطق IPC در ماژول ها محصور شده است
  • تزریق وابستگی برای خدمات استفاده می شود
  • جدایی نگرانی ها

✅ دیگر ضروری نیست ipcMain.on(...) پراکنده در همه جا!


ترتیب

به جای مدیریت ویندوز به صورت دستی در پرونده های تصادفی ، اکنون می توانید از دکوراسیون مانند:

@RegisterWindow('home')
export class HomeWindow { ... }
حالت تمام صفحه را وارد کنید

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

و ثبت خودکار آنها از طریق:

@AutoRegisterWindows([HomeWindow, SettingsWindow])
export class WindowModule {}
حالت تمام صفحه را وارد کنید

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

تمام ویندوزها به صورت اعلامیه ای ، آگاه از چرخه عمر ایجاد می شوند و می توانند روش هایی را برای ارتباطات اصلی/رندر در معرض دید خود قرار دهند.


3. ارتباطات IPC مبتنی بر دکوراتور (با پشتیبانی از Typescript)

شما می توانید دستگیرندگان IPC را مانند این تعریف کنید:

@IPCHandle('get-user-info')
handleUserInfo(payload: UserPayload) {
  return this.userService.getUserInfo(payload.id);
}
حالت تمام صفحه را وارد کنید

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

و از طرف Renderer ، TypeScript چک های خودکار و نوع را ارائه می دهد:

window.electronAPI.invoke('get-user-info', { id: '123' });
حالت تمام صفحه را وارد کنید

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

✅ از ساختار درخواست/پاسخ کامل ، استنباط نوع و ثبت خودکار پشتیبانی می کند.


4. server server nestjs تعبیه شده

یک باکتری کامل Nestjs در الکترونی تعبیه شده و در کنار فرآیند اصلی شما اجرا می شود. شما می توانید:

  • API های استراحت را در معرض دید قرار دهید
  • از منطق پس زمینه در فرآیند اصلی استفاده مجدد کنید
  • از آن برای هدایت منطق IPC یا رفتار چرخه حیات پنجره استفاده کنید

این امر به ویژه برای پردازش منطق سنگین یا مدیریت حالت چند پنجره مفید است.


stack پشته فنی

  • یار – زمان اجرا دسک تاپ
  • سریع -سازنده پیشکسوت صاعقه
  • واکنش نشان دادن – رندر UI (می تواند جایگزین VUE/SVELTE/و غیره شود.)
  • نه – معماری باطن (در داخل و در کنار الکترون استفاده می شود)
  • شرح – ایمنی از نوع کامل

🛠 شروع کنید

git clone https://github.com/X29w/electronest
cd electronest
pnpm install
pnpm dev
حالت تمام صفحه را وارد کنید

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

شما فقط با یک دستور یک برنامه الکترونیکی کاملاً در حال اجرا با سرور Nestjs ، تنظیم چند پنجره و سیستم IPC خواهید داشت.


📌 نتیجه گیری

این الگوی برای توسعه دهندگان که:

  • می خواهم بسازند مقیاس پذیر برنامه های الکترونیکی
  • ترجیح دادن معماری ساخت یافته
  • ارزش ایمنی تایپ وت طراحی مدولار
  • با آنها آشنا هستند نه یا می خواهید الگوهای پشتیبان را به توسعه دسک تاپ بیاورید

اگر این پروژه را جالب دیدید ، احساس راحتی کنید ⭐ آن را در GitHub:
👉 https://github.com/x29w/electronest

برنامه نویسی مبارک!


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

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

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

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