حدود 15 سال پیش، من در شرکتی کار می‌کردم که در آن اپلیکیشن‌هایی را برای آژانس‌های مسافرتی، کارکنان فرودگاه و شرکت‌های هواپیمایی ساختیم. ما همچنین چارچوب داخلی خود را برای اجزای رابط کاربری و قابلیت‌های اپلیکیشن تک صفحه‌ای ساختیم. ما اجزایی برای همه چیز داشتیم: فیلدها، دکمه‌ها، برگه‌ها، محدوده‌ها، جدول‌های داده، منوها، انتخابگرها، انتخاب‌ها و انتخاب‌های چندگانه. ما حتی یک کامپوننت div داشتیم. کامپوننت div ما به هر حال عالی بود، به ما اجازه می‌داد تا گوشه‌های گرد را روی همه مرورگرها انجام دهیم، که چه باور کنید چه نه، در آن زمان کار آسانی نبود.

کار ما در نقطه‌ای از تاریخ ما اتفاق افتاد که JS، Ajax و HTML پویا به‌عنوان انقلابی در نظر گرفته شدند که ما را به آینده آورد. ناگهان، می‌توانیم صفحه‌ای را به‌صورت پویا به‌روزرسانی کنیم، داده‌ها را از یک سرور دریافت کنیم و از رفتن به صفحات دیگر اجتناب کنیم، که کند دیده می‌شد و یک مستطیل سفید بزرگ روی صفحه بین دو صفحه چشمک زد. عبارتی وجود داشت که توسط جف آتوود (بنیانگذار StackOverflow) محبوب شد که چنین بود: "هر برنامه ای که می تواند با جاوا اسکریپت نوشته شود، در نهایت با جاوا اسکریپت نوشته می شود." - جف اتوود

برای ما در آن زمان، این یک جرات بود که واقعاً برویم و آن برنامه ها را ایجاد کنیم. انجام همه کارها با JS مانند یک تایید کلی بود. بنابراین ما همه کارها را با JS انجام دادیم و واقعاً برای تحقیق در مورد روش‌های دیگر انجام کارها وقت صرف نکردیم. ما واقعاً انگیزه ای برای یادگیری درست کارهایی که HTML و CSS می توانند انجام دهند احساس نکردیم. ما واقعاً وب را به عنوان یک پلتفرم برنامه در حال تکامل به طور کامل درک نکردیم. ما بیشتر آن را به عنوان چیزی می دیدیم که باید در اطراف آن کار کنیم، مخصوصاً وقتی صحبت از پشتیبانی مرورگر می شد. ما فقط می‌توانیم JS بیشتری را برای انجام کارها به سمت آن پرتاب کنیم. آیا وقت گذاشتن برای کسب اطلاعات بیشتر در مورد نحوه عملکرد وب و آنچه در پلتفرم موجود بود به من کمک می کرد؟ مطمئناً، من احتمالاً می توانستم یک سری کد را که واقعاً مورد نیاز نبودند، تراشیده باشم. اما، در آن زمان، شاید نه چندان. ببینید، تفاوت های مرورگر در آن زمان بسیار قابل توجه بود. این زمانی بود که اینترنت اکسپلورر هنوز مرورگر غالب بود و فایرفاکس در رتبه دوم قرار داشت، اما به دلیل محبوبیت سریع کروم، شروع به از دست دادن سهم بازار خود کرد. اگرچه کروم و فایرفاکس در توافق بر روی استانداردهای وب بسیار خوب بودند، اما محیطی که برنامه های ما در آن اجرا می شدند به این معنی بود که ما مجبور بودیم برای مدت طولانی از IE6 پشتیبانی کنیم. حتی زمانی که ما مجاز به پشتیبانی از IE8 بودیم، باز هم مجبور بودیم با تفاوت های زیادی بین مرورگرها دست و پنجه نرم کنیم. نه تنها این، بلکه وب آن زمان آنچنان قابلیت‌ها را مستقیماً در پلتفرم تعبیه کرده بود.

