برترین پکیجهای Laravel برای بهینهسازی برنامهها
۷ شهریور ۱۳۹۹
پکیج چیست؟
بهعنوان یک توسعهدهنده PHP، انتظار میرود که با نحوه استفاده از فریمورکها آشنا باشید. فریمورکها با سادهتر کردن شیوههای متداول مورد استفاده در روند توسعه پروژههای بزرگ وب، مانند پکیجها، ماژولها، افزونهها و حتی کامپوننتها، تلاش میکنند فرایند توسعه را آسانتر کنند.
پکیجهای Laravel
Laravel یکی از محبوبترین فریمورکها، برای توسعهی برنامههای تحت وب است. این فریمورک محیط توسعه ساده و سریعی را برای توسعهدهندگان به ارمغان میآورد. Laravel با هدف از بین بردن خستگی در انجام پروژههایی روتین وب مانند پیادهسازی بخش احراز هویت، routing، sessions و caching، فرایند توسعه را سادهتر کرده است. البته باید افزود که Laravel، عملکرد برنامه را قربانی نمیکند و مسیر را برای تعریف عملیاتهای سفارشی سازی شده توسط توسعهدهندگان، آسان کرده است. بهعنوان مثال، میتوانید از روشهای مختلف برای اتصال به دیتابیسهای رابطهای استفاده کنید. همچنین میتوانید تزریق وابستگیها را انجام دهید و موارد بسیار دیگری از طریق پکیجها در اختیار شما قرار میگیرند.
اگر بخواهیم پکیجها را دستهبندی کنیم، دو نوع پکیج وجود دارد. بعضی از آنها بهخودی خود، یک فریمورک مستقل محسوب میشوند (stand-alone) و برخی دیگر فقط برای یک فریمورک خاصی توسعه یافتهاند. در این مقاله سعی داریم، بهترین پکیجهای Laravel را به شما معرفی کنیم.
یکی از مزیتهای مهم استفاده از پکیجهای Laravel این است که اجازه میدهند به تمام ویژگیهای این فریمورک در برنامهتان دسترسی داشته باشید. برای مثال میتوان به routing, migrations, test, view و بسیاری از ویژگیهای مفید دیگر اشاره کرد که میتوانید به آنها دسترسی پیدا کنید. یکی دیگر از مزیتهای مهم این پکیجها، پیروی از اصل DRY (Don’t Repeat Yourself) است.
در ادامه برترین پکیجهای Laravel که باید آنها را بشناسید و یا مرتبا از آنها استفاده کنید را به شما معرفی خواهیم کرد.
فرایند توسعه پکیجهای Laravel
اگر شما میخواهید پکیج خود را توسعه دهید، در هنگام کدنویسی آن باید توجه داشته باشید که بهطور کلی، پکیج شما به قابلیت تست توسط Laravel دسترسی نخواهد داشت و اگر میخواهید برای پکیجتان، تست بنویسید و کارایی آن را در برنامههای واقعی بسنجید، میتوانید از پکیج Orchestral Testbench استفاده کنید.
- Composer.json را برای پکیج جدید پیکربندی کنید.
- Service Provider را اضافه کنید.
- یک Alias برایش قراردهید.
- یک Facade class بسازید.
این چهار مرحله مهم در توسعه پکیج برای Laravel است و برای سرعت بخشیدن به فرایند توسعه باید به این مراحل توجه داشته باشید.
برترین پکیجهای Laravel
پکیجهای زیادی در Laravel وجود دارند که میتوانید با استفاده از آنها، برنامهتان را سریعتر کنید و از ایمنی و عملکرد بهینهشان مطمئن باشید. در ادامه پکیچهای برتر Laravel را معرفی خواهیم کرد که میتوانید در بهینهسازی عملکرد برنامهتان از آنها استفاده کنید.
۱) Spatie
نقشهای کاربری (Roles) و مجوزها (permissions)، بخشهای مهمی از هر برنامه وب هستند. تاریخچه Laravel در این زمینه پکیجهای زیادی به خود دیده است و همچنین کدهای هسته Laravel هم بهبود یافته است. spatie/laravel-permission یکی از بهترین پکیجها در این زمینه است.
مزیتها:
- نقشهای کاربری
- مجوزها
- مجوزهای مستقیم
- Middleware
- دستورالعملهای چندگانه Blade
- دستورهای Artisan
۲) Entrust
این پکیج یک روش انعطافپذیر برای اضافه کردن مجوزهای مبتنی بر نقش کاربری را در برنامههایی که با Laravel 5 توسعه دادهاید، فراهم میآورد. این پکیج چهار جدول میسازد:
- جدول roles برای ذخیره رکوردهای نقشهای کاربری
- جدول permissions برای ذخیره رکوردهای مجوز
- جدول role_user برای ذخیره کردن روابط یک-به-چند، بین نقشهای کاربری و کاربران
- جدول permission_role برای ذخیره روابط چند-به-چند بین نقشهای کاربری و مجوزها
با نوشتن کد زیر میتوانید یک نقش کاربری ایجاد کنید:
$admin = new Role();
$admin->name = 'admin';
$admin->display_name = 'User Administrator'; // optional
$admin->description = 'User is allowed to manage and edit other users'; // optional
$admin->save();
بیایید بررسی کنیم که چگونه نقشها را به کاربران اختصاص دهیم:
user = User::where('username', '=', 'michele')->first();
$user->attachRole($admin);
// Now, you must give permissions to these roles:
$createPost = new Permission();
$createPost->name = 'create-post';
$createPost->display_name = 'Create Posts';
$createPost->description = 'create new blog posts';
$createPost->save();
۳) Laravel Debugbar
Laravel Debugbar یکی از بهترین پکیجهایی Laravel است که به توسعهدهندگان کمک میکند تا نوار ابزار توسعهدهنده را به برنامه خود اضافه کنند. این پکیج عمدتا برای هدف دیباگینگ استفاده میشود. گزینههای زیادی در Debugbar وجود دارد. این پکیج کمک میکند تا تمام کوئریهایی که در برنامهتان اجرا میشوند، نمایش داده شده و همچنین تمام موارد مربوط به Routeهایی که شما به آن متصل شدهاید و قالبهایی که رندر شدهاند هم نمایش داده میشود. علاوهبراینها برای نمایش پارامترهایی هم که ارسال میشوند میتوان از این پکیج کمک گرفت. شما میتوانید با استفاده از Facade، پیامی را اضافه کنید که در بخش پیغامها (Messages) نمایش داده میشود:
Debugbar::info($object);
Debugbar::error('Error!');
Debugbar::warning('Watch out…');
Debugbar::addMessage('Another message', 'mylabel')
۴) Laravel User Verification
این پکیچ به شما امکان میدهد تا عملیات مورد نیاز برای تایید اعتبار کاربر را مدیریت کرده و ایمیلهای کاربران را تایید کنید. کارکرد آن به صورتی است که یک توکن را برای کاربر ثبت نام شده ایجاد و ذخیره میکند، سپس ایمیلی که در آن لینکی برای تایید توکن وجود دارد را به ایمیل کاربر ارسال میکند و حساب کاربر با باز کردن آن لینک تایید میشود. همچنین این پکیج عملکرد اضافهای را هم در اختیار شما قرار میدهد، که میتوانید مسیر middleware را تایید کنید.
public function register(Request $request)
{
$this->validator($request->all())->validate();
$user = $this->create($request->all());
event(new Registered($user));
$this->guard()->login($user);
UserVerification::generate($user);
UserVerification::send($user, 'My Custom E-mail Subject');
return $this->registered($request, $user)
?: redirect($this->redirectPath());
}
۵) Socialite
پکیج Socialite روشی ساده و آسان برای احرازهویت کاربران بهصورت OAuth را ارائه میدهد. اجازه میدهد تا کاربران از طریق برخی از محبوبترین شبکههای اجتماعی و سرویسهایی مانند فیسبوک، توییتر، گوگل، گیتهاب و بیتباکت وارد حساب کاربریشان شوند.
$user = Socialite::driver('github')->user();
// OAuth Two Providers
$token = $user->token;
$refreshToken = $user->refreshToken; // not always provided
$expiresIn = $user->expiresIn;
// All Providers
$user->getId();
$user->getName();
$user->getEmail();
$user->getAvatar();
۶) Laravel Mix
قبلا آن را با نام Laravel Elixir میشناختند. این پکیج یک API (Application Programming Interface) برای طی کردن مراحل webpack-build پروژهتان در اختیار شما قرار میدهد و یکی از قدرتمندترین ابزارهایی است که در Laravel وجود دارد.
mix.js('resources/assets/js/app.js', 'public/js')
.sass('resources/assets/sass/app.scss', 'public/css');
۷) Eloquent-Sluggable
Slugging را میتوان فرایند ایجاد نسخهای ساده و همانند آدرس URL از یک string با تبدیل آن به حروف کوچک یا حروف بزرگ و حذف فاصلهها، حروف برجسته و امپرسندها، دانست. با استفاده از این پکیج میتوانید برای Eloquent modelهای موجود در پروژهتان، Slug بسازید.
class Post extends Eloquent
{
use Sluggable;
protected $fillable = ['title'];
public function sluggable() {
return [
'slug' => [
'source' => ['title']
]
];
}
}
$post = new Post([
'title' => 'My Awesome Blog Post',
]);
// $post->slug is "my-awesome-blog-post
۸) Migration Generator
Migration generator یک پکیج Laravel است که میتوانید از آن برای migration مواردی مانند indexها و foreign keyها از یک دیتابیس موجود استفاده کنید. با اجرای دستور زیر میتوانید برای همه جدولهای موجود در دیتابیس خود migrationهایی ایجاد کنید.
php artisan migrate:generate
همچنین میتوانید فقط جداول خاصی را که میخواهید انتقال دهید، انتخاب کنید:
php artisan migrate:generate table1,table2
۹) Laravel Backup
این پکیج Laravel، یک نسخه پشتیبان از کلیه فایلهای موجود در برنامه شما، ایجاد میکند که یک فایل فشرده است و شامل کلیه فایلهای موجود در دایرکتوریها و یک نسخه dump شده از دیتابیس میشود. میتوانید این بکاپ را در هر سیستم فایلی نگهداری کنید. برای ساخت فایل بکاپ، تمام کاری که شما باید انجام دهید، این است که دستور زیر را اجرا کنید:
php artisan backup:run
۱۰) No Captcha
No Captcha یک پکیج برای پیادهسازی اعتبارسنجی با استفاده از Google reCaptcha و محافظت از فرمها در برابر اسپم است. برای شروع کار با این پکیج، اول از همه باید یک API key از reCaptcha دریافت کنید.
NoCaptcha::shouldReceive('verifyResponse')
->once()
->andReturn(true);
$response = $this->json('POST', '/register', [
'g-recaptcha-response' => '1',
'name' => 'Pardeep',
'email' => 'pardeep@example.com',
'password' => '123456',
'password_confirmation' => '123456',
۱۱) Laravel GraphQL
GraphQL یک زبان کوئری است و بهعنوان جایگزینی برای معماری سنتی یعنی REST APIها شناخته میشود. توسعهدهندگان ساختار دادههای مورد نیاز خود را تعریف کرده و دادههای مورد نیازشان را که ساختاری یکسان با درخواستشان دارد، از سرور دریافت میکنند. این پکیج در پیکربندی و استفاده از GraphQL در برنامههایتان به شما کمک میکند.
سازندههای پنل مدیریت Laravel
دو دسته از سازندههای پنل مدیریت وجود دارند: سازندههای Visual و مبتنی برکنسول. انتخاب شما به اولویتهایتان بستگی دارد. مثلا GUI دوست دارید یا میخواهید از دستورهای Artisan با پارامترهای موجود استفاده کنید.
همچنین یک اصطلاح را در این قسمت باید به شما یادآوری کنیم و آنهم CRUD که مخفف شده عبارتهای “Create, Read, Update, Delete” است. این عملیاتهای اصلی ساختار تمام پنل مدیریت را تشکیل میدهند.
۱۲) Voyager
Voyager دارای یک رابط کاربری مجلل و حرفهای است. دستورالعملهای ساده برای استفاده، طراحی فرانتاند کاربرپسند، بدون باگ و یا قسمتهای ناتمام. Voyager برای شما ساخته شده است. حتی نمادهایی مانند تصویر کاپیتان باعث میشود که زیباتر بهنظر برسد.
Voyager ویژگیهای جالبی مانند دادههای ساختگی، مدیریت رسانه و … را ارائه میدهد.
۱۳) LaraAdmin: Admin Panel + CRM
این پکیج پس از نصب و ورود به صفحه پنل مدیریتی، به شما اجازه میدهد بهصورت بصری، ماژولهایتان را بسازید که از امکانات CRUD است.
۱۴) Orchid
پلتفرم RAD برای ساخت برنامههای تجاریتان توسط فریمورک Laravel مناسب است و میتواند بهعنوان هسته برنامه وب شما استفاده شود و یا عملکردی مانند CMS, CMF یا پنل مدیریت را برای وبسایت شما به ارمغان بیاورد.
پکیجهای تجارت الکترونیک در Laravel
۱۵) Bagisto
Bagisto یک پکیج تجارت الکترونیک متنباز برای Laravel است که در مدت کوتاهی موفق شده است، کاربران Laravel را بهخود جلب کند. این پکیج به شما امکاناتی مانند مدیریت کاربران، مدیریت موجودیهای انبار و بسیاری دیگر از قابلیتها را ارائه میدهد.
۱۶) AvoRed
شما بهراحتی میتوانید با توجه به نیازهای خود، این پکیج متنباز Laravel را سفارشیسازی کنید. علاوهبراینها یک طرح رابط کاربری مناسب با موبایل را بهطور پیشفرض ارائه میدهد، بههمین دلیل نیز بهعنوان یکی از بهترین پکیجهای سئو، شناخته میشود.
این پلتفرم به شما امکان میدهد موجودیتهای محصول مانند دستهبندی، ویژگیها و … را با قابلیتهای مدیریت سفارش برای پیگیری سفارش، اطلاعات مشتری، مدیریت موجودی و موارد اینچنینی، ایجاد کنید.
۱۷) Laravel Telescope
Laravel Telescope را میتوان یک دیباگر PHP برای فریمورک Laravel دانست. زیرا دیدگاهی واضح از درخواستهایی که به برنامه شما وارد میشوند مانند استثنائات، لاگها، کوئریهایی که به دیتابیس ارسال میشوند، کارهایی که در صف انجام قرار گرفتهاند، ایمیلها، اعلانات، عملیات مربوط به cache، کارهای برنامه ریزی شده، گرفتن متغیرها و موارد دیگر را در اختیار شما قرارمیدهد. این پکیج یک محیط شگفتانگیز برای توسعه محلی برنامههای Laravel شما ایجاد میکند.
پکیجهای سئو Laravel
۱۸) Laravel Meta Manager
شما با استفاده از Laravel Meta Manager میتوانید سئو وبسایت خود را بهینه کنید. بدین ترتیب در افزایش رتبه وبسایت شما کمک میکند. با تاکید بر متاتگها در برنامهتان به شما کمک میکند تا مطابق با بهترین شیوههای موجود برای بهینهسازی سئو، وبسایت خود را اصلاح کنید. این پکیج متاتگهایی شامل Standard SEO, Dublin Core, Google Plus, Facebook Open Graph و بسیاری از موارد دیگر را در اختیار شما قرار میدهد.
۱۹) SEOTools
این پکیج بهینهسازی سئو را برای برنامهتان با توجه به آخرین تکنیکهای رتبهبندی موتورهای جستجو، فراهم میکند. فریمورکهای Laravel +5 و Lumen از SEOToools پشتیبانی میکنند. این پکیج بهراحتی با پروژههای شما، یکپارچه میشود زیرا یک رابط کاربرپسند دارد و این به افراد مبتندی نیز کمک میکند تا سرعت کار خود را افزایش دهند، همچنین قابلیتهای مفیدی برای بهینهسازی وبسایت شما ارائه میدهد. علاوهبراینها تکنیکهای خاصی برای تنظیم عناوین و متاتگهایی برای توییتر و Open Graph فراهم میکند.
۲۰) Auto Meta
Auto Meta ابزاری عالی برای بهینهسازی سئو وبسایتهای Laravel است که برخی تکنیکهای رایج سئو را در اختیار توسعهدهنگان قرار میدهد و میتوان آن را یکی از بهترین ابزارهای Laravel دانست که مدیریت تگهای متا را آسان میکند. همچنین این پکیج به رفع برخی از اشکالهای رایج در برنامه کمک کرده و یک کد ساده را برای crawl کردن رباتهای موتور جستجو ایجاد میکند.
۲۱) Laravel Seoable
Laravel Seoable یکی از پرکاربردترین پکیجهای سئو برای پروژههای Laravel است که تکنیکهای مناسب سئو را ارائه میدهد و باعث پیشرفت رتبهبندی برنامهتان در موتورهای جستجو میشود. همچنین باید افزود که برخی عملکردها را طبق بهترین شیوههای سئو در هسته اصلی Laravel تعریف میکند. مانند mapping Eloquent attributes به متاتگها، تنظیم قالب سفارشیسازی شده برای عنوان و توضیحهای موجود در صفحه، تعریف دادههای سفارشی سازی شده SEO، برای application models.
۲۲) Laravel-seo
Laravel-seo یکی دیگر از پکیجهای SEO است که به شما امکان میدهد متاتگهای وبسایت را به آسانی اضافه، مدیریت و حذف کنید. با استفاده از این پکیج، میتوانید دادههای قاعدهمند را به پروژهای Laravel وارد کرده و برخی از پرکاربردترین متاتگهای SEO مانند Facebook Open Graph, Dublin Core و سایر موارد اینچنینی را مدیریت کنید.
جمعبندی پایانی
تابهاینجا پکیجهای مختلفی را که برای بهینهسازی پروژه Laravel استفاده میشوند، معرفی کردهایم. Laravel، اجرای عملیات سفارشی سازی شده توسط توسعهدهندگان را آسان کرده است و با استفاده از پکیجها بهراحتی میتوانید این کارها را انجام دهید. البته اینها بستگی به نیازها و وابستگیهای پروژهتان دارد تا بتوانید پکیجهای مورد نیازتان را انتخاب کنید.
توسعهدهندگان دربارهی ما چه میگویند
تجربه کار باliara_cloud@امروز خیلی خوب بود. یکی از سرویس هام رو منتقل کردم روش و راضیم. انقد سریع و جذاب کارم راه افتادم اصن باورم نمیشد! برعکس سرویس های PaaS دیگه با اون همه پیچیدگیشون. دمتون گرم
...
MohammadReza
keikaavousi
بعد از بسته شدن @fandoghpaas و ناراحتی همهمون از اینکه یه سرویس خوب و صادق نمیتونه از پس هزینهها بر بیاد، سرویسم رو منتقل کردم به پاس لیارا (https://liara.ir @liara_cloud) . تجربه راحت و خوب. تفاوتهایی داشت که کمی کار میخواست ولی تا الان کاملا راضی.
jadi
jadi
یه خسته نباشید باید به تصمیمliara_cloud@بگم،
بعد از چندین روز سرکله زدن با سرویس های مشابه بالاخره تصمیم گرفتم لیارا رو امتحان کنم و باور نمیشه ۱۰ دقیقه بیشتر وقت نبرد،
دمتون گرم.
Arch
EbadiDev
واسه سرویس PaaS با اختلاف لیارا بهترین رابط کاربری داره و یکی از مزیتهای سرویس دیتابیسشون اینه که خودشون به صورت دورهای بکآپ میگیرن.
...
Ali Najafi
me_ali_najafi
یکی از کارهای خوبی که جدیداً میکنم اینه که یه دیتابیس روی لیارا میسازم و به پروژه وصل میکنم اینطوری هم خونه و هم محل کار دیتابیس بروز رو دارم و راحت میتونم ادامه بدم کار روliara_cloud@
Navid
1navid
عاشقliara_cloud@شدم درسته در حد AWS نیست ولی خب تجربه خوبی واسه پروژه های داخل ایران ارائه میده، میتونم رو CD هم اجراش کنم
Amir H Shekari
vanenshi