2012-07-24 80 views
6

我有一個遺留應用程序,我已將應用程序的重構部分集成到單獨的backbone.marionette應用程序中。我沒有時間或預算來重構整個事情,我希望我的代碼更容易管理,這讓我想到了requirejs。RequireJS和遺留應用程序

大部分文件都被縮小和拼湊在一起。

我可以使用requirejs這種類型的混合解決方案,我可以在單獨的主幹模塊上工作,仍然可以訪問現有的javascript?

+0

是的,您可以使用shim config選項來加載非amd文件,並啓用amd – chchrist 2012-07-24 14:23:46

回答

8

作爲剛剛開始在傳統的使用骨幹的代碼庫上開始使用Require.js的人,我感到很痛苦:-)我使用了一些方法的組合,我將在這裏列出。

比方說,你有fileA.js和fileB.js,你要轉換fileB.js使用要求,在不改變fileA.js:

  • 濫用全局空間

    要求不會強制你通過它導入每個變量;即使在需求文件中,您仍然可以像訪問非需求代碼一樣訪問全局變量。這意味着如果fileA在全局/窗口命名空間中創建了所有變量(如果以前不使用Require,很可能會發生這種情況),fileB可以訪問它們,而不管fileA是否使用Require。

    這是我對大部分遺留文件的解決方案;我只是把它們留在原地,並將所有新的必需品放在它們下面。這樣,當需求文件需要它們時,他們創建的每個全局都準備就緒並等待。

    現在,如果fileB依賴於fileA,那麼這很好,但是如果它是相反的呢?那麼,Require也不會阻止你創建新的全局變量,這意味着fileB可以與fileA共享任何想要的內容,只要它願意將它放入全局空間即可。

  • 重複的代碼

    不要生氣;我知道「DRY」編碼做法有多重要。但是,對於只有幾個文件,我最終做的是製作需求重複。因爲我使用Handlebars插件來執行我的模板編譯,因此如果我想要使用Handlebars的任何文件,我需要它作爲必需的。

    爲了解決正常的非DRY問題,我在舊文件中添加了一些評論,有效地說:「不要添加任何東西到這個文件,需求版本是'真正的'版本。我的計劃是逐漸將更多網站轉換爲需求,直到我終於可以消除原始的,過時的文件。我們有一家小商店,所以它對我們很有用,但是在一家大公司這可能不會飛。

  • 重構

    我知道,你說你想避免這種情況,但有時有點重構可以給你很多爆炸爲您的降壓。我本人幾乎沒有重構任何東西,但只有一些地方是一個小調整大大簡化了事情。

    總的來說,我看到重構是你在切換到Require之後所做的一些事情(隨着時間的推移慢慢地將你的非需求代碼帶入摺疊中)。

  • 墊片

    Chchrist是正確地說,墊片解決「中途要求」的問題。然而,我個人沒有使用他們在所有的好辦法,所以我真的不能對他們說得很多,除了「看着他們,他們可能會有所幫助」。

相關問題