از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
فلاسک در مقابل جنگو
سرفصلهای مطلب
در این مقاله نگاهی به دو مورد از محبوب ترین فریمورک های وب در پایتون خواهیم انداخت: جنگو و فلاسک.
در اینجا، روش مقایسه هر یک از این چارچوبها را در هنگام بررسی منحنیهای یادگیری، توضیح خواهیم داد که شروع کار چقدر آسان است. در مرحله بعد، ما همچنین به روش ایستادن این دو در برابر یکدیگر و نتیجه گیری در مورد زمان استفاده از یکی از آنها خواهیم پرداخت.
شروع شدن
یکی از سادهترین راهها برای مقایسه دو فریمورک، نصب آنها و توجه به اینکه کاربر چقدر راحت میتواند با آن شروع به کار کند، این است که دقیقاً همان کاری است که در ادامه انجام خواهیم داد. ما سعی خواهیم کرد جنگو و فلاسک را تنظیم کنیم روی یک ماشین لینوکس و یک برنامه ایجاد کنید تا ببینید چقدر آسان (یا دشوار) است process با هر کدام است
راه اندازی جنگو
در این بخش راه اندازی می کنیم جانگو روی یک ماشین مبتنی بر لینوکس بهترین راه برای شروع با هر چارچوب پایتون استفاده از محیط های مجازی است. با استفاده از آن نصب خواهیم کرد pip.
$ sudo apt-get install python3-pip
$ pip3 install virtualenv
$ virtualenv --python=`which python3` ~/.virtualenvs/django_env
توجه داشته باشید: اگر pip3
دستور به شما خطایی می دهد، ممکن است لازم باشد آن را با پیشوند اضافه کنید sudo
تا کار کند.
هنگامی که راه اندازی محیط مجازی خود را که نام آن را گذاشته ایم، تمام شد django_env
، برای شروع استفاده از آن باید آن را فعال کنیم:
$ source ~/.virtualenvs/django_env/bin/activate
پس از فعال شدن، در نهایت می توانیم جنگو را نصب کنیم:
$ pip install Django
فرض کنید پروژه ما نامیده می شود مکان من. یک دایرکتوری جدید بسازید و آن را وارد کنید، دستورات زیر را اجرا کنید:
$ mkdir mysite
$ cd mysite
$ django-admin startproject mysite
اگر پروژه به دست آمده را بررسی کنید، ساختار دایرکتوری شما به صورت زیر نشان داده می شود:
mysite/
manage.py
mysite/
__init__.py
settings.py
urls.py
wsgi.py
بیایید نگاهی به آنچه در مورد هر یک از دایرکتوریها و فایلهایی که ایجاد شدهاند بیاندازیم.
- را root مکان من/ دایرکتوری است container دایرکتوری برای پروژه ما
- مدیریت کنید.py یک ابزار خط فرمان است که ما را قادر می سازد به روش های مختلف با پروژه کار کنیم
- مکان من/ دایرکتوری بسته Python کد پروژه ما است
- mysite/__init__.py فایلی است که به پایتون اطلاع می دهد که دایرکتوری فعلی باید یک بسته پایتون در نظر گرفته شود
- mysite/تنظیمات.py حاوی ویژگی های پیکربندی برای پروژه فعلی خواهد بود
- mysite/urls.py یک فایل پایتون است که شامل تعاریف URL برای این پروژه است
- mysite/wsgi.py به عنوان ورودی برای a عمل می کند WSGI وب سروری که درخواست ها را به پروژه شما ارسال می کند
از اینجا، ما در واقع می توانیم برنامه را با استفاده از مدیریت کنید.py ابزار دستور زیر برخی از بررسی های سیستم، بررسی مهاجرت های پایگاه داده و برخی موارد دیگر را قبل از اجرای سرور شما انجام می دهد:
$ python manage.py runserver
Performing system checks...
System check identified no issues (0 silenced).
You have unapplied migrations; your app may not work properly until they are applied.
Run 'python manage.py migrate' to apply them.
September 20, 2017 - 15:50:53
Django version 1.11, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
توجه داشته باشید: اجرای سرور خود به این روش فقط برای توسعه است و نه محیط های تولید.
برای بررسی برنامه خود، به ادامه مطلب بروید http://localhost:8000/، جایی که باید a را ببینید page گفتن “کار کرد!”.
اما صبر کنید، هنوز کارتان تمام نشده است! برای ایجاد هر صفحه/عملکرد در سایت خود، باید یک برنامه در پروژه خود ایجاد کنید. اما چرا به یک اپلیکیشن نیاز دارید؟ در جنگو، برنامه ها برنامه های کاربردی وب هستند که کاری را انجام می دهند، که می تواند یک وبلاگ، یک انجمن یا یک سیستم نظردهی باشد. این پروژه مجموعه ای از برنامه های شما و همچنین پیکربندی برای برنامه ها و کل وب سایت است.
بنابراین، برای ایجاد برنامه خود، به دایرکتوری پروژه خود بروید و دستور زیر را اجرا کنید:
$ cd mysite
$ python manage.py startapp myapp
این ساختار دایرکتوری دیگری ایجاد می کند که در آن می توانید مدل ها، نماها و غیره خود را مدیریت کنید.
manage.py
myapp/
__init__.py
admin.py
apps.py
migrations/
models.py
tests.py
views.py
mysite/
__init__.py
settings.py
urls.py
wsgi.py
از اینجا، باید نماهای خود را در آن تنظیم کنید views.py
و مسیریابی URL در urls.py
، که برای آموزش دیگری ذخیره می کنیم.
اما متوجه موضوع شدید، درست است؟ برای راهاندازی و اجرای پروژه جنگو به چند دستور و چند فایل نیاز دارید.
راه اندازی فلاسک
درست مانند جنگو، ما از یک محیط مجازی استفاده خواهیم کرد فلاسک همچنین. بنابراین دستورات فعال سازی محیط مجازی مانند قبل باقی خواهد ماند. پس از آن، به جای نصب جنگو، به جای آن، Flask را نصب می کنیم.
$ pip install Flask
پس از اتمام نصب، می توانیم شروع به ایجاد برنامه Flask خود کنیم. اکنون، برخلاف جنگو، Flask ساختار دایرکتوری پیچیده ای ندارد. ساختار پروژه Flask شما کاملاً به شما بستگی دارد.
وام گرفتن یک مثال از فلاسک homepage، می توانید یک برنامه Flask قابل اجرا فقط از یک فایل ایجاد کنید:
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "Hello World!"
و اجرای برنامه تقریباً به آسانی تنظیم آن است:
$ FLASK_APP=hello.py flask run
* Running روی http://localhost:5000/
بازدید از URL http://localhost:5000/ باید متن “Hello World!” در مرورگر شما
من شما را تشویق می کنم که به دنبال چند برنامه نمونه بگردید روی فلاسک homepage برای یادگیری بیشتر یادگیری با مثال یکی از بهترین راهها برای شروع سریع و دویدن است.
چارچوبی که در این زمینه “برنده” می شود واقعاً به نیازها و تجربه شما بستگی دارد. جنگو ممکن است برای مبتدیان مطلوبتر باشد، زیرا برای شما تصمیم میگیرد (یعنی روش ساختار برنامهتان)، در حالی که در Flask باید خودتان این کار را انجام دهید.
از سوی دیگر، اجرای فلاسک سادهتر است، زیرا برای شروع به کار بسیار کمی نیاز دارد. کل برنامه Flask را می توان از یک فایل تشکیل داد. مبادلات واقعاً بستگی دارد روی آنچه شما بیشتر نیاز دارید
منحنی یادگیری
در مورد منحنی یادگیری، همانطور که در بخش آخر با Flask دیدیم، شروع کار بسیار آسان بود. این برنامه به ساختار دایرکتوری پیچیده ای نیاز ندارد که در آن باید به خاطر بسپارید کدام فهرست/فایل چه کاری انجام می دهد. در عوض، میتوانید فایلها و دایرکتوریها را با توجه به استفاده خود اضافه کنید. این همان چیزی است که Flask به عنوان یک کوچک– چارچوبی برای توسعه وب
جانگو، روی از سوی دیگر، منحنی یادگیری کمی بالاتر دارد، زیرا در مورد روش تنظیم و کار کردن چیزها «مطمئنتر» است. به همین دلیل، باید زمان بیشتری را برای یادگیری روش نوشتن ماژول ها صرف کنید و در محدوده چارچوب کار کنید.
این همه بد نیست، زیرا به شما امکان می دهد به راحتی وصل شوید اجزای شخص ثالث بدون نیاز به انجام کاری برای ادغام آنها به برنامه خود وارد شوید.
اشتغال پذیری
کدام یک از این چارچوب ها به شما کمک می کند تا شغلی پیدا کنید؟ برای بسیاری از توسعه دهندگان، این یکی از سوالات مهم در مورد کتابخانه ها و چارچوب های خاص است: کدام یک به من کمک می کند تا استخدام شوم؟
جنگو چند شرکت بزرگ دارد روی رزومه آن، به این دلیل است که بسیاری از شرکتهایی که از پایتون برای توسعه وب استفاده میکنند، تمایل دارند از جنگو (یا حداقل با آن شروع کردهاند) تا سایت خود را تقویت کنند. جنگو، به عنوان یک فریمورک تمام عیار، اغلب در اوایل استفاده می شود روی در توسعه، زیرا شما منابع و قدرت بسیار بیشتری را با آن از جعبه دریافت می کنید.
در اینجا فقط چند شرکتی هستند که از جنگو برای سایت های خود استفاده می کنند (یا استفاده کرده اند):
- پینترست
- اینستاگرام
- گفتگو
- ناسا
اندازه گیری فلاسک در اینجا کمی سخت تر است، بیشتر به دلیل روش استفاده از آن. فلاسک بیشتر مورد استفاده قرار می گیرد میکروسرویس ها، که تشخیص اینکه کدام شرکت ها از آن استفاده می کنند دشوارتر می شود. بعلاوه، شرکتهایی که دارای معماری میکروسرویس هستند کمتر احتمال دارد بگویند که سرویسشان «تامین قدرت فلاسک» است، زیرا آنها احتمالاً سرویسهای زیادی دارند که به طور بالقوه از چارچوبهای مختلف استفاده میکنند.
با این حال، نکاتی وجود دارد که نشان می دهد چه کسی از Flask مبتنی بر استفاده می کند روی پستهای شغلی، گفتگوهای فنی، پستهای وبلاگ، و غیره. از آنها، میدانیم که شرکتهای زیر از Flask در زیرساختهای پشتیبان خود استفاده کردهاند:
- تویلیو
- لینکدین
- پینترست
- اوبر
- تفنگ پستی
در حالی که جنگو ممکن است در بین شرکتها محبوبتر باشد، Flask احتمالاً در میان شرکتهای متمرکز بر فناوری رایجتر است، زیرا احتمال بیشتری دارد که از میکروسرویسها و در نتیجه میکرو چارچوبهایی مانند Flask استفاده کنند.
اندازه و محدوده پروژه
مقایسه ما از هر فریم ورک به لطف بسیاری از عوامل مختلف، مانند محدوده پروژه، تجربه توسعهدهنده، نوع پروژه و غیره میتواند بسیار ذهنی شود. اگر پروژه نسبتاً کوچک است و به همه هزینههای جنگو نیاز ندارد، پس فلاسک انتخاب ایده آلی برای شروع و انجام کاری بسیار سریع است.
با این حال، اگر پروژه از نظر مدت زمان و وسعت بزرگتر باشد، جنگو احتمالاً راه حلی است زیرا در حال حاضر بسیاری از موارد مورد نیاز شما را شامل می شود. این اساساً به این معنی است که بسیاری از مؤلفههای رایج یک وبسرویس/وبسایت یا قبلاً با جنگو ارائه میشوند یا از قبل از طریق نرمافزار منبع باز شخص ثالث در دسترس هستند. در برخی موارد شما فقط می توانید یک پروژه جنگو ایجاد کنید، مجموعه ای از اجزا را به آن وصل کنید، نماها/الگوهای خود را ایجاد کنید و کارتان تمام است.
در حالی که ما جنگو را به دلیل توسعه پذیری آن می ستاییم، نمی توانیم نادیده بگیریم که Flask مقداری دارد. پسوندها از خودش در حالی که آنها از نظر وسعت به اندازه جنگو نیستند (و بسیاری از این افزونه ها به طور استاندارد در جنگو ارائه می شوند)، این گامی در مسیر درست است.
افزودنی جنگو-روی کامپوننت ها می توانند به اندازه یک افزونه وبلاگ باشند-روی، به کوچکی اعتبار ورودی میان افزار کوچک. بیشتر برنامههای افزودنی Flask، اجزای میانافزار کوچکی هستند که با توجه به اندازه متوسط پروژههای Flask، باز هم بهتر از هیچ هستند و بسیار مفید هستند.
محدودیت ها
هر بخش از فناوری مشکلات خود را دارد و این چارچوب ها تفاوتی ندارند. بنابراین قبل از اینکه انتخاب کنید کدام مورد را استفاده کنید، ممکن است بخواهید بدانید که هر کدام چه معایبی دارند که در این بخش در مورد آنها صحبت خواهیم کرد.
جانگو
بنابراین، چه جنبه هایی از جنگو وجود دارد که بر خلاف آن عمل می کند تا به عنوان چارچوب انتخابی شما انتخاب شود؟
جنگو یک پروژه بسیار بزرگ است. هنگامی که یک توسعه دهنده، به خصوص مبتدیان، شروع به یادگیری جنگو می کند، برای آنها آسان است که در کد منبع، ویژگی های داخلی و اجزایی که ارائه می دهد، بدون استفاده از آنها در برنامه گم شوند.
جنگو یک چارچوب نسبتاً بزرگ است که برای موارد استفاده ساده به کار می رود، زیرا بسیاری از کنترل ها را از شما پنهان می کند. اگر می خواهید از چیزی استفاده کنید که در جنگو “استاندارد” نیست، باید کارهای اضافی برای انجام این کار انجام دهید.
درک مولفهها در جنگو گاهی اوقات کمی دشوار و دشوار است و میتواند منجر به تصمیمگیریهای سختی شود، مانند تصمیمگیری در مورد اینکه آیا یک جزء موجود برای مورد استفاده شما کار میکند یا اینکه در نهایت باعث کار بیشتر از ارزشش میشود.
فلاسک
حالا که برخی از مشکلات جنگو را دیدیم، Flask را فراموش نکنیم. از آنجایی که چارچوب Flask بسیار کوچک است، جای شکایت زیادی وجود ندارد. خوب، به جز این واقعیت در آنجا: خیلی کوچک است.
Flask یک میکرو فریمورک است، به این معنی که فقط عملکردهای بدون استخوان را برای شروع شما فراهم می کند. این بدان معنا نیست که نمی تواند قدرتمند باشد و نمی تواند مقیاس پذیر باشد، فقط به این معنی است که شما باید بسیاری از عملکردهای سرویس خود را خودتان ایجاد کنید. این بدان معنی است که شما باید یکپارچه سازی پایگاه داده، اعتبارسنجی داده ها، ارائه فایل و غیره را انجام دهید.
در حالی که این می تواند یک مزیت برای کسانی تلقی شود که می خواهند بر همه چیز کنترل داشته باشند، همچنین به این معنی است که راه اندازی یک وب سایت کاملاً کاربردی برای شما زمان بیشتری می برد.
انتخاب فلاسک یا جنگو
در حالی که صحبت در مورد اینکه هر فریم ورک چه کاری انجام می دهد و چه کاری انجام نمی دهد آسان است، بیایید سعی کنیم مقایسه مستقیم تری از هر یک انجام دهیم، که در این بخش انجام خواهیم داد.
هنگامی که سادگی یک عامل است، Flask راهی است که باید رفت. این اجازه می دهد تا کنترل بسیار بیشتری بر برنامه شما داشته باشید و اجازه دهید شما تصمیم بگیرید که چگونه می خواهید چیزها را در یک پروژه پیاده سازی کنید. برخلاف این، جنگو تجربه فراگیرتری را فراهم می کند، مانند ارائه یک پنل مدیریت پیش فرض برای داده های شما، ORM روی بالای پایگاه داده شما و محافظت در برابر مواردی مانند تزریق SQL، اسکریپت بین سایتی، CSRF و غیره.
اگر تاکید زیادی داشته باشید روی پشتیبانی جامعه، پس جنگو با توجه به سابقهاش احتمالاً از این نظر بهتر است. از سال 2005 وجود داشته است، در حالی که Flask در سال 2010 ایجاد شد. در زمان نگارش این مقاله، جنگو حدود 3.5 برابر سؤال/پاسخ بیشتری دارد. روی Stack Overflow از Flask (حدود 2600 سوال جنگو به Flask’s 750).
چارچوب Flask نسبتا سبک است. در واقع، از نظر مقدار کد، تقریبا 2.5 برابر کوچکتر از جنگو است. این یک تفاوت بزرگ است، به خصوص اگر شما نیاز به درک درونی چارچوب وب خود داشته باشید. در این جنبه، خواندن و درک Flask برای اکثر توسعه دهندگان بسیار آسان تر خواهد بود.
اگر به کنترل کامل بر برنامه خود نیاز دارید، از کدام ORM می خواهید استفاده کنید، کدام پایگاه داده را باید با فرصت های عالی برای کسب اطلاعات بیشتر در مورد خدمات وب ادغام کنید، Flask باید برای توسعه انتخاب شود. جانگو، روی از سوی دیگر، زمانی بهتر است که مسیر روشن تری برای ایجاد آنچه می خواهید وجود داشته باشد، یا در حال ایجاد کاری هستید که قبلا انجام شده است. به عنوان مثال، یک وبلاگ می تواند مورد استفاده خوبی برای جنگو باشد.
بیشتر بدانید
آیا می خواهید در مورد هر یک از این چارچوب ها بیشتر بدانید؟ منابع بسیار کمی وجود دارد. در اینجا چند دوره وجود دارد که به نظر من بسیار مفید هستند و شما را بسیار سریعتر به سرعت بالا می برند:
بوت کمپ توسعه دهنده وب کامل استک پایتون و جنگو
در غیر این صورت، میتوانید با بازدید از وبسایتهای مربوط به هر چارچوب، شروعی عالی داشته باشید:
در هر صورت، مهمترین چیز این است که واقعاً آنها را امتحان کنید، نمونههایی را بررسی کنید و تصمیم بگیرید روی مال خودت که برای تو بهترینه
نتیجه
در این مقاله، ما دو فریمورک وب جنگو و فلاسک را با بررسی ویژگیهای مختلف آنها و راهاندازی یک «Hello World!» ساده مقایسه کردیم. برنامه با هر کدام
ممکن است متوجه شوید که اگر در توسعه وب تازه کار هستید و تصمیم به یادگیری جنگو دارید، ممکن است کمی بیشتر طول بکشد تا متوجه شوید که همه اجزای اصلی چه کاری انجام می دهند و چگونه آنها را تغییر دهید تا واقعاً آنچه را که می خواهید انجام دهید. اما نکات مثبت زیادی نیز وجود دارد، و هنگامی که با جنگو مهارت پیدا کردید، با توجه به لیست عظیم اجزا و پشتیبانی گسترده جامعه، در نهایت در زمان شما صرفه جویی می شود.
مقایسه پیشرفتهتر برای هر چارچوبی فقط با موارد و سناریوهای پیشرفته قابل انجام است. فقط بدانید که واقعاً نمی توانید با هیچ کدام اشتباه کنید و یادگیری هر یک شما را برای یافتن شغل آماده می کند.
اگر به توصیه ای نیاز دارید، من شخصاً با Flask همراه خواهم بود. با یادگیری چارچوبی که چیزهای زیادی را از شما پنهان نمی کند، می توانید خیلی خیلی بیشتر یاد بگیرید. هنگامی که درک بهتری از مفاهیم اصلی توسعه وب و HTTP داشتید، می توانید شروع به استفاده از افزونه هایی کنید که این موضوع را از شما دور می کند. اما داشتن آن پایه مستحکم درک در مراحل اولیه اهمیت بیشتری دارد روی، به نظر من.
از کدام چارچوب و چرا استفاده می کنید؟ در نظرات به ما اطلاع دهید!
(برچسبها به ترجمه)# python
منتشر شده در 1403-01-30 02:05:05