جنگو یا لاراول؟ با وجود محبوبیت و افزایش تقاضا در توسعه تلفنهمراه، توسعه وب بسیار مورد توجه قرار گرفته است. در همین راستا، فناوریها بهسرعت درحال پیشرفت هستند. محبوبیت فضایی جاوا اسکریپت، گزینههای متنوعی را برای توسعهدهندگان ارائه داده است. بهویژه با ظهور مفاهیم جدید در توسعه مانند اپلیکیشنهای وب پیشرفته، صفحات موبایل شتابدهنده و برنامههای تک صفحه! با این حال همه چیز بیش از پیش پیچیدهتر شده است. بهخصوص برای توسعهدهندگان جوانی که تازه شروع بهکار میکنند.
عواملی مانند تعداد زیاد فناوریهای موجود برای انتخاب کاربران، عملکردهای مختلف آنها، تفاوت در هر یک از آنها، همهی اینها باعث ایجاد سردرگمی و ترس برای شروع آموزش و یادگیری میشود. همچنین این حقیقت را هم در نظر داشته باشید که هیچ برنامهای بهاصطلاح مقدس در توسعه وب وجود ندارد. یعنی یک راهحل برای همه مناسب نیست.
بههمین دلیل در این مقاله سعی میکنیم این موضوع را تا حد ممکن واضح و ساده بیان کنیم. دو فریمورک رایج در دنیای توسعه وب، جنگو و لاراول هستند. هر دو فریمورکهای بکاند وب هستند.
اما قبل از شروع معرفی آنها و بررسی تفاوتهایشان، مفهوم فریمورک (Framework) را توضیح میدهیم.
فریمورک یا Framework چیست؟
فریمورکها انتزاعات (abstraction) نرمافزاری هستند. انتزاعها مفاهیم اصلی، بدون پیچیدگی و جزئیات هستند. در واقع نهتنها در زمینه نرمافزار بلکه با انتزاعات در زندگی روزمره خود نیز سروکار داریم.
بهعنوان مثال: فرض کنید میخواهید با اتومبیل خود رانندگی کنید. برای این کار، نیازی به فهم ترمودینامیک موتور و چرخههای انرژی داخل یا حتی مکانیکهای پیچیده خودرو ندارید. تنها کاری که باید انجام دهید؛ فقط باید فرمان را هدایت کنید.
استفاده از چنین انتزاعهایی در نرمافزار به توسعهدهندگان تازهکار کمک میکند تا سریع وارد این مسیر شوند. آنها از ابزارهای عمومی ایجادشده توسط توسعهدهندگان حرفهای برای نیازهای خود استفاده میکنند. بنابراین مجبور به ایجاد دوباره آنها در تک تک عملکردهای خود نیستند.
دو انتزاع نرمافزاری معروف
دو اصطلاح کتابخانه و فریمورک شاید بسیار مشابه به نظر برسند اما کاملا متفاوت هستند. کتابخانهها مجموعهای از متدها و کلاسها هستند که عملکرد خاصی را ایجاد میکنند. در صورتی که مناسب با نیاز و کار شما باشد، میتوانید از آنها استفاده کنید. فقط یک روش هم برای استفاده از آن وجود ندارد. از طرف دیگر، فریمورکها ساختارهای صلبتری هستند که به عنوان اسکلت برنامه عمل میکنند.
فریمورکها زحمت توسعه زیرساختهای سطح پایین را از روی دوش شما برمیدارند. بکارگیری منطق تجاری برنامه، منجر به ایجاد یک برنامه کاربردیتر و حرفهایتر میشود.
دو دسته فریمورک در توسعه وب وجود دارد:
فریمورکهای فرانتاند
فریمورکهای فرانتاند مشکلات توسعه سمت کلاینت را حل میکنند. عمدتا بر CSS یا JavaScript تمرکز دارند. امروزه استفاده از فریمورکهای جاوا اسکریپت مانند Vue.JS و Angular برای توسعه برنامههای وب متداول است. کتابخانه React (+) نیز تا حد زیادی به عنوان یک فریمورک فرانتاند جاوااسکریپتی استفاده و در سالهای اخیر بسیار محبوب شده است.
لازم به ذکر است که پیش از این آموزش فرانت اند در همرویش منتشر شد. علاقمندان فیلم معرفی این آموزش را در زیر مشاهده کنند:
برای دریافت بسته کامل آموزش فرانت اند کلیک کنید(+).
فریمورکهای بکاند
فریمورکهای بکاند وظیفه پیادهسازی منطق سمت سرور را برعهده دارند. همان جادویی که باعث عملکرد وبسایت یا یک وباپلیکیشن میشود. چگونگی برخورد با دادهها، ذخیره دادهها، چگونگی مدیریت پاسخها و غیره! چندین عملکرد اصلی فریمورکهای بکاند، که توسعهدهندگان باید بدانند را در ادامه معرفی میکنیم.
Routing (مسیریابی):
هنگامی که سرور شما درخواستی دریافت میکند، به یک منبع خاص یا یک عمل خاص اجازه میدهد تا آن را مدیریت کند. اگر mywebsite/product مشاهده کنید، کنترلر محصولات باید با منابع مناسب و غیره پاسخ دهد.
Templating:
فرض کنیم از فریمورکهای سمت کلاینت مانند Angular و Vue.JS استفاده نمیکنید. بنابراین باید Views (ویوها) را ایجاد کرده و آنها را با داده پر کنید. View در واقع صفحهای است بر پایه HTML که کاربر بر روی مرورگر خود میبیند. این صفحه در واقع دادههای منتقلشده توسط کنترلر (که از دیتابیس معمولا خوانده میشود) را بهصورت پویا در صفحه قرار میدهد.
توجه داشته باشید که بسیاری از ساختارهای طراحی دیگری وجود دارند که هر کدام روش خاصی برای کار با ویو و دادههای خود دارند.
ORM:
اصطلاح ORM مخفف نگاشت رابطهای شی است. لایهای میان مدل (Model) و پایگاه داده است. ORM به زبان ساده یعنی به جای نوشتن دستورات خام SQL از زبان برنامه نویسی فریمورک مورد استفاده، برای ارتباط با پایگاه داده استفاده کنید. مثلا کد پایتون بزنید و بعد فریمورک شما آن را به دستورات SQL تبدیل کند.
از ویژگیهای دیگری نیز که وجود دارد میتوان به: امنیت، ذخیرهسازی، scaffold و ایجاد منابع و غیره اشاره کرد.
جنگو چیست ؟
جنگو فریمورک مدل ویو تمپلت یا MVT و مبتنیبر پایتون است. Django یک فریمورک منبع باز و رایگان است. این فریمورک باعث افزایش سرعت فرآیند توسعه میشود. همچنین به توسعهدهندگان در نوشتن کد تمیز و کارآمدتری کمک میکند. جنگو فریمورک قدرتمندی است. برخی از بزرگترین شرکتهای جهان بهعنوان زیرساختهای بکاند از جنگو استفاده میکنند. شرکتهایی مانند: Pinterest ، Udemy ، NASA و Instagram.
هم رویش منتشر کرده است:
آموزش جنگو Django - طراحی وب سایت با پایتون
laravel چیست ؟
لاراول فریمورک MVC یا مدل ویو کنترلر است که مبتنیبر PHP است. Laravel یکی از معروفترین زبانهای وب است. لاراول هم فریمورک قدرتمندی است. لاراول توسط 9GAG ، UNION ، Toyota Hall of Fame استفاده میشود.
مقایسه جنگو و لاراول
در ادامه، جنگو و لاراول را بر اساس معیارهای زیر مقایسه میکنیم.
1- کد
نمونهای از کد routing که در هر دو فریمورک نوشته شدهاند را در زیر آوردهایم. در نگاه اول، متوجه میشوید که کد لاراول کاملاً بصری است. از طرف دیگر، کد جنگو بسیار پیچیده بهنظر میرسد. زیرا از regular expressions در فرآیند مسیریابی خود استفاده میکند. استفاده از آنها بهویژه برای مبتدیان، کار سادهای نیست.
مثال: اعلانهای مسیر صفحه به هر دو زبان:
<? php Route:get('/', function() { return view('posts.index'); }); Route:get('/posts/create', function() { return view('posts.create'); }); ?>
urlptterns = [
#ex: /polls/
path('', view.index, name='index'),
#ex: /polls/5/
path('', view.detail, name='detail'),
#ex: /polls/5/results/
]
2- جامعه کاربری
هر دو جامعه جنگو و لاراول بسیار فعال و پاسخگو هستند. جامعه کاربری هر دوی آنها تعداد زیادی مشارکت کننده در Github دارند. حتما هنگامی که در هر یک از این فریمورکها دچار مشکل شدهاید، کاربری وجود داشته است که به شما پاسخ دهد و مشکلتان رفع شده باشد.
3- مسیر یادگیری
صحبت در مورد مسیر و سرعت یادگیری یک ابزار، ساده نیست. زیرا بستگی به فرد دارد. اگر با سینتکس پایتون تا حدی راحت باشید، جنگو انتخاب مناسب و سادهای است. این فریمورک، سازگار با توسعهدهندگان است. یادگیری آن هم زیاد طول نمیکشد. اگر به جنگو علاقه دارید، در همرویش آموزش از صفر این فریمورک منتشر شده است.
مسیر یادگیری لاراول دارای شیب تندی است. اما با استفاده از ابزارهایی مانند Laracasts و داکیومنتهای خوب، انتخاب فریمورک و تسلط بر زبان PHP بههیچ وجه سخت نیست.
4- کارایی
لاراول و جنگو در سال 2018 بهصورت متوالی برای دنبالهبندی جیسون یا JSON Serialization مورد آزمایش قرار گرفتند. از آنجا که زبان پایتون بسیار سریع بود، با اختلاف زیاد برنده شد. جنگو 69 هزار پاسخ JSON بر ثانیه را تحلیل کرد. در حالی که این میزان برای لاراول 8 هزار پاسخ بر ثانیه بود. لاراول را نمیتوان از نظر سرعت با جنگو مقایسه کرد.
5- امنیت
دنیای وب محیطی کاملا خصمانه است. حملات و آسیبپذیریها همیشه مورد سوءاستفاده قرار میگیرند. بههمین دلیل فریمورکها باید در برابر حملات مختلف مانند: تزریق SQL یا اسکریپتنویسی بین سایتها (حملات XSS) اقدامات لازم را انجام دهند.
جنگو موضوع امنیت را کاملاً جدی گرفته است. همچنین به توسعهدهندگان کمک میکند تا از اشتباهات رایج در توسعه وب جلوگیری کنند. در همین راستا میتوانند برخی از بهترین اقدامات امنیتی را هم بهکار گیرند. لاراول هم اصول اولیه امنیت را پوشش میدهد. اما از نظر امنیت با جنگو در یک سطح قرار نمیگیرند. بههمین دلیل برای مثال، ناسا از جنگو برای وبسایت خود استفاده میکند.
6- API
بهعنوان یک توسعهدهنده ممکن است به تمام ویژگیهایی که یک فریمورک بکاند ارائه میدهد، علاقه نداشتهباشید. در عوض ترجیح شما ساخت یک برنامه rich-client با RESTful API باشد.
نکته قابل توجه در مورد Laravel این است که دارای پشتیبانی داخلی برای ساختن API است. زیرا پرس و جوها بهطور پیشفرض JSON را برمیگردانند. جنگو این ویژگی داخلی را ندارد. برای کار با API در جنگو باید Django REST را به آن اضافه کرد. کار با API در جنگو در این آموزش ساخت فروشگاه با جنگو (+) به صورت پروژه محور آمده است.
جمعبندی
به خاطر داشتهباشید که فریمورکها از وبسایتهای بزرگ پشتیبانی میکنند. بنابراین هیچ انتخاب اشتباهی وجود ندارد. همه چیز بستگی به الزامات نرمافزاری و طراحی و امکانات و نیازهای شما دارد. همچنین هسته فریمورکهای بکاند کاملاً مشابه هم هستند. بنابراین اگر خواستید با فریمورک دیگری کار کنید، انتقال از یک فریمورک به فریمورک دیگر مشکل نیست.
کلیدواژگان
django و laravel – جنگو یا لاراول – جانگو یا لاراول – laravel django – جانگو در مقابل لاراول – جنگو بهتر است یا لاراول – لاراول یا جنگو – فریمورک جنگو یا فریمورک لاراول – فریمورک لاراول یا فریمورک جنگو – django یا laravel – مقایسه جنگو و لاراول – laravel یا django – مقایسه لاراول و جنگو – مقایسه django و laravel – مقایسه فریمورک جنگو و لاراول – مقایسه فریمورک لاراول و جنگو – laravel چیست – لاراول چیست – فریم ورک لاراول چیست – فریم ورک لاراول – برنامه نویسی لاراول – فریمورک لاراول – زبان لاراول – زبان برنامه نویسی لاراول – جنگو چیست – django چیست – جنگو پایتون چیست – جانگو چیست
منبع
Django Vs Laravel: Which framework to choose?