Nodejs

内置 API

fs

readFile

读取文件的内容

const fs = require('fs')

fs.readFile(path [, option], callback(err, data))

// path 需要读取文件的路径
// option 可选项,读取内容的编码格式,如 utf-8
// callback 读取结束的回调函数,第一个参数是读取错误的参数,成功时为 null,第二个参数是读取成功的参数,失败时是 undefined

在使用时可以这样写

const fs = require('fs')

fs.readFile('./test.txt', 'utf-8', (err, data) => {
    if (err) {
        console.error('读取错误:', err.message)
        return
    }
    console.log('读取信息', data)
})
writeFile

创建文件并写入文件内容,若文件已存在,则刷新文件内容

const fs = require('fs')

fs.writeFile(path, data [, option], callback(err))

// path 文件创建的路径
// data 创建文件的内容
// option 可选项,写入文件内容的编码格式,如 utf-8
// callback 写入文件结束的回调函数,参数是写入错误的参数,成功时是 null

在使用时可以这样写

const fs = require('fs')

const data = 'hello world!'
fs.writeFile('./test.txt', data, 'utf-8', err => {
    if (err) {
        console.error('写入失败:', err.message)
        return
    }
    console.log('写入成功!')
})

path

join

拼接路径,类似于使用 + 拼接,但是更加灵活

const path = require('path')

path.join(__dirname, './test.txt')

// __dirname 当前文件的路径

所以当写入文件或读取文件时可以写作

const fs = require('fs')
const path = require('path')

const data = 'hello world!'
// 写入文件
fs.writeFile(path.join(__dirname, './test.txt'), data, 'utf-8', err => {
    if (err) {
        console.error('写入失败:', err.message)
        return
    }
    console.log('写入成功!')
})
// 读取文件
fs.readFile(path.join(__dirname, './test.txt'), 'utf-8', (err, data) => {
    if (err) {
        console.error('读取错误:', err.message)
        return
    }
    console.log('读取信息', data)
})

http

能快速搭建 http 服务器的功能

const http = require('http')

const server = http.createServer()

server.on('request', (req, res) => {
    const url = req.url
    const method = req.method
    // 解决中文乱码问题
    res.setHeader('Content-Type', 'text/html;charset=utf-8')
    const msg = `请求路径为${url},请求方式为${method}`
    res.end(msg)
})

server.listen(8080, () => {
    console.log('server is running at http://localhost:8080')
})

express

能快速搭建 http 服务器的功能,是对 nodejshttp 进行封装,功能更加强大

const express = require('express')

const app = express()

app.listen(8080, (req, res) => {
    console.log('server is running at http://localhost:8080')
})

以上是一个最基本的服务器的搭建,每次修改数据时都要停止服务器重新运行一次,比较麻烦,可以使用 nodemon 运行,修改配置保存之后会自动重新运行

# 全局安装 nodemon
npm i nodemon -g

# 在使用是只需要将 node 替换成 nodemon
nodemon ./test.js

路由

http 请求对应

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

router.get('/', (req, res) => {
    // 允许所有地址跨域
    res.setHeader('Access-Control-Allow-Origin', *)
    // 允许所有请求头跨域
    res.setHeader('Access-Control-Allow-Headers', *)
    // 允许所有请求方式跨域
    res.setHeader('Access-Control-Allow-Methods', *)
    res.send('GET请求成功!')
})

router.post('/', (req, res) => {
    res.send('POST请求成功!')
})

moudle.exports = {
    router
}

中间件

获取请求参数到响应之间的操作

和路由共享的 reqres

const mw = (req, res, next) => {
    // 操作
    // 要以 next() 结尾
    next()
}

const mw1 = (req, res, next) => {
    // 操作
    next()
}

const mw2 = (req, res, next) => {
    // 操作
    next()
}

moudle.exports = {
    mw,
    mw1,
    mw2
}

web 服务器

const express = require('express')
const app = express()
const router = require('./router.js')
const { mw, mw1, mw2 } = require('./mw.js')
const cors = require('cors')

// 解决跨域问题,必须配置在路由之前
app.use(cors())

// 全局使用中间件 mw
app.use(mw)

// 使用路由
app.use(router)

// 报错时,必须放在路由之后
app.use((err, req, res, next) => {
    console.log(err.message)
})

// 局部中间件
app.get('/index', [mw1, mw2], (req, res) => {
    res.send('局部使用中间件 mw1 和 mw2')
})

// 启动服务器
app.listen(8080, () => {
    console.log('server is running at http://localhost:8080')
})
Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