سریع به جلو به امروز. اوضاع به شدت تغییر کرده است. ما نه تنها بیش از هر زمان دیگری از این قابلیت ها داریم، بلکه سرعت در دسترس شدن آنها نیز افزایش یافته است. اجازه دهید دوباره این سوال را بپرسم: آیا وقت صرف کردن برای یادگیری بیشتر در مورد نحوه عملکرد وب و آنچه در پلتفرم موجود است امروز به شما کمک می کند؟ کاملاً بله. یادگیری درک و استفاده از پلتفرم وب امروز شما را در مزیت بزرگی نسبت به سایر توسعه دهندگان قرار می دهد. چه روی عملکرد، دسترسی، پاسخگویی، همه آنها با هم کار کنید یا فقط ویژگی های رابط کاربری را ارسال کنید، اگر می خواهید به عنوان یک مهندس مسئول این کار را انجام دهید، دانستن ابزارهایی که در دسترس شما هستند به شما کمک می کند سریعتر و بهتر به اهداف خود برسید. برخی از چیزهایی که ممکن است دیگر برای آنها به کتابخانه نیاز نداشته باشید با دانستن اینکه امروزه از چه مرورگرهایی پشتیبانی می‌کنند، سؤال این است: چه چیزی را می‌توانیم حذف کنیم؟ آیا برای انجام گوشه های گرد در سال 2025 به کامپوننت div نیاز داریم؟ البته، ما نداریم. ویژگی border-radius در این مرحله بیش از 15 سال است که توسط همه مرورگرهای مورد استفاده فعلی پشتیبانی می شود. و گوشه‌شکل نیز به زودی در راه است، حتی برای گوشه‌های جذاب‌تر. بیایید نگاهی به ویژگی‌های نسبتاً اخیری بیندازیم که اکنون در همه مرورگرهای اصلی موجود است و می‌توانید از آنها برای جایگزینی وابستگی‌های موجود در پایگاه کد خود استفاده کنید. نکته این نیست که فوراً تمام کتابخانه های مورد علاقه خود را کنار بگذارید و پایگاه کد خود را بازنویسی کنید. در مورد هر چیز دیگری، ابتدا باید پشتیبانی مرورگر را در نظر بگیرید و بر اساس سایر عوامل خاص پروژه خود تصمیم بگیرید. ویژگی‌های زیر در سه موتور اصلی مرورگر (Chromium، WebKit و Gecko) پیاده‌سازی می‌شوند، اما ممکن است نیازهای مختلف پشتیبانی مرورگر داشته باشید که نتوانید فوراً از آنها استفاده کنید. با این حال، اکنون هنوز زمان خوبی برای یادگیری در مورد این ویژگی ها است، و شاید برنامه ریزی برای استفاده از آنها در مقطعی داشته باشید. پاپاورها و دیالوگ ها Popover API، عنصر

