Автор оригинала: Brandon Wozniewicz.
Разработчики часто используют термины «библиотека» и «рамки» взаимозаменяемо. Но есть разница.
Оба рамки, так и библиотеки являются кодом, написанным кем-то другим, который используется для решения общих проблем.
Например, скажем, у вас есть программа, в которую вы планируете работать с строками. Вы решили сохранить свой код сухим (не повторять себя) и пишите несколько функций многоразовых функций:
function getWords(str) {
const words = str.split(' ');
return words;
}
function createSentence(words) {
const sentence = words.join(' ');
return sentence;
}Поздравляем. Вы создали библиотеку.
Нет ничего магического о каркасах или библиотеке. И библиотеки, и рамки являются многоразовым кодом, написанным кем-то другим. Их цель – помочь вам решать общие проблемы в более легких способах.
Я часто использую дом как метафору для концепций веб-разработки.
Библиотека похожа на ИКЕА. У вас уже есть дом, но вам нужно немного помочь с мебелью. Вы не хотите сделать свой собственный стол с нуля. IKEA позволяет выбирать разные вещи, чтобы пойти в свой дом. Вы контролируете.
Рамки, с другой стороны, похоже на строительство модели дома. У вас есть набор чертежей и несколько ограниченный Выбор, когда дело доходит до архитектуры и дизайна. В конечном итоге подрядчик и план регулируется. И они дадут вам знать, когда и где вы можете предоставить свой вклад.
Техническая разница
Техническая разница между структурой и библиотекой заключается в термине под названием Inversion Control.
Когда вы используете библиотеку, вы отвечаете за поток приложения. Вы выбираете, когда и где позвонить в библиотеку. Когда вы используете каркас, структура отвечает за поток. Он предоставляет некоторые места для вас, чтобы подключить ваш код, но он вызывает код, который вы подключены по мере необходимости.
Давайте посмотрим на пример, используя jQuery (библиотека) и vue.js (рамка).
Представьте, что мы хотим отобразить сообщение об ошибке, когда присутствует ошибка. В нашем примере мы нажмем кнопку, и притворяясь, что происходит ошибка.
С jQuery:
// index.html
// app.js
// A bunch of our own code,
// followed by calling the jQuery library
let error = false;
const errorMessage = 'An Error Occurred';
$('#myButton').on('click', () => {
error = true; // pretend some error occurs and set error = true
if (error) {
$('#app')
.append(`${errorMessage}
`);
} else {
$('#error').remove();
}
});Обратите внимание, как мы используем jQuery. Мы Скажите нашу программу, где мы хотим это позвонить. Это очень похоже на хождение в физическую библиотеку и потянув определенные книги с полки, как мы хотим их.
Это не значит, что функции jQuery не требуют определенных входов Однажды Мы называем их, но сама jQuery - это библиотека этих функций. Мы отвечаем.
С vue.js.
//index.html
const vm = new Vue({
template: `
{{ errorMessage }}
`,
el: '#vue-example',
data: {
error: null,
errorMessage: 'An Error Occurred',
},
methods: {
checkForErrors() {
this.error = !this.error;
},
},
});С Vue мы должны заполнить пробелы. Vue Constructor - это объект с определенными свойствами. Это говорит нам, что это нужно, а затем за кулисами, Vue решает, когда это это нужно. Vue инвертирует контроль над программой. Мы подключаем наш код в Vue. Vue отвечает.
Разница ли это библиотека или структура заключается в том, есть ли инверсия контроля.
Записка о том, чтобы быть "самоуверенным"
Вы часто слышите рамки и библиотеки, описываемые как «самоуверенные» или «неумелые». «Эти термины субъективны. Они пытаются определить уровень свободы, разработчик имеет при структурировании их кода.
Рамки более самоуверены, чем без - по определению - инверсия контроля требует концессии свободы проектирования приложения.
Опять же, степень, к которой-то является субъективной. Например, я лично рассмотрел бы угловую мощную базу и Vue.js менее самоуверенную структуру.
В итоге
- Рамки и библиотеки являются оба кодом, написанным кем-то другим, что помогает вам выполнить некоторые общие задачи менее подробному способу.
- Рамка инвертирует контроль программы. Это говорит разработчику, что им нужно. Библиотека не. Программист вызывает библиотеку, где и когда они нужно это.
- Степень свободы библиотеки или рамки дают разработчику, будет диктовать, как «самоуверенно».
Спасибо за прочтение!
Оригинал: "https://www.freecodecamp.org/news/the-difference-between-a-framework-and-a-library-bd133054023f/"