前端框架與庫的區(qū)別

框架就是提供了前端項目整體解決方案。庫就是自己組合來實現(xiàn)項目。

某種層面上來說每辟,前端庫就像我平時家里的工具箱塔淤,里面有起子、錘子斥杜,我們可以通過這個工具箱來給小孩子創(chuàng)造玩具虱颗,我們甚至可以自己創(chuàng)造一些工具,方便我們?nèi)蘸髣?chuàng)造玩具蔗喂。而框架忘渔,更像是我們在淘寶上買好了車的骨架,回來后拼裝好了缰儿,可以根據(jù)自己的需要畦粮,貼上不同的貼紙,噴上不同的顏色返弹,我們跟其他使用框架的人锈玉,拿到手上的玩具骨架都是一樣的,我們很難自己去改變义起。

前端基于js的框架(frameworks)/庫(librarys)更是層出不窮拉背,且各自都有其自身的優(yōu)勢以及劣勢,有些是向開發(fā)使用者提供整套的服務(wù)默终,比如MVC一整套椅棺,有些則是專注于某一個點(diǎn),比如專注于dom操作或異步請求齐蔽;

框架與庫之間最本質(zhì)區(qū)別在于控制權(quán):you call libs, frameworks call you(控制反轉(zhuǎn))

庫:庫是更多是一個封裝好的特定的集合两疚,提供給開發(fā)者使用,而且是特定于某一方面的集合(方法和函數(shù))含滴,庫沒有控制權(quán)诱渤,控制權(quán)在使用者手中,在庫中查詢需要的功能在自己的應(yīng)用中使用谈况,我們可以從封裝的角度理解庫勺美;

框架:框架顧名思義就是一套架構(gòu)递胧,會基于自身的特點(diǎn)向用戶提供一套相當(dāng)于叫完整的解決方案,而且控制權(quán)的在框架本身赡茸,使用者要找框架所規(guī)定的某種規(guī)范進(jìn)行開發(fā)缎脾。

其實框架和庫關(guān)系還是很緊密的,他們以聚合的形式讓我們在所要開發(fā)的應(yīng)用中使用占卧;現(xiàn)在嘗試?yán)斫庖幌聝蓤D下圖:

在實際中遗菠,像angular、backbone华蜒、vue就屬于框架辙纬,而jQueryReact友多、underscore就是庫牲平,在前者中我們完全可以自由的使用后者,同時也可以沒有前者的基礎(chǔ)之上使用后者域滥,都是很自由纵柿,控制權(quán)始終在我們的手中,但是使用框架時候就必須按照它的規(guī)范來進(jìn)行模塊化的開發(fā)启绰;

可能有人會問react也是庫么昂儒?的確它就是一個庫,為什么呢委可?

評論區(qū):React和react-router, react-redux結(jié)合起來才叫框架渊跋,本身只是充當(dāng)一個前端渲染的庫而已;感謝@米斯特white的提出

開頭有說到框架是有一套解決方案的着倾,react就是純粹寫UI組件的 沒有什么異步處理機(jī)制拾酝、模塊化、表單驗證這些

庫卡者、插件蒿囤、組件、控件崇决、擴(kuò)展

組件本質(zhì):封裝材诽。一定程度上可以約等于模塊化,調(diào)用者只需關(guān)注輸入和輸出恒傻,總思想就是分而治之脸侥、重復(fù)利用。低耦合盈厘;

組件解決資源整合問題睁枕、增強(qiáng)功能促進(jìn)開發(fā)效率。提高可維護(hù)性,便于協(xié)同開發(fā)譬重,每個模塊都可以分拆為一個組件拒逮,例如異步請求組件罐氨,路由組件臀规,各個視圖組件。

庫:為解決某種特定需求的程序功能集合栅隐;即library塔嬉,如jquery,常用于方便dom操作租悄、解決瀏覽器兼容等問題谨究。

插件:參與程序內(nèi)部運(yùn)行環(huán)節(jié)的一段或多段代碼集合;即Plugin泣棋,遵循一定規(guī)范寫出來方便程序展示效果胶哲,擁有特定功能且方便調(diào)用。如輪播圖和瀑布流插件潭辈,

擴(kuò)展:使用程序API擴(kuò)展程序適用面的一段或多段代碼集合鸯屿;即Extension,

組件:可重復(fù)使用并且可以和其他對象進(jìn)行交互的對象把敢;即Component寄摆,能復(fù)用的js代碼其實跟插件差不多,區(qū)別可能就是插件專注于特定功能而組件更專注于復(fù)用吧修赞。

控件:提供或?qū)崿F(xiàn)用戶界面功能的組件婶恼,控件即組件,反之不一定柏副。即Control勾邦,

組件(Component)是是一個含義很大的概念,一般是指軟件系統(tǒng)的一部分割择,承擔(dān)了特定的職責(zé)眷篇,可以獨(dú)立于整個系統(tǒng)進(jìn)行開發(fā)和測試,一個良好設(shè)計的組件應(yīng)該可以在不同的軟件系統(tǒng)中被使用(可復(fù)用)锨推。例如V8引擎是Chrome瀏覽器的一部分铅歼,負(fù)責(zé)運(yùn)行JavaScript代碼,這里V8引擎就可以視為一個組件换可。V8引擎同時也是Node.jsjavascript解釋器椎椰,這體現(xiàn)了組件的可復(fù)用性。