HTML و شبه عنصر ::backdrop می تواند به شما کمک کند تا از وابستگی به پنجره بازشو خلاص شوید.راهنمای ابزار و کتابخانه‌های محاوره‌ای مانند Floating UI، Tippy.js، Tether یا React Tooltip. آنها دسترسی و مدیریت تمرکز را برای شما، خارج از جعبه، کنترل می کنند، با استفاده از CSS بسیار قابل تنظیم هستند و به راحتی می توان آنها را متحرک کرد. آکاردئون عنصر
، ویژگی نام آن برای عناصر متقابل منحصر به فرد، و عنصر شبه ::details-content نیاز به اجزای آکاردئونی مانند بوت استرپ آکاردئون یا مؤلفه React Accordion را برطرف می کند. فقط استفاده از پلتفرم در اینجا به این معنی است که برای افرادی که HTML/CSS می دانند درک کد شما بدون نیاز به یادگیری استفاده از یک کتابخانه خاص آسان تر است. این همچنین به این معنی است که شما در برابر تغییرات در کتابخانه یا توقف فعالیت آن کتابخانه مصون هستید. و البته به این معنی است که کد کمتری برای دانلود و اجرا وجود دارد. عناصر جزئیات انحصاری متقابل برای باز کردن، بستن یا متحرک سازی نیازی به JS ندارند. نحو CSS لایه‌های آبشاری، برای یک پایگاه کد CSS سازمان‌یافته‌تر، تودرتوی CSS، برای CSS فشرده‌تر، توابع رنگ جدید، رنگ‌های نسبی و ترکیب رنگ‌ها، توابع جدید ریاضی مانند abs()، sign()، pow() و موارد دیگر به کاهش وابستگی به پیش‌پردازنده‌های CSS، کتابخانه‌های ابزاری مانند Bootstrap و Tailwind و حتی کتابخانه‌های CSS-JS کمک می‌کنند. تغییر دهنده بازی :has()، یکی از ویژگی های درخواستی برای مدت طولانی، نیاز به راه حل های پیچیده تر مبتنی بر JS را از بین می برد. JS Utilities متدهای آرایه مدرن مانند findLast() یا at()، و همچنین متدهای Set مانند different()، intersection()، union() و سایرین می توانند وابستگی به کتابخانه هایی مانند Lodash را کاهش دهند. پرس و جوهای کانتینر پرس‌وجوهای کانتینر باعث می‌شوند اجزای رابط کاربری به چیزهایی غیر از اندازه ویوپورت پاسخ دهند و بنابراین آنها را در زمینه‌های مختلف قابل استفاده‌تر می‌کنند. دیگر نیازی به استفاده از کتابخانه رابط کاربری JS-heavy برای این کار نیست و همچنین نیازی به استفاده از polyfill نیست. طرح بندی گرید، زیرشبکه، فلکس باکس یا چند ستون مدت‌هاست که وجود داشته‌اند، اما با نگاهی به نتایج بررسی‌های وضعیت CSS، واضح است که توسعه‌دهندگان در اتخاذ چیزهای جدید بسیار محتاط هستند و قبل از انجام آن‌ها برای مدت طولانی منتظر می‌مانند. این ویژگی‌ها برای مدت طولانی پایه بوده‌اند و می‌توانید از آن‌ها برای خلاص شدن از شر وابستگی‌ها به مواردی مانند سیستم شبکه Bootstrap، ابزارهای فلکس‌باکس Foundation Framework، شبکه ثابت Bulma، Materialize grid یا ستون‌های Tailwind استفاده کنید. من نمی گویم باید چارچوب خود را رها کنید. تیم شما آن را به دلایلی پذیرفته است و حذف آن ممکن است پروژه بزرگی باشد. اما نگاه کردن به آنچه که پلتفرم وب می‌تواند بدون پوشش شخص ثالث در بالا ارائه دهد، مزایای زیادی دارد. چیزهایی که ممکن است در آینده نزدیک دیگر به آنها نیاز نداشته باشید اکنون، بیایید نگاهی گذرا به برخی از مواردی که در آینده نزدیک برای آنها نیازی به کتابخانه نخواهید داشت بیندازیم. یعنی موارد زیر کاملاً آماده پذیرش انبوه نیستند، اما آگاهی از آنها و برنامه ریزی برای استفاده احتمالی بعدی می تواند مفید باشد. موقعیت یابی لنگر موقعیت یابی لنگر CSS موقعیت یابی پاپاورها و راهنمای ابزار را نسبت به سایر عناصر کنترل می کند و مراقب نگه داشتن آنها حتی در هنگام حرکت، پیمایش یا تغییر اندازه صفحه است. این یک مکمل عالی برای Popover API است که قبلاً ذکر شد، که خروج از راه‌حل‌های JS با عملکرد فشرده‌تر را آسان‌تر می‌کند. Navigation API Navigation API را می توان برای مدیریت ناوبری در برنامه های تک صفحه ای استفاده کرد و ممکن است مکمل یا حتی جایگزینی برای وظایف React Router، مسیریابی Next.js یا مسیریابی Angular باشد. مشاهده API Transitions View Transitions API می تواند بین حالت های مختلف یک صفحه متحرک شود. در یک برنامه تک صفحه ای، این انتقال صاف بین حالت ها را بسیار آسان می کند و می تواند به شما کمک کند از شر کتابخانه های انیمیشن مانند Anime.js، GSAP یا Motion.dev خلاص شوید. حتی بهتر از آن، API می تواند با برنامه های چند صفحه ای نیز استفاده شود. یادتان هست قبلاً وقتی گفتم دلیل ساخت اپلیکیشن‌های تک صفحه‌ای در شرکتی که 15 سال پیش در آن کار می‌کردیم، جلوگیری از فلش سفید بارگیری مجدد صفحه هنگام پیمایش بود؟ اگر آن API در آن زمان در دسترس بود، می‌توانستیم به جلوه‌های زیبای انتقال صفحه بدون چارچوب تک صفحه‌ای و بدون دانلود اولیه کل برنامه دست پیدا کنیم. انیمیشن های اسکرول محور انیمیشن‌های اسکرول‌محور به‌جای گذشت زمان، در موقعیت اسکرول کاربر اجرا می‌شوند، و آنها را به یک راه‌حل عالی برای داستان‌گویی و تورهای محصول تبدیل می‌کند. برخی از افراد کمی از آن فراتر رفته اند، اما وقتی به خوبی از آن استفاده شود، می تواند یک ابزار طراحی بسیار موثر باشد و می تواند به خلاص شدن از شر کتابخانه هایی مانند: ScrollReveal، GSAP Scroll یاWOW.js. انتخاب های قابل تنظیم یک انتخاب قابل تنظیم یک عنصر <انتخاب> معمولی است که به شما امکان می‌دهد ظاهر و محتوای آن را کاملاً سفارشی کنید، در حالی که از مزایای دسترسی و عملکرد اطمینان حاصل کنید. این مدت طولانی بوده است و یک ویژگی بسیار درخواست شده است، و دیدن آن به زودی به پلتفرم وب شگفت انگیز است. با یک انتخاب داخلی قابل تنظیم، در نهایت می توانید تمام این کد JS را که نگهداری آن سخت است را برای اجزای انتخابی سفارشی خود حذف کنید. سنگ تراشی CSS CSS Masonry یکی دیگر از ویژگی های پلتفرم وب آینده است که می خواهم زمان بیشتری را روی آن صرف کنم. با CSS Masonry، می‌توانید به طرح‌بندی‌هایی دست پیدا کنید که بسیار سخت و یا حتی غیرممکن هستند، با انعطاف‌پذیری، گرید یا دیگر طرح‌های اولیه CSS داخلی. توسعه دهندگان اغلب از کتابخانه های شخص ثالث برای دستیابی به طرح بندی های Masonry مانند کتابخانه Masonry JS استفاده می کنند. اما، در ادامه بیشتر در مورد آن. بیایید این نکته را قبل از رفتن به ماسونری جمع بندی کنیم. چرا شما باید مراقبت بازار کار مملو از توسعه دهندگان وب با تجربه در جاوا اسکریپت و آخرین فریم ورک های روز است. بنابراین، اگر بتوانید همان کارها را با کتابخانه‌ها، ابزارها و چارچوب‌هایی که امروزه می‌شناسید انجام دهید، واقعاً چه فایده‌ای در یادگیری استفاده بیشتر از برنامه‌های اولیه پلتفرم وب دارد؟ وقتی کل صنعت به این چارچوب‌ها متکی است، و شما فقط می‌توانید کتابخانه مناسب را وارد کنید، آیا فروشندگان مرورگر نباید فقط با این کتابخانه‌ها کار کنند تا آنها را سریع‌تر بارگذاری و اجرا کنند، نه اینکه بخواهند توسعه‌دهندگان را متقاعد کنند که از پلتفرم استفاده کنند؟ اول از همه، ما با نویسندگان کتابخانه‌ها کار می‌کنیم، و چارچوب‌ها را با یادگیری مواردی که آنها استفاده می‌کنند و بهبود آن حوزه‌ها، بهتر می‌کنیم. اما در مرحله دوم، "فقط استفاده از پلت فرم" می تواند مزایای بسیار قابل توجهی به همراه داشته باشد. ارسال کد کمتر به دستگاه ها مزیت اصلی این است که در نهایت کد بسیار کمتری را به دستگاه های مشتریان خود ارسال می کنید. طبق وب سالنامه 2024، میانگین تعداد درخواست های HTTP در هر سایت حدود 70 مورد است که بیشتر آنها به دلیل جاوا اسکریپت با 23 درخواست است. در سال 2024، JS از تصاویر به عنوان نوع فایل غالب نیز پیشی گرفت. میانگین تعداد درخواست‌های صفحه برای فایل‌های JS 23 است که از سال 2022 8 درصد افزایش یافته است. و اندازه صفحه سال به سال به رشد خود ادامه می دهد. میانگین وزن صفحه اکنون حدود 2 مگابایت است که 1.8 مگابایت بیشتر از 10 سال پیش است.

