一、node的全局对象
1. 全局变量
(1)__filename:代表的是正在执行的文件的文件名。带绝对路径的文件名(绝对路径 + 文件名)
(2)__dirname:代表当前正在执行的文件所在的目录
console.log('文件名:'+__filename)
console.log('文件路径:'+__dirname)
2. 全局对象
process对象 :存放的node的进程信息,可以放在程序的任何位置,也不用require进行加载
console.log('系统信息:',process)
程序:静态的代码
进程:运行中的程序
线程:是进程的一个小的单元
process对象的属性:
(1)stdout:返回的是一个对象,代表一个标准输出。它下面的方法write,作用和console.log方法一样
process.stdout.write('祝贺')
(2)stdin:返回的是一个对象,代表一个标准输入。
process.stdout.write('请输入一个数:')
process.stdin.on('data',(result)=>{
// process.stdout.write('你输入的数据是:'+result.toString().trim())
let s=1
for (let i = 1; i <= parseInt(result); i++) {
s = s * i
}
process.stdout.write(parseInt(result)+'!='+s)
process.exit()//结束进程
})
二、node的readline模块
1. 是node中实现标准输入输出的模块,可以逐行的读取终端的数据。使用时必须通过require引入
2. 使用方法:
(1)引入模块:require(‘readline’)
const readline = require('readline')
(2)创建readline模块的实例,该实例的input属性值就是process.stdin,output属性值是process.stdout
let r1 = readline.createInterface({
input: process.stdin,
output: process.stdout
})
(3)注册事件监听:完成输入输出操作
//3. 注册question事件监听:实现数据的输入
r1.question('请输入数据:',(result)=>{
console.log('你输入的数据是:',result)
r1.close() //当r1对象调用close()函数时,触发close事件
})
举个栗子:
// 引入readline模块
var readline = require('readline');
//创建readline接口实例
var rl = readline.createInterface({
input:process.stdin,
output:process.stdout
});
// question方法
rl.question("今天天气怎么样?",function(answer){
console.log("今日天气:"+answer);
rl.close();// 不加close,则不会结束
});
// close事件监听
rl.on("close", function(){
process.exit(0)// 结束程序
});
readline模块的事件:line :”会在用户输入一行,按回车键后触发
"line"事件,这个事件就是在用户输完一行,按下回车后就会触发的事件,它会将用户输入的数据通过回调函数传回来,可在此方法里处理用户输入的数据
// 引入readline模块
var readline = require('readline');
//创建readline接口实例
var rl = readline.createInterface({
input:process.stdin,
output:process.stdout
});
r1.on('line',(result)=>{
处理代码
})