کتابخانه انگولار

کتابخانه انگولار

- 2 دقیقه

انگولار ساختاری modular داره و سعی شده این ساختار توسعه پیدا کنه. اما این فریم‌ورک هم مثل بقیه فریم‌ورک‌ها برای پیاده‌سازی این ساختار چالش‌هایی بر سر راهش داره. به‌عنوان‌مثال هنوز هیچ راه‌حل رسمی برای ساخت module ارائه نشده. تجربه ای که من با این موضوع داشتم ازاین‌قرار هست:

احتمالا yeoman رو بشناسید اگر با js کار‌کرده باشید، ولی اگر تاحالا ازش استفاده نکردید یک ابزار generate کد هستش که محدودیت زبانی نداره و میشه برای generate هر چیزی ازش استفاده کرد. این ابزار پلاگینی به اسم generator-angular2-library داره که کمک می‌کنه یک کتابخانه angular بسازید و با استفاده از systemjs بتونید خروجی کتابخانه رو ببینید. در نگاه اول ابزار خیلی خوبی به نظر میاد و قاعدتا باید خروجی خوبی هم داشته باشه و البته همینطور هم شد و با کمک این ابزار، ساخت کتابخانه با کمترین دردسر انجام شد. اما مشکل از‌آنجا شروع شد که سعی کردیم این کتابخانه رو به پروژه انگولار انتقال بدیم. خب توی این کتابخانه ای که ساخته بودیم خبری از angular cli نبود و همه‌چیز دستی ساخته‌شده بود و البته نمی‌شه گفت این موضوع به‌خودی‌خود مشکلی داره. همه‌چیز روی development mode به خوبی کار می‌کرد و هیچ خطایی رو نمی‌دیدیم اما وقتی سعی می‌کردم از production mode استفاده کنیم خطای e is not a constructor رو می‌دیدیم که متاسفانه با خوندن کد هم راه به‌جایی نمی‌بردیم. اتفاقی که می‌افتاد چیزی شبیه به این کد بود:

var e = 1;
new e();

اما نمی‌شد از روی کدی که minify شده فهمید مشکل از کجاست. بخاطر اینکه همه‌چیز روی development mode به خوبی کار می‌کرد و کد فقط در production mode مشکل داشت. سعی کردم از debuger chromium استفاده کنم اما جواب خاصی دستگیرم نشد. بعد از کلی تلاش و شکست تصمیم گرفتم که کتابخانه رو به‌عنوان یک module در پروژه angular باز‌نویسی کنم. تقریبا اکثر کار‌ها کپی پیست بود و اینکه این بار از angular cli برای ساخت component و module استفاده کردم و وقتی تستش کردم، در کمال ناباوری این بار module روی production mode هیچ مشکلی نداشت. حالا همین module رو توی فولدر جدیدی که با yeoman ساخته بودم کپی کردم و یک مقدار تغیرات دادم که با کتابخانه سازگار بشه. و حالا به‌عنوان یک کتابخانه هم می‌تونستم در پروژه استفاده اش کنم.

متوجه نشدم مشکل از ساختار بود یا چه چیزی دقیقا مشکل داشت اما متوجه شدم اگر ابتدا بجای نوشتن کتابخانه از module خود انگولار استفاده می‌کردم می‌تونستم راحت‌تر کارمو انجام بدم و خیالم هم راحت بود که همه‌چیز همونطوره که انگولار می‌خواد.

شاید مشکلی در ساخت library در قدم اول بود ولی چیزی نبود که من بتونم پیداش کنم، حداقل با‌دانشی که در حال حاضر از angular و javascript دارم. اما به نظرم راه دوم راه‌حل امن تری برای ساخت کتابخونه می‌تونه باشه و توصیه می‌کنم اگر شما هم دچار همین مشکل شدید این روش رو امتحان کنید. شاید به جواب اینکه مشکل از کجاست نرسید اما احتمال زیاد به خروجی می‌رسید.

دانیال نیک‌نام

دانیال نیک‌نام

مسلط به تمام زبان های برنامه نویسی در کره زمین
تحلیل گر مسائل وبی در خاور میانه
یک غیر فعال وب
:laughing: :alien:

comments powered by Disqus
rssfacebooktwittergithubyoutubemailspotifylastfminstagramlinkedingooglegoogle-pluspinterestmediumvimeostackoverflowredditquoraquora