(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