http模块
- http模块是Node的内置模块。
- http模块用于构建服务器。
http.createServer()
定义
用于创建一个Node服务器。主要做了两件事:
- 处理请求
- 处理响应
语法
http.createServer({选项对象},监听函数)
选项对象:可选。是一个object,通过选项对象,传入一些参数。
监听函数:是一个回调函数。当用户请求从端口进来后,该函数立刻被调用。
- Request对象:请求对象
- 请求对象:包含与请求有关信息。
- Response对象:响应对象
- 响应对象:包含与响应有关的信息。
返回值:
createServer()
方法返回一个Server对象。
server.listen()
定义
用于监听服务器端口。
语法
server.listen()
server.listen([port[,host][,callback])
server.listen(端口,主机名,回调函数)
- 端口: 数值
- 主机名:字符串
- 连接数:数值(最大511)
- 回调函数:function
返回值:
返回服务器对象
res.setHeader()
定义
用于设置响应头信息。特点:
- 只能设置一个值
- 多次执行
- 优先级低于
res.writeHead()
语法
res.setHeader(name, value)
res.setHeader(响应头属性名, 对应的值)
返回值:
无
res.setHeader("Content-Type","text/html")
res.setHeader("Content-Type","text/plain")
res.setHeader("Content-Type", "application/json")
res.write()
定义
write()
方法用于设置响应数据。
语法
response.write(chunk[, encoding][, callback]);
response.write(数据[,字符编码][, 回调函数]);
返回值:
布尔值
res.writeHead()
定义
用于设置响应头信息。特点:
- 设置多个值
- 只能执行一次
- 优先级高于
res.setHeader()
语法
res.writeHead(statusCode[, statusMessage][, headers]);
res.writeHead(状态码,'状态信息',{响应头});
返回值:
返回一个响应对象。以便进行链式调用。
res.end()
定义
end()
用于通知服务器响应结束。该方法在响应时必须调用。
语法
response.end([data[, encoding]][, callback])
res.end('数据','字符编码',回调函数)
返回值:
返回this
读取文件内容
const http = require('node:http')
const fs = require('fs')
const server = http.createServer((req,res) => {
// console.log(res);//响应对象[ServerResponse]
// console.log(req);//请求对象[inComingMessage]
console.log(req.url);
//设置响应头的数据类型
// res.setHeader('Content-Type', 'text/html;charset=utf-8')
// res.write('<h1>你好世界</h1>')
// res.write('<h2>你好中国</h2>')
// res.end()
//读取index.html内容作为响应数据
res.setHeader('Content-Type', 'text/html;charset=utf-8')
fs.readFile('./views/index.html',(err,data) => {
if(err){
console.log(err);
res.end()
} else {
res.end(data)//把数据写在这里
}
})
})
server.listen(3000,'localhost',511,() => {
console.log('服务器已经运行在http://localhost:3000');
})
添加路由
const http = require('node:http')
const fs = require('fs')
const server = http.createServer((req,res) => {
console.log(req.url);
res.setHeader('Content-Type', 'text/html;charset=utf-8')
//添加路由
//条件判断 path = './views/index.html'
// fs.readFile('./views/index.html',(err,data) => {
// fs.readFile('./views/about.html',(err,data) => {
fs.readFile('./views/404.html',(err,data) => {
if(err){
console.log(err);
res.end()
} else {
res.end(data)//把数据写在这里
}
})
})
server.listen(3000,'localhost',511,() => {
console.log('服务器已经运行在http://localhost:3000');
})
node.js路由的原生写法
const http = require('node:http')
const fs = require('fs')
const server = http.createServer((req, res) => {
console.log(req.url);
res.setHeader('Content-Type', 'text/html;charset=utf-8')
//////////////添加路由:router/////////////////
//条件判断 path = './views/index.html'
let path = './views/'
switch (req.url) {
case '/':
path += 'index.html'
res.statusCode = 200
break
case '/about':
path += 'about.html'
res.statusCode = 200
break
case '/about-me':
res.setHeader('Location', '/about')
res.statusCode = 301
break
default:
path += '404.html'
res.statusCode = 404
}
// fs.readFile('./views/index.html',(err,data) => {
// fs.readFile('./views/about.html',(err,data) => {
fs.readFile(path, (err, data) => {
if (err) {
console.log(err);
res.end()
} else {
res.end(data)//把数据写在这里
}
})
})
server.listen(3000, 'localhost', 511, () => {
console.log('服务器已经运行在http://localhost:3000');
})
Npm install
语法
npm install module-name
npm install -g module-name # -g:全局安装
npm i module-name # npm i是npm install的别名
npm install module-name --save
npm install module-name --not--save
npm install module-name --save-dev
express写路由
const express = require('express')
const app = express()
app.get('/', function (req, res) {
// res.send('Hello World')
res.sendFile('./views/index.html',{root:__dirname})
})
app.get('/about', function (req, res) {
res.sendFile('./views/about.html',{root:__dirname})
})
app.get('/about-me', function (req, res) {
res.redirect('/about')
})
//404 page
app.use((req,res) => {
res.status(404).sendFile('./views/404.html',{root:__dirname})
})
app.listen(3000)