闲暇之余,总想写点什么,而前段时间的面试,也有面试官问到关于Node的相关知识。所以今天开始就会陆陆续续的学习一下node的相关知识。如果有不足的地方,还请大家指出来。
其实Node一直都存在前端的周围,比如最常见的NPM下载依赖包,但例如我,在之前也就止步于此了。而没有将Node真正的价值体现出来。
既然要写还是先介绍一下node吧!
码云仓库地址:https://gitee.com/yixiongA/node.git;注:仓库文件以学习的天数为分支
1:前篇
1:Node是一个开源与跨平台的JavaScript运行环境
2:Node可以在浏览器外运行V8 JavaScript引擎
3:Node是单个进程的运行,不需要每个请求都创建新的线程,而且是范式编写的库通常是非阻塞的,而且在进行I/O操作时,Node会在响应返回时就恢复了操作,而不是阻塞线程。
简单示例
例(1)
let http=require('http') //引入http模块 let hostname='127.0.0.2' //域名 let port=3000 //端口 let server =http.createServer((req,res)=>{ //createServer()方法创建一个新的HTTP服务器,并返回 res.statusCode=200 //设置statusCode属性为200,表示响应成功 res.setHeader('Content-Type','text/plain') //Content-Type为响应头 res.end('Hello') //end为关闭响应 }) server.listen(port,hostname,()=>{ console.log(`服务器运行在 http://${hostname}:${port}/`) })
而每次在接收到新的请求时,request事件会被调用,并且会提供两个对象
1:请求对象(http.IncomingMessage对象)
2:响应对象(http.ServerResponse对象)
2:安装
直接在官方下载自己所需要的软件包即可。地址:http://nodejs.cn/download/
安装完成后。在CMD中使用 node -v,来查看安装版本,以及是否安装成功
C:Users>Node -v
v14.11.0
3:了解
以下统称JavaScript为JS
在学习Node.js之前,因为Node是作为JavaScript的运行环境,当然学习Node的首要条件,就是对JS的了解,而在这里就不对JS在述说太多。而在
Node.js中异步编程是它的基本组成部分
- 异步编程与回调
- 定时器
- Promise
- Async 与 Await
- 闭包
- 事件循环
4:通过编码退出进程
当在控制台中运行程序时,最方便快捷的就是使用ctrl+c,将其关闭,但是在这里是讲的是使用编码退出进程
其中process提供了便利的方法:
process.exit
process.exit();当Node运行到此行代码时,进程会立即非正常的强制终止。
也可以在使用process.exit(1),传入一个整数,向操作系统发送退出码,并系统默认为0
有关退出码的信息,详见 http://nodejs.cn/api/process.html#process_exit_codes
process.kill(process.pid,"信号
"
)
process.pid 属性返回进程的 PID。
信号分别有SIGKILL
/ SIGTERM
1:SIGTERM 是指告诉进程言正常终止的信号
2:SIGKILL
是告诉进程立即终止进程的信息 与process.exit()类似
简单示例
例(2)
代码例(1)后跟
setTimeout(() => { console.log('退出中'); // process.exit(0) // 默认为0,指立即强制终止进程 //process.pid属性返回进程的 PID。 process.kill(process.pid, 'SIGTERM') //SIGTERM 是指告诉进程言正常终止的信号 //SIGKILL 是告诉进程立即终止进程的信息 与process.exit()类似 }, 1000);
5:在Node.js中获取环境变量
在process核心模块中提供了env属性,而这个属性就承载了在启动进程的=时候的所有环境变量
默认为development
process.env.NODE_ENV // "development"
6:如何使用Node
在终端打开 运行Node
例:
C:UsersLenovo、>node Welcome to Node.js v14.11.0. Type ".help" for more information. > console.log("node") node //打印 undefined //这个是打印console.log()的参数 >node dome.js //运行js文件
7:在Node.js中从命令行接收输入
question()
显示第一个参数,并且等待用户输入,当按下回车键时,则会调用回调函数。并在回调函数中,就关闭了readline接口。
readline(逐行读取)
readline.Interface类
该类的实例时使用readline.createInterface()方法构造的。每个构造的实例都关联一个可读流(input)
和一个可写流(output)。output流用于为到达的用户输入打印提示,并从input流读取。
close事件
当触发了close事件,代表实例完成
rl.close()
line事件
当用户按下<Enter>键时触发
rl.on('line', (input) => { console.log(`接收到:${input}`); });
pause事件
例:
const readline = require('readline').createInterface({ input: process.stdin, output: process.stdout }) readline.question(`你叫什么名字?`, name => { console.log(`你好 ${name}!`) readline.close() })
终端: C:UsersLenovo、Desktop odeDome>node 3.js 你叫什么名字?衣兄先生 你好呀 衣兄先生!