فریم ورک در دنیای وب چیست ؟ لیست ، مزایا و معایب
وب فریم ورک ها و کارایی آنها
فریم ورک ها در واقع چارچوب هایی هستند که که برای یک زبان برنامه نویسی ساخته میشوند . که این هم شامل فریم ورک های بک اند و هم فرانت اند هستن . این چارچوب های نرم افزاری برای پشتیبانی از توسعه برنامه های کاربردی وب ، از جمله سرویس ها ، سورس ها و API ها طراحی شدند . به عبارت ساده فریم ورک ها مجموعه ای از کتابخونه ها ، کد ها و پکیج ها هستند که شما نیازی ندارین وقت اضافه برای نوشتن اونا صرف کنین و درگیر جستجو ها و خطاهای احتمالی بشین .
در روز های اولیه توسعه برنامه های وب ، فریم ورک ها به عنوان ابزاری برای پایان دادن به کد نویسی های دستی معرفی شدند . اما این برای قدیم بود . الان ما زبان های مخصوص وب داریم و مشکل تغییر ساختار برنامه به دلیل رسیدن یک عملکرد کلی بر طرف شده . الان دیگه بسته به نیاز خودتون و زبان مورد نظرتون میتونین یک فریم ورک را انتخاب کنین و یا اصلا از فریم ورک استفاده نکنین اگر با سیاست های کلی فریم ورک مشکل دارید . یه حالت دیگه ام هستش که میان از چند فریم ورک استفاده میکنن و با هم همگرا میکنن . این موضوع رو هم در نظر داشته باشین که اگه کامل با فریم ورک آشنا نباشین و تسلط نداشته باشین ، شاید تو اسکیل ( Scale ) های بزرگتر نرم افزاری بخاطر بهینه نبودن و عدم پرفورمنس مناسب به مشکل بخورین .
تفاوت بین CMS و فریم ورک چیست ؟
شاید خیلی ها فریم ورک رو با CMS اشتباه بگیرن . CMS سیستم مدیریت حتوا هستش که میتونه توسط فریم ورک هم ساخته بشه . سیستم مدیریت محتوا معمولا ساخته میشه که باهاش بتونن به سادگی اشخاصی که حتی تجربه کد نویسی هم ندارن با چنتا کلیک وب سایت خودشون رو اون شکلی که دوست دارند بسازند . نه هر شکلی حالا ، یه سری حالت هارو خود CMS در اختیارشون قرار میده . به علاوه اینکه تو تولید محتوا هم به مشکل نخورن .
حالا فریم ورک میاد یه مجموعه از ویژگی هارو در اختیارتون قرار میده ( مجموعه کلاس ها ، فانکشن ها ، پکیج ها و ... ) تا بتونین یک برنامه سفارشی بسازین . تفاوت اصلی بین این دو این شکلیه که فریم ورک رو یک کامند لاین در نظر بگیرین و CMS رو یک اکسپلورر که میتونین راحت داخلش پیمایش کنین ، پلاگین نصب کنین ، تغییرات رو اعمال کنین و حتی تولید محتوا کنین . بدون نیاز به کد زدن .
درضمن با یک فریم ورک میتونین همه چیزو اون شکلی که دوست دارین بسازین و وِیژگی هایی که دوس دارین رو به نرم افزار اضافه کنین ولی CMS ها دارای یه سری محدودیت هایی از طرف شرکت سازنده هستند . یعنی شما باید مطابق منطق پیاده سازی اونها پیش برین . ولی به عنوان برنامه نویس شاید با ساختار کلاس بندی ، استفاده از ماژول ها و پکیج های یک فریم ورک هم مشکل داشته بشین که اون هم قابل تغییره ، ولی خیلی باید تسلط داشته باشین که ساختار کلی فریم ورک رو بهم نریزین .
انواع فریم ورک های وب
خب همونطور که گفتیم فریم ورک های وب دو حالت هستند یا برای سمت سرور یا بک اند طراحی شدن و یا برای سمت کلاینت یا فرانت . همچنین هر زبان هم فریم ورک های مخصوص خودش رو داره و هرکدوم مزیت های خاص خودشون رو دارن . فقط این رو در نظر داشته باشین که بعضی فریم ورک های سمت سرور دارای Template Engine هستند که به شما اجازه مدیریت سمت کلاینت رو هم میده . یعنی در واقع باهاش میتونین یه نرم افزار یک پارچه مختص به اون فریم ورک رو بسازین . خب اول بیاین فریم ورک های سمت سرور رو لیست کنیم .
فریم ورک های بک اند زبان برنامه نویسی C شارپ ( C#)
- ASP.NET
- ASP.NET Core
- ASP.NET MVC
فریم ورک های بک اند زبان برنامه نویسی Python
- Django
- Masonite
- TurboGears
- web2py
- Flask
فریم ورک های بک اند زبان برنامه نویسی Php
- Laravel
- CodeIgniter
- Symfony
- Laminas Project
- Phalcon
- CakePhp
- Yii
- FuelPHP
- Slim
- Phpixie
- Fat-Free Framework
فریم ورک های بک اند زبان برنامه نویسی جاوا اسکریپت ( Javascript )
- Meteor.js
- Express(Node Js)
- Next.js
این ها رایج ترین فریم ورک های سمت سرور بودن که باید موقع طراحی یه وبسایت خیلی چیزا رو در نظر داشته باشین تا بتونین یکیشون رو انتخاب کنین . همچنین قبلا گفتیم که بعضی از اینها قابلیت Template Engine برای طراحی های فو استک رو هم دارن .
بریم حالا سراغ فریم ورک های سمت کلاینت یا فرانت که بیشترشون برای Javascript هستند .
فریم ورک های فرانت اند زبان برنامه نویسی جاوا اسکریپت ( Javascript )
- Angular-Js
- React.js
- Vue.js
- Ember.js
- Backbone.js
- Aurelia.js
- Polymer.js
- SolidJs
- Alpine.js
- Lit
مایکروسافت هم برای زبان C# به تازگی فریم ورکی رو سمت فرانت تولید کرده به اسم Blazor که داره محبوب میشه منتهی هنوز جا داره تا بتونه با جاوا اسکریپت رقابت کنه xD . منظورم از رقابت سر Performance نیست ، تو جذب کاربر هستش .
مزایا و معایب استفاده از فریم ورک ها
برخی از فریم ورک ها ساختار و کد نویسی ای که دارن شاید تو Scale نرم افزاری بزرگ نتونن پاسخگو باشن . مثلا وقتی صحبت از درخواست های 10 هزارتایی یا بیشتر از سمت کاربر ها میشه قطعا اگه مدیریت مناسب روی ساختار دیتا بیس و نرم افزار نشه ، فریم ورک هایی مثل لاراول کم میارن . یا از نظر امنیتی در نظر داشته باشین که چون منطق طراحی فریم ورک و سورس کد دراختیار همه هستش ، به راحتی میشه با چنتا سرچ CVE ها یا آسیب پذیری های مختلفی رو برای این فریم ورک ها پیدا کرد . پس باید به روز باشین و از آسیب پذیری ها آگاه باشین و خیلی جاها از حالت های پیش فرضی که برای نرم افزار در نظر گرفته شده استفاده نکنین . مثلا لاراول تو سرویس احراز هویت از رول های user ، admin ، superadmin استفاده میکنه . خب شخصی که میخواد نفوذ کنه خیلی راحت با تغییر دادن رول و دونستن رول های پیش فرض میتونه به راحتی اینکار رو انجام بده .
ولی اگه شما یه نرم افزار رو بدون استفاده از فریم ورک ها بسازین ، میتونین هر شکل که دلتون بخواد از اول بالا بیارین . زحمت کد زدنتون بیشتر میشه ، شاید خطاهاتون زیاد بشه ، شاید تو توسعه مشکل داشته باشین ولی همه ی اینا بسته به خودتون و ساختاری که انتخاب میکنین داره .