جنگو چیست؟ مزایا و معایب
پایتون یکی از معروفترین زبانهای برنامه نویسی در جهان است و دومین زبان پر کاربرد در پروژههای GitHub در سال 2017 بود. بنابراین اگر به پایتون و توسعه وب علاقمند هستید، احتمالاً نام جنگو را شنیده اید. امروزه با افزایش شهرت فریمورکهای وب، یادگیری یک فریمورک جدید و انتخاب آن فریمورکی که میخواهید با آن کار کنید امری کاملاً گیج کننده شده است. امروز ما نگاهی گسترده به جانگو میاندازیم تا بتوانیم بیشتر با این فناوری شگفت انگیز آشنا شویم.
جنگو چیست؟
جنگو یک فریمورک وب MVT است که برای ساخت اپهای تحت وب استفاده میشود. جنگو خود را به عنوان یک فریمورک وب دارای باتری تعریف میکند چرا که دارای استحکام و سادگی برای کمک به توسعه دهندگان وب برای نوشتن کدهای تمیز، کارآمد و قدرتمند است. جنگو یکی از معروفترین فریمورکهای وب در جهان است و همچنین یکی از پر استفاده ترین فریمورکها است. اینستاگرام، یوتیوب، گوگل و حتی ناسا از آن برای وب سایت خود استفاده میکنند. بنابراین اجازه دهید آن را بیشتر تجزیه کنیم و در مورد آن بیشتر بدانیم.
ساختار
جنگو از معماری MVT پیروی میکند که مخفف Model-View-Template است. MVT یک نسخه جنگو از ساختار معروف MVC است، به همین دلیل است که فکر می کنید کاملاً شبیه به نحوه کار سایر فریمورک ها است. هنگامیکه سرور جنگو درخواستی را دریافت میکند، روتر URL درخواست را به ویوی مناسب نگاشت میکند. سپس نمایش دادهها را از طریق مدلها واکشی میکند، فریم را پر میکند و برای کاربر ارسال میکند.
مدلهای جنگو
جنگو در چه مواردی استفاده میشود؟
مدل جنگو از یک لایه ORM قدرتمند استفاده میکند که کار با پایگاه داده و دادهها را ساده میکند و روند توسعه را تسریع میبخشد.
بدون Object-Relational-Mapping، توسعه دهندگان باید جداول را خودشان ایجاد کنند و کوئریها یا رویهها را تعریف کنند که گاهی اوقات به مقدار زیادی SQL تبدیل میشود که مستعد پیچیدگی است و ردیابی آن سخت میشود.
لایه ORM به شما امکان میدهد تمام تعاریف جدول را با کد ساده پایتون بنویسید و از ترجمه آن به زبان کوئری مناسب انتخاب شده پشتیبانی میکند و همچنین عملیات CRUD را تسهیل میکند.
در واقع، توسعه دهنده لزوماً نیازی به دانستن SQL پیچیده یا ترجمه آن ندارد، هرچند، شایان ذکر است که درک SQL به شما امکان میدهد کوئریهای بهتر و سریعتری بنویسید و همچنین وب سایت خود را ایمن تر کنید.
بر خلاف سایر فریمورکها، مدلها همه در یک فایل قرار میگیرند، معمولاً models.py، که ممکن است برای پروژههای بزرگتر احساس شلوغی ایجاد کند.
جنگو از بسیاری از سیستمهای پایگاه داده پشتیبانی میکند. SQLite برای آزمایش و توسعه واقعاً خوب است زیرا میتوان از آن بدون نیاز به نصب نرم افزار بیشتر استفاده کرد. برای تولید، میتوانید به سراغ MYSQL یا PostgreSQL بروید و اگر به دنبال پایگاه داده NoSQL هستید، میتوانید از MongoDB با جنگو استفاده کنید.
قالبهای جنگو
لایه قالب برای جدا کردن دادهها از نحوه ارائه و مشاهده واقعی آنها توسط کاربر استفاده میشود. لایه فریم مشابه لایه View MVC است. اگر با قالب بندی به زبان های دیگر آشنا هستید، در جنگو نیز کار سختی نخواهید داشت. از قالبهایی مانند HTML استفاده میکنید که بعداً با تمام دادههای مربوطه وارد شده به HTML کامپایل میشود. البته اگر میخواهید اسناد XML یا فایلهای JSON و غیره را تولید کنید، قالبهایی غیر از HTML نیز وجود دارد.
DRY یکی از اصول اصلی طراحی قالب جنگو است و یک الگوی طراحی است که مخفف عبارت Don’t-Repeat-Yourself است. این دقیقاً همان چیزی است که به نظر میرسد، به این معنی که حداقل در بیشتر موارد، نباید کد را کپی و پیست کنید. در عوض، به عنوان مثال، الگوی شما باید به اجزای قابل استفاده مجدد مانند نوار ناوبری کناری، نوار ناوبری اصلی، هدر صفحه، پاورقی صفحه و غیره تقسیم شود. این کار تکرار را به حداقل میرساند و باعث میشود کدها کارآمد و تمیزتر باشند.
یکی از چیزهایی که جنگو را متمایز میکند این است که چقدر امنیت را جدی میگیرد. این در واقع بر نوشتن الگو تأثیر میگذارد.
به عنوان مثال، در Rails، می توانید کد روبی را در ویوهای خود بنویسید (نه اینکه بگویید این کاری است که باید انجام دهید) و همچنین می توانید مقادیری را به متغیرها اختصاص دهید.
در جنگو اصلاً اینطور نیست، نمیتوانید کد پایتون را در قالب اجرا کنید و نمی توانید مقداری را به یک متغیر اختصاص دهید. به بیان ساده، جنگو اجرای کد را در لایه قالب ممنوع میکند و فقط به منطق ویویش اجازه دسترسی میدهد، که یک راه حل ساده و در عین حال بسیار موثر برای بسیاری از آسیب پذیریهای وب است.
ویوهای جنگو
View در جنگو لایه منطق تجاری است. مسئول پردازش درخواست کاربر و ارسال پاسخ معتبر است. داده ها را از مدل واکشی میکند، به هر قالب دسترسی به دادههای خاصی را برای نمایش می دهد، یا میتواند قبل از آن پردازش روی داده ها را انجام دهد. امروزه، ویوهای جنگو میتوانند توابعی باشند که درخواست را پردازش میکنند و یک پاسخ را بر میگردانند، یا میتوانند کلاس هایی باشند که به شیوه ای مشابه با کنترل کنندههای Laravel و Rails قادر به انجام کارهای بسیار بیشتری هستند.
روتر URL
روتر URL در جنگو پیچیده تر از سایر فریمورکها، مثلاً Rails یا Laravel است. مشکل این است که از عبارات منظم استفاده میکند که استفاده از آنها برای مبتدیان آسان نیست. با این حال، ساختار خود روتر URL اصلاً پیچیده نیست، فقط ممکن است در ابتدا با آن راحت نباشید.
مزایای جنگو
1. باتری تعبیه شده
جنگو خود را به عنوان یک فریمورک مجهز به باتری میداند. این به این معنی است که چیزهای زیادی را ارائه میدهد، که ممکن است بسته به برنامه خود از آنها استفاده کنید. به جای اینکه مجبور باشید کد خود را بنویسید، فقط باید بستههایی را که میخواهید استفاده کنید وارد کنید.
این بخشی از پارادایم کنوانسیون پیکربندی است که جنگو بخشی از آن است و به شما امکان میدهد از راه حلهای پیاده سازی شده توسط متخصصان در سطح جهانی استفاده کنید. باتریهای جنگو طیف گسترده ای از موضوعات را در بر میگیرند که عبارتند از:
- احراز هویت با بسته احراز هویت
- رابط مدیریت با بسته مدیریت
- مدیریت جلسه با بسته Sessions
- مدیریت پیامهای موقت یا مبتنی بر جلسه با بسته پیامها
- ایجاد نقشه سایت گوگل XML با بسته نقشه سایت
- ویژگیهای Postgres با بسته Postgres
- اتصال به انواع محتوا با فریمورک انواع محتوا
2. پایتون
از آنجایی که جنگو از پایتون استفاده میکند، بخشی از شهرت و قدرت پایتون را به نفع خود به کار میگیرد. Python مسلماً یکی از ساده ترین، اگر نگوییم ساده ترین زبان برنامه نویسی برای مبتدیان است، و همچنین در دورههای مقدماتی علوم کامپیوتر در سراسر جهان بسیار محبوب است. نظرسنجی توسعه دهندگان Stackoverflow در سال 2017 نشان داد که Python در حال حاضر رایج تر از PHP است و مشاغل Python بهتر از C# و C++ پرداخت میکنند.
3. جامعه
انجمن جنگو یکی از بهترین نکات در مورد آن است. انجمنها کمک میکنند و فعالانه روی ایجاد یک فریمورک مبتدی تر و تثبیت فریمورک در حالی که ویژگیهای جدید اضافه میکنند، کار میکنند. مستندات جنگو کامل است و به عنوان یک آموزش مستقل مفید است. به شما کمک میکند از ویژگیهای مختلف استفاده کنید تا بتوانید از آن به عنوان منبع اصلی اطلاعات استفاده کنید.
4. مقیاس پذیر
اکثر توسعه دهندگان، زمانی که در مورد انتخاب یک طرح فریمورک برای آینده فکر میکنند به سراغ جنگو میروند. به همین دلیل است که انتخاب یک فریمورک مقیاس پذیر برای بسیاری بسیار ضروری است و جنگو دقیقاً همان چیزی است که میخواهند. این به شما اجازه میدهد تا اقدامات مختلفی را در رابطه با مقیاس پذیری انجام دهید؛ مانند اجرای سرورهای جداگانه برای پایگاه داده، رسانه و خود برنامه یا حتی استفاده از خوشه بندی یا تعادل بار برای توزیع برنامه در چندین سرور.
5. ادمین داخلی
تیم جنگو هنگام ایجاد فریمورک کاملاً متفکرانه عمل کرد و رضایت کاربر و مشتری را در ذهن داشت. این کاملا غیر منطقی است که رابط مدیریتی خود را در باطن ایجاد کنید تا بتوانید دادههای خود را با عملیات اولیه CRUD مدیریت کنید. به همین دلیل است که جنگو یک رابط مدیریتی را به طور مستقیم ارائه میدهد که هم حرفه ای و هم همه کاره است و طبق اسنادی است که توسعه دهنده اکنون میتواند با در نظر گرفتن آنها ارائه دهد.
معایب جنگو
در حالی که جنگو یک فریمورک شگفت انگیز است، چند عیب دارد که ممکن است برای شما مشکل ساز باشد یا نباشد. اول، مشخص کردن URL با عبارات معمولی، حداقل برای مبتدیان کار آسانی نیست. همچنین برای پروژه های کوچک کمیپیچیده است، و برخی افراد آن را مناسب پروژههای بزرگ میدانند، زیرا برای مثال، مدلها همه در یک فایل واحد گنجانده شده اند. خطاهای قالب به طور پیش فرض بدون هشدار قبلی از کار میافتند، بنابراین اگر این را نمی دانید، ممکن است زمان زیادی را برای کشف مشکل برنامه تلف کنید، یا حتی بدتر از آن، ممکن است حتی ندانید که برنامه شما مشکل دارد. همچنین این فریمورک احساس یکپارچگی به دست میدهد. یک روش محبوب و توصیه شده برای انجام کارها وجود دارد و شما باید از آن پیروی کنید.
چگونه جنگو یاد بگیریم
ابتدا باید با پایتون شروع کنید و جریان طبیعی اپهای وب را درک کنید.
می توانید بر اساس سبک یادگیری خود، بهترین آموزش را انتخاب کنید: آموزش مبتنی بر ویدیو یا کتاب. برای مبتدیان یا برای زبان آموزان پیشرفته میتوانید با سخنرانی های CS50 در مورد توسعه وب شروع کنید و همچنین در مورد Python و نحوه استفاده از آن توضیحاتی خواهید یافت.