برنامه‌نویسی

چرا Laravel بهترین انتخاب برای توسعه‌ی برنامه‌های MVP است؟


۲۴ اسفند ۱۳۹۹
چرا laravel بهترین انتخاب برای توسعه‌ی برنامه‌های mvp است؟

توسعه‌ی برنامه‌های MVP یکی از بهترین راه‌های اعتبارسنجی پروژه‌های استارتاپی است بنابراین انتخاب ابزارهای مناسب برای ارائه سریع‌تر محصول به بازار اهمیت زیادی دارد. حال در ادامه‌ی این مقاله می‌خواهیم به قابلیت‌هایی از فریم‌ورک Laravel بپردازیم که روند توسعه‌ی برنامه‌های MVP را آسان می‌کند.

احراز هویت

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

همان‌طور که می‌دانید دریافت جزئیات مربوط به کاربری که در حال حاضر با حساب خود وارد سایت شده است می‌تواند بسیار پیچیده باشد اما انجام این کار در فریم‌ورک Laravel به‌سادگی زیر است:

$user = Auth::user();

علاوه‌براین‌ها با استفاده از Socialite می‌تواند قابلیت ورود با استفاده از دیگر شبکه‌های اجتماعی مانند Google، Facebook، Twitter و GitHub را به سایت خود اضافه کنید.

routing ساده

سیستم routing فریم‌ورک Laravel بسیار ساده است. تمام routeهای وبسایت را می‌توانید در فایل web.php تعریف کنید و اگر به توسعه‌ی API علاقه‌مند باشید می‌توانید از api.php برای تعریف routeها استفاده کنید.

گروه‌بندی routeها یک قابلیت بسیار مفید در فریم‌ورک Laravel است. سناریویی را فرض کنید که می‌خواهید routeهای خاصی فقط برای کاربران وارد شده‌ به سایت در دسترس باشد. به‌جای تعریف جداگانه هر کدام از routeها و بررسی اطلاعات کاربر می‌توانید این سناریو را به‌راحتی با استفاده از یک middleware با نام auth و گروه‌بندی routeها پیاده‌سازی کنید:

Route::group(['middleware' => 'auth'], function () {
    Route::get('/settings', function ()    {
        // Uses Auth Middleware
    });
    Route::get('/profile', function () {
        // Uses Auth Middleware
    });
});

Eloquent ORM

Laravel ORM (Object Relational Mapping) که آن را Eloquent می‌نامند، بسیار قدرتمند است. Eloquent به شما در سهولت استفاده از دیتابیس کمک می‌کند. فرض کنید که می‌خواهید بر اساس معماری MVC این فریم‌ورک، تمام فاکتورها را از یک model با نام Invoice دریافت کنید:

$invoices = Invoice::all();

انجام این کار به سادگی مثال فوق است. همچنین با استفاده از query builder می‌توانید کوئری‌های پیچیده‌تری را اجرا کنید:

$invoices = Invoice::where('active', 1)
               ->orderBy('total')
               ->take(10)
               ->get();

رابط query builder بسیار ساده است بنابراین می‌توانید بدون داشتن دانش زیادی از SQL به استفاده از این قابلیت ادامه دهید. در مثال فوق، تمام فاکتورهای فعال را فیلتر می‌کنیم، در مرحله‌ی بعد ترتیب تمام داده‌های به‌دست آمده را براساس مقدار کل تعیین می‌کنیم و با take(10) مشخص می‌کنیم که ده رکورد پایانی را می‌خواهیم تا درنهایت با استفاده از get()، مقادیر مورد نظر در صورت وجود در اختیار ما قرار بگیرند.

Laravel Collection یکی دیگر از ویژگی‌های خارق‌العاده این فریم‌ورک است که می‌توانید بیشتر درباره‌ی آن مطالعه کنید اما به‌طور کلی این قابلیت به سهولت کار با داده‌های array کمک می‌کند و هنگامی که به‌همراه Eloquent از آن استفاده کنید، بسیار مفید خواهد بود.

فرض کنید که فقط به فاکتورهای پرداخت نشده نیاز دارید:

$activeInvoices = $invoices->reject(function ($invoice) {
    return $invoice->paid;
});

همان‌طور که قبل‌تر گفتیم، یادگیری Eloquent بسیار ساده است بنابراین برای توسعه‌ی برنامه‌های MVP دیگر نیازی به تمرکز بر روی SQL نخواهید داشت.

Blade templating engine

Laravel به شما امکان می‌دهد تا view برنامه‌ی خود را بسیار سریع و کارآمد، بدون درگیری با پیچیدگی‌های موجود با استفاده از Blade templating engine ایجاد کنید. فرض کنید که می‌خواهید پیامی متفاوت را برای کاربری مهمان و کاربرانی که با حساب خود وارد سایت شده‌‌اند، نمایش دهید:

@auth
    <p>Welcome to the dashboard!</p>
@endauth

@guest
    <p>Please sign in</p>
@endguest

علاوه‌براین با استفاده از Blade می‌توانید حلقه‌ها را به‌راحتی پیاده‌سازی کنید:

@foreach ($invoices as $invoice)
    <p>Invoice number {{ $invoice->id }}</p>
@endforeach

شاید بخواهید یک پیام خاص را در زمانی که هیچ مقداری در array نیست در صفحه چاپ کنید:

@forelse ($invoices as $invoice)
    <li>{{ $invoice->title }}</li>
@empty
    <p>No invoices yet!</p>
@endforelse