مطمئناً، سرعت اتصال به اینترنت شما نیز احتمالاً افزایش یافته است، اما این برای همه صادق نیست. و همه قابلیت‌های دستگاه یکسانی ندارند. در عوض، کشیدن کد شخص ثالث برای کارهایی که می‌توانید با پلتفرم انجام دهید، احتمالاً به این معنی است که کد بیشتری ارسال می‌کنید و بنابراین به مشتریان کمتری نسبت به حالت عادی دسترسی پیدا می‌کنید. در وب، عملکرد بد بارگذاری منجر به نرخ رها شدن زیاد می شود و به شهرت برند لطمه می زند. اجرای کد کمتر روی دستگاه ها علاوه بر این، کدی که بر روی دستگاه‌های مشتریان خود ارسال می‌کنید، اگر از انتزاعات جاوا اسکریپت کمتری در بالای پلتفرم استفاده کند، احتمالاً سریع‌تر اجرا می‌شود. همچنین احتمالاً به طور پیش فرض پاسخگوتر و در دسترس تر است. همه اینها منجر به مشتریان بیشتر و شادتر می شود. وبلاگ شکاف نابرابری عملکرد سالانه همکارم الکس راسل را بررسی کنید، که نشان می دهد دستگاه های ممتاز به دلیل نابرابری ثروت تا حد زیادی در بازارهایی با میلیاردها کاربر غایب هستند. و این شکاف فقط با گذشت زمان در حال افزایش است.

