NODEJS day

NODEJS day,第1张

一、http模块

请求的对象 req

req.url 获取请求的资源,格式为'/login'             //在浏览器网址处输入

req.method 获取请求的方法 /login GET             //显示在cmd里

练习:使用http模块创建WEB服务器,设置端口,监听请求,根据请求作出响应

'/index' 响应 '这是首页'   (响应一个文件‘1.html’

'/study' 跳转  https://www.tmooc.cn

其它 响应 404 Not Found

const http=require('http')
const fs=require('fs')
const app=http.createServer()
app.listen(3000)
app.on('request',(req,res)=>{
    //判断请求的资源,作出响应
    if(req.url==='/index'){
        res.setHeader('Content-type','text/html;charset=utf-8')
        //res.write('这是首页')

        //响应1.html文件,先同步读取内容,把读取的内容作为要响应的内容
        //默认读取到的是Buffer

        var s=fs.readFileSync('./1.html')
        //直接把读取到的响应,会自动转为字符串
        res.write(s)
    }else if(req.url==='/study'){
        res.statusCode=302
        res.setHeader('Location','https://www.tmooc.cn')
    }else{
        res.statusCode=404
        res.write('404 Not Found')
    }res.end()
})

框架:是项目开发的一整套解决方案,简化了已有的功能,添加了新的功能;为了项目开发准备的

前端:Vue React Angular  小程序框架

Java:spring

Python:Django

PHP:thinkPHP,yii

asp:.net

Node.js:express  koa  egg...

二、express

基于Node.js平台,快速、开放、极简的WEB开发框架

属于是第三方的模块,需要先去下载安装

npm install express

网址:Express - 基于 Node.js 平台的 web 应用开发框架 - Express 中文文档 | Express 中文网

1.创建WEB服务器

express()  创建WEB服务器

listen()   设置端口

引入express模块
会自动到node_modules目录中寻找express目录,接着再往express目录中寻找index.js
const express=require('express')
//console.log(express)
创建WEB服务器const app=express()
设置端口(端口设置时,加不加回调函数都是异步执行)app.listen(3000,()=>{
    console.log('服务器启动成功')
})

2.路由

监听特定的一种请求;结构清晰,便于维护

路由包含三部分:请求的方法、请求的URL、回调函数         

res 响应对象

        res.send() 设置响应内容并发送

        res.redirect()  设置响应的重定向

        res.sendFile()  设置响应的文件,注意事项:必须使用绝对路径__dirname

添加路由,监听首页的请求
请求方法:get  请求的URL:/index
app.get('/index',(req,res)=>{
    //这两个和之前http模块不一样,比之前功能更多
    //req 请求对象
    //res 响应对象
    //设置响应的内容并发送

    res.send('这是首页')
})
练习:添加路由,监听商品列表请求
请求方法:get 请求的URL:/list
//响应‘这是商品列表’
app.get('/list',(req,res)=>{
    res.send('这是商品列表')
})
添加路由,跳转至其他网页
请求方法:get   请求的URL:/study
app.get('/study',(req,res)=>{
    //设置响应的重定向
    res.redirect('https://www.tmooc.cn')
})
练习:添加路由(请求方法:get   请求的URL:/)
跳转到路由/index
app.get('/',(req,res)=>{
    //requedt请求 response响应
    res.redirect('/index')
})

添加路由(get/detail),响应本地文件1.html

添加本地文件必须使用绝对路径,可以用__dirname获取

app.get('/detail',(req,res)=>{
    //响应文件
    //把绝对路径拼接到1.html文件前

    res.sendFile(__dirname+'/1.html')
})
//绝对路径:D:/XX/XXXX/1.html
//相对路径:./1.html

//获取绝对路径
console.log(__dirname)

req 请求对象

        req.url   获取请求的URL

        req.method  获取请求的方法

        req.query  获取get传递的参数

传递方式格式路由获取
get传递http://127.0.0.1:3000/mysearch?kw=dell

req.query

{kw: 'dell'}

params传递http://127.0.0.1:3000/mysearch/dell

req.params

需要设置参数名

{kw: 'dell'}

post传递

(见笔记day05)

网址中不可见

http://127.0.0.1:3000/mysearch

需要使用中间插件转为对象

req.body

{kw: 'dell'}

练习:编写文件04_express.js,使用express创建WEB服务器,设置端口;添加路由(get  /search),响应文件search.html.const express=require('express')
const app=express()
app.listen(3000,()=>{
    console.log('成功')
})
app.get('/search',(req,res)=>{
 res.sendFile(__dirname+'/search.html')
})

用户搜索

添加路由,监听按钮提交的请求(get,/mysearch)
//响应‘搜索成功’
app.get('/mysearch',(req,res)=>{
    //req  请求的对象
    //请求的方法,请求的URL
    //console.log(
req.method,req.url)
    //获取get传递的参数
    //传参console.log(req.query)  

    console.log(req.query.kw)
    res.send('搜索成功')
})
练习:添加路由(get  /login),响应登录的网页login.html,点击提交向服务器发请求(get  /mylogin),添加路由,监听按钮提交的请求,获取传递的参数,响应‘登录成功,欢迎:xxx’
app.get('/login',(req,res)=>{
    res.sendFile(__dirname+'/login.html')
})
app.get('/mylogin',(req,res)=>{
    res.send('登录成功,欢迎:'+req.query.user)
})

用户登录

练习:编写文件05_params.js,使用express创建WEB服务器,设置端口,添加路由(get  /mysearch),响应‘搜索成功 搜索的商品:xxx’
const express=require('express')
const app=express()
app.listen(3000,()=>{
    console.log('成功')
})
//:kw 以冒号开头的名字,表示参数名,会接收参数值
app.get('/mysearch/:kw',(req,res)=>{
    //获取params传递的参数
    console.log(req.params)
    res.send('搜索成功 搜索的商品:'+req.params.kw)
})

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1320546.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-11
下一篇 2022-06-11

发表评论

登录后才能评论

评论列表(0条)

保存