فریمورک چیست ؟
مقالات طراحی سایتفریمورک یا چارچوب کدنویسی چیست و چگونه میتوان از آن در پروژهها استفاده کرد ؟ بررسی تفاوتهای فریمورک با کتابخانه و cms ، محبوبترین فریمورکهای حوزه طراحی و برنامه نویسی سایت را بشناسید ...

در دنیای طراحی سایت مفهومی به نام فریمورک وجود دارد که دوستان علاقمند به دنیای طراحی و برنامه نویسی وب ، هم در بخش فرانت اند ( طراحی قالب ) و هم در بخش بک اند ( برنامه نویسی ) با آن روبرو میشوند .
اگر در همین ابتدا بخواهیم مفهوم فریمورک را به سادگی خدمتتان معرفی کنیم میتوان اینگونه گفت که فریمورک یک ابزار است که بر پایه یک زبان توسعه داده شده و باعث میشود تا به راحتی با آن زبان کار کنید . پس میتوان نتیجه گرفت که اگر تسلط کاملی به یک زبان داشته باشید میتوانید بدون نیاز به هیچ استادی ، فریمورک و ابزار تسهیل کننده کار با آن زبان را یاد بگیرید .
اگر کمی در دنیای وب سابقه حضور داشته باشید ، عبارتهایی همچون بوت استرپ ، لاراول ، جانگو و اسامی از این دست را حتما شنیدهاید . این اسامی مربوط به زبان برنامه نویسی یا طراحی خاصی نیستند . همگی فریمورکهایی هستند که برای تسهیل کد نویسی در بستر یک زبان خاص توسعه داده شدهاند .
برای مثال زبان css را مد نظر داشته باشید که مطمئنا همه نام آن را شنیده و به احتمال زیاد با دستورات آن کار کردهاید . این زبان برای بخشهای طراحی ظاهر سایت به کار میرود . از آنجایی که بخش طراحی ، خود یک پروژه محسوب میشود و دایره کاربرد زبان css نیز بسیار بزرگ است ، اگر شخص طراح به تنهایی تمامی کدها را نگارش کند ، با چندین مشکل مواجه خواهد شد .
اولین مشکل این است که اگر این پروژه توسط یک طراح به شکلی دلخواه اجرا شود و بعدا این پروژه جهت توسعه یا رفع ایراد در اختیار طراح دیگری قرار گیرد ، به این دلیل که طراح قبلی تماما با ذهنیت خود اقدام به ساخت پروژه نموده است ، شخص تحویل گیرنده و طراح جدید ، لازم است ساعت ها و شاید روز ها زمان صرف کند تا بتواند روش کدنویسی قالب را درک نموده و نهایتا آن را توسعه داده یا رفع اشکال کند .
اما اگر پروژه توسط فریمورک طراحی شود ، به این دلیل که فریمورک دارای یک استاندارد جهانی است و اکثر طراحان به نحوه کدنویسی این سیستم ها آشنایی دارند ، درصورت انتقال پروژه ، تیم جدید نیز میتواند به راحتی بر روی پروژه کار کند به این دلیل که اصول کدنویسی در این پروژه استاندارد است .
مورد مهم بعدی که شما را ملزم به استفاده از فریمورک مینماید ، افزایش سرعت کدنویسی است که در ادامه بررسی خواهیم کرد . اما اول باید درک کنیم که فریمورک چگونه کار میکند و چه ساختاری دارد !
فریمورک چه ساختاری دارد ؟
همانطور که گفته شد ، فریمورک ابزاری است که بر اساس یک زبان طراحی و توسعه داده میشود . فریمورک بوت استرپ را به عنوان یک نمونه مورد مطالعه قرار میدهیم . فریمورک بوت استرپ برای سهولت در کدنویسی زبان css طراحی شده است . شما برای استفاده از بوت استرپ در داخل پروژه ، باید به وب سایت رسمی بوت استرپ در این نشانی مراجعه نموده و این فریمورک را دانلود کنید .
پس از اینکه بوت استرپ را دانلود نموده و داخل آن را باز کنید ، خواهید دید که داخل آن چیزی جز فایلهایی با فرمت css وجود ندارد . همانطور که گفته شد فریمورک برپایه یک زبان طراحی میشود و چون بوت استرپ نیز فریمورکی برای زبان سی اس اس است ، کدهای داخل این فریمورک نیز به زبان سی اس اس هستند و درحقیقت یک تیم قدرتمند ، برخی کدها و کلاس ها را با اسامی استاندارد ، از قبل برای ما تنظیم کردهاند که میتوان با به کار بردن آنها داخل پروژه ، سرعت کدنویسی را افرایش داده و یک ساختار استاندارد ایجاد نمود .
خود شما نیز میتوانید یک فریمورک طراحی کنید ، به عبارتی فایلهایی را ایجاد کنید که داخل آن ، دستوراتی از پیش تعریف شده وجود داشته باشد که این دستورات در پشت پرده بسیار طولانی هستند اما کاربر نهایی میتواند با دستوراتی کوتاه تر ، همان دستورات را داخل پروژه استفاده کند .
برای مثال اینگونه تصور کنید که قصد دارید تا یک باکس با اندازه 100 پیکسل در 100 پیکسل ، رنگ آبی و یک سایه ایجاد کنید ، برای اینکه این موارد در حین کدنویسی ساده باشند ، میتوانید تمامی این دستورات را داخل یک کلاس با نام مثلا box-pattern تعریف کنید و برای هرالمان که این استایل را نیاز داشتید تنها نام کلاس box-pattern را به آن المان الحاق کنید تا فورا این دیزاین به آن اعمال شود .
پس فریمورک ها ، دستوراتی استاندارد و از پیش تعریف شده هستند که با به کارگیری آنها ، سرعت کدنویسی بالاتر رفته ، و یک ساختار استاندارد برای تمامی اشخاصی ایجاد خواهد شد که با این فریمورک آشنایی دارند .
برای سایر زبان ها همچون php نیز فریمورکهای متعددی همچون لاراول ، زند ، کیک و… وجود دارند که در این فریمورک ها نیز ساختار به همین شکل است و شما بجای نوشتن چند خط کد ، میتوانید تنها با 1 خط کد ، دستورات لازم را نگارش کرده و سرعت و استاندارد سازی را به پروژه اضافه کنید .
مزایای استفاده ار فریمورک
فریمورک ها ابزارهای بسیار مناسبی هستند به همین دلیل تعداد آنها فراوان بوده و توسط جامعه بزرگی استفاده میشوند . مزایای این سیستم ها بسیار زیاد است اما میتوان اصلی ترین دلیل استفاده از آنها را اینگونه توصیف کرد :
- استاندارد سازی پروژه در سطح بین المللی اولین و اصلی ترین دلیل استفاده از فریمورک است
- مورد بعدی افزایش سرعت کدنویسی میباشد
- کاهش میزان کدهای نوشته شده در پروژه که نتیجه آن افزایش سرعت در تغییر و توسعه پروژه خواهد بود
- مقبولیت و محبوبیت پروژه توسط طیف وسیعی از طراحان و مخاطبین هدف
- سازگاری بیشتر پروژه با بازار کار روز
- رایگان بود اکثر فریمورک ها و سادگی استفاده از آنها
مواردی بسیار بیشتری نیز میتوان به عنوان مزیت یک فریمورک درنظر گرفت اما اصلی ترین و کافی ترین دلایل برای به کارگیری یک فریمورک مواردی هستند که ذکر شد . در حال حاضر فریمورک ها عضو جدایی ناپذیر پروژههای طراحی و برنامه نویسی وب هستند . بیش از 99% پروژههای استاندارد که اکنون وب سایت ها بر بستر آنها توسعه پیدا میکنند از فریمورک ها کمک گرفتهاند . برای مثال در بخش طراحی ، میتوان گفت امروزه تعداد پروژههایی که برای ایجاد بخش واکنشگرایی و ریسپانسیو از ابزارهایی همچون بوت استرپ استفاده نمیکنند تقریبا عددی نزدیک به صفر است . یا پروژههای بزرگ و اختصاصی را میتوان توسط فریمورک لاراول بر بستر زبان php با انعطافی بسیار بالا در مدت زمانی کوتاه تر پیاده کرد .
معایب Framework
شاید نتوان موارد زیادی را به عنوان معایب فریمورک معرفی کرد اما برخی موارد وجود دارند که دانستن آنها خالی از لطف نیست از جمله :
- اکثر این ابزار ها رایگان هستند پس در صورت وجود مشکل نباید انتظار داشت که یک شخص به عنوان پشتیبان پاسخگوی شما باشد ، در صورت داشتن مشکل یا خودتان باید این مشکلات را حل کنید و یا از طریق پرسش و پاسخ در فروم ها و … این مشکلات را از میان بردارید ( خیلی کم پیش می آید )
- از آنجایی که این ابزار ها رایگان هستند ، پس هم افراد برنامه نویس و طراح ، و هم افراد نفوذگر به این ابزار ها دسترسی دارند و اگر بتوانند هسته کدنویسی سایت شما را درک کنند ، بررسی و تحلیل آن جهت نفوذ برای آنها کار ساده تری است
اگر قصد دارید تا کار با یک فریمورک را یاد بگیرید توصیه میشود تا با حوصله این کار را انجام داده و اکثر ابزارهایی که در اختیار شما قرار گرفته شده را بیاموزید به این دلیل که استفاده از یک فریمورک صرفا به دلیل 2 یا 3 ویژگی آن ، کار معقولی نیست و میتوانید با کدهای اختصاصی که خودتان نگارش میکنید این بخش ها را نیز بدون فریمورک اجرا کنید . فریمورک ها ابزارهای بسیار زیادی دارند و استفاده از آنها میتواند حجم زیادی از کدهای شما را کاهش دهد . بنابراین یادگیری همه جانبه آنها توصیه اصلی ما است .
تفاوت Framework با cms
در این بین سوالی مطرح میشود که اگر فریمورک کارهای طراحی یا برنامه نویسی را ساده میکند پس این وسط cms چیست و چه کاربری دارد ؟ در ابتدا باید گفت که cms مخفف content management system یا به عبارتی سیستم مدیریت محتوا است . این سیستم ها به شکل اختصاصی جهت مدیریت کل محتوای سایت طراحی میشوند . برای مثال وردپرس یک content management system یا به عبارتی cms است که بر پایه زبان php توسط جمعی از برنامه نویسان ایجاد شده تا کسانی که نیاز به راه اندازی یک وب سایت به شکل فوری دارند بتوانند از این سیستم به عنوان بخش مدیریت کننده محتوای سایت استفاده کنند و نهایتا با نصب یک قالب و پوسته که با این سیستم سازگار است یک وب سایت آماده داشته باشند .
میتوان توسط فریمورکهایی همچون لاراول ، سیستمهایی همچون وردپرس را ایجاد کرد . پس میتوان اینگونه گفت که با فریمورک یک زبان ، میتوان هر المانی را ایجاد کرد حتی یک cms را ، و cms تنها برای مدیریت محتوای وب سایت شما ایجاد شده و استفاده میشود . برای مثال cms هایی را میتوان نام برد همچون وردپرس ، دروپال و جوملا که هر سه این سیستمهای مدیریت محتوا توسط زبان برنامه نویسی php طراحی و توسعه داده شدهاند . یا برای مثال اپن کارت ، پرستا شاپ و مجنتو که به عنوان سیستمهای مدیریت محتوای سایتهای فروشگاهی شناخته میشوند جهت ساخت یک فروشگاه با پوستههای آماده به کار میروند . در حقیقت میتوان گفت هنگام استفاده از cms ها شما با قسمتهای برنامه نویسی سروکار ندارید و طراحی سایت بدون کدنویسی و با ابزارهای آماده را انجام میدهید .
اما در فریمورک ها شما تماما با دانش برنامه نویسی ، در حال خلق یک سیستم و نرم افزار هستید که ممکن است این سیستم یک cms نیز باشد . البته نکته دیگری نیز در اینجا وجود دارد که میتوان در داخل یک cms نیز برنامه نویسی کرد و آن را توسعه داد .
اگر وردپرس را به عنوان یک نمونه مطالعه برای cms در نظر بگیریم ، چون این سیستم به شکل متن باز ( قابل توسعه ) ارائه شده است ، در نتیجه چند میلیون قالب و افزونه که اکنون برای این سیستم طراحی شده ، نشان دهنده این است که با تسلط به دانش برنامه نویسی هسته یک cms میتوان هم خود cms و هم بخشهای جانبی آن همچون پوسته و افزونه ها را توسعه داد . در حال حاضر میلیون ها پوسته مختلف برای نصب روی وردپرس طراحی و روانه بازار شده است . در بخش افزونه ها نیز به همین ترتیب ، و شما نیز میتوانید در صورت داشتن دانش برنامه نویسی php و همچنین شناخت به دستورات کدنویسی قالب یا افزونه وردپرس ، برای این سیستم مدیریت محتوا ، پوسته و افزونه برنامه نویسی کنید .
پس موضوع cms ها با فریمورک ها کاملا متفاوت است و نباید بین این دو اشتباه کرد ! از جمله فریمورکهای معروفی که در بخش طراحی قالب یا به عبارتی بخش فرانت اند کاربردی هستند میتوان به بوت استرپ ، یوآی کیت ، فاندیشن و W3c اشاره کرد که همگی در جهت ایجاد ساختار ریسپانسیو و واکنشگرایی پوسته سایت به کار میروند . React JS و Angular JS نیز از جمله فریمورکهای بخش فرانت اند هستند .
در بخش برنامه نویسی برای زبانهای مختلف ، فریمورکهای متفاوت وجود دارد ، برای php میتوان فریمورکهای لاراول ، زند ، کیک پی اچ پی و سیمفونی را معرفی کرد . برای زبان برنامه نویسی پایتون فریمورک جانگو از جمله محبوب ترین ها است .
تفاوت فریمورک و کتابخانه
سئوال دیگری که در بحث فریمورک ها مطرح میشود این است که تفاوت آن با کتابخانه چیست ؟ زمانی که از یک فریمورک استفاده میشود و در حقیقت فریمورک بر روی پروژه سوار شده است ، این طراح است که تصمیم مییرد دستورات فریمورک را در چه محلهایی از کدها و به چه روشی استفاده کند و این ابزارها و دستورات ، صرفا به یک ابزار یا یک محل از وب سایت ختم نمیشوند و دایره استفاده از آن بسیار گسترده است .
اما کتابخانه ها معمولا قطعه کدهای کوچکی هستند که سازوکار مشخص داشته و تنها برای یک منظور خاص استفاده میشوند و ابزارهای کنترلی کمتری نیز دارند . برای مثال اگر نیاز به یک اسلایدر دارید ، میتوانید یک کتابخانه از اسلایدرهای جی کوئری را دانلود نموده و روی پروژه خود قرار دهید و نهایتا طبق روش استفاده از این کتابخانه ، اسلایدر را در محلی که نیاز دارید ایجاد کنید . اما اگر بعد از آن نیاز به یک قسمت گالری داشته باشید ، باید یک کتابخانه جانبی دیگر دانلود نموده و از آن نیز برای ایجاد گالری استفاده کنید .
کتابخانه ها نیز قطعه کدهای آماده هستند اما هرگز قدرت و دامنه انعطاف آنها به اندازه فریمورک ها نیست . همچنین تعدد بسیار زیاد کتابخانه ها باعث شده است تا برای مثال در بخش طراحی ، طراحان از هر کتابخانه که صرفا آنها را به هدف مدنظر خواهد رساند استفاده کنند و اصلا ساختار مشخصی مثلا برای اسلایدر وجود ندارد و ممکن است در هر پوسته ، به روشهایی متفاوت و یا با کتابخانههای متفاوتی ایجاد شود . اما فریمورک ها شناخته شدهتر و استاندارد تر هستند .
نتیجه گیری : اگر قصد دارید تا در بازار کار کنونی فعالیت داشته و درآمد کسب کنید ، میبایست با شناخته شده ترین فریمورک ها در حوزه کاری خود آشنایی داشته و روش کار با هرکدام را بدانید تا توانایی ایجاد پروژههای درخواستی کار فرما را داشته باشید .