چیدمان بنایی توکار یکی از ویژگی های پلتفرم وب که به زودی ارائه می شود و من از آن بسیار هیجان زده هستم، CSS Masonry است.

اجازه دهید با توضیح اینکه ماسونری چیست شروع کنم. ماسونری چیست سنگ تراشی نوعی چیدمان است که سال ها پیش توسط Pinterest محبوب شد. این آهنگ‌های مستقلی از محتوا ایجاد می‌کند که در آن آیتم‌ها تا جایی که می‌توانند خود را به ابتدای آهنگ نزدیک می‌کنند.

بسیاری از مردم سنگ تراشی را به عنوان یک گزینه عالی برای نمونه کارها و گالری های عکس می بینند که مطمئناً می تواند انجام دهد. اما سنگ تراشی نسبت به آنچه در Pinterest می بینید انعطاف پذیرتر است و فقط به چیدمان های آبشاری محدود نمی شود. در طرح بنایی:

آهنگ ها می توانند ستون یا ردیف باشند:

آهنگ های محتوا نباید همه یک اندازه باشند:

موارد می توانند چندین مسیر را در بر گیرند:

اقلام را می توان در آهنگ های خاص قرار داد. آنها مجبور نیستند همیشه از الگوریتم قرار دادن خودکار پیروی کنند:

دموها در اینجا چند دمو ساده من با استفاده از پیاده سازی آینده CSS Masonry در Chromium ساخته شده است. یک نسخه نمایشی گالری عکس، که نشان می‌دهد چگونه آیتم‌ها (عنوان در این مورد) می‌توانند چندین تراک را پوشش دهند:

گالری عکس دیگری که آهنگ هایی را در اندازه های مختلف نشان می دهد:

طرح‌بندی سایت خبری با برخی از مسیرها عریض‌تر از بقیه، و برخی موارد در کل عرض طرح‌بندی:

یک تابلوی کانبان که نشان می دهد موارد را می توان در مسیرهای خاصی قرار داد:

توجه:نسخه‌های نمایشی قبلی با نسخه‌ای از Chromium ساخته شدند که هنوز برای اکثر کاربران وب در دسترس نیست، زیرا CSS Masonry تازه در مرورگرها پیاده‌سازی شده است. با این حال، توسعه دهندگان وب سال هاست که با خوشحالی از کتابخانه ها برای ایجاد طرح های ماسونری استفاده می کنند. سایت هایی که امروزه از سنگ تراشی استفاده می کنند در واقع، امروزه سنگ تراشی در وب بسیار رایج است. در اینجا چند نمونه وجود دارد که من علاوه بر Pinterest پیدا کردم:

و چند مثال دیگر، کمتر واضح:

بنابراین، این طرح‌بندی‌ها چگونه ایجاد شدند؟ راه حل ها یکی از ترفندهایی که من دیده‌ام استفاده از طرح‌بندی Flexbox به جای آن، تغییر جهت آن به ستون و تنظیم آن به عنوان wrap است. به این ترتیب، می‌توانید آیتم‌هایی با ارتفاع‌های مختلف را در ستون‌های متعدد و مستقل قرار دهید و تصوری از طرح‌بندی سنگ‌تراشی ایجاد کنید:

با این حال، دو محدودیت برای این راه حل وجود دارد:

ترتیب اقلام با چیدمان سنگ تراشی واقعی متفاوت است. با Flexbox، آیتم ها ابتدا ستون اول را پر می کنند و وقتی پر شد، به ستون بعدی می روند. با سنگ تراشی، اقلام در هر مسیر (یا ستون در این مورد) فضای بیشتری در دسترس داشته باشد، روی هم قرار می گیرند. اما همچنین، و شاید مهمتر از آن، این راه حل مستلزم این است که یک ارتفاع ثابت برای ظرف Flexbox تنظیم کنید. در غیر این صورت، هیچ بسته بندی رخ نمی دهد.

