Процеса на разработка на съвременни приложения на JavaScript обикновено включва в себе си използването на множество библиотеки или софтуерни рамки. Всъщност днес много рядко можем да срещнем JavaScript приложения изцяло разработени на чист JavaScript.
В Интернет можете да намерите множество определения на това какво е билиотека и какво е рамка, но целта на тази статия е да ви разясни защо е важно да правим разлика между двете и какво ще ни даде това на практика.
Какво представляват библиотеките на JavaScript?
Библиотеките са съвкупност от функции или обекти за изпълнение на различни задачи, като отделните функции и обекти са относително независими едни от други и могат да се използват по наша преценка както и когато разучаваме някоя библиотека, можем да изучим само онези функции и обекти, които ще ни трябват за конкретен проект.
Tук може да се направи добра аналогия с библиотеките в реалния живот. Ако си извадим читателска карта в университетската или училищната библиотека, то това не означава, че трябва да прочетем всички книги. За нас могат да представляват интерес само книгите на дадена тематика или точно определени заглавия.
По същия начин, ако в проекта, който разработваме се налага да извършваме например множество обработки на масиви, то можем да включим към проекта библиотеката Lodash, или някоя друга с подходящи функции, и да използваме само онези функции, които ще са ни полезни за проекта. Останалата част от библиотеката можем спокойно да я игнорираме, ако няма да ни върши работа.
Какво е софтуерна рамка (framework) на JavaScript?
Софтуерните рамки са ориентирани към разработка на определен тип приложения като думата тип тук трябва да се възприема в най-широк смисъл, тъй като рамките имат различна насоченост.
Някои от тях са предназначени за постигане на определена архитектура на приложението, други съдържат в себе си компоненти за представяне на съдържанието или ни позволяват да програмираме определен тип приложения (хибридни мобилни приложения, приложения с двупосочна комуникация между сървър и клиент и др.).
Ето и няколко примера с конкретни рамки: с Angular се разработват уеб приложения с MVC (Model View Controller) архитектура, с Bootstrap се разработват адаптивни (Responsive) уеб сайтове, jQuery Mobile съдържа компоненти за мобилни уеб приложения, а с Express може да се програмира сървърната част на уеб приложенията (да, Express има и ядро за генериране на страниците – template engine, но акцентът е поставен върху програмирането на сървърната част).
Същестуват и рамки, които комбинират архитектура и представяне на съдържание като рамката Ionic, която е като надстройка на Angular ( т.е. MVC архитектура ) и рамката Apache Cordova ( предоставя достъп до хардуера на мобилната платформа) и съдържа в себе си компоненти за разработка на приложения хибридни мобилни приложения.
С една дума, светът на софтуерните рамки е доста разнообразен и изброените варианти не изчерпват съществуващите решения, а и не е това целта на статията!
Софтуерните рамки позволяват да се решат редица проблеми свързани например с постигане на независимост на отделните части на приложението (MVC), автентикация на потребителите, рутиране и др. и съответно при програмиране на приложения със съответната рамка трябва да се следва модела на разработка заложен в нея – в противен случай крайният резултат обикновено не е добър.
Защо е важно да знаем разликата между библиотеките и софтуерните рамки?
Знаейки разликата между библиотеките и софтуерните рамки на JavaScript, ще можете по-лесно да се ориентирате в това как трябва да подхождате при разучаването им и използването им в проектите.
Ще избегнете ситуации, в които се опитвате да решите всички задачи, комбинирайки множество библиотеки, при условие че съществува софтуерна рамка, с която тези задачи се решават много по-елегантно, или използвате дадена софтуерна рамка като библиотека, опитвайки се да вземете само малка част от нейната функционалност.
Ще знаете на какво трябва да обърнете внимание. Например при разучаването на софтуерна рамка, първото нещо, на което трябва да обърнем внимание е общият модел на работа. Детайлите относно функционалността се изясняват обикновено впоследствие, докато при библиотеките е точно обратното – интересува ни най-вече с какво могат да ни бъдат полезни отделните функции.