این مقاله خلاصه ایست از قسمت ۲۴ پادکست Laravel Snippet، که در آن آقای Taylor Otwell - خالق Laravel - وعده ی مجموعه ای از پادکست ها، درباره ی پکیج های لاراول را می دهد. در قسمت ۲۴ آقای Otwell به سه پکیج Fortify
، Jetstream
و Breeze
می پردازد؛ این که چه سلسله اتفاقاتی منجر به توسعه ی این پکیج ها شده و چه شرایطی بر لاراول حاکم بوده است.
ابتدای ماجرا به نسخه ۵.۲ از لاراول بر می گردد، که دستور php artisan make:auth
معرفی شد. این دستور قابلیت های مربوط به ثبت نام، ورود، تغییر رمز عبور و موارد مشابه را، همراه با view های آن ها، ایجاد می کرد. هدف از این دستور، دادن این امکان به توسعه دهندگان وب بود، که سریع و به راحتی برنامه هایشان را راه اندازی کنند.
از زمان انتشار دستور make:auth
بر سر این موضوع بحث بوده که برای استفاده از لاراول باید از vueJS
استفاده کنید. اما باید به این نکته توجه داشت که این امکان، کاملا اختیاری بوده و برای استفاده از لاراول، نیازی به استفاده از vueJS
نبوده و نیست.
در مجموع این دستور از محبوبیت خوبی در جامعه توسعه دهندگان برخوردار بوده است. اما در راستای رفع بحث های پیرامون آن، Otwell این قابلیت را از فریمورک اصلی جدا می کند و آن را به صورت یک پکیج جدا (Laravel/ui
) معرفی می کند تا این شبهه، که هرگونه وابستگی بین لاراول و vueJS
وجود دارد، رفع شود. در واقع هیچ تغییری در عملکرد و نحوه ی کارکرد این قابلیت داده نشد و به گفته ی Otwell این کار تنها جنبه ی آموزشی و نمادین داشته است.
Otwell در این پادکست بیان میکند که پس از شروع پروژه ی Laravel Vapor
و حتی قبل از آن، این موضوع که حتی خود او، خالق لاراول، از قابلیت احراز هویت Laravel/ui
استفاده نمی کند، او را اذیت می کند. او همچنین دلیل استفاده نکردن از احراز هویت آماده ی لاراول را این گونه بیان می کند که او فکر می کند این قابلیت به اندازه کافی خوب نیست و به همین دلیل در یک اپلیکیشن واقعی از آن استفاده نمی کند. در نتیجه او تصمیم می گیرد تا قابلیت احراز هویت آماده ی لاراول را دوباره از نو، به گونه ای بنویسد که خود او نیز برای پروژه های واقعی از آن استفاده کند. در اولین قدم قسمت backend و frontend را از هم جدا می کند و برای هر کدام پکیج جداگانه ای اختصاص می دهد. این گونه هر کسی می تواند frontend پروژه اش را با ابزاری که دوست دارد پیاده سازی کند.
Otwell در ابتدا توسعه ی قسمت backend را در پکیج Fortify
شروع کرده و در آن backend تمام قابلیت های ثبت نام، ورود و تغییر رمز را که قبلا وجود داشت، پیاده سازی کرده است. در واقع این پکیج، یک سری مسیر api در اختیار شما قرار می دهد و به طور کامل از frontend مستقل است. همچنین او در این پکیج، این قابلیت را به شما می دهد تا تنظیمات چگونگی فرایند احراز هویت را کنترل کنید و آن را شخصی سازی کنید.
پس از اینکه Otwell پکیج Fortify
را به اتمام رساند، شروع به توسعه ی پکیج دیگری با نام Jetstream
کرد که از این api های موجود استفاده کند و frontend پروژه را برای احراز هویت در بر بگیرد. با تجربه ای که Otwell در توسعه ی Laravel Vapor
، از استفاده از Tailwind
به جای Bootstrap
داشت و مزیت هایی مثل تغییر راحت تر رابط کاربری آن، تصمیم گرفت که در Jetstream
نیز از Tailwind
استفاده کند. Otwell می گوید، دستور make:auth
قبلی لاراول دو گزینه ی blade
و vueJS
را در اختیار توسعه دهنده می گذاشت که گزینه ی blade
، از blade
برای view ها استفاده می کرد و گزینه vueJS
ساختاری را پیاده سازی می کرد که به گفته ی Otwell هیچ توسعه دهنده ی vueJS
ای از آن استفاده نمی کند و خود او نیز آن را نمی پسندد.
Otwell می گوید از زمانی که دستور make:auth
منتشر شد (۲۰۱۶) تا سال ۲۰۲۰، ابزارهایی در اکوسیستم لاراول منتشر شده که ساخت اپلیکیشن های تعاملی با لاراول را، بدون نیاز به ساخت یک SPA
کامل، بسیار راحت و سریع تر کرده اند. او از دو مورد از این ابزار ها در Jetstream
استفاده کرده است؛ Laravel Livewire
و Laravel Inertia
. استفاده از این ابزار ها برای حفظ گزینه های blade
و vueJS
بوده است.
Otwell علاوه بر قابلیت های قبلی، امکاناتی مثل احراز هویت دو مرحله ای، تغییر رمزعبور و پاک کردن حساب کاربری برای کاربران را به Jetstream
اضافه کرده است. همچنین این قابلیت در Jetstream
وجود دارد که شما امکاناتی را که نمی خواهید، غیر فعال کنید.
پس از انتشار این دو پکیج، جامعه ی توسعه دهندگان بازخوردهای متفاوتی نشان دادند. برخی عاشق این پکیج ها شدند و برای برخی، این سبک پیاده سازی پیچیده و برای استفاده سخت بود. Otwell می گوید، Jetsream
واقعا کمی پیچیده تر است؛ چون به گونه ای نوشته شده که در پروژه های جدی مورد استفاده قرار بگیرد. همچنین او اضافه می کند که اکثر توسعه دهنده ها با bootstrap
راحت تر هستند و استفاده از Tailwind
در این پکیج، کار آن ها را سخت تر می کند. Otwell می گوید خود او نیز در سال های گذشته برای پروژه های خود از bootstrap استفاده می کرده است. اما بسیاری از قول هایی که bootstrap داده ، دروغ است. برای مثال یکی از این دروغ ها این است که اپلیکیشن شما صرفا چون از bootstarp
استفاده کرده اید، responsive
می شود. در نهایت او تصمیم می گیرد از Tailwind
استفاده کند چون در آن، رفع مشکلات responsive
بودن بسیار راحت تر است.
Otwell می گوید بسیاری از توسعه دهنده ها راحتی Laravel/ui
را دوست داشتند و او تا به امروز نیز درگیر این بحث با توسعه دهنده هاست که آیا این پکیج های جدید مناسب تر هستند؟ او دوباره یادآور می شود که لاراول یک فریمورک برای php است و استفاده از Jetstream
برای رابط کاربری کاملا اختیاری است و لاراول شما را ملزم به استفاده از هیچ ابزاری مربوط به frontend نمی کند.
در راستای این بحث Otwell پکیج دیگری را بر مبنای Laravel/ui
قدیمی با نام Breeze
توسعه می دهد. این پکیج تنها تفاوت اصلی اش با پدر خود استفاده از Tailwind
است و تفاوت های دیگر، جزیی اند. او برای تازه واردان به فریمورک لاراول، استفاده از این پکیج را توصیه می کند زیرا توسعه دهنده، نیازی به درگیر شدن با ابزارهای دیگری به غیر از لاراول، ندارد. اما همچنان او توصیه می کند که پس از اینکه توسعه دهنده به فریمورک لاراول و روند احراز هویت مسلط تر شد، به استفاده از پکیج هایی مثل Jetstream
روی بیاورد، زیرا که در بلند مدت این ابزار راحتی هایی را به همراه می آورند.
در آخر Otwell به ما وعده می دهد که در قسمت بعدی این پادکست، در مورد پکیج های دیگر مرتبط با احراز هویت مثل Sanctum
و Passport
صحبت کند.
امیدوارم که این مطلب برای شما مفید بوده باشد. منتظر آموزش استفاده از این پکیج ها در سکان آکادمی باشید.