کتابخانه های ماسونری شخص ثالث برای موارد پیشرفته تر، توسعه دهندگان از کتابخانه ها استفاده کرده اند. معروف ترین و محبوب ترین کتابخانه برای این کار به سادگی Masonry نام دارد و طبق NPM حدود 200000 بار در هفته دانلود می شود. Squarespace همچنین یک مؤلفه طرح‌بندی را ارائه می‌کند که یک طرح‌بندی Masonry را برای جایگزینی بدون کد ارائه می‌کند، و بسیاری از سایت‌ها از آن استفاده می‌کنند. هر دوی این گزینه ها از کد جاوا اسکریپت برای قرار دادن آیتم ها در طرح بندی استفاده می کنند. سنگ تراشی توکار من واقعاً هیجان زده هستم که Masonry اکنون در مرورگرها به عنوان یک ویژگی داخلی CSS ظاهر می شود. با گذشت زمان، می‌توانید از Masonry درست مانند Grid یا Flexbox استفاده کنید، یعنی بدون نیاز به هیچ راه حل یا کد شخص ثالث. تیم من در مایکروسافت در پروژه منبع باز Chromium، که Edge، Chrome و بسیاری از مرورگرهای دیگر بر اساس آن هستند، پشتیبانی از Masonry داخلی را پیاده سازی کرده است. موزیلا در واقع اولین فروشنده مرورگر بود که اجرای آزمایشی Masonry را در سال 2020 پیشنهاد داد. و اپل نیز علاقه زیادی به ایجاد این طرح‌بندی وب جدید داشته است. کار برای استانداردسازی این ویژگی نیز با توافق در گروه کاری CSS در مورد جهت کلی و حتی یک نمایشگر جدید از نوع نمایشگر: خطوط شبکه، در حال حرکت است. اگر می‌خواهید درباره ماسونری بیشتر بدانید و پیشرفت را دنبال کنید، صفحه منابع CSS Masonry من را بررسی کنید. با گذشت زمان، زمانی که Masonry به یک ویژگی Baseline تبدیل شود، درست مانند Grid یا Flexbox، ما می توانیم به سادگی از آن استفاده کنیم و از مزایای زیر بهره مند شویم:

عملکرد بهتر، پاسخگویی بهتر، سهولت استفاده و کد ساده تر.

بیایید نگاهی دقیق تر به اینها بیندازیم. عملکرد بهتر ساختن سیستم چیدمان ماسونی مانند خود، یا استفاده از کتابخانه شخص ثالث به جای آن، به این معنی است که باید کد جاوا اسکریپت را برای قرار دادن موارد روی صفحه اجرا کنید. این همچنین به این معنی است که این کد مسدود کننده رندر خواهد بود. در واقع، تا زمانی که کد جاوا اسکریپت اجرا نشود، یا چیزی ظاهر نمی‌شود، یا چیزها در مکان‌های مناسب یا اندازه‌های مناسب قرار نخواهند داشت. طرح بندی سنگ تراشی اغلب برای بخش اصلی یک صفحه وب استفاده می شود، به این معنی که کد باعث می شود محتوای اصلی شما دیرتر از آنچه که در غیر این صورت ظاهر می شود ظاهر شود، LCP یا بزرگترین متریک رنگ محتوای شما را کاهش می دهد، که نقش مهمی در عملکرد درک شده و بهینه سازی موتور جستجو دارد. من کتابخانه Masonry JS را با یک چیدمان ساده و با شبیه سازی اتصال کند 4G در DevTools آزمایش کردم. کتابخانه خیلی بزرگ نیست (24 کیلوبایت، 7.8 کیلوبایت gzipped)، اما در شرایط آزمایشی من 600 میلی‌ثانیه طول کشید تا بارگذاری شود. در اینجا یک عملکرد ضبط شده است که زمان بارگذاری طولانی 600 میلی ثانیه برای کتابخانه Masonry را نشان می دهد، و هیچ فعالیت رندر دیگری در حین انجام آن اتفاق نیفتاده است:

علاوه بر این، پس از زمان بارگذاری اولیه، اسکریپت دانلود شده باید تجزیه، کامپایل و سپس اجرا شود. همه اینها، همانطور که قبلا ذکر شد، مسدود کردن رندر صفحه بود. با اجرای Masonry داخلی در مرورگر، اسکریپتی برای بارگیری و اجرا نخواهیم داشت. موتور مرورگر فقط کار خود را در مرحله اولیه رندر صفحه انجام می دهد. پاسخگویی بهتر مشابه زمانی که یک صفحه برای اولین بار بارگذاری می شود، تغییر اندازه پنجره مرورگر منجر به نمایش مجدد طرح بندی در آن صفحه می شود. اما در این مرحله، اگر صفحه از کتابخانه Masonry JS استفاده می کند، نیازی به بارگذاری مجدد اسکریپت نیست، زیرا قبلاًاینجا با این حال، کدی که آیتم‌ها را در مکان‌های مناسب جابه‌جا می‌کند باید اجرا شود. اکنون به نظر می رسد که این کتابخانه خاص در هنگام بارگیری صفحه در انجام این کار بسیار سریع است. با این حال، هنگامی که آیتم ها نیاز به جابجایی به مکان دیگری در تغییر اندازه پنجره دارند، آنها را متحرک می کند و این تفاوت بزرگی ایجاد می کند. البته، کاربران به اندازه ما توسعه دهندگان وقت صرف تغییر اندازه پنجره مرورگر خود نمی کنند. اما این تجربه تغییر اندازه متحرک می تواند بسیار خسته کننده باشد و به زمان درک شده ای که طول می کشد تا صفحه با اندازه جدید خود سازگار شود می افزاید. سهولت استفاده و کد ساده تر اینکه چقدر آسان است از یک ویژگی وب استفاده کنید و کد ساده به نظر می رسد عوامل مهمی هستند که می توانند تفاوت بزرگی برای تیم شما ایجاد کنند. البته، آنها هرگز نمی توانند به اندازه تجربه کاربر نهایی مهم باشند، اما تجربه توسعه دهنده بر قابلیت نگهداری تأثیر می گذارد. استفاده از یک ویژگی وب داخلی دارای مزایای مهمی در این زمینه است:

