DOM مجازی یک گلوله نقره ای نیست

برای مدت طولانی تعجب می کردم ، چه جادویی در پشت DOM مجازی بود. من چیزهای زیادی در مورد چگونگی تقویت عملکرد عملکرد شنیده ام اما هرگز دقیقاً درک نکرده ام. بنابراین تصمیم گرفتم که بالاخره آن را برای خودم بفهمم.
DOM مجازی یک لایه انتزاع بین DOM واقعی و حالت برنامه را معرفی می کند. این تکنیک های بهینه سازی رندر را ارائه می دهد: در حالی که کل شیء DOM Tree را در حافظه ذخیره می کند ، حالت جدید را با عکس فوری قبلی مقایسه می کند و برخی از به روزرسانی های دسته ای کارآمد UI را انجام می دهد. در آن زمان یک تغییر دهنده بازی واقعی بود ، وقتی چارچوب های JavaScript با طراحی آن بسیار کند و پیچیده بودند. مجازی DOM با استفاده از همه سردردها و انجام آن به روشی “هوشمند” ، رویکرد به روزرسانی های DOM را متحول کرد.
اما قدرت اصلی DOM مجازی ، توانایی اعلامیه ایجاد رابط های پویا بدون نگرانی در مورد روش های بهینه ارائه مجدد است. فریم های مدرن Spa-FrameWorks رویکرد برنامه های ساختمانی را از یک JSON خاص که به طور رسمی نمایانگر وضعیت برنامه است ، پیاده سازی می کنند. در نتیجه ، دیگر نیازی به فکر کردن در مورد چگونگی به روزرسانی های بصری نیست: Framework این کار را به تنهایی انجام می دهد هر زمان که JSON تغییر کند ، همگام سازی DOM مجازی با DOM واقعی. به روزرسانی های اتوماتیک HTML در مورد تغییرات حالت بسیار مفید است ، به خصوص در برنامه های بزرگ و پیچیده جلو: به روزرسانی DOM به صورت دستی یک صعود از صعود واقعی خواهد بود و کل روند توسعه را طولانی تر می کند. بنابراین این جایی است که دامنه مجازی واقعاً می درخشد.
با محبوبیت روزافزون چارچوب هایی مانند React و Vue ، اسطوره شروع به گسترش کرد که DOM مجازی ، گلوله نقره ای نهایی برای ارائه رعد و برق است ، زیرا این امر به نوعی بازسازی کنندگان واقعی DOM را بهبود می بخشد ، اما درست نیست. واقعیت این است که DOM مجازی سریعتر از DOM واقعی نیستبشر همانطور که در بالا به آن اشاره کردم ، این فناوری فقط یک انتزاع است که بسیاری از مشکلات ارائه دهنده پیچیده را در برنامه های جلویی در مقیاس بزرگ جذب می کند. به عبارت دیگر ، DOM مجازی مشکل ردیابی تغییر را به جای مشکل عملکرد حل می کند. این بدان معناست که اگر شما نیاز به ساختن یک پروژه کوچک ساده یا فقط یک صفحه فرود استاتیک بدون به روزرسانی های زیادی دارید ، از استفاده از DOM مجازی بهره مند نخواهید شد. علاوه بر این ، استفاده از آن به سادگی سربار خواهد بود ، زیرا این یک فرآیند آشتی غیر ضروری را انجام می دهد که دلالت بر استفاده از الگوریتم متفاوت است ، و در نتیجه پیچیدگی محاسباتی و افزایش مصرف حافظه ، به ویژه برای اسناد بزرگ انجام می شود. در این مقاله می توانید برخی از نمونه های معیار از DOM مجازی و جوانب مثبت و منفی آن را در مقایسه با Real DOM پیدا کنید.
بنابراین اگر شما نیاز به کنترل تعداد محدودی از دستکاری های DOM دارید ، فقط این کار را به صورت دستی انجام دهید – این یک علم موشک نیست. علاوه بر این ، کتابخانه ها و چارچوب های زیادی وجود دارد که رویکرد DOM مجازی را رد می کنند و به جای آن برخی از دستکاری های مستقیم را انجام می دهند. محبوب ترین آنها SVELTE ، SOLID و LITHTML است. اما به خاطر داشته باشید که برای کاربردهای واقعاً پیچیده ، مشکلی در استفاده از راه حل هایی که از DOM مجازی استفاده می کنند وجود ندارد ، زیرا مطمئناً زمان توسعه زیادی را صرفه جویی می کند.
این مقاله از وب سایت شخصی من به اینجا منتقل شد