فریمورک در برنامهنویسی
اگر به برنامهنویسی علاقه دارین و یا بهتازگی برنامهنویسی رو شروع کردین حتماً با اصطلاح فریمورک روبرو شدین. شاید براتون سؤال باشه فریمورک در برنامهنویسی چه کاربردی داره و اصلاً چرا باید ازش استفاده کنیم؟! اگه بخوایم خیلی ساده و خلاصه جواب بدیم باید بگیم وقتی میخوایم یه سایتی رو طراحی کنیم نیازه کدنویسیهای زیادی انجام بدیم تا پروژه به نتیجه برسه؛ اما با کمک فریمورک میتونیم تمرکز و وقتمون رو روی کدنویسی بخشهای مهمتر پروژه بذاریم؛ پس با استفاده از محیط آماده فریمورک دیگه کدنویسی اضافی ممنوع!
فریمورک چیست؟
حالا سؤال اینه که فریمورک (Framework) چیه اصلاً؟ فریمورک به زبان ساده یه چارچوب نرمافزاری منظم واسه کدنویسیه که برای راحتتر شدن کار، یه سری برنامهنویس کاربلد اونو برای بقیه برنامهنویسا نوشتن. تو دنیای برنامهنویسی همیشه دولوپرا دنبال ابزارهایی هستن که کار رو آسونتر و دقیقتر پیش ببره که فریمورک دقیقاً این کار رو انجام میده. توی تعاریفی که واسه فریمورک اومده احتمالاً شنیدین که میگن فریمورک برای توسعه برنامههای نرمافزاریه؛ آره اینم یه تعریف دیگه از فریمورکه چون فریمورک یه اساس و پایهای رو برای توسعهدهندههای نرمافزار فراهم میکنه تا بتونن برای یه پلتفرم خاص برنامهای رو طراحی کنن و اونو سادهتر توسعه بدن. درواقع چون فریمورکا توابع و کلاسهای از پیش تعریف شده و آمادهای دارن و مجموعهای از ماژول، کامپایلر، کتابخانههای کد و ابزارهای مختلفند، به سادگی برنامهنویس میتونه ازشون برای پیشبرد اهداف پروژه استفاده کنه و دیگه به قول معروف چرخ رو از نو نسازه!
انواع فریمورک
فریمورکا انواع مختلفی دارن که میشه بر اساس تفاوتهاشون و نیاز پروژه انتخابشون کرد؛ مثلاً زبان، آرکیتکچر (Architecture) و فیچر (Feature) هر فریمورکی متفاوته و اینکه برنامهنویس اون فریمورک رو برای بکاند لازم داره یا فرانت هم بسیار در انتخاب فریمورک مهم و تأثیرگذاره.
همونطور که اشاره شد، فریمورکا به دو دسته فرانتاند (front-end) و بکاند (back-end) تقسیم میشن که فریمورکای فرانتاند چارچوبی برای ظاهر پروژه و سمت کاربرند. مهمترین وظایفی که بر عهده فریمورکهای فرانت هست شامل تعریف ساختمان فایلها، مدیریت درخواستهای AJAX و طراحی مؤلفههای استایل وبسایت میشه. اما فریمورکای بکاند در مقایسه با فریمورکای فرانت، پرکاربردتر و رایجترند. از این فریمورکا برای ساخت وبسایتهای پویا و برنامههای کاربردی استفاده میشه که میتونن با اجرایی کردن وظایفی همانند مدیریت جلسهها، دسترسی به پایگاه داده، امور مرتبط با قالبهای صفحه و… تمام فرآیند توسعه نرمافزار را خیلی سریعتر پیش ببرن. البته لازم به یادآوری هست که فریمورکهای دیگهای هم وجود دارن که برای وبسایت نیستند؛ مثل فریمورک مدیریت محتوا (CMF)، چندرسانهای و فریمورکای نرمافزاری برنامهنویسی توسعه موبایل.
مزایای فریمورک
مزایا و دلایل زیادی برای استفاده از فریمورک وجود داره که به چند مورد اشاره میکنیم؛
اگر از فریمورک استفاده بشه:
- دیگه لازم نیست که تموم مراحل زیرساختی و توابع رو خودتون بنویسین و این یعنی صرفهجویی در زمان!
- کلاً تمرکزتون میره به سمت قسمتهای اصلی پروژه
- مجبورین یه سری قواعد رو رعایت کنین تا کدنویسی تمیزتری داشته باشین و اگر برنامهنویسای دیگهای اومدن کدهاتونو بخونن متوجه بشن
- برای اینکه کاربر بهراحتی بتونه به API بیرونی ریکوئست بزنه، بهترین پکیجها توی فریمورکا قرار داده شده
- توی فریمورک، زیرساختها بهطورکامل کانفیگ شدن و نظم خاصی تو پروژه حکمفرماست
- اطلاعات و دانش برنامهنویس بهدلیل آشنایی با مفاهیم جدیدی که در فریمورک بکار رفته، بالاتر میره
- دسترسی به کدهای فریمورک بهعلت اوپن سورس بودن
- با استفاده از فریمورک از کدهای تکراری و اضافی جلوگیری میشه
- اغلب میتونین بدون پرداخت هزینه از فریمورکا استفاده کنین
- چون فریمورکا چندبار توسط برنامهنویسان بررسی و دیباگ میشن، خلل و باگ امنیتی ندارن
- یه خوبی که تو بیشتر فریمورکا دیده میشه اینه که از متد معماری کنترلر، ویو و مدل پشتیبانی میکنن
- چون یه چارچوب ثابت بهتون داده میشه، میتونین تو پروژههای تیمی ازش استفاده کنین
- تعداد خط کدهایی که تو فریمورک هست خیلی کمتر از حد معموله که در نتیجه برنامه سبکتر میشه
- هرچند هیچی کاملاٌ صد در صد نیست اما میشه گفت کدهای فریمورک قابل اعتماده و بهینه و استاندارد نوشته شده
- آپدیتهای منظم و خوبی برای فریمورکا داده میشه. تو این آپدیتا اگر باگی بوده رفع شده و اگر ویژگی جدیدی لازم بوده به اون اضافه شده
حالا یه مثال میزنیم تا بیشتر با کارایی فریمورک آشنا بشین؛ فرض کنین میخواین از لاراول استفاده کنین. خب! ساختار مدل mvc رو که بهتون میده و نیاز نیست از صفر کد بزنین. اگر سیستم روتینگ بخواین، بهترینشو در اختیارتون قرار میده. همچنین اگر سیستم ثبتنام، لاگین، احراز هویت، ارزیابی ایمیل، اعتبارسنجی فرمها و ارائه مجوز رو لازم داشته باشین، کاملشو با فریمورک لاراول دارین. ممکنه تو پروژه نیاز بشه اطلاعات رو بارها و بارها بخواین تو دیتابیس ثبت، آپدیت یا حدف کنین که همشو با فانکشنهای آماده لاراول میتونین انجام بدین :)
ولی اگه از فریمورک توی پروژه استفاده نشه، باید قبل از اینکه بخواین کار اصلی کدنویسی پروژه رو شروع کنین، اول چارچوب پروژه، فولدرها و فایلهای موردنیاز، کدهای تکراری در روند پروژه و… رو آماده کنین و وقت زیادی رو صرف کنین تا مقدمات کار مهیا بشه.
معایب فریمورک
- امکان داره برنامهنویس کوئری زدن رو فراموش کنه چون همیشه به فریمورک متکی بوده و به عبارتی تنبل بشه!
- چون فریمورکا یه سری محدودیت دارن و انعطافپذیر نیستن، برنامهنویس مجبوره محدودیتها رو رعایت کنه؛ به قولی رفتار اصلی فریمورکا قابل اصلاح و تغییر نیست؛ پس متناسب با نیاز پروژه فریمورکتونو انتخاب کنین
- گاهی فریمورکای رایگان پشتیبانی خوبی ندارند
- چون فریمورکا در دسترس عموم قرار دارن، احتمال سوءاستفاده توسط دیگران وجود داره
- یادگیری قبل از کار با فریمورکها ضروریست و باید یه تایمی رو در نظر بگیرین تا کاملاً به اصطلاحات و چارچوب اونا آشنا بشین
- چون فریمورکا مجموعهای کامل از کدها هستند، احتمال داره کدهای اضافی کارایی اپلیکیشن شما رو کاهش بدن و به پروژه تحمیل بشن
- گاهی لازمه که فریمورکا رو شخصیسازی کنین مثل بوت استرپ؛ چراکه در غیر اینصورت ممکنه بهعلت استفاده از کلاسهای پیشفرض، سایتتون با سایتای دیگه مشابه بشه
- اگر تیم توسعهدهنده فریمورکی که استفاده میکنین خواسته باشه تا بعضی قابلیتای فریمورک رو حذف کنه، شما برای دریافت پشتیبانی مجبورید این تغییر رو قبول کنین چون استفاده از نسخههای قبلی پروژهتون رو با باگ مواجه میکنه
- بهعلت یه سری محدودیتهای فریمورکا، ممکنه لازم باشه از چندتا فریمورک استفاده کنین
- زیاد مناسب نیست که بخواین از فریمورک برای پروژههای کوچیک استفاده کنین، چون نصب و تنظیم و پیادهسازی اون از کدهای دستی نوشته شده بیشتر زمان میبره
- چون به جزئیات کدهای توابعی دسترسی ندارین، ممکنه مفاهیم بعضی کدها رو درک نکنین
ویژگی یک فریمورک خوب
خب حالا اگر بخواین یه فریم ورک خوبی رو واسه پروژهتون انتخاب کنین، باید ویژگیهای زیر رو داشته باشه:
- پیادهسازی نرمافزار با اون در مقایسه با بقیه فریم ورکا آسونتر باشه
- یادگیری نحوه کار با اون زیاد دشوار نباشه
- راهنمای بهروز، پشتیبانی فعال و آپدیت منظمی داشته باشه
- امکان گسترش کدهای پیشفرض رو داشته باشه
- امنیت پروژه رو کامل تأمین کنه
- قابلیت استفاده از بخشهای مختلف برنامه در پروژههای دیگر رو داشته باشه
- کدهایی ساده، تمیز و قابلفهم داشته باشه
بهترین فریمورکهای استایلدهی
حالا میریم سراغ معرفی چندتا از محبوبترین و بهترین فریمورکهای استایلدهی تو برنامهنویسی:
- بهترین فریمورکهای فرانتاند: React ,angular ,vue ,svelte ,ember ,preact
- بهترین فریمورکهای بکاند: Laravel ,flask ,Django ,expressjs ,rubyonrails ,springboot
- بهترین فریمورکهای سی اس اس (css): Bootstrap ,tailwind ,foundaction, materialize ,ulkit ,bulma. البته فریمورک css رو میشه جزو فرانت به حساب آورد. این گروه، از کدها و فایلهای استاندارد زبانهای html ،css و js ساخته شدن و تمام المانهای لازم برای طراحی وب رو دارند. ازجمله مهمترین ویژگی این فریمورکها، grids یا همون شبکهبندی هست که قابل استفاده برای طراحی صفحات ریسپانسیوه.
- بهترین فریمورکهای جاوااسکریپت (javascript): React ,angular ,vue ,svelte ,ember ,preact
چه زمانی از فریمورک استفاده کنیم؟
اگر هنوز اول راه برنامهنویسی هستین و تازه وارد این حیطه شدین، توصیه ما بهتون اینه که اول زبانی که انتخاب کردین رو کامل یاد بگیرین، بعد برید به سمت فریمورکای اون زبان؛ مهم نیست که کدوم زبان رو انتخاب کردین، فقط لازمه که تو کدنویسی خام مهارت پیدا کنین.
بعد از اینکه به تسلط کافی در زبان انتخابی رسیدین، باید اهداف و نیازهای پروژه رو بررسی و بهترین فریمورک رو مطابق با پروژتون انتخاب کنین.
پس در نهایت؛ زیادی کد نزن!
باتوجه به نکاتی که گفته شد به این نتیجه میرسیم که مزایای فریمورک به معایبش میچربه؛ پس چرا وقتی یه سری کدهای آماده قابل اعتماد وجود داره، خودمون دوباره وقت بذاریم و از اول مسیر رو طی کنیم؟! اگر از همون اول هوشمندانه یه فریمورک رو انتخاب کنین به راحتی میتونین در جای درست از قابلیتهای اون توی پروژه استفاده کنین و وقتتون رو به چیزهای مهمتری اختصاص بدین.
البته اینم لازمه بهش اشاره کنیم که علیرغم تصور بعضی افراد، فریمورک همون کتابخونه نیست و با هم تفاوتهایی دارن که میتونین با مطالعه مقاله «تفاوت فریمورک و کتابخانه در چیست؟» به خوبی با تفاوتهاشون موارد آشنا بشین.
نظر (6)
علی مرادی
نسخه php ای که تو XAMP استفاده میشه، خودش خودکار بروزرسانی میشه یا باید خودم اوکیش کنم؟
علی حاتم پوری
میتونید نسخه php مورد نظرتون رو از سایت php دانلود کنید و روش نصب کنید
میتونید با انتخاب نسخه خود xampp هم نسخه php رو تغییر بدید.
sarina
ali bood 👌
مدیر
ممنون از شما
sina amiri
خیلی جامع بود ممنون
فقط یه سوال، برای نصب لاراول باید حتما از کامپوزر استفاده کنیم؟
مدیر
خواهش میکنم
استفاده از کامپوزر خیلی به سرعت و دقت کار کمک میکنه اما الزامی نیست، شما میتونید از طریق گیت و راه های دیگه هم لاراول رو نصب کنید.