大話ASP.NET開發(第一章 html5+css3+解耦問題的探討)


一、拉近我們的距離

我想,很多人會問,如今IE6還占據頗多份額的中國,html5、css3是否還很遙遠?我會很直接告訴他們:其實就在你的眼前.我們來看兩個圖:

                            (圖一:2013 4月左右,全球瀏覽器情況)

分析:全球瀏覽器中6.22+23.08=40%的瀏覽器不支持html5+css3

 

http://image.tianjimedia.com/uploadImages/2013/252/62713GDUCM39.jpg

                           (圖二:國內瀏覽器份額圖)

分析:大概有60%的瀏覽器在國內不支持html5+css3

這是否就意味着,我們需要等待?我在給大家看一幅圖,大家或許就知道出路在哪里了.

說明:用戶再次用小於IE9的IE允許時,直接啟動平台工具(本質上為webkit,谷歌內核;啟動原理activex)

問題解決了,可能你會說不完美,因為需要下載,但你回頭想想會為你節省很多成本.而且可以體驗到html5、css3前沿技術的絕對優勢.

二、如何解耦

1)提出現行問題

  目前而言ASP.NET的主流開發模式:webform、mvc.而如前我所論述的,似乎都不盡完美?真心用過MVC的人就知道如下的情況:

  雖然MVC讓開發從原來的 webform中解脫出來,解決了:層次清晰邏輯、UI的隔離、服務端控件的一些瑕疵等諸多問題,但是MVC的弱點同時也存在.在MVC中我們的Model時常變動,我們必須手動創建Model類和Model的變動修改.同時相對於Model的Action控制操作,也需要一定程度上的變動.(因實體框架等生成的實體(Model)是無法滿足現行邏輯需求的).

  其次因為實際開發中沒有銀彈,只有平衡點.V,C之間的邏輯緊密,然而實際的前台實現和效果需求是變化莫測的, 更加導致美工決定VC的局面,從而VC的重用性很低很低.如果一個頁面存在多個視圖,那么其邏輯就相對不易(我們需要維護多個VC組,我們需要處理VC組 的一定邏輯次序,構造不同的Model).

2)解決方案

     為了解決上述問題,我將再后續文章中詳細講解如何利用angularjs解耦、如何利用新的設計模式(jpvl)來解耦.

  這里我簡單介紹一下兩者存在的意義和原理;


1)angularjs

  是一組用來開發Web頁面的框架、模板以及數據綁定和豐富UI組件。它支持整個開發進程,提供web應用的架構,無需進行手工DOM操作。 AngularJS很小,只有60K,兼容主流瀏覽器,與 jQuery 配合良好。數據綁定可能是AngularJS最酷最實用的特性。它能夠幫助你避免書寫大量的初始代碼從而節約開發時間。一個典型的web應用可能包含了80%的代碼用來處理,查詢和監聽DOM。數據綁定是的代碼更少,你可以專注於你的應用。

特點一:前端的解耦能力
  當model變化了。 開發人員需要手動處理DOM元素並且將屬性反映到這些變化中。這個一個雙向的過程。一方面,model變化驅動了DOM中元素變化,另一方面,DOM元素的變化也會影響到Model。這個在用戶互動中更加復雜,因為開發人員需要處理和解析這些互動,然后融合到一個model中,並且更新View。這是一個手動的復雜過程,當一個應用非常龐大的時候,將會是一件非常費勁的事情。
特點二:模板
  在AngularJS中,一個模板就是一個HTML文件。但是HTML的內容擴展了,包含了很多幫助你映射model到view的內容。
  HTML模板將會被瀏覽器解析到DOM中。DOM然后成為AngularJS編譯器的輸入。AngularJS將會遍歷DOM模板來生成一些指導,即,directive(指令)。所有的指令都負責針對view來設置數據綁定。
  我們要理解AuguarJS並不把模板當做String來操作。輸入AngularJS的是DOM而非string。數據綁定是DOM變化,不是字符串的連接或者innerHTML變化。使用DOM作為輸入,而不是字符串,是AngularJS區別於其它的框架的最大原因。使用DOM允許你擴展指令詞匯並且可以創建你自己的指令,甚至開發可重用的組件。
特性三:MVC
特性四:依賴注入(Dependency Injection,即DI)
特性五:Directives(指令)


2)JPVL設計模式

1)JVPL(json-視圖-處理器--加載器),如上圖所示.如果我要視圖重用我只要載入所需視圖和加載器即可.var 新的視圖=get("加載器","視圖"); 且Moon.net架構會接着腳本引擎幫助我們生成后台所需代碼.

2)整個JVPL模式建立建立在Ajax的機制上,它具有Ajax所有的優缺點.(但我認為Ajax的優點>>缺點,且我們可以 通過手段解決這些缺點).正如有人說Ajax不安全,因為暴露了系統服務接口,這完全廢話,難道純的form提交就沒有暴露?這些都是門外漢說的話,因為 根本的權限機制都沒有建立.接着說,正如前面文章提到的視圖數據的加載.如果我前台的邏輯變動系統的邏輯變動,這是Moon.Web會輔助我們生產新的后台代碼. 如果一個頁面存在多個視圖,那么這多個視圖的加載,我們通過加載器直接調度即可.因為腳本引擎的存在,它會幫助我們生成后台代碼和數據分配及數據轉 發.Moon.NET中最為精華的部分就是腳本引擎.它也是我們提高開發效率的關鍵.

3)在我們的開發中,前端展現的標准是由策划及美工定的,所以作為一個開發者還是架構師必須緊密結合實際進行架構或開發.這樣才能提高開發效率. Moon.Web主要對復雜的UI控件諸如:編輯器,分頁,異步文件上傳...等控件進行了封裝且提供了美工可控制接口.因為MVC的控件方法也是一樣 的.

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM