廢品回收在哪個網(wǎng)站做效果好app推廣工作是做什么的
一、介紹
1.1 什么是模塊化與模塊 ?
將一個復(fù)雜的程序文件依據(jù)一定規(guī)則(規(guī)范)拆分成多個文件的過程稱之為 模塊化
其中拆分出的 每個文件就是一個模塊 ,模塊的內(nèi)部數(shù)據(jù)是私有的,不過模塊可以暴露內(nèi)部數(shù)據(jù)以便其他 模塊使用
1.2 什么是模塊化項目 ?
編碼時是按照模塊一個一個編碼的,整個項目就是一個模塊化的項目
1.3 模塊化好處
下面是模塊化的一些好處:
1. 防止命名沖突
2. 高復(fù)用性
3. 高維護(hù)性
1.4模塊化使用
導(dǎo)出數(shù)據(jù)方式一:
exports.num = num;
exports.sum = sum;
exports.Animal = Animal;
導(dǎo)出數(shù)據(jù)方式二:
// 通過module.exports 等于一個對象,來導(dǎo)出數(shù)據(jù)
// 對象可采用es6簡化對象的寫法
module.exports = {num,sum,Animal
};
導(dǎo)入數(shù)據(jù):
// 注意1: 如果要使用某個模塊里面的數(shù)據(jù),則需要使用 require 關(guān)鍵字進(jìn)行導(dǎo)入。
// 注意2:在導(dǎo)入用戶自己開發(fā)的模塊的時候,需要加上路徑(1. 相對路徑(多) 2. 絕對路徑) 注意: ./ 必須寫上
// 注意3:模塊文件的擴(kuò)展名(后綴名)可以寫,也可以不寫
// 注意4:導(dǎo)出的模塊一般需要使用一個變量來接收,一般把接收的量定義為常量
// 注意5: 定義常量的名稱和文件的名稱保持一致(這個不是必須,大家都這么做)
const m1 = require("./modules/m1.js");
完整代碼:
// m1.js中:
let num = 10;
function sum(a, b) {return a+b
}class Animal{constructor(){this.age=0}
}// 導(dǎo)出數(shù)據(jù)方式1:
// exports.num = num;
// exports.sum = sum;
// exports.Animal = Animal;// 導(dǎo)出數(shù)據(jù)方式2:
// 通過module.exports 等于一個對象,來導(dǎo)出數(shù)據(jù)
// 對象可采用es6簡化對象的寫法
module.exports = {num,sum,Animal
};
模塊的使用
//01-模塊的使用.js
const m1 = require("./modules/m1.js");console.log(m1); //{ num: 10, sum: [Function: sum], Animal: [Function: Animal] }
console.log(m1.sum(10, 20));
const obj = new m1.Animal(); //30
console.log(obj.age); //0
二、模塊里面this的指向問題
exports實際上是module.exports的引用,
在 nodejs 里面的 this 代表當(dāng)前的這個模塊,也就是 exports 對象
console.log(exports); //{}
console.log(module.exports); //{}
console.log(exports === module.exports); //true exports實際上是module.exports的引用console.log('this', this); // this {}console.log(this === exports);// true // 在 nodejs 里面的 this 代表當(dāng)前的這個模塊,也就是 exports 對象 并且,交互模式下,沒有exports這個對象
console.log(global === this ); //false this不指向全局對象
三、CommonJS 規(guī)范
module.exports 、 exports以及require 這些都是CommonJS模塊化規(guī)范中的內(nèi)容。 而 Node.js 是實現(xiàn)了 CommonJS 模塊化規(guī)范,二者關(guān)系有點像 JavaScript 與 ECMAScript
CommonJS 規(guī)定:
① 每個模塊內(nèi)部,module 變量代表當(dāng)前模塊。
② module 變量是一個對象,它的 exports 屬性(即 module.exports)是對外的接口。
③ 加載某個模塊,其實是加載該模塊的 module.exports 屬性。require() 方法用于加載模塊。