【Node.js】 nodejs搭建静态资源服务器;Express框架;express基本使用;express响应客户端数据;express托管静态资源;expres

目录

nodejs搭建静态资源服务器

Express框架

01-express基本使用

02-express响应客户端数据

03-express托管静态资源

04-express中间件使用

图书管理后台

项目介绍


nodejs搭建静态资源服务器

步骤

1.导入模块.必选http,fs,可选path

2.创建服务器.利用http模块的createServer方法创建服务器

3.启动服务器.利用http模块的listen方法启动服务器

注意:

1.html中所有的外部链接(href、src),都会变成网络请求,比如外链css,js,图片音视频等

2.可以使用字符串的startsWith方法判断是否在同一目录下,在同一目录下的文件数据可以统一使用模板字符串,作为fs.readfile的地址,避免写多个分支if else

 fs.readFile(`${__dirname}/www${req.url}`, (err, data) => {

            if (err) {

                throw err

            } else {

                res.end(data)

            }

        })


/*
1.html中所有的外部链接(href、src),都会变成网络请求
*/

// 1导入模块
const http = require('http')
const fs = require('fs')
// 2创建服务器
const app = http.createServer((req, res) => {
    // (1)req请求报文
    console.log(req.url);
    // (2)处理数据
    if (req.url === '/') {
        // (3)res响应报文
        fs.readFile(`${__dirname}/www/index.html`, (err, data) => {
            if (err) {
                throw err
            } else {
                res.end(data)
            }
        })
    }
    else if (req.url.startsWith('/resource')) {
        fs.readFile(`${__dirname}/www${req.url}`, (err, data) => {
            if (err) {
                throw err
            } else {
                res.end(data)
            }
        })
    }
    else {
        res.end('404 NOT FOUND')
    }
})
// 3启动服务器
app.listen(3002, () => {
    console.log('服务器开启成功')
})

Express框架

Express是NodeJS开发中一个非常重量级的第三方框架,它对于NodeJS服务端就相当于Jquery对于HTML客户端。

官网链接   中文官网

Express :基于 Node.js 平台,快速、开放、极简的 web 开发框架。

  • Express一个非常重要的亮点就是它没有改变nodejs已有的特性,而是在它的基础上进行了拓展

    • 也就是说,使用Express你既可以使用nodejs原生的任何API,也能使用Express的API

Express三大核心功能

1.托管静态资源

nodejs实现静态服务器功能在express中只需要一行代码

2.路由

express自带路由功能,让Node服务端开发变得极其简单

express支持链式语法,可以让代码看起来更加简洁

==3.中间件==

Express最为核心的技术和思想,万物皆中间件

中间件虽然理解起来有点困难,但是使用起来非常方便,类似于bootstrap插件.

01-express基本使用

1.给npm下载加速包  淘宝镜像
npm config set registry https://registry.npm.taobao.org/
2.下载express
npm i express

// 1.导入express模块

const express = require('express')

// 2.创建服务器
const app = express()

//3.路由(接口文档):一个请求路径对应一个处理函数
app.get(("/"), (req, res) => {
    console.log(1);
})
app.get(("/login"), (req, res) => {
    console.log('2')
    
})
// 3.开启服务器
app.listen(3000, () => {
    console.log('服务器启动成功')
})

02-express响应客户端数据

注意:

1.

非文件数据:res.send(数据)

文件数据:res.sendFile(文件绝对路径)



//1.导入模块
const express = require('express')
//2.创建服务器
let app = express()
// 3.写路由

/*
非文件数据:res.send(数据)
文件数据:res.sendFile(文件绝对路径)
*/
app.get('/', (req, res) => {
    // 响应中文:express自动
    res.send('我是首页')
    // node.js原生,中文报乱码
    // res.end('我是首页')
})
app.get('/list', (req, res) => {
    let obj = {
        data: [10, 20, 30],
        code: 200,
        message: '请求列表成功'
    }

    //响应json数据
    res.send(obj)

    // 原生nodejs:只能识别字符串+二进制。如果是对象需要先转json
    // res.end(JSON.stringify(obj))


})
app.get('/login', (req, res) => {
    // 响应网页  自动帮我们读取文件并且响应
    res.sendFile(`${__dirname}/login.html`)
})


//3.开启服务器
app.listen(3000, () => {
    console.log('success')
})

