Node.js的全局对象
Node.js
的全局对象是具有全局性的,它们可在所有的模块中应用。我们并不需要在应用中引用这些对象,而可以直接使用它们。
1.__filename
__filename
表示正在执行的代码的文件名。这时此代码文件的解析绝对路径。(当前被执行的文件的全名–>绝对路径+文件名)
2.__dirname
__dirname
表示当前正在执行的脚本所在目录的名称
console.log("文件名是:"+__filename); //输出结果为:文件名是:C:\Users\Lenovo\Desktop\code\1.2\main.js
console.log("路径名:"+__dirname); //输出结果为:路径名:C:\Users\Lenovo\Desktop\code\1.2
3.setTimeout(cb,ms)
setTimeout(cb, ms)
全局函数用于至少多少毫秒后运行回调cb。实际延迟取决于外部因素,如OS计时器粒度和系统负载。计时器不能跨越超过24.8天。
该函数返回一个表示可用于清除定时器的对象。
function printHello(){
console.log("Hello");
}
setTimeout(printHello,2000);
4.clearTimeout(t)
clearTimeout(t):清除定时器,用来停止由setTimeout创建的定时器
function printHello(){
console.log("Hello");
}
let st = setTimeout(printHello,2000);
clearTimeout(st);
5.setInterval(cb,ms)
setInterval(cb,ms):定时器,间隔多少秒执行一次定时器
function printHello(){
console.log("Hello");
}
let st = setInterval(printHello,1000);
6.clearInterval(t)
function printHello(){
console.log("Hello");
}
let st = setInterval(printHello,1000);
clearInterval(st);
7.process
process
:是一个全局对象,包含了Node进程的全部信息(当前正在执行的代码的全部信息)
"进程":就是程序的一次动态进行,进程就是动态运行的程序
(1)process对象
属性:process对象提供一系列属性,用于返回系统信息。
console.log("Pid:",process.pid); //进程号
console.log("操作系统:",process.platform);
console.log("Node版本号:",process.version);
(2)process.stdout
process.stdout:返回一个标准输出对象,该对象有一个方法write,作用和console.log类似
process.stdout.write("Hello World!");
(3)process.stdin
process.stdin:返回一个标准输入对象
process.stdout.write("请输入数据:");
process.stdin.on("data",(dt)=>{
process.stdout.write("输入的数据是:"+dt.toString().trim())
process.exit(0); //结束进程
})
(4)process.stderr
process.stderr.write("标准错误");
(5)方法
process.chdir():切换工作目录到指定目录,类似于DOS的cd指令
process.cwd():返回运行当前脚本的工作目录的路径
process.exit():退出当前进程
Node服务器开发
1.IP地址
IP地址:是互联网设备的唯一标识。
IPV4:点分十进制表示(32位) 例:192.168.101.15
IPV6:采用冒号十六进制表示(128位) 例:4A::5B::...
2.端口
端口:是计算机提供的某个服务的接口,计算机系统的端口有6535个,不同的服务端口号不同
MySQL的默认端口:3306
MongoDB:27017
0~1024端口号:操作系统使用
3.URL
URL:统一资源定位符,用于定位互联网上某个资源的编址方式
4.本地机作为服务器
IP:127.0.0.1
域名:localhost
5.http协议
http协议:超文本传输协议,是一个无状态协议(服务器端在监听时不知道是哪个客户端发送的请求)
请求消息:是客户端向服务器段发送请求时所携带的数据块
响应消息:是服务器端向客户端发送响应时所携带的数据块
(1)请求方式
请求方式:规定客户端和服务器端联系的类型
A、get
get:在浏览器地址栏输入URL地址或单击网页中的超链接
B、post
post:在form标签的method中指定为post
6.根据客户端的地址访问不同的内容
req.method:包含了客户端的请求方式
req.url:包含的是客服端请求的地址
const http = require("http");
const server = http.createServer();
server.on("request",(req,res)=>{
let url = req.url;
if (url == "/index" || url == '/'){
res.end('Welcome Homepage')
}else if (url == '/list'){
res.end('Welcome Listpage')
}else{
res.end('Not Found')
}
})
server.listen(3000);
console.log("服务器已经启动!");
7.获取请求头信息
(1)请求头
请求头:是请求消息的一部分,由客户端浏览器自动发送给服务器
User-Agent:浏览器类型
Accept:客户端可识别的响应内容类型列表。
Accept-Language:客户端可接收的自然语言。
Accept-Encoding:客户端可接收的编码压缩格式。
Accept-Charset:可接收的应答的字符集。
Host:请求的主机名,允许多个域名同处一个IP 地址,即虚拟主机。
connection:连接方式(close 或keepalive)。
Cookie:存储于客户端扩展字段,向同一域名的服务器端发送属于该域的cookie
8.响应信息
(1)状态码
状态码:用来表示请求-响应的过程是成功还是失败
200:表示请求-响应的过程已经完成
302:表示请求地址异常变化
404:表示服务器找不到客户端请求的资源(客户端请求的资源不存在)
400:表示客服端请求由语法错误
500:表示服务器端错误,无法处理客服端的请求
(2)响应类型(content-type属性)
text/plain:返回纯文本格式
text/html:返回HTML格式
text/css:返回CSS格式
application/javascript:返回JavaScript格式
application/json:返回JSON代码格式
image/jpeg:返回JEPG图片格式
9.Get请求参数
放在浏览器地址栏或页面的超链接
A、在客户端进行参数的拼接:
http://localhost:3000/list?name=%22zhangsan%22&age=12
地址和请求参数之间用'?'分隔
参数和参数之间用'&'分隔
B、服务器端接受Get请求请求的参数
调用url.parse方法对req.url进行解析
从query中获取参数请求
10.Post请求参数
Post请求参数:放在post请求体中
(1)在客户端对post请求参数进行封装:放在form表单中
(2)在服务器端获取post参数
A、导入querystring模块,将post请求体解析成对象格式
const http = require("http");
const querystring = require("querystring");
const postServer = http.createServer();
postServer.on("request",(req,res)=>{
let postStr = '';
req.on('data',(params)=>{
postStr += params;
req.on('end',()=>{
let postParams = querystring.parse(postStr);
console.log("姓名:",postParams.username)
console.log("密码:",postParams.pwd)
})
})
res.end("ok");
})
postServer.listen(3000);
console.log("服务器运行在3000端口上");