有极速快乐十分吗|极速快乐十分走势图|

根據自己的需要適度使用Web開發框架

取自己需要的,做適合自己的系統
服務器君一共花費了273.976 ms進行了7次數據庫查詢,努力地為您提供了這個頁面。
試試閱讀模式?希望聽取您的建議

軟件系統發展到今天已經很復雜了,特別是服務器端軟件,涉及到的知識,內容,問題太多。Web開發框架能夠幫我們大大減少工作量,但是我們應該如何正確看待Web開發框架,并且如何去使用他們呢?

對框架的依賴

從做網站到現在做Web端的應用,我度過了三個時期:

一、使用框架來搭建自己需要的系統。一開始是大框架如drupal(這里我更傾向于稱drupal是框架而不是cms),后來覺得過于笨重。于是改用codeignitor等小框架。

二、不再完全使用框架的MVC。而是用框架做服務端數據接口,只提供純數據,由前端進行邏輯處理和渲染。

三、前端從簡單的“分模塊,渲染與邏輯混合”,到“分模塊,面向頁面元素的MVC”,再到“分模塊,事件驅動的,面向切面的MVC”(稍后詳述)。

為什么會有這三個時期的轉變,實際上很大程度是由我對開發過程的希望驅使的。這些希望是這樣的:

  1. 當需求確定好以后,首先我希望在前后臺單獨開發,只要約定好數據接口就行,這樣如果有人來幫我,可以很快的互不打擾地進行。而且可以很靈活的各自用虛擬數據測試。
  2. 當我開發前端時,我想要渲染和邏輯完全分離,這樣我就可以寫邏輯的時候專心于邏輯。保持代碼整潔。最重要的是隨便頁面怎么改,只要業務大體不變,邏輯就可以寫好了不用再管。這就引進了前端MVC,實際上就是簡單的數據集和渲染的關系。
  3. 我希望邏輯事件的觸發是由頁面來決定的,并且怎么變都不用再動寫好的邏輯層(本質意義上的不動,連文件都不用打開)。這就引入了事件驅動,邏輯層只用監聽感興趣的事件(包括和服務器端的通信也可以用事件驅動),只用觸發自己完成后的事件,什么都不用管。渲染層也是如此。
  4. 我希望頁面的事件如click, dblclick等能和邏輯事件分離,最好我在這些元素上指定一個特定的屬性,它就能給我自動轉換并去觸發邏輯事件。這樣我寫js的時候就只用管特效就夠了。這就引入了頁面事件代理(詳見關于ace-engine)。這樣可以隨便采用什么頁面模板就沒關系。

以上四點的希望就是我目前開發的理想狀態,重點是“簡單、重用”,這里的重用實際上指的是“容易加新功能”,“容易應對需求修改”,“容易找bug”。心有余力的話才是“下次還能用”。我想這也是很多和我同樣的程序員所迫切需求的吧,雖然我覺得這個層次很低啊,哈哈。下面簡單講如何實現。

  1. 前后分離很容易,做好約定就行了。
  2. 前端mvc可以采用backbone,也可以采用簡單的數據集和模板來做。
  3. 對于spa來說,通過定義一個全局事件,各個模塊用自己的模塊名作命名空間就行了。建議全部事件都通過這個全局的來驅動。使用了backbone的話,不建議直接使用backbone的模型的事件。
  4. 建議采用ace-engine的ace-template,也可以自己寫。

ace-engine

ace-engine是百度的王集鵠開發的。我用了一下ace-event和ace-template。非常好用,這里介紹一下。

ace-event實際上是一個瀏覽器事件的代理。

我們首先來看一個簡單例子。你的頁面上有一個登陸按鈕,按下去以后按鈕演示要變,同時彈出登陸對話框。還有一個普通的鏈接,不需要變化樣式,點擊同樣要出現對話框。我們在實現功能的時候可能會這樣做:

  1. 聲明彈出對話框的函數。
  2. 給按鈕的綁定click事件,先改變樣式,再調用對話框函數。
  3. 阻止鏈接的默認行為,調用對話框函數。

這種做法的缺點是:

  • 邏輯與樣式混合,當頁面效果復雜了以后代碼會混亂。
  • 頁面元素如果出現id之類用作選擇器的屬性變化,代碼也需要變動。當新增時,代碼中也需要再次綁定。

ace-event能做的就是將顯示與業務邏輯分離。具體的方法如下:(以下步驟中的Event對象并不是ace-event的一部分,需要自己另外實現。)

1. 約定好整個系統中的事件名稱,通過一個全局的Event對象來注冊和觸發事件,各個模塊之間監聽自己的感興趣的事件。如用戶模塊監聽login事件。并執行回調。

Event.on("login", module_user.login);

2.在頁面元素上使用"cmd='login'"來表示點擊會要觸發的事件。

3.在表示層中使用ace-event來監聽cmd指向的事件,進行頁面的渲染,然后再拋出邏輯層事件。如

AceEvent.on(selector_id, function(command, target){
    //這里的target就是被點擊的元素
    //command就是該元素上綁定的命令

    //在這里進行頁面的渲染
    //同時拋出邏輯層事件,如:
    Event.fire("login");
});

這種做法相對于backbone等大的mvc來說優點在于簡潔,性能高。ace-template就不詳述了,相對于其他前端模板它的有點在于js和html可以隨意混合編寫,不需要類似于"<%"的語法分隔符。很強大。

本文地址:http://www.bavugt.tw/librarys/veda/detail/1893,歡迎訪問原出處。

不打個分嗎?

轉載隨意,但請帶上本文地址:

http://www.bavugt.tw/librarys/veda/detail/1893

如果你認為這篇文章值得更多人閱讀,歡迎使用下面的分享功能。
小提示:您可以按快捷鍵 Ctrl + D,或點此 加入收藏

閱讀一百本計算機著作吧,少年

很多人覺得自己技術進步很慢,學習效率低,我覺得一個重要原因是看的書少了。多少是多呢?起碼得看3、4、5、6米吧。給個具體的數量,那就100本書吧。很多人知識結構不好而且不系統,因為在特定領域有一個足夠量的知識量+足夠良好的知識結構,系統化以后就足以應對大量未曾遇到過的問題。

奉勸自學者:構建特定領域的知識結構體系的路徑中再也沒有比學習該專業的專業課程更好的了。如果我的知識結構體系足以囊括面試官的大部分甚至吞并他的知識結構體系的話,讀到他言語中的一個詞我們就已經知道他要表達什么,我們可以讓他坐“上位”畢竟他是面試官,但是在知識結構體系以及心理上我們就居高臨下。

所以,閱讀一百本計算機著作吧,少年!

《編程珠璣(第2版)》 Jon Bentley (作者), 黃倩 (譯者), 錢麗艷 (譯者)

《編程珠璣(第2版)》是計算機科學方面的經典名著。書的內容圍繞程序設計人員面對的一系列實際問題展開。作者Jon Bentley 以其獨有的洞察力和創造力,引導讀者理解這些問題并學會解決方法,而這些正是程序員實際編程生涯中至關重要的。

更多計算機寶庫...

有极速快乐十分吗
四方河南麻将 富深所配资 闲来琼崖海南麻将下 … 创业板股票一览表 沪深股票价格排名 快三开奖结果查询今天 全民福州麻将 看安徽快三开奖结果 广西快三一定 吉吉林11选5开奖