小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Nano雞排: ExtJS應(yīng)用程式設(shè)計(jì)原則

 旭龍 2013-01-14
取自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)  - Use lazy instantiation (xtype) as much as possible.
  2. 使用預(yù)先設(shè)定好的類(lèi)別 - Use pre-configured classes (I'll explain later).
  3. 在父階層中實(shí)作關(guān)係  - Implement relations on parent level.
  4. 在開(kāi)發(fā)時(shí),保持每個(gè)類(lèi)別在自己的一個(gè)檔案;在產(chǎn)品化時(shí),再組合和壓縮它們  - Keep each class in its own file while developing, concat and minify for production.

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)別,例如以下的: 3.在父階層中實(shí)作關(guān)係

想像你有一個(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」一文中有一些比較資訊可以參考。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類(lèi)似文章 更多