node.js-搭建静态资源服务器,express框架 图书管理案例

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('开启服务器成功');
})

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值