توسعه دهندگانی که قبلاً HTML، CSS و JS را می‌دانند، به احتمال زیاد می‌توانند از این ویژگی به راحتی استفاده کنند، زیرا به‌خوبی یکپارچه شده و با بقیه پلتفرم‌های وب سازگار است. هیچ خطری برای ایجاد تغییرات در نحوه استفاده از ویژگی وجود ندارد. تقریباً خطر منسوخ شدن یا حفظ نشدن آن ویژگی وجود ندارد.

در مورد Masonry توکار، چون یک چیدمان اولیه است، از CSS استفاده می‌کنید، درست مانند Grid یا Flexbox، بدون JS. همچنین، سایر ویژگی‌های CSS مرتبط با چیدمان، مانند gap، همانطور که انتظار دارید کار می‌کنند. هیچ ترفند یا راه حلی برای دانستن وجود ندارد و چیزهایی که یاد می گیرید در MDN مستند شده است. برای Masonry JS lib، مقداردهی اولیه کمی پیچیده است: به یک ویژگی داده با یک نحو خاص، همراه با عناصر پنهان HTML برای تنظیم اندازه ستون و شکاف نیاز دارد. به‌علاوه، اگر می‌خواهید ستون‌ها را باز کنید، باید اندازه شکاف را خودتان وارد کنید تا از مشکلات جلوگیری کنید:

<سبک> Track-sizer، آیتم { عرض: 20%; } .gutter-sizer { عرض: 1rem; } آیتم { ارتفاع: 100 پیکسل؛ margin-block-end: 1rem; } .item:nth-child(فرد) { ارتفاع: 200 پیکسل؛ } آیتم--width2 { عرض: calc (40٪ + 1rem)؛ }

...

بیایید این را با آنچه که یک پیاده‌سازی توکار بنایی به نظر می‌رسد مقایسه کنیم: <سبک> ظرف { صفحه نمایش: خطوط شبکه. خطوط شبکه: تکرار (4، 20%)؛ فاصله: 1 ريم } آیتم { ارتفاع: 100 پیکسل؛ } .item:nth-child(فرد) { ارتفاع: 200 پیکسل؛ } آیتم--width2 { ستون-شبکه: دهانه 2; }

...

کد ساده‌تر و فشرده‌تر که می‌تواند فقط از مواردی مانند شکاف و جایی که مسیرهای پوشا با دهانه 2 انجام می‌شود، درست مانند شبکه استفاده کند، و نیازی به محاسبه عرض مناسب که شامل اندازه شکاف است را ندارد. چگونه بفهمیم چه چیزی در دسترس است و چه زمانی در دسترس است؟ به طور کلی، سؤال واقعاً این نیست که آیا باید از Masonry داخلی بر روی یک کتابخانه JS استفاده کنید، بلکه سؤال این است که چه زمانی. کتابخانه Masonry JS شگفت‌انگیز است و سال‌ها است که شکافی را در پلتفرم وب و برای بسیاری از توسعه‌دهندگان و کاربران خوشحال پر کرده است. البته اگر آن را با یک پیاده‌سازی توکار بنایی مقایسه کنید، چند اشکال دارد، اما اگر آن پیاده‌سازی آماده نباشد، این اشکال مهم نیستند. فهرست کردن این ویژگی‌های جدید پلت‌فرم وب برای من آسان است زیرا در یک فروشنده مرورگر کار می‌کنم، و بنابراین تمایل دارم بدانم چه چیزی در راه است. اما توسعه دهندگان اغلب نظرسنجی پشت سر هم به اشتراک می گذارند که پیگیری چیزهای جدید سخت است. مطلع ماندن دشوار است و شرکت ها همیشه یادگیری را در اولویت قرار نمی دهند. برای کمک به این امر، در اینجا چند منبع وجود دارد که به‌روزرسانی‌ها را به روش‌های ساده و فشرده ارائه می‌دهند تا بتوانید به سرعت اطلاعات مورد نیاز خود را دریافت کنید:

