b_模塊

模塊

運行nodenode

	//模塊就是爲了不全局污染,變量名衝突什麼的
	//Node.js 有一個簡單的模塊加載系統,遵循的是 CommonJS 的規範。 
	//在 Node.js 中,文件和模塊是一一對應的(每一個文件被視爲一個獨立的模塊)。
	//  一切皆模塊 

	// nodejs 會自動給咱們的js文件添加頭部,
		(function(exports, require, module, __filename, __dirname) {
		  // 這裏是你本身寫的js代碼文件
		}); // 自定添加上尾部
		
	//咱們本身js就寫在這個函數裏面  ,而後你就能夠用這些參數
	//因此 你能夠直接這樣輸出
	console.log(__dirname);   //E:\HB\nodejs    絕對路徑
	console.log(__filename);  //E:\HB\nodejs\test.js   絕對路徑+本身的名字+後綴名
	console.log(exports);  //	{}  返回一個對象 
	//exports  不是   module的屬性exports   module.exports和exports不同
	console.log(require);  //是一個函數,幫助引入其餘模塊.

console.log(module)npm

	module的屬性	類型	屬性說明
	module.filename	string	模塊的徹底解析後的文件名
	module.id	string	模塊的標識符。 一般是徹底解析後的文件名。
	module.loaded	boolean	模塊是否已經加載完成,或正在加載
	module.parent	object	最早引用該模塊的模塊。
	module.paths	string	模塊的搜索路徑。
	module.children	object	被該模塊引用的模塊對象。

exportsjson

	exports.a="123";
	console.log(module);   // Module {exports: { a: '123' },}
	exports={
		a:"456",
	};
	console.log(module);     // Module {exports: {},}
	module.exports.b="555";
	console.log(module);     // Module {{ b: '555' },}
	module.exports={
		b:"555",
	};
	console.log(module);   // Module {{ b: '555' },}

	// module.exports和exports的區別
	module.exports纔是真正對外拋出對象的傢伙
	//exports  的來歷(NodeJS在你的代碼中加了如下代碼:)
	var module = new Module();
	var exports = module.exports;
	
	exports與module.exports的關係
	//exports = module.exports = {};
	//而上面的代碼中   exports={a:"456"} 賦值一個新對象   致使  module.exports沒有賦值給exports

require函數

	// require接受一個參數(路徑或文件名,也就是module.id	string	模塊的標識符。 一般是徹底解析後的文件名。),類型是String。
	// equire函數return的是module.exports對象,裏面類型是任意的。
	
	/*test.js中  test.js與test_a.js同級  */
	var kk= require("./test_a.js");
	console.log(kk.a); //123
	kk.b(); //456
	
	/*test_a.js中*/
	module.exports={
		a:"123",
		b:function(){
			console.log("456");
		}
	}
	/*test.js中  test.js與test_b.js同級  */
	require("./test_b.js"); //666    導入js   直接運行
	/*test_b.js中*/
	console.log("666");

	//require函數能夠導入模塊、JSON文件、本地文件。
	//node.js模塊分類
	// 核心模塊Code Module、內置模塊、原生模塊 
	//fs  http  path  url..
	
	//第三方模塊   通常就是   npm  install  下載的那些
	
	//自定義模塊  本身寫的模塊
	
	//加載順序
	
	// require('./index2')
	//在加載index2的時候,require會先去找index2.js文件,沒有就去找.json文件,再沒有就找node文件
	//若是這些都沒有,它會認爲index2是一個文件夾,若是找到了這個文件夾,
	//require還會去找這個文件夾裏面是否有package.json,若是沒有就加載失敗,
	//若是有,就找package.json裏的main(),就加載main裏面的index.js/index.json/index.node,若是沒有,也是失敗。
	
	//檢查index2目錄是否包含一個index.js文件。 這個文件會被隱式地看成那個文件夾下的"main"模塊。

	
	
	//var x = require("moduleB");
	Node則會如下面的順序去解析 moduleB,直到有一個匹配上。
	
	/root/src/node_modules/moduleB.js
	/root/src/node_modules/moduleB/package.json (若是指定了"main"屬性)
	/root/src/node_modules/moduleB/index.js 
	
	/root/node_modules/moduleB.js
	/root/node_modules/moduleB/package.json (若是指定了"main"屬性)
	/root/node_modules/moduleB/index.js 
	
	/node_modules/moduleB.js
	/node_modules/moduleB/package.json (若是指定了"main"屬性)
	/node_modules/moduleB/index.js
	注意Node.js在步驟(4)和(7)會向上跳一級目錄。

相關文章
相關標籤/搜索