|
取自http://blog./javascript/53-extjs/71-extjs-application-design-1.html 作者是 EddyChang 這篇文章是從ExtJS官網(wǎng)討論區(qū)中找到的,非常值得參考,原來(lái)的問(wèn)題是:「application design, component creation and efficiency」。由我個(gè)人的觀點(diǎn)來(lái)看,Javascript發(fā)展至今,仍然是百家爭(zhēng)鳴的時(shí)代,有非常多不同的framework或pattern,也很難和各式的應(yīng)用能完全配合,ExtJS算是非常豐富的Javascript架構(gòu),但還是要配合像PHP的Server端程式才能完成整個(gè)應(yīng)用程式。以下是關(guān)於Saki(ExtJS官方支援小組)的經(jīng)驗(yàn)回答摘譯: 使用以下的規(guī)則在開(kāi)發(fā)Ext大型的應(yīng)用程式上:
1. 盡可能地多使用緩慢實(shí)例化(xtype) 這點(diǎn)是如果你使用xtypes的話,Ext物件只有當(dāng)他們需要時(shí)才會(huì)被建立。 備註:xtype和延伸類(lèi)別的分離方式,的確是對(duì)大型開(kāi)發(fā)有幫助。但關(guān)於上面的說(shuō)明,在討論區(qū)的另一篇:「Does xtype really support lazy instantiation?」提出了lazy instantiation的質(zhì)疑,以及和lazy redener的比較。 2. 使用預(yù)先設(shè)定好的類(lèi)別 上述第1點(diǎn)的xtype的方法要配合預(yù)先設(shè)定好的類(lèi)別"pre-configured classes",這些類(lèi)別是擴(kuò)充自Ext的類(lèi)別而來(lái)的,帶有設(shè)定選項(xiàng)和(或)加入的函式。 備註:有許多範(fàn)例可以了解怎麼寫(xiě)出預(yù)先設(shè)定好的擴(kuò)充類(lèi)別,例如以下的:
想像你有一個(gè)border版面中,在西(左)邊有一個(gè)表格和中間有一個(gè)表單,當(dāng)選了表格中的某個(gè)項(xiàng)目時(shí),表單中要顯示對(duì)應(yīng)的值。那到底要怎麼寫(xiě)這段程式邏輯,是放在表格裡,還是表單裡?應(yīng)該都不是這兩個(gè)。這兩者互不知道對(duì)方存在,知道這兩者同時(shí)存在的是它們的父階層(可能是viewpoint或window) 因此,關(guān)係會(huì)建立在父階層裡,例如window中。這裡的程式會(huì)是監(jiān)聽(tīng)表格來(lái)的事件,然後在選擇改變時(shí)載入表單資料,或是當(dāng)表單進(jìn)出資料後,改變表格的記錄。 如果我把程式碼寫(xiě)在表格裡,那這個(gè)表格就和表單不可分離了。 備註:的確是很好的原則,不過(guò)直接的想法都是寫(xiě)到事件發(fā)動(dòng)處,在小型的事件處理,這樣比較快而且直觀。Saki在它的範(fàn)例網(wǎng)站中,有加了兩個(gè)範(fàn)例,這兩個(gè)範(fàn)例都是很好的學(xué)習(xí)資源: 4.在開(kāi)發(fā)時(shí),保持每個(gè)類(lèi)別在自己的一個(gè)檔案;在產(chǎn)品化時(shí),再組合和壓縮它們 心得:ExtJS原本的作法就是如此,Linux下可以用Cat指令,Windows下可用ConCat/Split的軟體來(lái)合併Javascript檔案,再利用JSBuilder之類(lèi)的工具,可以去除註解檔和壓縮檔案。 最後的忠告 不需要太深思熟慮於程式的結(jié)構(gòu)、版面、各種控制器、載入器、介面…太多了。而是要寫(xiě)出好的可重覆利用的預(yù)先設(shè)定好的類(lèi)別,然後把它們不管如何先放到一起。如果這些類(lèi)別真的是不錯(cuò)而且可以重覆使用的,你大可以更改你的應(yīng)用程式版本,使用別的方式來(lái)作,但你的類(lèi)別至少仍然都會(huì)正常工作。就像是樂(lè)高積木一樣-如果你有木塊,你可以在幾分鐘內(nèi)建出一個(gè)城堡。 心得:的確是如此。預(yù)先設(shè)定好的類(lèi)別是必學(xué)的一段,雖然我有看過(guò)另一種寫(xiě)法 - Module Pattern,Module Pattern是通用於各Javascript框架的寫(xiě)法,或許也是一個(gè)值得一學(xué)的部份。在官方討論區(qū)中的「preconfigured class vs. module pattern」一文中有一些比較資訊可以參考。 |
|
|