03-express托管静态资源

注意:

托管静态资源(相当于我们之前写的静态资源服务器)

1.当请求路径为/时,express会自动读取www文件夹中的index.html文件响应返回

2.当路径请求为www文件夹中的静态资源,express会自动拼接文件路径并响应返回

app.use(express.static('www'))//www是文件夹名

//1.导入模块
const express = require('express')
//2.创建服务器
let app = express()

//托管静态资源(相当于我们之前写的静态资源服务器)
/*
1.当请求路径为/时,express会自动读取www文件夹中的index.html文件响应返回
2.当路径请求为www文件夹中的静态资源,express会自动拼接文件路径并响应返回
*/

app.use(express.static('www'))
//3.开启服务器
app.listen(3000, () => {
    console.log('success')
})

04-express中间件使用

get参数:req.query

post参数:req.body

*借助第三方中间件:body-parser

*(1)下载:npm i body-parser

*(2)导入:const bodyParser =require('body-parser')

*(3)使用: app.use(bodyParser.urlencoded({extended:false}))

*(3)使用:app.use(bodyParser.json())

/*
get参数:req.query
post参数:req.body
*借助第三方中间件:body-parser
*(1)下载:npm i body-parser
*(2)导入:const bodyParser =require('body-parser')
*(3)使用: app.use(bodyParser.urlencoded({extended:false}))
*(3)使用:app.use(bodyParser.json())
*/


//1.导入模块
const express = require('express')
//2.创建服务器
let app = express()

//(1) 使用中间件
const bodyParser = require('body-parser')
app.use(bodyParser.urlencoded({ extended: false }))// 表单请求头
// (2)解析json参数
app.use(bodyParser.json())//json请求头
// 写路由
app.get('/list', (req, res) => {
    //(1)req:请求报文
    console.log(req.url)
    //获取get参数:自动对url进行切割处理,然后将参数放入 query对象中
    console.log(req.query)
    //(2)处理
    //(3)res:响应报文
    res.send(req.query)
})

app.post('/add', (req, res) => {
    console.log(req.body)
    // 告诉客户我收到的参数
    res.send(req.body)
})

//3.开启服务器
app.listen(3000, () => {
    console.log('success')
})

图书管理后台

项目介绍

 1.了解Express搭建服务端项目的流程
  - a.导入express
  - b.创建服务器
  - c.配置中间件
  - d.路由
  - e.开启服务器
2.了解服务端路由处理流程(路由:其实就是前端的接口文档)
  - 请求 : 获取客户端发送过来的参数
  - 处理: 增删改查数据库
  - 响应 :将数据库的操作结果返回给客户端

//1.导入模块
const express = require('express')
//2.创建服务器
let app = express()
// 3.托管静态资源
app.use(express.static('www'))
// 4.配置中间件
// (1)导入模块
const bodyParser = require('body-parser')
// (2)使用中间件
app.use(bodyParser.urlencoded({ extended: false }))// 表单请求头
app.use(bodyParser.json())//json请求头
// 数据库中间件                                                      
const book = require(`./data/book.js`)
// 5写路由
// 5.1查询图书列表
app.get('/api/getbooks', (req, res) => {

    book.getbooks((err, data) => {
        if (err) {//服务器数据库错误
            res.send({
                code: 500,
                msg: '服务器内部错误'
            })
        } else {//成功
            res.send({
                code: 201,
                msg: "请求成功",
                data: data.books
            })
        }
    })
})
// 5.2新增图书
app.post('/api/addbook', (req, res) => {

    book.addbook(req.body, (err) => {
        if (err) {//服务器数据库错误
            res.send({
                code: 500,
                msg: '服务器内部错误'
            })
        } else {//成功
            res.send({
                code: 201,
                msg: "新增图书成功",
            })
        }
    })
})
// 5.3删除图书
app.get('/api/delbook', (req, res) => {

    book.delete(req.query.id
        , (err) => {
            if (err) {//服务器数据库错误
                res.send({
                    code: 500,
                    msg: '服务器内部错误'
                })
            } else {//成功
                res.send({
                    code: 201,
                    msg: "删除图书成功",
                })
            }
        })
})
//3.开启服务器
app.listen(3000, () => {
    console.log('success')
})

你可能感兴趣的:(JavaScript,#,Node.js,node.js,javascript,前端)