
استفاده از Angular به همراه Web Workers می تواند به طور قابل توجهی عملکرد و پاسخگویی برنامه های وب را افزایش دهد . انگولار یک چارچوب قدرتمند برای ساخت برنامه های پیچیده است، در حالی که Web Workers به شما اجازه می دهد تا وظایف محاسباتی فشرده را برای جدا کردن thread ها بارگذاری کنید و از مسدود کردن thread UI اصلی جلوگیری کنید. در این مقاله، نحوه استفاده از Angular با Web Workers را همراه با یک مثال دقیق بررسی خواهیم کرد.
در این مقاله، فرآیند راهاندازی Angular را با Web Workers پوشش دادیم، از جمله ایجاد یک فایل Web Worker، پیادهسازی یک سرویس Angular برای ارتباط، و استفاده از سرویس در یک کامپوننت. با استفاده از Web Workers، میتوانید برنامههای Angular خود را بهینه کنید و با واگذاری وظایف محاسباتی سنگین به threadهای جداگانه، عملکرد را افزایش دهید.
وب ورکر یکی از ویژگیهای مرورگرهای مدرن است که اجرای کد جاوا اسکریپت را در پسزمینه، جدا از thread اصلی مرورگر، امکانپذیر میکند. با استفاده از Web Workers، می توانید کارهای وقت گیر مانند محاسبات پیچیده، پردازش داده ها یا محاسبات سنگین را بدون مسدود کردن thread UI اصلی انجام دهید. این رویکرد تضمین می کند که برنامه پاسخگو باقی می ماند و تجربه کاربری روانی را ارائه می دهد.
برای شروع، اجازه دهید یک پروژه Angular راه اندازی کنیم که از Web Workers استفاده می کند. ترمینال یا خط فرمان خود را باز کنید و مراحل زیر را دنبال کنید:
npm install -g @angular/cli
۲. یک پروژه Angular جدید ایجاد کنید:
ng new angular-web-worker-example
۳. به دایرکتوری پروژه وارد شوید:
cd angular-web-worker
۴. سرور توسعه Angular را اجرا کنید:
ng serve
این دستور سرور توسعه را راه اندازی می کند و شما می توانید با رفتن به آدرسlocalhost:4200در مرورگر خود برنامه را مشاهده کنید.
برای استفاده از Web Worker در یک پروژه Angular، باید یک فایل جداگانه ایجاد کنیم که حاوی کدهایی باشد که باید در Web Worker اجرا شوند. برای ایجاد Web Worker مراحل زیر را دنبال کنید:
srcپروژه Angular خود، یک فایل جدید به نامfactorial.worker.tsایجاد کنید.factorial.worker.ts، کدی را بنویسید که در Web Worker اجرا می شود. برای مثال، بیایید worker ایجاد کنیم که فاکتوریل یک عدد را محاسبه کند:// factorial.worker.ts self.addEventListener('message', (event) => { const number = event.data; const result = calculateFactorial(number); self.postMessage(result); }); function calculateFactorial(number: number): number { let factorial = 1; for (let i = 2; i <= number; i++) { factorial *= i; } return factorial; }
برای برقراری ارتباط با Web Worker، یک سرویس ایجاد می کنیم. این سرویس تعامل با Web Worker را مدیریت میکند و رابطی را برای استفاده سایر کامپوننت ها فراهم میکند. این مراحل را دنبال کنید:
src/app، یک سرویس جدید با استفاده از Angular CLI ایجاد کنید:ng generate service factorial
این دستور یک فایل جدید به نامfactorial.service.tsایجاد می کند و فایلapp.module.tsرا با import و provider لازم به روز می کند.
۲. فایل factorial.service.tsرا در پوشهsrc/appباز کنید و محتوای آن را با کد زیر جایگزین کنید:
// factorial.service.ts import { Injectable } from '@angular/core'; @Injectable({ providedIn: 'root' }) export class FactorialService { private worker: Worker; constructor() { this.worker = new Worker('./factorial.worker', { type: 'module' }); this.worker.addEventListener('message', this.onWorkerMessage.bind(this)); } calculateFactorial(number: number): void { this.worker.postMessage(number); } private onWorkerMessage(event: MessageEvent): void { const result = event.data; console.log(`Factorial: ${result}`); } }
کلاس FactorialServiceبا استفاده از سازندهWorker یک Web Worker ایجاد می کند . messageرویداد را از worker گوش می دهد و نتیجه را ثبت می کند. این متدcalculateFactorialپیامی را به ورکر ارسال می کند و محاسبات فاکتوریل را آغاز می کند.
اکنون که سرویس Web Worker خود را راه اندازی کرده ایم، بیایید یک کامپوننت ایجاد کنیم که از سرویس برای محاسبه فاکتوریل یک عدد استفاده می کند. این مراحل را دنبال کنید:
app.component.ts را در پوشه src/appباز کنید .// app.component.ts import { Component } from '@angular/core'; import { FactorialService } from './factorial.service'; @Component({ selector: 'app-root', template: ` <div> <h1>Calculate Factorial</h1> <input type="number" [(ngModel)]="number" placeholder="Enter a number"> <button (click)="calculate()">Calculate</button> </div> ` }) export class AppComponent { number: number; constructor(private factorialService: FactorialService) {} calculate(): void { this.factorialService.calculateFactorial(this.number); } }
این کامپوننت شامل یک فیلد ورودی و یک دکمه است. هنگامی که دکمه کلیک می شود، متدcalculate فراخوانی می شود که متدcalculateFactorialرا درFactorialServiceفعال می کند.
در نهایت، باید فایل app.module.tsرا بهروزرسانی کنیم تا به عنوان ارائهدهنده actorialServiceباشد . فایل app.module.tsرا در پوشه src/appباز کرده و به صورت زیر آپدیت کنید:
// app.module.ts import { NgModule } from '@angular/core'; import { BrowserModule } from '@angular/platform-browser'; import { FormsModule } from '@angular/forms'; import { AppComponent } from './app.component'; import { FactorialService } from './factorial.service'; @NgModule({ declarations: [AppComponent], imports: [BrowserModule, FormsModule], providers: [FactorialService], bootstrap: [AppComponent] }) export class AppModule {}
اکنون که پروژه Angular خود را با اضافه کردن Web Worker راهاندازی کردهایم، زمان اجرای برنامه و مشاهده آن در عمل فرا رسیده است. این مراحل را دنبال کنید:
ng serve
این دستور برنامه را می سازد و آن را روی یک سرور توسعه محلی راه اندازی می کند.
۳. مرورگر خود را باز کرده و به http://localhost:4200بروید. شما باید یک فیلد ورودی را ببینید که در آن می توانید یک عدد و یک دکمه "محاسبه" وارد کنید.
۴. یک عدد را در فیلد ورودی وارد کنید و روی دکمه "Calculate" کلیک کنید. فاکتوریل عدد وارد شده با استفاده از Web Worker محاسبه می شود و نتیجه در کنسول مرورگر ثبت می شود.
تبریک می گویم! شما موفقیت Web Workers را با Angular ادغام کردید. محاسبه فاکتوریل در یک thread جداگانه بارگذاری میشود و از مسدود کردن رشته thread UI اصلی جلوگیری میکند و تجربه کاربری روان را تضمین میکند.
این مقاله برگردان شده یک مقاله معتبر درباره این موضوع است.برای دسترسی به مقاله منبع اینجا کلیک کنید.
برای مشاهده پست های بیشتر و ارتباط با من از طریق لینکدین اینجا کلیک کنید.
امیدوارم براتون مفید واقع شده باشه.