سلام به همه، این اولین مقاله ی منه و سعی دارم به زبان خودمونی و ساده این معماری رو توضیح بدم، خوشحال میشم نظراتتون رو برای بهتر شدن کارم بدونم.
خب قبل از اینکه در مورد این معماری صحبت کنیم بیاید ببینیم اصن چرا باید بریم سمتش. خیلی خلاصه بخوام بگم این معماری اومده که نقض های Server Side Rendering (ssr) رو حل کنه .
خب همونطور که میدونید این روش میاد صفحه ی html رو سمت سرور generate میکنه و اون رو به همراه javascript مورد نیازش به کلاینت میفرسته تا اونجا hydrate بشه. یعنی این html خشکی که داریم رو بشه باهاش تعامل کرد.مشکلی که اینجا هست اینه که این فرآیند hydrate برای ما یه هزینه ای داره: کاربر نمیتونه با صفحه تعامل داشته باشه تا وقتی که کل js لود و hydrate بشه. اگر این عملیات زمان زیادی طول بکشه، از دید کاربر دکمه ها کار نمیکنن و ui فریز شده (uncanny valley). اگر با next کار کرده باشین احتمالا این مورد رو زیاد تجربه کردین.
خب 18 react و next خودشون اومدن دوتا راه برای این مشکل دادن:
خب این دو تا راه خیلی از مشکلات ssr رو حل کردن اما با این حال بازم حجم js که در نهایت لود میشه هیچ تغییری نمیکنه. در صورتی که خیلی از قسمت های سایت ممکنه اصلا نیازی به js نداشته باشن.
اینجاست که معماری Island Architecture راه حل میده.
به زبان ساده بخوایم بگیم این معماری حرفش اینه : کل html رو استاتیک جنریت میکنه، یعنی دقیقا با صفر کیلوبایت js و داخل این html یه سری placeholder در نظر میگیره برای بخش هایی از سایت که اینتراکشن دارن و نیازه هیدریت بشن.یعنی درواقع میاد تیکه های سایت رو به دو بخش دسته بندی میکنه : بخش های استاتیک و بخش های داینامیک.
بزارین چنتا مثال بزنم:
به بیان دقیق تر این معماری برروی ساخت سایت های استاتیکی که چانک های کوچک js برای تعامل کاربر دارند تمرکز داره.
اگر یه فریم وورک بخواد این معماری رو ساپورت کنه باید دارای سه شرط باشه:
چند مثال:
این معماری مزایای زیادی رو به دنیای وب اضافه میکنه مزایایی مثل:
اما با وجود تمام این خوبی ها این معماری یه نقطه ضعف داره، اگر تعاملات کاربر با بخش های زیادی از سایت باشه -یعنی میزان جاوااسکریپت سایت تو بخش های مختلف اونقدر زیاد باشه که چیزی از بخش های استاتیک نمونه- در اون صورت این معماری عملکرد خوبی نخواهد داشت و شاید استفاده از next گزینه ی خیلی بهتری باشه.همچنین این معماری نسبتا جدیده و شاید نیاز به کار داشته باشه.
در نتیجه هنوز گزینه ی بهتر یا بدتر وجود نداره، ssr و island architecture هردو مزایا و معایب خودشون رو دارن که باید در حین انتخابشون اون ها رو در نظر گرفت.
در این مقاله سعی کردم به صورت ساده در مورد این معماری صحبت کنم، تو مقاله ی بعدی میخوام یکی از فریم وورک هایی که بهش اشاره شد رو باز کنم و بیشتر در موردش توضیح بدم.
همچنین اگر سوالی داشتید میتونید با ایمیل (r.heydarii98@gmail.com) در ارتباط باشیم. ممنون از همراهیتون