庫(Library)是一系列預(yù)先定義好的數(shù)據(jù)結(jié)構(gòu)和函數(shù)(對于面向?qū)ο笳Z言來說沾鳄,是類)的集合慨飘,程序員通過使用這些數(shù)據(jù)結(jié)構(gòu)和函數(shù)實現(xiàn)功能。例如Moment.js是一個javascript庫,提供了處理時間的一些函數(shù)瓤的。

框架(Framework)也是一系列預(yù)先定義好的數(shù)據(jù)結(jié)構(gòu)和函數(shù)休弃,一般用于作為一個軟件的骨架,但程序真正的功能還需要由開發(fā)者實現(xiàn)圈膏∷框架和庫的最大區(qū)別在于“控制反轉(zhuǎn)”,當(dāng)你使用一個庫稽坤,你會調(diào)用庫中的代碼丈甸,而當(dāng)你使用一個框架,框架會調(diào)用你的代碼尿褪∧览蓿框架和庫是一個有交叉的概念,很多框架都是以庫的形式發(fā)布的杖玲,例如Java的Spring MVC框架顿仇,其發(fā)布的jar包本身就是一個庫。而一個庫如果也能通過依賴反轉(zhuǎn)的方式進(jìn)行擴(kuò)展摆马,那也可以視為一個框架臼闻,例如Python的markdonw解析庫Python Markdown,可以添加自定義的解析擴(kuò)展今膊,那么可以被視為一個markdonw解析框架些阅。

插件(Plugin)和擴(kuò)展(extension)是兩個很相似的概念,我沒有辦法在軟件系統(tǒng)的角度給出這二者的區(qū)別斑唬。插件(或擴(kuò)展)是對已有應(yīng)用程序或者庫的功能補(bǔ)充市埋,一個軟件的插件(或擴(kuò)展)是實現(xiàn)了該軟件預(yù)定義接口的組件,用來向已有的軟件添加功能恕刘。插件在目標(biāo)軟件發(fā)布時可以不預(yù)先包含缤谎,而是在運(yùn)行時被使用者注冊,然后再被目標(biāo)軟件調(diào)用褐着。另一個很接近的概念是加載項(Add-on)坷澡,可以認(rèn)為加載項是插件(或擴(kuò)展)的子集,是僅針對應(yīng)用程序來說的功能補(bǔ)充含蓉。一個插件的例子是Flash的瀏覽器插件频敛,為瀏覽器實現(xiàn)了運(yùn)行Flash程序的功能。

控件(Control)是gui編程的一個概念馅扣,一般來說一個最終用戶可以看到的斟赚、可交互的組件,被稱為一個控件差油。例如.NET編程中的System.Windows.Controls.Button是一個控件拗军。

轉(zhuǎn)自:https://zhuanlan.zhihu.com/p/26078359?group_id=830801800406917120

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末任洞,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子发侵,更是在濱河造成了極大的恐慌交掏,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,843評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件刃鳄,死亡現(xiàn)場離奇詭異盅弛,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)铲汪,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,538評論 3 392
  • 文/潘曉璐 我一進(jìn)店門熊尉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人掌腰,你說我怎么就攤上這事≌偶” “怎么了齿梁?”我有些...
    開封第一講書人閱讀 163,187評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長肮蛹。 經(jīng)常有香客問我勺择,道長,這世上最難降的妖魔是什么伦忠? 我笑而不...
    開封第一講書人閱讀 58,264評論 1 292
  • 正文 為了忘掉前任省核,我火速辦了婚禮,結(jié)果婚禮上昆码,老公的妹妹穿的比我還像新娘气忠。我一直安慰自己,他們只是感情好赋咽,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,289評論 6 390
  • 文/花漫 我一把揭開白布旧噪。 她就那樣靜靜地躺著,像睡著了一般脓匿。 火紅的嫁衣襯著肌膚如雪淘钟。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,231評論 1 299
  • 那天陪毡,我揣著相機(jī)與錄音米母,去河邊找鬼。 笑死毡琉,一個胖子當(dāng)著我的面吹牛铁瞒,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播绊起,決...
    沈念sama閱讀 40,116評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼精拟,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起蜂绎,我...
    開封第一講書人閱讀 38,945評論 0 275
  • 序言:老撾萬榮一對情侶失蹤栅表,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后师枣,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體怪瓶,經(jīng)...
    沈念sama閱讀 45,367評論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,581評論 2 333
  • 正文 我和宋清朗相戀三年践美,在試婚紗的時候發(fā)現(xiàn)自己被綠了洗贰。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,754評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡陨倡,死狀恐怖敛滋,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情兴革,我是刑警寧澤绎晃,帶...
    沈念sama閱讀 35,458評論 5 344
  • 正文 年R本政府宣布,位于F島的核電站杂曲,受9級特大地震影響庶艾,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜擎勘,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,068評論 3 327
  • 文/蒙蒙 一咱揍、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧棚饵,春花似錦煤裙、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,692評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至怪与,卻和暖如春夺刑,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背分别。 一陣腳步聲響...
    開封第一講書人閱讀 32,842評論 1 269
  • 我被黑心中介騙來泰國打工遍愿, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人耘斩。 一個月前我還...
    沈念sama閱讀 47,797評論 2 369
  • 正文 我出身青樓沼填,卻偏偏與公主長得像,于是被迫代替她去往敵國和親括授。 傳聞我的和親對象是個殘疾皇子坞笙,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,654評論 2 354

推薦閱讀更多精彩內(nèi)容