داستان سه پکیج Fortify، Jetstream و Breeze از زبان Taylor Otwell، خالق Laravel

داستان سه پکیج Fortify، Jetstream و Breeze از زبان Taylor Otwell، خالق Laravel

این مقاله خلاصه ایست از قسمت ۲۴ پادکست 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 صحبت کند.

امیدوارم که این مطلب برای شما مفید بوده باشد. منتظر آموزش استفاده از این پکیج ها در سکان آکادمی باشید.

نظرات
اگر login نکردی برامون ایمیلت رو بنویس: