حدود 15 سال پیش، من در شرکتی کار میکردم که در آن اپلیکیشنهایی را برای آژانسهای مسافرتی، کارکنان فرودگاه و شرکتهای هواپیمایی ساختیم. ما همچنین چارچوب داخلی خود را برای اجزای رابط کاربری و قابلیتهای اپلیکیشن تک صفحهای ساختیم. ما اجزایی برای همه چیز داشتیم: فیلدها، دکمهها، برگهها، محدودهها، جدولهای داده، منوها، انتخابگرها، انتخابها و انتخابهای چندگانه. ما حتی یک کامپوننت div داشتیم. کامپوننت div ما به هر حال عالی بود، به ما اجازه میداد تا گوشههای گرد را روی همه مرورگرها انجام دهیم، که چه باور کنید چه نه، در آن زمان کار آسانی نبود.
کار ما در نقطهای از تاریخ ما اتفاق افتاد که JS، Ajax و HTML پویا بهعنوان انقلابی در نظر گرفته شدند که ما را به آینده آورد. ناگهان، میتوانیم صفحهای را بهصورت پویا بهروزرسانی کنیم، دادهها را از یک سرور دریافت کنیم و از رفتن به صفحات دیگر اجتناب کنیم، که کند دیده میشد و یک مستطیل سفید بزرگ روی صفحه بین دو صفحه چشمک زد. عبارتی وجود داشت که توسط جف آتوود (بنیانگذار StackOverflow) محبوب شد که چنین بود: "هر برنامه ای که می تواند با جاوا اسکریپت نوشته شود، در نهایت با جاوا اسکریپت نوشته می شود." - جف اتوود
برای ما در آن زمان، این یک جرات بود که واقعاً برویم و آن برنامه ها را ایجاد کنیم. انجام همه کارها با JS مانند یک تایید کلی بود. بنابراین ما همه کارها را با JS انجام دادیم و واقعاً برای تحقیق در مورد روشهای دیگر انجام کارها وقت صرف نکردیم. ما واقعاً انگیزه ای برای یادگیری درست کارهایی که HTML و CSS می توانند انجام دهند احساس نکردیم. ما واقعاً وب را به عنوان یک پلتفرم برنامه در حال تکامل به طور کامل درک نکردیم. ما بیشتر آن را به عنوان چیزی می دیدیم که باید در اطراف آن کار کنیم، مخصوصاً وقتی صحبت از پشتیبانی مرورگر می شد. ما فقط میتوانیم JS بیشتری را برای انجام کارها به سمت آن پرتاب کنیم. آیا وقت گذاشتن برای کسب اطلاعات بیشتر در مورد نحوه عملکرد وب و آنچه در پلتفرم موجود بود به من کمک می کرد؟ مطمئناً، من احتمالاً می توانستم یک سری کد را که واقعاً مورد نیاز نبودند، تراشیده باشم. اما، در آن زمان، شاید نه چندان. ببینید، تفاوت های مرورگر در آن زمان بسیار قابل توجه بود. این زمانی بود که اینترنت اکسپلورر هنوز مرورگر غالب بود و فایرفاکس در رتبه دوم قرار داشت، اما به دلیل محبوبیت سریع کروم، شروع به از دست دادن سهم بازار خود کرد. اگرچه کروم و فایرفاکس در توافق بر روی استانداردهای وب بسیار خوب بودند، اما محیطی که برنامه های ما در آن اجرا می شدند به این معنی بود که ما مجبور بودیم برای مدت طولانی از IE6 پشتیبانی کنیم. حتی زمانی که ما مجاز به پشتیبانی از IE8 بودیم، باز هم مجبور بودیم با تفاوت های زیادی بین مرورگرها دست و پنجه نرم کنیم. نه تنها این، بلکه وب آن زمان آنچنان قابلیتها را مستقیماً در پلتفرم تعبیه کرده بود.
سریع به جلو به امروز. اوضاع به شدت تغییر کرده است. ما نه تنها بیش از هر زمان دیگری از این قابلیت ها داریم، بلکه سرعت در دسترس شدن آنها نیز افزایش یافته است. اجازه دهید دوباره این سوال را بپرسم: آیا وقت صرف کردن برای یادگیری بیشتر در مورد نحوه عملکرد وب و آنچه در پلتفرم موجود است امروز به شما کمک می کند؟ کاملاً بله. یادگیری درک و استفاده از پلتفرم وب امروز شما را در مزیت بزرگی نسبت به سایر توسعه دهندگان قرار می دهد. چه روی عملکرد، دسترسی، پاسخگویی، همه آنها با هم کار کنید یا فقط ویژگی های رابط کاربری را ارسال کنید، اگر می خواهید به عنوان یک مهندس مسئول این کار را انجام دهید، دانستن ابزارهایی که در دسترس شما هستند به شما کمک می کند سریعتر و بهتر به اهداف خود برسید. برخی از چیزهایی که ممکن است دیگر برای آنها به کتابخانه نیاز نداشته باشید با دانستن اینکه امروزه از چه مرورگرهایی پشتیبانی میکنند، سؤال این است: چه چیزی را میتوانیم حذف کنیم؟ آیا برای انجام گوشه های گرد در سال 2025 به کامپوننت div نیاز داریم؟ البته، ما نداریم. ویژگی border-radius در این مرحله بیش از 15 سال است که توسط همه مرورگرهای مورد استفاده فعلی پشتیبانی می شود. و گوشهشکل نیز به زودی در راه است، حتی برای گوشههای جذابتر. بیایید نگاهی به ویژگیهای نسبتاً اخیری بیندازیم که اکنون در همه مرورگرهای اصلی موجود است و میتوانید از آنها برای جایگزینی وابستگیهای موجود در پایگاه کد خود استفاده کنید. نکته این نیست که فوراً تمام کتابخانه های مورد علاقه خود را کنار بگذارید و پایگاه کد خود را بازنویسی کنید. در مورد هر چیز دیگری، ابتدا باید پشتیبانی مرورگر را در نظر بگیرید و بر اساس سایر عوامل خاص پروژه خود تصمیم بگیرید. ویژگیهای زیر در سه موتور اصلی مرورگر (Chromium، WebKit و Gecko) پیادهسازی میشوند، اما ممکن است نیازهای مختلف پشتیبانی مرورگر داشته باشید که نتوانید فوراً از آنها استفاده کنید. با این حال، اکنون هنوز زمان خوبی برای یادگیری در مورد این ویژگی ها است، و شاید برنامه ریزی برای استفاده از آنها در مقطعی داشته باشید. پاپاورها و دیالوگ ها Popover API، عنصر
مطمئناً، سرعت اتصال به اینترنت شما نیز احتمالاً افزایش یافته است، اما این برای همه صادق نیست. و همه قابلیتهای دستگاه یکسانی ندارند. در عوض، کشیدن کد شخص ثالث برای کارهایی که میتوانید با پلتفرم انجام دهید، احتمالاً به این معنی است که کد بیشتری ارسال میکنید و بنابراین به مشتریان کمتری نسبت به حالت عادی دسترسی پیدا میکنید. در وب، عملکرد بد بارگذاری منجر به نرخ رها شدن زیاد می شود و به شهرت برند لطمه می زند. اجرای کد کمتر روی دستگاه ها علاوه بر این، کدی که بر روی دستگاههای مشتریان خود ارسال میکنید، اگر از انتزاعات جاوا اسکریپت کمتری در بالای پلتفرم استفاده کند، احتمالاً سریعتر اجرا میشود. همچنین احتمالاً به طور پیش فرض پاسخگوتر و در دسترس تر است. همه اینها منجر به مشتریان بیشتر و شادتر می شود. وبلاگ شکاف نابرابری عملکرد سالانه همکارم الکس راسل را بررسی کنید، که نشان می دهد دستگاه های ممتاز به دلیل نابرابری ثروت تا حد زیادی در بازارهایی با میلیاردها کاربر غایب هستند. و این شکاف فقط با گذشت زمان در حال افزایش است.
چیدمان بنایی توکار یکی از ویژگی های پلتفرم وب که به زودی ارائه می شود و من از آن بسیار هیجان زده هستم، 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 به اشتراک گذاشتند. اطلاعات دقیق مانند این می تواند برای اولویت بندی فروشندگان مرورگر بسیار مفید باشد. برای پیوندهای مفیدتر برای تأثیرگذاری بر فروشندگان مرورگر، صفحه چیت مرور پلتفرم وب من را بررسی کنید. نتیجه گیری برای پایان دادن به، امیدوارم این مقاله چند نکته را برای شما در نظر گرفته باشد:
هیجان برای سنگ تراشی و سایر ویژگی های وب آینده. چند ویژگی وب که ممکن است بخواهید شروع به استفاده کنید. ممکن است بتوانید چند قطعه کد سفارشی یا شخص ثالث را به نفع ویژگیهای داخلی حذف کنید. چند راه برای پیگیری آنچه در راه است و تأثیرگذاری بر فروشندگان مرورگر.
مهمتر از آن، امیدوارم که شما را در مورد مزایای استفاده از پلتفرم وب با پتانسیل کامل آن متقاعد کرده باشم.