2013-03-27 41 views
2

我們的應用程序是一個大規模的Javascript應用程序,使用Javascript MVC框架。我們通過SVN使用跨所有站點的MVC應用程序文件夾:external,每個站點都有自己的文件。設置文件是特定於該網站的。大型共享代碼庫,擴展功能

我們要求系統能夠爲每個站點提供不同的功能。核心功能應該保持不變。我們需要擴展核心代碼,同時爲當前和新開發人員提供可維護的解決方案。

目前我們已經想到的選項是:

一個:嵌入核心中的要素條件語句和開/關通過一個設置文件

B打開特點:覆蓋/繼承現有的控制器

c:在覈心內部實現一個模塊化系統(插件),並配置哪些插件通過settings.json加載/啓用

選項a存在難以維護的問題g術語,而且相當黑客。

選項B已經實施,但難以維持(就好像我們有一個新的功能,我們是否已被覆蓋

選項C是我們最近想到了一個解決方案來編輯​​每個站點的文件(通過使用共享(插件)控制器並編輯特定於站點的設置文件)

如果任何人有任何我們已經想到的選項的經驗,並且如果有人知道另一個更好的選擇

+0

另外值得一提的是,我們使用OpenAjax,因此可以將共享代碼與特定於站點的代碼分離。我們也使用偷。js作爲依賴關係經理 – Scott 2013-03-27 00:53:41

+0

根據實際任務結束使用選項b和選項c: 使用選項b覆蓋我們需要的模型方法 和選項c用於表單驗證(向網站添加新規則比將它們添加到核心並使用功能切換) – Scott 2013-03-27 07:39:10

回答

0

傾向於選項C.

大型應用程序很大程度上受益於遵循模塊化模式。您可以保持代碼鬆散分離,以便將來實現更好的可維護性,同時允許許多開發人員一次處理各個部分。並通過特定於站點的設置文件加載您的核心模塊和插件。

我建議你上的大規模應用專題檢查出阿迪·奧斯馬尼的文章:

調解員,外立面的Pub/Sub pattersn工作非常出色使用模塊化組件,並將其與模塊加載器如RequireJS結合使用,那麼您將擁有大規模應用的良好基礎。我已經在工作中使用了它,並發現它是保持組織結構和易於維護的絕佳方式。

+0

謝謝,你認爲有任何其他選項試圖共享代碼,我們可以進行特定於站點的更改嗎? – Scott 2013-03-27 00:56:47

+0

@scott您還可以使用其他模式,沒有一種解決方案,所以我強烈建議您檢查一下您認爲應用程序可以從中受益的其他模式。這裏有更多的閱讀:http://addyosmani.com/resources/essentialjsdesignpatterns/book/#summarytabledesignpatterns – sweetamylase 2013-03-27 01:12:43

+0

謝謝,我會看看。 – Scott 2013-03-27 01:16:49