0.1 node.js搭建静态资源服务器(01)
//导入http模块
const http =require('http')
const path=require('path')
const fs =require('fs')
//创建服务器
const app=http.creatServer((req,res)=>{
consloe.log(req.url)
//(2) 处理
if(req.url =='/'){
//(3) 响应
fs.readFile(path.join(__dirname,'www','index.html'),(err,data)=>{
if(err){
throw err
}else{
res.end(data)
}
})
}else if(req.url=='/resource/images/01.gif'){
fs.readFile(path.join(__dirname,'www','/resource/images/01.gif'),(err,data)=>{
if(err){
throw err
}else{
res.end(data)
}
})
}else{
res.end('404 not found')}
})
app.listen(3000,()=>{
console.log('服务器开启成功')
})
node.js搭建静态资源服务器(02)
web特点01: html中所有的外部资源(src href)都会变成网络请求
*想要html页面可以加载静态资源(css 图片,音视频),服务器就需要响应这些文件
web特点02 :静态资源网络请求url 一般与文件路径一直 ,一般会自动拼接文件路径响应返回
*静态资源 服务器 :自动响应返回页面每一个静态资源请求
const http=require('http')
const fs =require('fs')
const path=require('path')
// 开启
const app=http.createServer((req,res)=>{
//1 .(req请求)
console.log(req.url);
// 处理
if(req.url=='/'){
fs.readFile(path.join(__dirname,'www','index.html'),(err,data)=>{
if(err){
throw err
}else{
res.end(data)
}
})
}else if(req.url.indexOf('/resource')==0){
fs.readFile(path.join(__dirname,'www',req.url),(err,data)=>{
if(err){
throw err
}else{
res.end(data)
}
})
}
else{
res.end('404 not found')
}
})
app.listen(3000,()=>{
console.log('服务器启动成功')
})
02 express框架
01 express的基本使用
Express官网:
下载express命令: npm i express
-
如果你的网速很慢,可以在你的任意终端执行命令来提速:
npm config set registry https://registry.npm.taobao.org/
02 express响应客户端数据
res.send() 会自动设置响应头识别中文
res.end() 只能相应二进制字符串,中文还会乱码
// 1.导入模块
const express=require('express')
// 创建服务器
const app=express()
// 3.路由
/* 后台的路由 其实就是 前端的接口文档
路由:一个请求,对应一个处理函数
接口文档 :后台人员会根据路由整理出一份使用说明文档,也就是前端的接口文档 */
// (1) 响应中文
app.get('/',(req,res)=>{
// res.end('index')
res.send('我是首页')
})
// (1) 响应json
app.get('/abc',(req,res)=>{
//当热水.send()方法里面是对象的时候,express会自动帮你将对象转成JSON字符串
res.send({name:'张三',age:20})
//上面代码等价于
//res.setHeader(('Content-type','text/plain;charset=utf8'))
// res.end(JSON.stringify({name:'张三',age:20}))
})
// (1) 响应文件
app.get('/login',(req,res)=>{
//原生node.js :fs模块读取文件数据,返回
res.sendFile(`${__dirname}/login.html`)
})
//4. 开启服务器
app.listen(3000,()=>{
console.log('开启服务器成功');
})
03 express托管静态资源
(1)如果请求路径是/ : express会自动读取www里面的index.html响应返回
(2)如果请求路径是www里面的文件夹路径 :express会自动从www开始拼接文件路径响应返回
// 1.导入express
// 2.创建服务器
// 3.写路由(接口文档)
// (4) 开启服务器
// 1.导入express
const express=require('express')
// 2.创建服务器
const app=express()
// 3.托管静态资源
/*
(1)如果请求路径是/ : express会自动读取www里面的index.html响应返回
(2)如果请求路径是www里面的文件夹路径 :express会自动从www开始拼接文件路径响应返回
*/
app.use(express.static('www'))
// (4) 开启服务器
app.listen(3000,()=>{
console.log('开启服务器成功');
})