برنامه جدیدی را باید توسعه میدادم که براش تصمیم گرفتم روش جدیدی را تست کنم.
اول باید بگیم headless cms چیست؟ شما نمیخواید کل چرخ را از اول اختراع کنید وقتی cms میتونه مدیریت محتوا را به عهده بگیره داشبورد مدیریت محتوا به مدیر بده و مدیریت کاربر بکنه چرا باید چرخ را از اول اختراع کنم؟
اما اگر میخوام از cms استفاده کنم دیگه headless ش نمنه؟ ماجرا اینجاست که خیلی از اوقات cms انعطاف کافی را برای پروژه بهتون نمیده و توسعه را سخت میکنه اما یک راهکار اینه که بک اند را بسپارم دست cms و فرانت را خودم بزنم. پس به این cms ای که فرانت نداره و فقط بک اند داره میگن headless cms البته میشه برخی از cms های معروف مثل wordpress را هم به صورت headless استفاده کرد!
من اینبار رفتم سراغ یک پروژه جالب و جدید به نام strapi که یکی از معروفترین headless cmsهای nodejs ای هست. ساختار محتواش را خودتان ایجاد میکنید و بعد توی ساختار محتواش مطلب میریزید. خیلی شیرین و خوشمزه!
برای من اولین تجربه بود graphql به نوعی جایگزین rest میشود به جای اینکه برای هر چیزی که میخواید یک rest api بنویسید یک QUERY گراف کیو ال مینویسید و توش هر چیزی که میخواید را میپرسید! نتیجه خیلی بهتره
خب میخواستم فرانت را با REACT بزنم قبلا هم زده بودم ولی توی مستندات strapi به gatsbyرسیدم! وقتی خوندم خیلی جذاب شد. همه صفحات موقع buildساخته میشن که سرعت به شدت بالا می ره برای سایتهایی که محتوای داینامیک ندارن عالیه با کلی نکات مثبت دیگه
یه مشکل! همه ی صفحات با gatsby build از strapi گرفته میشه و buildمیشه خب حالا میخوایم جستجو کنیم چیکار کنیم؟ graphql فقط توی مرحله build به کار اومد؟ یه راهکار این بود که با استفاده از پلاگین gatsby-plugin-local-search به صورت local روی همین فایلها سرچ کنیم بعد این جستجو کلاینت ساید بود و ایندکس باید سمت کاربر دانلود میشد که برای یک سایت سنگین فاجعه است و نقض غرض میشه که!
پس رسیدیم به Typesense که باید روی سرورت نصبش کنی و سایتت را ایندکس کنی خودش بقیه کارها را هندل میکنه
برای من این پروژه خیلی یادگیری داشت و جذاب بود