對,這章我就要介紹我所理解的DNN存在的硬傷,大家看完了別罵我,更別傷心,因為我在實際開發的過程中提供解決方案。:)
我最近2個多月都在研發某系統,該系統是以DNN為原型。我在花了接近2個月的研究中,總結出:DNN存在幾處硬傷。實際上,與其說硬傷,到不如說其目前的發展空間更好:)
雖然參考選型為DNN,不過我們僅僅是參考,出於獨立發展和實際需求的考慮,我們並不“抄襲”DNN,僅僅是學習了其最大的特色:Skin技術,而且我們覺得其Skin技術已經相當成熟,因此我們用我們的實現方法,卻兼容其Skin/Container格式,畢竟僅僅是XML/HTML的解釋。
DNN最大的硬傷:過分松散。這個松散不是指其每個模塊想積木那樣可以自有放在任何欄目(Tabs)和任何位置,而是指其內容。
舉個例子:發表公告。我們一般會一段時間就會發布一篇公告,而這個在DNN的實現似乎就只能:1、修改某公告模塊實例的內容;2、隱藏該模塊,新建一模塊;3、直接刪除該模塊,新建一模塊。
或許這個例子不明顯,換一個:文章。文章應該是最常用的功能了,因為大部分內容都可以以文章的形式出現,包括公告、技術文檔、新聞、FAQ等等。在DNN中,我們會怎樣做了?似乎就只有每篇文章新建一個文章模塊實例了,如果不希望顯示出來呢(如過時等)?似乎就只能:1、隱藏;2、直接刪除。如果使用方法1,隱藏多了,頁面就很雜亂;如果使用方法2,假如哪天我想找出來看看呢?如果有深入一點研究的朋友,會提出使用隱藏欄目專門來“收留”這些“孤兒”,但數量一多仍然會雜亂啊!
還有,如果你想對所有同類型的模塊進行檢索和操作,怎麼辦?相信你會在各個欄目之間來回切換去尋找。
類似的,其它模塊也一樣。DNN內置的模塊,都僅僅是演示其功能而已,因為它的目標是做一框架,不是做功能內容。實際上,你是否能想到怎樣解決?我能想到的,是做集中的列表管理。列表管理的好處就是,隨時對任何文章進行操作,不必在欄目之間來回切換,一目了然。
就這樣?不,讓我們更進一步吧:做個通用的文檔管理系統!其實無論是公告、技術文檔、新聞、FAQ等等,一般都包括:作者、出處、創建年月日、正文內容、簡介、頁面打開類型(如本頁面、新開頁面等)、狀態(如未審批、已審批、隱藏等)、圖標等。
就這樣?不,讓我們來再深入點吧:把類型管理都加上去!類型可以廣泛地用在任意層子欄目、文章類型等等。這樣,文章編輯的時候就可以選擇所屬類別,更加容易分類管理。
就這樣?不,讓我們來個徹底的革命吧:集合類型和通用文章,來整合出多個通用模塊。如:
1、某類最新文章列表:你只需要把所有層次類型列出來,讓用戶定義哪個類型和要類多少個,按日期排序就行了。這樣,一旦選擇了某類型,該類型所屬的Top N文章都列出來了。靈活嗎?
2、最熱文章推薦:這個更簡單,選擇某類型、然後選擇某類型下的某篇文章、定義一個個性化圖片,就這樣。然後在具體的顯示時候,左邊弄個圖標,右邊就顯示粗體標題和簡介。靈活嗎?
3、主題新聞:這個最簡單了,跟上2是差不多的,唯一區別就是直接把該內容顯示出來,效果就是類似微軟首頁的最大的那個Flash/Image效果了,點擊就可以進入具體的欄目或者文章。還不夠靈活?好吧,看下一篇吧:(
大家注意到好處了嗎?無論模塊有多少個,都只需要定義一次文章,任何文章都可以重現在任何模塊,不必重復定義,也不用擔心某個模塊刪除了,文章丟了。
鑒於DNN的可發展空間很大,現在只介紹第一個,接下來會有更加有趣的:)