Blade به ما اجازه می‌دهد تا اجزایی با قابلیت استفاده‌ی مجدد و قابل گسترش را توسعه دهیم بنابراین Blade templating engine ابزار بسیار مناسبی برای توسعه‌ی سریع‌تر viewهای برنامه‌ی شما خواهد بود.

e-mail integration سریع

مبحث e-mail integration هنگام ساخت برنامه‌های MVP به‌خصوص اگر محصول نهایی، SaaS باشد بسیار اهمیت پیدا می‌کند. Laravel یک email API ساده برای ارسال ایمیل به کمک درایورهای آماده Mailgun، Postmark، Amazon SES یا سرورهای SMTP سفارشی ارائه می‌دهد.

برای شروع بایستی پیکربندی‌های مورد نیاز را انجام دهید. علاوه‌براین شما می‌توانید برای آزمایش سرویس ایمیل خود از Mailtrap استفاده کنید. در ادامه بایستی به قابلیت Mailable اشاره داشته باشیم که به ما امکان می‌دهد هر نوع ایمیلی که قصد داریم از آن در برنامه استفاده کنیم را از قبل تعریف کنیم:

php artisan make:mail InvoicePaid

ما می‌خواهیم یک نوع ایمیل را تعریف کنیم که پس از پرداخت فاکتور توسط کاربر، یک پیام تشکر برای پرداخت کننده ارسال کند. قابلیت Mailable از یک interface ساده برخوردار است. پس از اجرای دستور فوق یک class با نام InvoicePaid در برنامه ایجاد می‌شود که با تعریف فانکشن build به شکل زیر می‌توانیم آن را پیکربندی کنیم:

/**
 * Build the message.
 *
 * @return $this
 */
public function build()
{
    return $this->from('example@example.com')
                ->view('emails.invoice.paid')
		->attach('/path/to/file');
}

بنابراین پس از هر بار پرداخت فاکتور، Laravel یک ایمیل را با template و پیوست آن از آدرس ایمیل تعریف شده به کاربر ارسال می‌کند. هر زمان که بخواهیم این نوع ایمیل را ارسال کنیم فقط کافی است که از طریق Controller این کار را انجام دهیم:

Mail::to($email)->send(new InvoicePaid);

این‌ها فقط بخش کوچکی از قابلیت‌های این فریم‌ورک در مبحث e-mail integration برای برنامه‌های MVP هستند.

Sanctum

بعضی مواقع می‌خواهیم برنامه‌های خود را به‌صورت SPA (Single Page Application) توسعه دهیم بنابراین توسعه‌ی API برای پیاده‌سازی منطق برنامه ضروری است و رایج‌ترین مشکل در توسعه‌ی برنامه‌های SPA ساخت سیستم احراز هویت مبتنی بر token است.

خوشبختانه پکیج Sanctum می‌تواند در پیاده‌سازی یک سیستم احراز هویت بسیار سبک برای برنامه‌های SPA و اپلیکیشن‌های موبایل به ما کمک کند. این پکیج یک راه حل ساده برای تایید اعتبار کاربران بدون نیاز به token ارائه می‌دهد و به‌جای آن از احراز هویت session که مبتنی بر cookieها است، استفاده می‌کند.

این اساسا به این معنا است که شما می‌توانید از سیستم احراز هویت Laravel برای احراز هویت کاربران برنامه‌های SPA استفاده کنید. به این صورت درگیر پیچیدگی‌هایی مانند ذخیره و تازه‌سازی tokenها نخواهید شد.

اکوسیستم فعال

اکوسیستم فریم‌ورک Laravel را می‌توان یکی از غنی‌ترین اکوسیستم‌های فریم‌ورک‌های محبوب حال حاضر دانست. بسیار از پکیج‌ها و ابزارهای رسمی به توسعه‌دهندگان این امکان را می‌دهند که در هنگام ساخت محصول فقط بر روی موارد مهم تمرکز داشته باشند و به‌این شکل زمان بسیار زیادی صرفه‌جویی می‌شود. برخی از پکیج‌ها و ابزارهای محبوب این فریم‌ورک در لیست زیر آورده شده:

  • Cashier: امکان استفاده از درگاه پرداخت Stripe به‌راحتی در اختیار شما قرار داده می‌شود.
  • Socialite: احراز هویت کاربران با استفاده از شبکه‌های اجتماعی و وبسایت‌های مختلف
  • Dusk: ابزاری با هدف سهولت Debug کردن برنامه
  • Echo: رویدادهای realtime
  • Scout: جستجوی متنی در برنامه

این فریم‌ورک با وجود پکیج‌ها و ابزارهای مختلف توانسته بسیاری از قابلیت‌های مورد نیاز برنامه‌های وب را پوشش دهد.

مستندات و جامعه‌ی کاربری

مستندات موجود در وبسایت Laravel را می‌توان از بهترین‌ مستندات موجود در میان زبان‌ها و یا فریم‌ورک‌های محبوب دانست زیرا شرح هر یک از جنبه‌ها و ویژگی‌های این فریم‌ورک به‌همراه مثال در مستندات وجود دارد و این مستندات به‌طور مداوم به‌روز می‌شوند.

جامعه‌ی کاربری Laravel هر روزه در حال گسترش و بزرگ‌تر شدن است زیرا در حال حاضر، Laravel بهترین فریم‌ورک توسعه داده شده با زبان PHP است. مشکل‌های زیادی در انجمن‌های مختلف رفع شده است و هرجایی که با مشکل روبرو شدید می‌توانید از پتانسیل‌های این جامعه‌ی کاربری استفاده کرده و کمک بگیرید.

منبع: https://hackernoon.com/why-laravel-is-a-great-choice-for-mvp-bg35336r