Blink چیست؟

یکی از قدرت‌های ویژه وب، قابلیت ترکیب‌پذیری آن است. صفحات وب شامل منابع متنوعی هستند که احتمالاً از چندین منبع سرچشمه می‌گیرند.

بلینک به عنوان موتور رندر برای مرورگرهای مبتنی بر کرومیوم ، از جمله کروم، اندروید وب‌ویو، مایکروسافت اج، اپرا و بریو عمل می‌کند.

موتور رندرینگ ، بخشی از یک مرورگر وب است که کدهای HTML، CSS و جاوا اسکریپت - به همراه تصاویر و سایر منابع - را به صفحات وبی تبدیل می‌کند که می‌توانید آنها را مشاهده و با آنها تعامل داشته باشید.

بلینک فرآیند رندرینگ را با جمع‌آوری تمام منابع لازم مانند HTML، CSS، جاوا اسکریپت، ویدیوها و تصاویر آغاز می‌کند. برای بازیابی این منابع، بلینک تعاملات با پشته شبکه، در کرومیوم و سیستم عامل اصلی را مدیریت می‌کند.

به محض اینکه CSS و HTML بارگذاری شوند، Blink می‌تواند آن کد را به شکل متن، به نمایشی که بتواند با آن کار کند تبدیل کند. به این کار تجزیه (parsing ) می‌گویند. جاوا اسکریپت نیز باید تجزیه و سپس اجرا شود.

وقتی همه این کارها انجام شد، Blink شروع به رندر کردن می‌کند. رندر کردن، کار طرح‌بندی و نمایش صفحات وبی است که شما مشاهده می‌کنید و با آنها تعامل دارید.

نمودار زیر مراحل مختلف وظایف رندرینگ، شامل اجزا، فرآیندها و منابع درگیر در هر یک را نشان می‌دهد. Blink کارهای زیادی برای انجام دادن دارد!

خط لوله رندر چشمک زن، با فلش‌هایی که پیشرفت در مراحل را نشان می‌دهند.
خط لوله رندرینگ Blink دارای بارگذاری منابع، APIهای اسکریپت و تجزیه HTML/CSS است. این فرآیند از طریق چندین مرحله به سمت ترسیم پیکسل‌ها روی صفحه پیش می‌رود.

رندر گرافیک

بلینک از موتور گرافیکی متن‌باز Skia برای تعامل با سخت‌افزار گرافیکی زیربنایی یک کامپیوتر یا دستگاه تلفن همراه استفاده می‌کند.

Skia رابط‌های برنامه‌نویسی کاربردی (API) رایجی ارائه می‌دهد که در پلتفرم‌های سخت‌افزاری و نرم‌افزاری متنوعی کار می‌کنند. این پلتفرم به عنوان موتور گرافیکی گوگل کروم و بسیاری از محصولات دیگر عمل می‌کند.

اسکیا به جای تلاش برای پشتیبانی از سیستم عامل‌ها و دستگاه‌های مختلف، ضمن همگام شدن با تغییرات پلتفرم، از کتابخانه‌های گرافیکی شامل OpenGL ، Vulkan و DirectX استفاده می‌کند. کتابخانه‌ای که اسکیا استفاده می‌کند به پلتفرمی که روی آن اجرا می‌شود بستگی دارد، مانند اندروید در موبایل یا ویندوز در دسکتاپ.

تجزیه و اجرای جاوا اسکریپت

برای تجزیه و اجرای کد جاوا اسکریپت و WebAssembly، Blink از V8 ، یک موتور متن‌باز توسعه‌یافته توسط پروژه‌های Chromium ، استفاده می‌کند.

V8 به توسعه‌دهنده این امکان را می‌دهد که با استفاده از کد جاوااسکریپت یا WebAssembly به قابلیت‌های مرورگر اصلی دسترسی پیدا کند. برای مثال: دستکاری مدل شیء سند (Document Object Model)، که نمایش داخلی سندی است که Blink از کد HTML می‌سازد.

V8 جاوا اسکریپت را مطابق با استاندارد جاوا اسکریپت، که با نام ECMAScript شناخته می‌شود، پردازش می‌کند.

رندر مطابق استانداردها

موتور V8 جاوا اسکریپت را مطابق با استاندارد جاوا اسکریپت، که با نام ECMAScript شناخته می‌شود، پردازش می‌کند. موتورهای رندرینگ مانند Blink برای پیاده‌سازی استانداردهای وب به صورت تعاملی طراحی شده‌اند. استانداردهای وب به توسعه‌دهندگان و کاربران نهایی این امکان را می‌دهند که مطمئن باشند صفحات وب به خوبی کار می‌کنند، صرف نظر از اینکه از چه مرورگری استفاده می‌کنند.

بلینک از مشخصات مرورگر و ویژگی‌های زبانی تعریف‌شده در استانداردهای وب شامل HTML ، CSS و DOM پیروی می‌کند.

HTML و DOM

استاندارد HTML تعریف می‌کند که مهندسان مرورگر چگونه باید عناصر HTML را پیاده‌سازی کنند. مشخصات هر عنصر HTML شامل بخشی است که رابط DOM را برای آن عنصر تعریف می‌کند. این بخش جزئیات نحوه پیاده‌سازی جاوا اسکریپت توسط مرورگر را شرح می‌دهد تا امکان تعامل با عنصر به روشی استاندارد در بین دستگاه‌ها و پلتفرم‌ها فراهم شود.

مشخصات رابط کاربری با WebIDL :Web Interface Definition Language نوشته شده است. WebIDL زیر بخشی از تعریف استاندارد HTML از عنصر HTMLImageElement است.

[Exposed=Window,
 LegacyFactoryFunction=Image(optional unsigned long width, optional unsigned
long height)]
interface HTMLImageElement : HTMLElement {
 [HTMLConstructor] constructor();

 [CEReactions] attribute DOMString alt;
 [CEReactions] attribute USVString src;
 [CEReactions] attribute USVString srcset;
 [CEReactions] attribute DOMString sizes;
 [CEReactions] attribute DOMString? crossOrigin;
 [CEReactions] attribute DOMString useMap;
 [CEReactions] attribute boolean isMap;
 [CEReactions] attribute unsigned long width;
 [CEReactions] attribute unsigned long height;
 readonly attribute unsigned long naturalWidth;
 readonly attribute unsigned long naturalHeight;
 readonly attribute boolean complete;
 readonly attribute USVString currentSrc;
 [CEReactions] attribute DOMString referrerPolicy;
 [CEReactions] attribute DOMString decoding;
 [CEReactions] attribute DOMString loading;
 [CEReactions] attribute DOMString fetchPriority;

 Promise<undefined> decode();

 // also has obsolete members
};

WebIDL یک روش استاندارد برای توصیف رابط‌های کاربردی است، مانند رابط‌هایی که اکثر استانداردهای وب را تشکیل می‌دهند.

برای پیاده‌سازی یک ویژگی، مهندسان کد WebIDL را در یک فایل قرار می‌دهند و این فایل به طور خودکار توسط Blink تبدیل می‌شود تا رابطی برای آن ویژگی در اختیار توسعه‌دهندگان قرار دهد. پس از تعریف رابط با WebIDL، مهندسان می‌توانند پیاده‌سازی‌هایی را بسازند که به فراخوانی‌های رابط پاسخ می‌دهند.

html_image_element.idl در سورس کرومیوم.

کتابخانه‌های شخص ثالث

Blink از کتابخانه‌های شخص ثالث متعددی استفاده می‌کند. برای مثال، WebGL برای رندر گرافیک‌های دوبعدی و سه‌بعدی تعاملی استفاده می‌شود.

کتابخانه‌های شخص ثالث در سورس کرومیوم - از جمله WebGL که توسط Blink استفاده می‌شود.

کتابخانه‌هایی مانند WebGL بسیار بهینه شده و با دقت آزمایش شده‌اند. آن‌ها به Blink امکان دسترسی به ویژگی‌ها و قابلیت‌های مهم را می‌دهند، بدون اینکه نیازی به اختراع مجدد چرخ باشد. WebGL IDL تعریف شده است و مهندسان Blink آن رابط وب را با کد و کتابخانه‌های موجود در backend که برای رندر عناصر مختلف استفاده می‌شوند، متصل می‌کنند.

اگر می‌خواهید WebGL را در عمل ببینید، برنامه رندر فراکتال Fractious را که از WebGL استفاده می‌کند، بررسی کنید.

Fractious یک نمایشگر مبتنی بر WebGL برای مجموعه Mandelbrot است.
از نسخه آزمایشی Fractious دیدن کنید.

رندرینگ چند پلتفرمی

شاید از خود بپرسید که آیا کروم از Blink در همه جا، روی همه سیستم عامل‌ها و دستگاه‌ها استفاده می‌کند؟

در iOS و iPadOS، کروم از WebKit به عنوان موتور رندر خود استفاده می‌کند. WebKit در واقع انشعابی از پروژه دیگری به نام KDE بود که به سال ۱۹۹۸ برمی‌گردد. در واقع، سافاری و کرومیوم هر دو در ابتدا مبتنی بر WebKit بودند. امروزه، سافاری و همه مرورگرهای موجود در اکوسیستم اپل، طبق الزامات فروشگاه App اپل، از WebKit استفاده می‌کنند.

با گذشت زمان، پروژه‌های کرومیوم معماری نرم‌افزاری چندپردازشی متفاوتی را توسعه دادند، زیرا نگهداری دو معماری جداگانه در یک پایگاه کد مشکل‌ساز شده بود.

علاوه بر این، کرومیوم می‌خواست از ویژگی‌هایی استفاده کند که در وب‌کیت تعبیه نشده بودند. بنابراین، از نسخه ۲۸، مهندسان کرومیوم تصمیم گرفتند کار روی موتور رندر خودشان را آغاز کنند. آن‌ها کد خود را از وب‌کیت کپی کردند و آن را Blink نامیدند. شایعه شده است که نام Blink از تگ (نه چندان) محبوب <blink> گرفته شده است که در مرورگر Netscape Navigator برای چشمک زدن متن وجود داشت.

خلاصه: کروم، مایکروسافت اج، اپرا، ویوالدی، آرک، بریو و دیگر مرورگرها و فریم‌ورک‌های مبتنی بر کرومیوم از Blink استفاده می‌کنند. سافاری و برخی مرورگرهای دیگر، به همراه تمام مرورگرهای iOS و iPadOS از جمله کروم، از WebKit استفاده می‌کنند. فایرفاکس از یک موتور رندر به نام Gecko استفاده می‌کند.