MVC是一種代碼的組織結構,在一個工程項目中,將代碼的數據處理,邏輯單元和交互部分分離開來達到一種低耦合的效果,便於工程的修改。MVC中M表明Model,V表明View,C表明Controller。其中Model負責對數據進行組織,而View負責數據的呈現和與你們的交互,C負責鏈接View和Model單元,用於處理事務的邏輯。MVC的結構使得數據的呈現和數據的處理和維護分離開來,便於程序的修改。前端
MVC最顯著的優勢就是邏輯清晰,代碼之間耦合度相對來講較低,便於團隊之間的分工和合做。這一點在工程中比較重要,當工程變得比較巨大的時候,代碼之間應儘可能減小交叉,避免後期對代碼迭代的時候進行大範圍的改動,能夠說MVC是面向對象邏輯的進一步的封裝。打一個不是很恰當的比喻,面嚮對象的技術就像是在培養可以幹活的工人,而MVC則是將這些工人組織成爲工廠。若是理解如今大工程的分工合做模式,咱們就知道MVC的魅力之所在, MVC並無直接提升了計算速度的功能,而是提升了開發者的開發速度,能夠說MVC是一個程序員管理代碼的管理模式。程序員
MVC缺點的話,就是三者之間的分工並非均衡的,通常來講controller的工做量較大,仍然顯得有些臃腫。MVC只算是一個輕量級的管理模式,因此比較適合小團體之間的合做。對於一些小的程序,用MVC這麼高大上的東西又顯得有些畫蛇添足。web
通過上面的一些敘述,相比你們仍然不會很清楚什麼是MVC,不過只須要記住,MVC就是三塊,一塊是數據,想要什麼數據就從那裏面拿,一塊是邏輯,想要拿數據必需要通過他,最後一塊是呈現。記住了這些,咱們就來看看MVC在前臺是怎麼工做的,當前web前臺的MVC有不少能夠利用的框架,好比Angular、Backbone、CanJS與Ember,這裏主要討論下MVC在Backbone裏是怎麼封裝起來的。安全
Backbone.js應該是一個比較輕量級的MVC框架了,壓縮後的代碼只有8 KB,代碼總長度也不過1000多行(包括註釋)。不過不要欣喜太早,這並不表明你在使用的時候只須要這1000行代碼就足夠了,若是你想要更加便捷的使用Backbone.js,你就須要一些其餘的庫來輔助了,不過也不用擔憂,和其餘框架相比,這個真的是十分輕量級了。服務器
Bockbone.js作了哪些事情呢?框架
在介紹Bockbone以前,咱們先介紹下SPA的概念。性能
SPA = Single Page Application,簡而言之,就是說你的網站只有一個網頁。這有什麼好的呢?這樣的話網頁元素不都擠到一塊兒了麼?好像沒有那麼簡單。SPA經過局部刷新的技術,只是將咱們想要看到的元素呈現出來而已。考慮到用戶愈來愈慵懶的行爲習慣,你就明白Single-Page-Application是頗有應用前景的。許多用戶在瀏覽網頁的時候老是討厭打開新的標籤,咱們若是能停留在一個網頁上完成咱們最想作的操做,確定是最好的了,誰願意每操做一個按鈕就看到一個加載圖標在不停的打轉呢。同時使用SPA,網站總體風格就比較容易控制了,在沒有局部刷新之前,咱們的網扎須要模板這個東西來保證網站的風格保持一致,可是這樣仍然沒法避免網頁之間交互的麻煩,不少的操做咱們都要把前臺的數據提交到後臺,在把後臺的數據發送到前臺,這既浪費了帶寬,同時更重要的是犧牲了用戶的體驗。因此咱們但願的網頁是,網站的後臺只至關於一個數據倉庫,而全部的處理部分徹底在前臺執行,這減輕了服務器的負擔,提供的服務器服務的效益。可能有人要懷疑前臺的能力了,若是咱們在後臺進行處理,咱們可能會用到更加C, C++等編譯性語言來處理咱們的計算從而來提升計算的性能,但在前臺咱們只能依賴js腳本了,同時腳本所面臨的環境並不如服務器那麼穩定,他值得信賴嗎?固然,js能代替後臺完成一些操做,一些比較關鍵性的服務固然咱們也會考慮放到後臺來操做以保證安全,不過也沒必要懷疑js的計算能力,不是還有一個狂拽酷霸屌炸天的googleV8引擎的麼。網站
咱們隊前臺的要求高了,若是隻把js當作簡單的腳本,用來實現一些比較好看的展示效果來用就有些不合時宜了,這時咱們就須要一些框架來維護咱們的前端代碼了,這就是backbone.js了。google
By 王需對象