ساخت برنامه های الکترونیکی مانند 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
برنامه نویسی مبارک!