Bootstrap

node 内置模块

模块化

  • 在 node 的开发过程中
  • 我们是把每一个功能独立做成一个模块
  • 然后在使用 导入导出 的方式把他们关联在一起
  • 我们一般把模块分为三种
    • 内置模块 (node 天生就带有的模块)
    • 自定义模块 (我们自己写的文件)
    • 第三方模块 (从网上下载的别人写好的模块)

内置模块

fs模块

  • 这个模块主要用来操作文件:读取、写入文件。
  • 使用的时候直接导入就可以使用了
const fs = require('fs')

// 接下来就可以使用 fs 这个变量去操作文件了
异步读取
  • 异步的读取某一个文件内的内容
  • 语法:fs.readFile(要读取的文件,[读取文件编码方式],读取成功后执行的回调函数);
  • 说明:
  • 可选项参数是读取文件使用的编码方式,可以写utf-8
  • 回调函数中需要两个参数,参数1为错误对象,读取成功为undefined,读取失败为错误信息;参数2为读取的结果。如果没有编码方式,读取的是一个buffer,使用16进制来描述二进制数据,需要转为字符串查看。
var fs = require("fs");
/*fs.readFile("./a.txt",(err,data)=>{
	if(err){
		console.log("读取失败,错误为:",err);
		return 
	}
	console.log("读取成功,数据为:",data.toString());
});*/
fs.readFile("./a.txt","utf-8",(err,data)=>{
	if(err){
		console.log("读取失败,错误为:",err);
		return 
	}
	console.log("读取成功,数据为:",data);
});
console.log(123);
同步读取
  • 同步的读取某一个文件内的内容
  • 语法:fs.readFileSync(要读取的文件[,读取文件的编码]);
  • 说明:
  • 返回读取的结果
var fs = require("fs");
/*
var data = fs.readFileSync("./a.txt");
console.log("读取成功,数据为:",data);
*/
var data = fs.readFileSync("./a.txt","utf-8");
console.log("读取成功,数据为:",data);
console.log(123);
异步写入
  • 异步的写入某一个文件内的内容
  • 语法:fs.writeFile(被写入的文件,写入的内容,写入完成后执行的回调函数);
  • 说明:
  • 文件存在则写入,文件不存在则创建文件写入。
  • 文件中没内容就直接写,有内容会覆盖写入。
const fs = require("fs");
fs.writeFile("./test.txt","hello node",function(){
    console.log("写入完成!");
});
console.log(123);
同步写入
  • 同步的写入某一个文件内的内容
  • 语法:fs.writeFileSync(被写入的文件,写入的内容);
const fs = require("fs");
fs.writeFileSync("./test.txt","hello node",function(){
    console.log("写入完成!");
});
console.log(123);

http模块

  • node做后端,没有现成的服务器,需要使用http这个模块。
  • http 这个模块就是专门用来开启服务,并且接受请求,返回响应的
  • http 也是一个内置模块,直接导入使用就行
const http = require('http')

// 接下来就可以使用 http 这个模块去开启服务了
创建一个服务
  • 要开启先要创建一个服务
const http = require('http')

// 创建一个服务
// 这个服务默认监听 http 协议
// 这个服务默认监听 localhost 域名
// 返回值就是这个服务
const server = http.createServer(function (request, response) {
    // 前端发来的每一个请求都会触发这个函数
    // request 包含着所有的请求信息
    // response 是所有的响应信息
})
  • request中包含所有请求的信息,请求行,请求头,请求空行,请求主体,如下图:
    在这里插入图片描述
  • response是服务器给客户端响应的信息,可以自己设置,常用的属性和方法:
res.write(data): // 给浏览器发送请求体,可以调用多次,从而提供连续的请求体
res.end();   // 通知服务器,所有响应头和响应主体都已被发送,即服务器将其视为已完成。
res.end(data); // 结束请求,并且响应一段内容,相当于res.write(data) + res.end()
res.statusCode: // 响应的的状态码 200 404 500
res.statusMessage: // 响应的状态信息, OK Not Found ,会根据statusCode自动设置。不能赋值中文
res.setHeader(name, value); // 设置响应头信息, 比如content-type
res.writeHead(statusCode, statusMessage, options); // 设置响应头,同时可以设置状态码和状态信息。
  • 注意:必须先设置状态码,再设置响应头,最后设置响应主体,顺序不能乱
const http = require("http");
const server = http.createServer();
server.on("request",function(req,res){
	// 设置状态行和响应头
	// 语法:res.writeHead(状态码,状态文本,{响应头});
	res.writeHead(404,'ccc',{'content-type':'text/html'});
	res.end("ok");
});
server.listen(9988,function(){
	console.log("服务器启动成功");
});
监听一个端口
  • 确定这个服务监听哪一个端口
const http = require('http')

// 创建一个服务
const server = http.createServer(function (request, response) {
    // 前端发来的每一个请求都会触发这个函数
})
// 端口号要大于5000,不要使用6661~6669
server.listen(8080, function () {
    // 这个函数会在服务开启成功以后执行
    console.log('listening on port 8080')
})
给出一个响应
  • 简单给出一个响应
const http = require('http')

// 创建一个服务
const server = http.createServer(function (request, response) {
    // 前端发来的每一个请求都会触发这个函数
    // 接受到请求以后给出一个响应
    response.end('hello world')
})

server.listen(8080, function () {
    // 这个函数会在服务开启成功以后执行
    console.log('lintening on port 8080')
})
  • 此时,打开浏览器
  • 地址栏输入 localhost:8080
  • 浏览器就会响应文字 hello world
;