UI分离引擎的设想
對于前端頁面和后端代碼的分離,ASP.NET WEBFORM和ASP.NET MVC都在不同方面做了努力。
在這里提出一些自己初步的設想,只是初步的設想,對各種質量特性并沒有經過驗證,就不放首頁了。
?
我們的目的是:
?
1)產品或美工負責頁面布局、樣式以及基本的交互行為(不依賴業務邏輯的交互)。
2)開發人員只負責數據的填充。
3)產品提供的html不需要引入代碼進行二次包裝,直接使用。
?
您可以覺得這就是模板的方式,模板的方式可以解決,但主要的問題是:
?
1)需要產品或美工熟悉標記。
2)不太能實現根據動態的邏輯來實現不同的數據呈現。
?
能不能反過來,產品在給出html+css+javascript之后,我們的開發人員只負責填充數據或是根據業務邏輯填充不同的數據?
?
我的設想如下:
1) 產品提供的html+css+javascript直接放在目錄下用。
2) 由一個Handler來處理所有請求,比如list.shml,然后找到目錄(配置為不可以直接訪問)下的html。
3) 加載html到緩存中,解析DOM。
4) 開發人員對每一個頁面提供一個cs文件,實現數據填充。
怎么進行數據填充呢?首先從數據庫加載要填充的數據,然后指定數據填充到哪里。
比如 list 已經是一個產品集合,調用框架類似 list.Fill(func, func) 的方法填充數據,第一個參數傳入一個方法指定填充的數據格式,比如p => p.Name,后面一個通過jquery選擇器指定要填充的對象。框架維護要渲染的數據以及jquery代碼兩個數據集合,分別渲染到頁面上。
也就是頁面由三個部分構成:html模板 + json數據 + jquery代碼。開發人員用c#代碼寫jquery代碼和獲取數據的代碼,然后交給框架去把數據和填充行為放到頁面上。
?
甚至,可以在項目中制作一個代碼生成工具,每次編譯自動根據html代碼生成其中所有的id和class名等用于jquery定位,這樣代碼中選取器也不需要手動寫,可以在編譯的時候發現可能存在的javascript問題。
對于這種模式,還可以反過來,可以把html文件放在獨立的服務器上,自動ajax請求shtml文件獲取數據和填充腳本,然后執行腳本進行數據異步填充。
這樣的話,產品寫html/css/jquery,開發寫c#的jquery和數據訪問,大家甚至獨自維護自己的靜態和動態服務器。
?
您可能要說這不就相當于全ajax的頁面嗎,其實這么做的好處是,開發人員可以直接寫了c#的數據訪問代碼后又直接寫c#的js代碼,由框架確保了這些腳本和數據的呈現,可以利用大量自動提示的特性,不會出現前后臺不一致的現象(不需要根據json的格式寫客戶端的腳本文件,只需要在服務端根據c#對象的格式寫代碼,這和asp.net的控件方式有什么區別?其實理論上來說相當于dom+jquery版的控件操作和訪問,好處是可以直接使用html)。
總結
- 上一篇: 视频前初步认识UML
- 下一篇: WinForm登录模块设计开发