وبکامپوننتها دیزاین سیستم رو فریمورکمستقل نمیکنن
خلاصهٔ کاملتر
نویسنده میگه بهتازگی یه پست خونده که ادعا میکرد وبکامپوننتها (Web Components) میتونن دیزاین سیستم رو فریمورکمستقل (framework-agnostic) کنن، و این مقاله رو در جواب همون نوشته. به نظرش این بحث ریشه در یه دوگانهی اشتباه داره: یا عاشق React (یا هر چیز پرطرفدار روز) هستی یا ازش متنفری. نویسنده میگه React احتمالاً برای دیزاین سیستم انتخاب خوبی نیست، ولی این دلیلی علیه فریمورکها نیست، بلکه دلیلیه برای انتخاب چیزی بهتر از React.
اولین دلیلش اینه که یه کامپوننت فقط لایهی جاوااسکریپت نیست. مثلاً یه کامپوننت آکاردئون رو در نظر بگیر:
{{ accordion({ items }) }}به گفتهی نویسنده این کامپوننت چند کار با هم میکنه: اجازه میده داده (همون items) از دیتابیس یا API تزریق بشه، HTML رو انتزاع میکنه تا دسترسپذیر و معنایی و قابلاستفادهی مجدد بمونه، با کلاسهای HTML به CSS وصل میشه تا استایل بگیره، و آخرش از جاوااسکریپت بهعنوان یه بهبود (enhancement) برای باز و بستهشدن پنلها استفاده میکنه.
نکتهی اصلی اینه که برای کارکردن این الگو به یه زبان تمپلیت نیاز داری که معمولاً به یه استک گره خوردهست: Nunjucks روی Node، ERB روی Rails، یا Jinja روی Django. وبکامپوننتها فقط همون بخش چهارم یعنی رفتار جاوااسکریپتی رو میگیرن، و این هیچ فرقی با نوشتن یه کلاس جاوااسکریپتی خودت نداره.
دلیل دوم اینه که هماهنگسازی (orchestration) با جاوااسکریپت هنوز لازمه. به گفتهی نویسنده حتی اگه از وبکامپوننتها برای بهبود HTML استفاده کنی، باز هم برای گرفتن داده با AJAX و آپدیت UI و هماهنگکردن رویدادها بین کامپوننتها به جاوااسکریپت نیاز داری؛ یا از یه کتابخونه استفاده میکنی یا خودت مینویسیش.
نویسنده تأکید میکنه که انتزاع HTML و CSS و JS برای استفادهی مجدد همچنان ارزشمنده و اگه فقط همینقدر بتونی انجام بدی هم خوبه. ولی به نظرش این دیگه دیزاین سیستم فریمورکمستقل نیست؛ بار زیادی رو روی دوش تیم مصرفکننده میذاره و شکنندهست، چون اونها خیلی راحتتر ممکنه HTML رو خراب کنن. در عمل این حرف فرقی با این جملهی بدیهی نداره که خود HTML و CSS و JS بهت کامپوننت فریمورکمستقل میدن.
نکات کلیدی:
- نویسنده میگه ادعای فریمورکمستقلشدن دیزاین سیستم با وبکامپوننتها گمراهکنندهست
- یه کامپوننت واقعی شامل تزریق داده، انتزاع HTML دسترسپذیر و استایل با CSS هم هست، نه فقط جاوااسکریپت
- لایهی تمپلیت معمولاً به استک گره خورده: Nunjucks/Node، ERB/Rails، Jinja/Django
- وبکامپوننت فقط بخش رفتاری رو پوشش میده و با یه کلاس JS دستساز فرقی نداره
- هماهنگسازی رویدادها و گرفتن داده با AJAX همچنان به جاوااسکریپت نیاز داره




