軟件系統發展到今天已經很複雜了,特別是服務器端軟件,涉及到的知識,內容,問題太多。Web開發框架可以幫咱們大大減小工做量,可是咱們應該如何正確看待Web開發框架,而且如何去使用他們呢?html
從作網站到如今作Web端的應用,我度過了三個時期:前端
1、使用框架來搭建本身須要的系統。一開始是大框架如drupal(這裏我更傾向於稱drupal是框架而不是cms),後來以爲過於笨重。因而改用codeignitor等小框架。程序員
2、再也不徹底使用框架的MVC。而是用框架作服務端數據接口,只提供純數據,由前端進行邏輯處理和渲染。瀏覽器
3、前端從簡單的「分模塊,渲染與邏輯混合」,到「分模塊,面向頁面元素的MVC」,再到「分模塊,事件驅動的,面向切面的MVC」(稍後詳述)。服務器
爲何會有這三個時期的轉變,實際上很大程度是由我對開發過程的但願驅使的。這些但願是這樣的:mvc
以上四點的但願就是我目前開發的理想狀態,重點是「簡單、重用」,這裏的重用實際上指的是「容易加新功能」,「容易應對需求修改」,「容易找bug」。心有餘力的話纔是「下次還能用」。我想這也是不少和我一樣的程序員所迫切需求的吧,雖然我以爲這個層次很低啊,哈哈。下面簡單講如何實現。框架
ace-engine是百度的王集鵠開發的。我用了一下ace-event和ace-template。很是好用,這裏介紹一下。函數
ace-event其實是一個瀏覽器事件的代理。性能
咱們首先來看一個簡單例子。你的頁面上有一個登錄按鈕,按下去之後按鈕演示要變,同時彈出登錄對話框。還有一個普通的連接,不須要變化樣式,點擊一樣要出現對話框。咱們在實現功能的時候可能會這樣作:測試
這種作法的缺點是:
ace-event能作的就是將顯示與業務邏輯分離。具體的方法以下:(如下步驟中的Event對象並非ace-event的一部分,須要本身另外實現。)
1. 約定好整個系統中的事件名稱,經過一個全局的Event對象來註冊和觸發事件,各個模塊之間監聽本身的感興趣的事件。如用戶模塊監聽login事件。並執行回調。
1 |
Event.on( "login" , module_user.login); |
2.在頁面元素上使用"cmd='login'"來表示點擊會要觸發的事件。
3.在表示層中使用ace-event來監聽cmd指向的事件,進行頁面的渲染,而後再拋出邏輯層事件。如
1 |
AceEvent.on(selector_id, function (command, target){ |
2 |
//這裏的target就是被點擊的元素 |
3 |
//command就是該元素上綁定的命令 |
4 |
5 |
//在這裏進行頁面的渲染 |
6 |
//同時拋出邏輯層事件,如: |
7 |
Event.fire( "login" ); |
8 |
}); |
這種作法相對於backbone等大的mvc來講優勢在於簡潔,性能高。ace-template就不詳述了,相對於其餘前端模板它的有點在於js和html能夠隨意混合編寫,不須要相似於"<%"的語法分隔符。很強大。
http://www.cnblogs.com/dekins/archive/2012/03/27/2418886.html