Node.js学习第四天-cnblog

Node.js学习第四天

1. 基本使用

  • 安装
npm i express@4.17.1
  • 创建最基本的web服务器
const express=require('express')

const app=express()

app.listen(80,()=>{
    console.log('express server running at http:127.0.0.1')
})
  • 监听请求
app.get(url,function(req,res){
    
})

app.post(url,function(req,res){
    
})
  • 响应内容
app.get('/user',(req,res)=>{
    
    // 响应JSON数据
    res.send({name:'zs'})
})

app.post('/user',(req,res)=>{
    // 响应文本内容
    res.send('请求成功')
})
  • 获取req的查询参数
app.get('/',(req,res)=>{
    
    // ?name=zs&age=18
    console.log(req.query.name) // zs
})
  • 获取路径参数
app.get('/user/:id',(req,res)=>{
    console.log(req.params)
})
  • 托管某个文件夹下的静态资源
app.use(express.static('public'))
app.use(express.static('files'))
  • 托管静态资源加上请求前缀
app.use('/public',express.static('public'))

// http:localhost:3000/public/images/kitten.jpg

2. nodemon

  • 热部署服务器工具
npm i nodemon

3. express 路由

  • router.js
const express=require('express')
const router=express.Router()


router.get('/user/list',(req,res)=>{
    
})


module.exports=router
  • 注册路由(index.js)
const userRouter=require('./router.js')

app.use(userRouter)
  • 添加路由前缀
app.use('/api',userRouter)

4. Express 中间件

const mw=function(req,res,next){
    
    console.log('这是一个最简单的中间件函数')
    // 交给下一个中间件或者路由,必须的
    next()
}

// 全局中间件

app.use(mw)

  • 定义多个全局中间件
app.use(function(req,res,next){
    
    console.log('第一个中间件')
    next()
})

app.use(function(req,res,next){
    
    console.log('第2个中间件')
    next()
})

app.use(function(req,res,next){
    
    console.log('第3个中间件')
    next()
})

app.get('/user',(req,res)=>{
    // 依次经过上面的中间件才到达这里
    res.send('home page')
})
  • 局部中间件
const mv1=function(req,res,next){
    
    console.log('这是中间件函数')
    
    next()
}

// 当前路由生效
app.get('/',mv1,function(){
    
})

// 不影响该路由

app.get('/user',function(req,res){
    
    ...
})

  • 定义多个局部中间件
app.get('/',mv1,mv2,(req,res)=>{
    
})

app.get('/',[mv1,mv2],(req,res)=>{
    
})

5. 中间件分类

5.1 应用级别的中间件

  • 绑定在app实例上的中间件
app.use((req,res,next){
        next()
})
        
app.get('/',mv1,function(req,res){
    
})        

5.2 路由级别中间件

const app=express()
const router=express.Router()

// 路由级别中间件
router.use(function(req,res,next){
    next()
})

app.use('/user',router)

5.3 错误级别的中间件

  • 错误级别中间件必须注册在所有的路由之后
  • 四个参数(err,req,res,next)
app.get('/',function(req,res){
    throw new Error('xxx')
    
    res.send('home page')
})

app.use(function(err,req,res,next){
    console.log('发生了错误'+err.message)
    
})

5.4 Express内置中间件

5.5 第三方中间件

6. 跨域资源共享

QQ截图20230121151616

更多请看nodejs第四天资料

6. 数据库

  • 项目中操作mysql
npm i mysql
  • db.js
const mysql=require('mysql')

const db=mysql.createPool({
  host:'127.0.0.1',
  user:'root',
  password:'root',
  database:'my_db_01'
})

module.exports=db
  • 查询sql
const db=require('../db/index')

db.query('select * from users',(err,results)=>{
    
    if(err){
        return console.log(err.message)
    }
    
    console.log(results)
})
  • 新增sql
// 数据对象
const user={username:'zs',age:12}

// 定义sql
const sqlStr='insert into users(username,age) values (?,?)'

// 数组形式填充占位符
db.query(sqlStr,[user.username,user.age],(err,results)=>{
    
    if(err){
        return console.log(err.message)
    }
    
    if(results.affectedRows===1){
        console.log('插入数据成功')
    }
})

7. 身份认证

7 更多请看ppt

sqlStr=‘insert into users(username,age) values (?,?)’

// 数组形式填充占位符
db.query(sqlStr,[user.username,user.age],(err,results)=>{

if(err){
    return console.log(err.message)
}

if(results.affectedRows===1){
    console.log('插入数据成功')
}

})




[外链图片转存中...(img-9NcJwz7T-1678500707253)]

[外链图片转存中...(img-esk04X3r-1678500707253)]



### 7. 身份认证



### 7 更多请看ppt

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
传奇是一款受欢迎的网络游戏,它具有非常多的特色和经典的玩法,吸引了大量的玩家。而开源正是为了拥抱协作共享的精神,使得软件的源代码可以被公开并被他人修改和改进。cnblog是一个著名的技术博客平台,而mir则是传奇游戏的一个开源版本。 开源对于游戏行业来说具有非常重要的意义,首先,开源可以帮助游戏的开发者们快速积累经验和技术能力。通过研究已经开源的游戏代码,开发者可以学习到其他人的优秀设计和解决方案,从而不断提升自己的开发水平。 其次,开源使得游戏更加自由和灵活。玩家可以根据自己的需求对游戏进行修改和定制,比如添加新的功能、调整游戏的平衡性等等。这样一来,玩家可以更好地享受游戏,并且也能促进游戏的不断进步和发展。 对于cnblog这样的技术博客平台而言,它提供了一个交流和分享的平台,使得开源项目能够更好地被推广和传播。很多开源项目的作者会将他们的项目在cnblog上分享,与其他开发者交流心得和经验。这不仅可以获得反馈和建议,也能够帮助更多的开发者了解和使用这些开源项目。 而mir作为一个开源的传奇游戏版本,让更多的开发者可以参与到传奇游戏的开发中来,共同努力打造一个更好的游戏体验。通过开源,传奇游戏也可以不断地进行优化和改进,满足不同玩家的需求,增加游戏的可玩性和乐趣。 总之,开源对于传奇游戏和cnblog都具有重要的意义。它能够推动游戏和技术的发展,促进交流和共享,为玩家和开发者们创造更好的体验和机会。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值