واکنشپذیری بدون DOM مجازی در نمونه نسخههای بتای cample.js
سلام! در این مقاله کوتاه، من می خواهم نظرات خود را در مورد واکنش پذیری بدون DOM مجازی به اشتراک بگذارم.
من فکر می کنم که این یک فناوری بسیار امیدوارکننده است که به شما امکان می دهد تا بدون مقایسه عناصر گره، UI را در سریع ترین زمان ممکن دوباره ترسیم کنید. در هسته خود، DOM مجازی شامل یک فرآیند مقایسه است، که به JS کمک می کند تا بفهمد چه زمانی یک گره را به روز کند و چه زمانی نه.
این یک فناوری خوب است و در اولین نسخه های بتا cample.js به طور خاص پیاده سازی شده بود، اما در طول توسعه متوجه شدم که DOM مجازی دارای یک اثر جمعی این کار طراحی مجدد را کند می کند، زیرا شما باید اشیاء بزرگی را ذخیره کنید که DOM یا خود گره ها را توصیف می کنند.
if(isDeepEqualNode(this._dynamic.oldNode, e)){
...redraw
}
کد نمونه نسخه 2.0.0-beta.2
من ممکن است تجربه زیادی نداشته باشم، اما فکر می کنم این به نظر من است، این چنین است.
من فکر میکنم که میتوان شی گره یک عنصر را تا حد امکان فشرده کرد تا Virtual DOM سریعتر اجرا شود، اما همچنان اساس مقایسه شی را ترک کند. و این پایه محدودیت سرعت دارد.
اما، با این وجود، DOM مجازی بسیار راحت است، به خصوص هنگام کار با درون یابی رشته ای. این کار درون یابی جدید اضافه شده در DOM را پیگیری می کند، که به UI اجازه می دهد دوباره ترسیم شود و در نتیجه توسعه آسان تر شود.
<div>{{dynamicData}}</div>
مثال درون یابی رشته ای
همچنین در reactivity بدون DOM مجازی یک مشکل و فرصت بزرگ وجود دارد، زیرا در اصل رندر یک بار اتفاق می افتد.
class Component{
render(){
render();
...do a render once and work with the first nodes
}
}
کد نمونه نسخه 2.0.0-beta.3
بنابراین، امکان رندر مجدد با درون یابی رشته ای از بین می رود، که جالب نیست.
بنابراین، یک مزیت بزرگ در کار با Virtual DOM وجود دارد، و با توجه به اینکه Virtual DOM هنوز هم میتواند واقعاً، اگر سریعتر نباشد، تقریباً از نظر سرعت برابر باشد، پس از قبل یک فرآیند انتخاب در هنگام توسعه یک چارچوب وجود دارد.
بله، می توانید سعی کنید عناصر جدیدی را به آرایه گره های رندر اول اضافه کنید، اما پس از آن نظارت بر تغییرات در DOM ضروری می شود، که باز هم عمدتاً منجر به ایجاد Virtual DOM می شود.
و این، به نظر من، منهای بزرگی از فناوری طراحی مجدد بدون DOM مجازی است.
به طور خلاصه، من فکر می کنم که هر فناوری جوانب مثبت و منفی خود را دارد. بله، پردازش بدون Virtual DOM سریعتر است، اما اشکالاتی دارد که در بالا توضیح دادم. در اینجا نقش بزرگی توسط پروژه ای ایفا می شود که تحت آن کار با این یا آن ابزار در حال انجام است.
PS از همه شما برای خواندن متشکرم! شاید من چیز زیادی نمی دانم، اما فکر می کنم که این افکار ممکن است جایی داشته باشند. و شما چه فکر میکنید؟