Web前端框架與類庫的思考

提及前端框架,我也是醉了。如今去面試或者和同行聊天,動不動就這個框架碉堡了,那個框架好犀利。html

固然不是貶低框架,只是有一種殺雞焉用牛刀的感受。網站技術是爲業務而存在的,除此毫無心義,框架也是同樣。在技術選型和架構設計當中,脫離網站業務發展的實際,一味的追求時髦新技術,可能會拔苗助長,將網站發展引入崎嶇小道。就好像一個日均pv只有幾百的小型電商網站,卻要大喊「某寶就是這麼搞的」,而後搭建應用服務器集羣,使用分佈式文件系統和分佈式數據庫系統...等巴拉巴拉的一堆用來處理高併發,海量數據訪問的手段。我想說,有意義嗎?前端

 

   前端框架的理解誤區面試

網站的價值在於它能爲用戶提供什麼價值,在於網站能作什麼,而不在於它是怎麼作的,因此在網站還很小的時候就去追求網站的架構框架是捨本逐末,得不償失的。前端框架同理,若是是一個簡單的頁面型產品,應用只是依賴服務器來生成Web頁面和視圖,而且只須要使用一些簡單的Javascript或者JQuery來使應用更加具備互動性,那麼一個JQuery前端類庫就能夠了,真的不必用上一些高大上的框架。數據庫

固然,框架的確是頗有用的,重點是咱們要知道何時該用什麼框架。大公司大項目的經驗和成功模式當然重要,值得學習借鑑,但咱們不能所以變得盲從。只有深入去理解前端框架,知道何時該用什麼什麼框架解決什麼問題,纔能有的放矢,直擊要害。後端

 

   前端框架與前端類庫的區別前端框架

使用框架前,我以爲很重要的一點是弄清類庫(諸如JQuery)和框架(諸如angularJS)的區別在何處。服務器

簡單而言,類庫,解決的是代碼或者是模塊級別的複用或者對複雜度的封裝問題,例如將一個解決複雜問題的功能模塊封裝成一個函數,提供一個簡單的接口。庫它是一種工具,它提供了不少封裝好的方法,用與不用取決於咱們自身,即便用了也不會影響咱們呢的代碼結構。架構

而框架,更多的是對模式級別的複用和對程序組織的規範。這裏的模式是指好比MVC,爲了實現M和V的解耦,把複雜的耦合關係由常常變化的業務代碼轉移到不常常變化的框架內部消化。是面向一個領域來提供一套解決方案,提升開發效率,若是咱們選擇了使用某框架,就應該遵循該框架所規定的規則。併發

兩者最主要的區別是:JQuery以DOM操做爲中心,框架,準確來講是MVC框架,是以模型(model)爲中心,而DOM操做是附加的。因此,以模型爲中心最終達到的目的是帶來一整套工做流程的變動,使得後臺工程師能夠編寫前端的模型代碼,把後臺與前端打通,交互設計師處理UI跟模型的互動關係,UI設計師能夠專一、無障礙的處理HTML源碼,把它們以界面模板的形式提交給交互工程師。這一整套協做機制能大大提升開發效率。使用MVC框架使得前端任務更好的被解耦。框架

 

   前端MVC框架思想

咱們知道,傳統的MVC模式將一個應用劃分爲——模型層(model)、視圖層(view)、控制層(controller)。他們在應用系統中擔當不一樣的角色,完成不一樣的任務。

  • Model:即數據模型,用來包裝和應用程序的業務邏輯相關的數據或者對數據進行處理,模型能夠直接訪問數據。

  • View:視圖用來有目的顯示數據,在視圖中通常沒有程序上的邏輯,爲了實現視圖上的最新功能,視圖須要訪問它監視的數據模型。

  • Controller:控制器調控模型和視圖的聯繫,它控制應用程序的流程,處理事件並做出響應,事件不只僅包括用戶的行爲還有數據模型上的改變。經過捕獲用戶事件,通知模型層做出相應的更新處理,同時將模型層的更新和改變通知給視圖,使得視圖做出相應改變。所以控制器保證了視圖和模型的一致性。

那麼在前端中的表現。前端MVC中各部分的職責:

我對前端的View的理解是,與頁面上元素直接相關的部分都屬於View。包括html,CSS和一部分直接控制頁面元素的JS。能夠從Model中獲得數據,並將其顯示到頁面上。而關於數據的變動與請求,則通通交給Controller處理。

那麼Controller呢?做爲Model和View的粘合劑,Controller將View方面的請求轉發給合適的Model,在必要時也會去更新View。而Controller自己也能夠做爲Model的觀察者,獲取Model的變動。而做爲Controller自己,就不該該有涉及到頁面元素的代碼了。

最後談談Model,與後端的溝通、AJAX請求以及對數據的處理都屬於Model的工做。Model自己不知道誰是View,誰是Controller。它只提供一些方法供View和Controller調用,而且將變動通知給它的觀察者View或Controller。顯然,Model與頁面元素之間也解耦了。

雖然基於MVC模型的框架之間也有不少不一樣之處,可是整體而言,Model負責保存vier須要的數據以及數據處理邏輯,例如讀寫,更新,刪除,驗證,轉換等。View負責接收並顯示Model提供的數據以及接收用戶的輸入,而且響應事件,Model更新後及時將更新反饋回用戶。Controller處理業務邏輯和事件邏輯。

 

   知己知彼,對症下藥

在前端框架和類庫愈來愈豐富的今天。選擇一款對的框架或類庫就顯得尤其重要了,我以爲不必盲目跟風,看見什麼框架火就屁顛屁顛跑去啃一個星期,而後由於項目工做上用不到,幾個月以後又全忘光了。

因此我以爲重要的是把基礎打紮實,重點是去了解各個類庫與框架的做用,某類框架着重用於解決什麼問題,而後在項目須要用到時候再去研讀API纔是上策。

最後,咱們要清楚MVC在前端開發中的應用具備的侷限性,簡單的項目若是使用MVC框架會可能致使項目變得更加複雜。固然隨着Web前端的複雜度不斷增長,前端MVC框架的不斷髮展,相信在將來的應用軟件類複雜產品當中,MVC框架必定會給前端工做帶來效率上的飛躍。

  

以上只是我對前端框架和類庫一些淺顯的認識,不喜勿噴,更但願您能提出更好的學習框架和類庫的方法。共同進步,共同窗習。

文中如有技術層面的錯誤還請斧正,誤人子弟實乃罪過。

相關文章
相關標籤/搜索