(function(exports, require, module, __filename, __dirname) {
connsole.log('模塊的代碼實際上在這裏')
});
複製代碼
// 文件名爲02_myModule.js
複製代碼
// 定義一個變量
let testVar = 'test'
// 定義一個函數
function test() {
console.log(testVar)
}
複製代碼
// 使用module.exports向外暴露
module.exports.testVar = testVar
module.exports.testFn = test
複製代碼
// 定義一個變量
let testVar = 'test'
// 定義一個函數
function test() {
console.log(testVar)
}
// 向外暴露
module.exports.testVar = testVar
module.exports.testFn = test
複製代碼
const myMo = require('./02_myModule')
複製代碼
const VUE = require('vue')
複製代碼
// 內置模塊fs 模塊是用來讀取二進制流
const fs = require('fs')
const result = fs.readFile('./07_fs.js', (err, data) => {
if(err) {
console.log(err)
} else {
console.log(data)
// 講16進制轉義爲string
console.log(data.toString())
}
})
// 讀取文件爲異步操做,直接打印 undefined
console.log(result)
複製代碼
const myMo = require('./02_myModule')
複製代碼
// 支持js,json,node擴展名,不寫擴展名以此嘗試, 均不存就報錯
const myMo = require('./02_myModule')
console.log(myMo.testVar)
myMo.testFn()
複製代碼
module.exports.test = 'A'
const modB = require('./05_moduleB')
console.log('modA:'+ modB.test)
// 再次定義
module.exports.test = 'AA'
複製代碼
module.exports.test = 'B'
const modA = require('./04_moduleA')
console.log('modB:'+ modA.test)
// 再次定義
module.exports.test = 'BB'
複製代碼
const modA = require('./04_moduleA')
//1 引用 04_moduleA
//2 其內部引用並執行05_moduleB
//3 05_moduleB 內部引用了04_moduleA, 這時04_moduleA 中的module.exports.test = A。因此第一次打印modB:A
// 將module.exports.test = 'BB' => 至此 引入05_moduleB 執行完畢,寫入緩存
//4 接續2步04_moduleA 繼續執行 因此第二次打印modA:BB ,而且重置 module.exports.test = 'AA'
const modB = require('./05_moduleB')
//5 直接讀取緩存
console.log(modA.test)
//6 第三次打印 AA
console.log(modB.test)
//7 第四次打印 BB
複製代碼
// 後臺打印
modB:A
modA:BB
AA
BB
複製代碼
//至關於
const exports = module.exports
// 其指向不能被改變
exports = {
a:1 // undefined 報錯,由於改變了指向
}
// 就要自定義輸出內容, 使用全寫
module.exports = {
a: 1
}
複製代碼
//09_global 文件
// 聲明局部變量
const testVar = 100
// 聲明全局變量
global.testVar2 = 1000
module.exports.testVar = testVar
複製代碼
// 使用區別
const mod = require('./09_global')
console.log(mod.testVar)
console.log(testVar2) // 既不用導出也不用引用便可使用
複製代碼
argv => 進程啓動時的參數集 是一個數組
1. 首參 啓動node程序的路徑
2. 第二個參數 啓動腳本文件的路徑
3. 若是進行文件名後傳參 即對啓動的文件作配置 node xxx.js a=1 b=2
則會有相應的參數存儲進入argv數組 不然爲空數組
argv0 => argv 的第一個參數
execArgv => node --inspect xxx.js
寫在文件名前面的參數,即對node作啓動配置參數
execPath => node 調用腳本的路徑,即node的啓動路徑
複製代碼
const {env} = process
console.log(env) // 保存了啓動環境的配置
{ ALLUSERSPROFILE: 'C:\\ProgramData',
...
..
.
USERNAME: 'Administrator',
USERPROFILE: 'C:\\Users\\Administrator',
windir: 'C:\\Windows',
windows_tracing_flags: '3',
windows_tracing_logfile: 'C:\\BVTBin\\Tests\\installpackage\\csilogfile.log',
TERM_PROGRAM: 'vscode',
TERM_PROGRAM_VERSION: '1.36.1',
LANG: 'zh_CN.UTF-8' }
複製代碼
console.log(process.cwd()) // 當前進程的路徑
F:\xxx\node_xxx\demo
複製代碼
// 最後執行 全局global 直屬的 => 下個隊列隊首
setImmediate(() => {
console.log('setImmediate')
})
// 在這兩個之間執行 也是global直屬的
setTimeout(() => {
console.log('setTimeout')
}, 0)
// 最早執行 在當前隊列最後,因此先執行
process.nextTick(() => {
console.log('nextTick')
})
複製代碼
closevue