پروژه Node.js VS Laravel

مهمترین سوالی که ممکن است با آن مواجه شد این است که: چرا شخصی ممکن است از Laravel به عنوان backend برای ساخت اپلیکیشن تک صفحه ای استفاده کند، حال آنکه می تواند از Node.js استفاده کند.

مزایای Node.js

Node.js به عنوان SPA backend مزایایی دارد:

 استفاده از یک زبان (JavaScript) در پروژه، کدنویسی را ساده تر می کند.
 امکان به اشتراک گذاری کد بین frontend و backend اپلیکیشن شما وجود دارد و آن را متناظر و مشابه می سازد.
 امکان render کردن را در سمت سرور فراهم می کند. به این خاطر، کاربر سریع تر می تواند صفحه را ببیند. (هرچند تلاش هایی برای دستیابی به این نتیجه از طریق PHP/JS extentions انجام شده است، در حال حاضر، این امر با SPA framework هایی مانند Vue ممکن نیست. اگر هم شدنی باشد، نتیجه آهسته تر است.)
 یک I/O غیر بلاک کننده دارد و در اداره درخواست های همزمان مناسبتر است. (PHP اکنون قادر به این کار هست، هرچند آهسته تر)

مقید به PHP

با توجه به همه موارد بالا، شما ممکن است به خاطر مقید بودن، از PHP برای SPA backend استفاده کنید و در بدترین شرایط نیز از Laravel به عنوان بهترین گزینه انتخاب کنید.
شما ممکن است به دلایل زیر مقید به PHP باشید:

 توانایی و صلاحیت اصلی شما و تیم تان PHP است و تمایلی به سمت full JS ندارید.
 زیرساخت و پایه کد شما بر مبنای PHP است که به سادگی نمی توانید آن را تغییر دهید.
 مشتریان شما به هر دلیلی بر استفاده از PHP اصرار ورزند.

این ها دلایل خوبی برای استفاده از PHP است، هرچند قانع کننده نیستند.

دلایل برتری Laravel برای یک SPA backend

بیشتر برنامه نویسان عملکرد و ویژگی را از مزایای یک framework می دانند. زمانی که عملکرد و ویژگی به اندازه کافی بود، سهولت ساخت و نگهداری اهمیت بیشتری دارد.
شعار Laravel مبنی بر خوشحال کردن برنامه نویسان است. دلیل عمده ای که کاربران تمایل به استفاده از Laravel دارند، تحقق بخشیدن این امر است. ساده بودن Laravel کاربران را تحت تأثیر قرار می دهد.

Framework های شی گرا قوی و قدرتمند هستند

JavaScript هرچند زبان شی گرا نیست، انواع و class هایی دارد. اگرچه، PHP و Laravel تا حد زیادی از الگوهای طراحی شی گرا استفاده می کنند.

TL؛ DR

اگر قصد ساخت اپلیکیشن real-time را برای هزاران کاربر به صورت همزمان دارید، یا اگر render کردن سمت سرور موضوعی حیاتی است، قطعاً Node.js انتخاب درستی است. اما در خصوص اینکه آیا Laravel توان مقابله با Node به عنوان یک SPA backend را دارد یا خیر، باید گفت بله، از آنجاییکه Laravel:

 یک framework ساده است که ساخت و نگهداری را به کاری ساده تبدیل می کند.
 با استفاده از ویژگی های قوی طراحی شی گرا کمک به ساخت backend ساختاریافته می کند.

با نگاه به چند ورژن آخر منتشر شده Laravel ، می توان دید که تولیدکنندگان آن قصد مرتبط و مناسب ساختن Laravel را در دنیای SPA ها دارند.

جایگزین های render کردن سرور

یک ایراد کوچک واردشده به Laravel این است که render کردن SPA سمت سرور اختیاری و به انتخاب نیست. به عنوان مثال، Vue.js تنها با Node.js می تواند SSR را پشتیبانی کند.
اگرچه، گزینه مناسب دیگر برای SSR امکان pre-rendering است. بدین صورت که قبل از deploy کردن اپلیکیشن، آن را run می کنید، خروجی صفحه را ضبط کرده و آن را جایگزین فایل های HTML کنید. این مفهومی مشابه SSR است به استثنای اینکه به جای سرور live در محیط ساخت شما به صورت pre-deployment انجام می شود. با وجود اخطارهای خاص، این شیوه ممکن است راهکاری مناسب و کافی برای SPA شما باشد.

 

منبع