2

我寫不同的文件下的JavaScript模塊百通這樣的:的JavaScript模塊特徵碼文件級聯在一個文件中,並使用它們的功能

文件1.js

var Module = (function (module) { 

    module.function = function() { 

    console.log(this.thirdFunction) // This is my issue. I cannot access the function from the third file because it is concatenated in a way that the function still not exist. 

    }; 

    return module; 

}(Module || {})); 

一些文件夾/文件2.js

var Module = (function (module) { 

    module.somethingElse = function() { 


    }; 

    return module; 

}(Module || {})); 

無論/文件3.js

var Module = (function (module) { 

    module.thirdFunction = function() { 


    }; 

}(Module || {})); 

我把所有這些文件放在不同的目錄中,名稱在不同的時間。 然後我使用連接工具有一個文件,然後我在我的html文件中使用它。但我面臨着我無法解決的麻煩。

要具備所有這些工作,我必須包括他們在一個特定的方式和順序來調用任何我需要的功能,當事情尚未確定/創建在返回的最終目標重新整理文件。如果我有100個文件和文件夾,這將再次成爲我的麻煩。

我是否理解這個權利:http://gruntjs.com/configuring-tasks#globbing-patterns 我手動訂購文件,文件夾和我所有的咕嚕任務中的所有內容?

我不想使用AMD的工具,只是普通的JavaScript文件以及一些方法來破解訂單要求。如果對我來說沒有任何簡單的想法,我會嘗試使用像require.js這樣的AMD工具,但我不確定這些工具是否能夠幫助解決這個跛腳問題。 我希望得到一些繁重的工具,一些文件/文件夾的名稱約定,任何不會強迫我安裝越來越多的工具。 提前謝謝!

困擾我的是下面的另一件事:

如果我想要隔離代碼,但我沒有在最後的對象返回對象的屬性,是它正常的做這樣的事情:

文件4.js

var Module = (function (module) { 

var someThing = Module.somethingElse() // from file 2.js 
and then using someThing here for clicking, DOM rendering, etc, etc 

}(Module || {})); 

它是愚蠢的堅持同樣的var Module約定文件,其中我居然不返回任何東西?我只是覺得這樣如何避免對象名稱,並再次

回答

0

事實上,只是對於這樣的問題創造了AMD工具使用this。但是你可以在一定程度上用grunt解決這個問題。您可以簡單地組織需要首先進入文件夾的文件,並按照您想要的順序列出文件,然後再包含所有文件的順序無關緊要的文件夾,其中包括所有內容。

'js/main/First.js', 
'js/main/Second.js', 
'js/rest/*.js' 

無論你選擇什麼樣的項目,你可能想看看Require.js或Browserify爲今後的工作。

+0

謝謝GMchris! 你可以給我一些關於我最後一段的困境的說明嗎? 順便說一句,如果你已經使用IE6模塊化導入,這可以以某種方式解決這個問題,或者它會一樣嗎? –

+0

你的意思是使用var模塊,如果你沒有返回任何東西?模塊的要點是保持全局名稱空間的清潔,並且可以決定什麼是公有和什麼是私有的,儘管強烈建議您只需將需要公開的任何需要附加到Module對象使用返回{//所有你的公共成員};代替。沒有返回的模塊只是一個閉包。它對於初始化和設置事件及其處理程序非常方便。至於關於IE6的觀點,恐怕我對這個主題的瞭解還不夠多,真的沒什麼幫助。 – GMchris

+0

所以你會建議有人使用這個「沒有返回的模塊只是一個閉包,它對於初始化和設置事件及其處理程序非常方便。」或不?我沒有明白。 (function(){...' –

相關問題