چرا توسعهدهندهها از قابلیتهای خود مرورگر استفاده نمیکنن؟
خلاصهٔ کاملتر
سالهاست طرفدارهای استانداردهای وب، کارایی و دسترسیپذیری میگن «use the platform»، یعنی وقتی مرورگر خودش یه قابلیت رو بهت میده، چرا با جاوااسکریپت از نو بسازیش؟ Nolan Lawson که خودش از همین طرفدارهاست، تو این نوشته طرف مقابل رو گرفته تا بفهمه چرا خیلیها هنوز قانع نشدن.
اولین دلیل تاریخیه. مرورگرها مدتها از اکوسیستم عقب بودن و کتابخونههایی مثل jQuery جای خالی رو پر میکردن. تا حدود دههٔ ۲۰۲۰ هم باید صبر میکردی مرورگرهای قدیمی مثل IE6 کنار برن. دلیل بعدی عادته: کسی که همیشه دنبال کامپوننت React تو npm میگرده، برای position: sticky هم سراغ npm میره. مستندات هم مهم بوده، چون پکیجها README مفصل داشتن ولی مستندات وب تا قبل از جا افتادن MDN پخش و پلا بود.
به گفتهٔ نویسنده، دلیل عمیقتر اینه که ساختن از صفر برای بعضیا کیف داره. مثلاً برای ساختن یه modal با position:absolute و z-index شروع میکنی، بعد باید اسکرول پسزمینه رو ببندی، Esc رو هندل کنی، focus trap (یعنی گیر انداختن فوکوس کیبورد داخل دیالوگ) بسازی و فوکوس رو برگردونی. برای خیلیا این کابوسه ولی برای بعضیا سرگرمیه، در حالی که همهشو آماده داره. اثر IKEA هم هست، یعنی به چیزی که خودت ساختی بیشتر دل میبندی.
نویسنده قبول داره که خیلی از طرفدارهای امروز همین شعار، روزی خودشون polyfill و کتابخونه مینوشتن. خودش سالها روی PouchDB و ابزارهای IndexedDB و WebSQL کار کرده و همین باعث شده بعداً تو جلسههای W3C بشینه. از اون طرف، بخشی از این رفتار از ندونستنه، مخصوصاً دربارهٔ CSS که تا مدتها برای کارهایی مثل line clamping یا تغییر اندازهٔ textarea راه سادهای نداشت.
اون میگه این مشکل فقط مال وب نیست. سر کار، خودش و همکارش برای ذخیرهٔ JSONهای بزرگ تو ClickHouse هر کدوم یه راهحل دستساز ساخته بودن: یکی فشردهسازی قبل از ذخیره، یکی یه key-value store جدا. بعد از خوندن مستندات و نوشتن بنچمارک فهمیدن ClickHouse خودش داده رو فشرده میکنه و چون ستونیه، فشردهسازیش هم بهتره. یعنی هر دو راهحل کندتر و بدتر از چیزی بود که پلتفرم مجانی میداد.
آخرش نویسنده دو نگاه به نقش هوش مصنوعی داره. نگاه خوشبینانه: LLMها همهٔ APIهای پلتفرم رو میشناسن و میتونن دقیقاً همون درست رو انتخاب کنن، و اثر IKEA هم وقتی خودت کد نمینویسی از بین میره. نگاه بدبینانه: مدلها عاشق کد تکراریان و توابع کمکی موجود رو نادیده میگیرن، پس کد دستساز غیراستاندارد زیاد میشه. نویسنده میگه هر دو رو تو کار خودش دیده.
نکات کلیدی:
- jQuery و کتابخونههای مشابه جای خالی APIهای مرورگر رو پر میکردن تا حدود دههٔ ۲۰۲۰
- برای modal، المان جایگزین z-index، focus trap و هندل کردن Esc بهصورت دستیه
- ClickHouse خودش داده رو ستونی فشرده میکنه و فشردهسازی دستی JSON لازم نیست
- LLMها میتونن API درست پلتفرم رو انتخاب کنن، ولی تمایل به نوشتن کد تکراری هم دارن