پلتفرم وب دارای سایت کاوشگر است: ممکن است به صفحه یادداشت های انتشار آن علاقه مند شوید. و اگر RSS را دوست دارید، فید یادداشت‌های انتشار و همچنین فیدهای Baseline New Available و Widely Available را بررسی کنید.

وبداشبورد وضعیت پلتفرم: ممکن است صفحات مختلف سال پایه آن را دوست داشته باشید.

صفحه نقشه راه وضعیت پلتفرم Chrome.

اگر کمی زمان بیشتری دارید، ممکن است به یادداشت‌های انتشار فروشندگان مرورگر نیز علاقه مند شوید:

کروم لبه فایرفاکس سافاری

برای منابع بیشتر، صفحه چیت مرور پلتفرم وب من را بررسی کنید. کار من هنوز اجرا نشده است این طرف دیگر مشکل است. حتی اگر زمان، انرژی و راه‌هایی برای پیگیری پیدا کنید، باز هم از شنیده شدن صدایتان و اجرای ویژگی‌های مورد علاقه‌تان ناامید هستید. شاید سال‌ها منتظر بوده‌اید تا یک باگ خاص برطرف شود، یا یک ویژگی خاص برای ارسال در مرورگری که هنوز وجود ندارد. آنچه من می گویم این است که فروشندگان مرورگر گوش می دهند. من بخشی از چندین تیم بین سازمانی هستم که در آنها همیشه درباره سیگنال‌ها و بازخورد توسعه‌دهندگان بحث می‌کنیم. ما به منابع مختلف بازخورد، هم داخلی در هر فروشنده مرورگر و هم خارجی/عمومی در انجمن‌ها، پروژه‌های منبع باز، وبلاگ‌ها و نظرسنجی‌ها نگاه می‌کنیم. و، ما همیشه در تلاش هستیم تا راه های بهتری برای توسعه دهندگان ایجاد کنیم تا نیازهای خاص خود و موارد استفاده را به اشتراک بگذارند. بنابراین، اگر می توانید، لطفاً از فروشندگان مرورگر مطالب بیشتری بخواهید و ما را برای اجرای ویژگی های مورد نیاز خود تحت فشار قرار دهید. من متوجه شدم که زمان می برد، و همچنین می تواند ترسناک باشد (بدون ذکر یک مانع بالا برای ورود)، اما همچنین کار می کند. در اینجا چند راه وجود دارد که می‌توانید صدای خود (یا شرکتتان) را به گوش دیگران برسانید: در نظرسنجی‌های سالانه وضعیت JS، وضعیت CSS و وضعیت HTML شرکت کنید. آنها نقش مهمی در اولویت بندی کار فروشندگان مرورگر دارند. اگر به یک API مبتنی بر استاندارد خاص نیاز دارید که به طور مداوم در مرورگرها اجرا شود، پیشنهادی را در تکرار پروژه Interop بعدی ارسال کنید. این نیاز به زمان بیشتری دارد، اما در نظر بگیرید که Shopify و RUMvision چگونه لیست های خواسته های خود را برای Interop 2026 به اشتراک گذاشتند. اطلاعات دقیق مانند این می تواند برای اولویت بندی فروشندگان مرورگر بسیار مفید باشد. برای پیوندهای مفیدتر برای تأثیرگذاری بر فروشندگان مرورگر، صفحه چیت مرور پلتفرم وب من را بررسی کنید. نتیجه گیری برای پایان دادن به، امیدوارم این مقاله چند نکته را برای شما در نظر گرفته باشد:

هیجان برای سنگ تراشی و سایر ویژگی های وب آینده. چند ویژگی وب که ممکن است بخواهید شروع به استفاده کنید. ممکن است بتوانید چند قطعه کد سفارشی یا شخص ثالث را به نفع ویژگی‌های داخلی حذف کنید. چند راه برای پیگیری آنچه در راه است و تأثیرگذاری بر فروشندگان مرورگر.

مهمتر از آن، امیدوارم که شما را در مورد مزایای استفاده از پلتفرم وب با پتانسیل کامل آن متقاعد کرده باشم.

You May Also Like

Enjoyed This Article?

Get weekly tips on growing your audience and monetizing your content — straight to your inbox.

No spam. Join 138,000+ creators. Unsubscribe anytime.

Create Your Free Bio Page

Join 138,000+ creators on Seemless.

Get Started Free