2015-04-18 37 views
1

我使用browserify,它使我能夠在我的JavaScript文件中包含nodejs模塊,然後可以由瀏覽器使用它。 如果我寫我自己的js文件,並要求它像這樣(在functions.js):不使用module.exports是一個壞主意嗎?

require('./_menu'); 

,並在這裏的是,菜單文件:

var $ = require('jquery'); 

$(window).scroll(function() { 
    var scroll = $(window).scrollTop(); 

    if (scroll >= 100) { 
     $(".js-navigation").addClass("navigation--nav-color-two"); 
    } else { 
     $(".js-navigation").removeClass("navigation--nav-color-two"); 
    } 
}); 

然後你會發現我沒有用module.exports和一切仍然沒有問題的作品。如果我使用module.exports,那麼所有東西都以同樣的方式繼續工作。在這裏使用module.exports有什麼意義嗎?或者我只想在具有許多不同功能的大文件中使用它?

+0

爲什麼你非常SP寫的jQuery Node中的特定瀏覽器事件? – adeneo

+2

^^^^你有沒有聽說過Browserify? – reg4in

+0

所有的javascript文件被編譯成一個沒有它的函數.js文件 – timhc22

回答

3

你不出口任何東西....所以不,這不是一個壞主意。

一般情況下,你只能使用module.exports如果你是在一個單獨的文件創建可重用的代碼,如:

//MyClass.js 
    var MyClass = function() { 

    }; 

    MyClass.prototype.methodOne = function() { 

    }; 

    module.exports = MyClass; 

    //main.js 
    var MyClass = require('MyClass.js'); 
    var myInstance = new MyClass(); 

    myInstance.methodOne(); 
0

如果我正確理解你的問題,也許改變你這樣的代碼:

var $ = require('jquery'); 

module.exports = function(window){ 
    $(window).scroll(function() { 
     var scroll = $(window).scrollTop(); 

     if (scroll >= 100) { 
      $(".js-navigation").addClass("navigation--nav-color-two"); 
     } else { 
      $(".js-navigation").removeClass("navigation--nav-color-two"); 
     } 
    }); 
} 
當你想要求它

var scroll = require('./_menu'); 
scroll(window); 
相關問題