實際上,最最基礎的方法,最最原始的方法是module.exports,至於exports,是爲了方便書寫纔出來的,應該說,module.exports 包含exports,所工做的範圍更加的普遍!ui
module的用法:(能夠暴露任何部位,任何形式的值)this
(後來坑之處)require()中的是文件名,而不是什麼方法,因此,就簡單理解了;
引入的文件當中,導出了什麼,就有什麼方法,spa
//此文件爲modle.js //至關於類,類名和文件名相同最好! var modle = { var a = function(){}; var b = function(){}; } //module one暴露全部的方法,此時,沒法再暴露其餘方法 module.exports = modle; //module two 暴露些許方法 module.exports.output = modle.a; //新開闢單元暴露方法 module.exports.fuck = function(){console.log('this is newwe!')}
倘若我引入了modle.js以下code
var modle = require('./modle');
注意,上面require進來的是module.exports這個對象!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
//如果module.exports = modle,即:這個文件僅僅暴露了對象modle,引入後賦給modle,使用以下:
modle.a();modle.b();
//如果module.exports.output = modle;那麼是將modle對象賦給了module.exports的output,而後require進來了module.exports對象,使用以下:
modle.modle.a() modle.modle.b()
//至於exports,只可以exports.什麼什麼,也就是隻能給他建立對象,而後,暴露,可是不能exports=遵循了這點之後實際和module.exports.hello = function(){}同樣
至於exports:對象
它是有上面的引升來的,等於上面那個,因此,它不能在賦值了,只能新開闢值,只能新開闢值,只能新開闢值,只能新開闢值(重要)blog
exports.hello = function(){console.log('hello');}
注:若是實在是分不清二者的區別,那麼,放棄exports,僅僅使用module.exports足夠了!io