Разликата между рамка и библиотека

Разработчиците често използват термините „библиотека“ и „рамка“ като взаимозаменяеми. Но има разлика.

И двете рамки и библиотеките са код, написан от някой друг, който се използва за решаване на често срещани проблеми.

Да приемем например, че имате програма, в която планирате да работите със струни. Решавате да запазите кода си СУХ (не се повтаряйте) и да напишете някои функции за многократна употреба като тези:

function getWords(str) { const words = str.split(' '); return words; } function createSentence(words) { const sentence = words.join(' '); return sentence; }

Честито. Създали сте библиотека.

Няма нищо вълшебно в рамките или библиотеката. И библиотеките, и рамките са код за многократна употреба, написан от някой друг. Тяхната цел е да ви помогнат да разрешите често срещани проблеми по по-лесни начини.

Често използвам къща като метафора за концепциите за уеб разработка.

Библиотеката е като да отидеш в Икеа. Вече имате дом, но имате нужда от малко помощ с мебелите. Не ви се иска да правите собствена маса от нулата. Ikea ви позволява да избирате различни неща, които да отидете в дома си. Вие контролирате.

Рамката, от друга страна, е като изграждането на модел на дом. Имате набор от чертежи и няколко ограничени възможности за избор по отношение на архитектурата и дизайна. В крайна сметка изпълнителят и проектът контролират. И те ще ви уведомят кога и къде можете да предоставите своя принос.

Техническата разлика

Техническата разлика между рамката и библиотеката се крие в термин, наречен инверсия на контрола.

When you use a library, you are in charge of the flow of the application. You are choosing when and where to call the library. When you use a framework, the framework is in charge of the flow. It provides some places for you to plug in your code, but it calls the code you plugged in as needed.

Let’s look at an example using jQuery (a library) and Vue.js (a framework).

Imagine we want to display an error message when an error is present. In our example, we will click a button, and pretend an error occurs.

With jQuery:

Original text


// index.html