2012-07-31 40 views
0

我有一個不是爲Node.js編寫的JavaScript文件。它實際上是由我寫的,但如果你把它看作第三方庫,這個問題可能會更容易理解。在Node.js中使用第三方的JavaScript文件

通常,Node.js模塊只會將module.exports對象暴露給外部代碼。這要求該文件是以Node.js爲基礎編寫的。

但是,該文件不是爲Node.js編寫的,但我想將它包含到Node.js模塊中。我無法編輯此文件,因爲它將在稍後使用,與Node.js無關。

我想我可以通過閱讀文件並在內容上調用eval來關閉它,但有沒有更好的方法?

TL; DR

我怎麼能包括.js文件到Node.js的模塊,而無需重寫它使用Node.js的特定代碼樣exports

P.S.我想在Node.js中使用它的原因是在其他地方部署之前進行了一些測試。

回答

2

這取決於如何將代碼寫入該文件。如果該文件包含一個類或一個對象,那麼你可以這樣做:

(function(global) { 

    function MyClass() { 


    } 

    MyClass.prototype = { 
      ... 
    }; 

    if(typeof module !== "undefined" && module.exports) { 
     module.exports = MyClass; 
    } 
    else if (global) { 
     global.MyClass = MyClass; 
    } 

})(this); 

您可以修改全局分配如果需要的話是一個更深層次的命名空間來代替。

+0

我寧願留下任何Node.js代碼的文件。 – 2012-07-31 22:55:30

+0

這是我在github項目中看到的應該在瀏覽器以及node.js中工作的文件的標準方式。 – Esailija 2012-07-31 22:56:04

+0

對於應該在其他解釋器中工作的文件(如WScript)怎麼樣? – 2012-07-31 22:57:18

相關問題