淺談框架和庫的區別

什麼是框架和庫?


初識框架和庫

對於好多初學者來講(例如我),很容易把框架和庫搞混淆,分不清它們的具體區別,直到如今我也不是把框架和庫搞得很清晰。只是站在初學者的角度,對框架和庫的區別有本身的認識和看法。因此今天想在這,給和我同樣的初學者剖析下它二者都有哪些區別,以便於咱們能更好的在實際開發中應用框架和庫。前端

簡單地來分析,咱們把框架(Framework)庫(Library,簡寫Lib)能夠用咱們生活中的例子來闡述。vue

假如咱們要買一臺電腦,框架爲咱們提供了已經裝好的電腦,咱們只要買回來就能用,但前提是你必須把整個電腦要買回來。另外,咱們還必須根據框架設定的使用規則來使用電腦。雖然這樣用戶可能輕鬆許多,但會致使不少人用同樣的電腦,或你想自定義某個部件將須要修改這個框架。而庫就如本身組裝的電腦。庫爲咱們提供了不少部件,咱們須要本身組裝,若是某個部件庫未提供,咱們也能夠本身作。

庫的使用很是靈活,但沒有框架方便,這就是框架和庫本質的區別。react


框架和庫的區別:

1.庫是將代碼集合成的一個產品,供程序員調用。

面向對象的代碼組織形式而成的庫也叫類庫。面向過程的代碼組織形式而成的庫叫函數庫。在函數庫中的可直接使用的函數叫庫函數。程序員

咱們在實際開發中,若是須要用到庫,只須要使用庫內咱們所需的某部分類或函數,而後本身再實現其餘部分的功能。直白的說,庫爲咱們提供了不少封裝好的函數,看起來零零散散,可是咱們使用起來比較靈活,就是哪裏須要,咱們就取它裏面咱們所需的某部分,用不到它的地方咱們本身來實現。redux

2.框架則是爲解決一個(一類)問題而開發的產品。

框架用戶通常只須要使用框架提供的類或函數,便可實現所有功能。bootstrap

咱們在開發中使用框架的時候,框架爲咱們提供了一條龍服務,一整套的服務,咱們調用框架的時候,取的是整個框架,必須使用這個框架的所有代碼,即便有些地方的代碼咱們用不到,可是咱們不能挑三揀四。並且,咱們使用框架的時候,必須按照框架設定好的使用規則來使用它,至關於你找別人幫忙,你得聽人家的話,按人家的吩咐辦事,雖然別人幫你時你可能會輕鬆,可是你必須聽人家的,按人家的意思來。這些點可能讓有些人以爲框架不是很靈活。react-router

另外,庫和框架還有個很大的區別就是: inversion of control. 也就是your code calls a library but a framework calls your code,架構

賣完關子了,如今咱們來細說這個區別。也就是說:當你在調用library的時候,你是按照本身的意願來control它,好比jQuery(下文還會細說jQuery)。而,對於framework, 那麼control就是倒轉過來了,是它在control你,好比bootstrap。框架


小結:

上面咱們都說過了,使用庫的時候咱們比較隨意,想用哪取哪,哪塊好用哪,並且把它拿過來能夠按照咱們的編寫意願來用。可是框架就不同,咱們好像被它控制着,要使用它,就得聽它的,按照它的規則來,即便它某些地方咱們用不到,或者不喜歡,也不能說什麼。異步


擴展:

咱們來把上面遺留的jQuery說清楚。jQuery 的定位顯得棱模兩可,能夠說是庫,也能夠說是框架,爲何這麼說呢?

官方的來講,框架也算是庫的一種,但傾向於重量級一些,傾向於提供整套的解決方案,傾向於創造一些須要你來遵照的規則和範例。而JQuery屬於Java家族,它是一種快捷,小巧,功能豐富的JavaScript庫。

因此,你能夠把它當成框架來使用。以jQuery爲基礎架構出你本身的框架。所以咱們不必在這個問題上糾結,我就當它是庫,可是能夠當框架來用。

還有一點要說的是,JQuery提升的是你的工做效率,並非代碼的運行效率。它只是減小了你須要敲的代碼量,可是它的執行效率不必定有原生JS的效率高,除非你原生JS寫的特別差。

在實際中,像angular、backbone、vue就屬於框架,而jQuery、react、underscore就是庫,

就單拿React來講吧,官網本身也說了它是庫:

React is a declarative, efficient, and flexible JavaScript library for building user interfaces.

由於框架是有一套解決方案的,React就是純粹寫UI組件的 沒有什麼異步處理機制、模塊化、表單驗證這些。React和react-router, react-redux結合起來才叫框架,而React自己只是充當一個前端渲染的庫而已。(暫完)

筆者做爲一個新人,翻看和欣賞了大神的筆記後,本身總結加工,發表一下本身淺薄的看法,若是哪裏說得不對,但願讀者能提出批評和指正,本人表示誠心的感謝。

相關文章
相關標籤/搜索