banner
banner
banner
NEWS LETTER

Node总结

Scroll down
  • 服务器:本质上是一台PC主机(linux系统,window系统),部署了后端语言的执行环境,并且能够长时间提供网络服务

事件驱动:

  • node本身提供事件对象,帮助我们快速实现订阅者模式,或者观察者模式,或者事件模式
  • event.on(‘事件的名称’, () => {订阅的事件}) // 事件的订阅
  • event.emit(‘事件的名称’) // 事件的触发

读写事件:

  • fs.writefile(‘path’,读取配置,(err,data) => {})
  • fs.readFile(‘path’,写入数据,写入配置,() => {})

读写的promise封装:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
// 封装读取的操作
const fsRead = (url: string) => {
return new Promise((resolve, reject) => {
fs.readFile(url, {flag: 'r', encoding: "utf-8"}, (err, data) => {
if(!err) {
resolve(data)
} else {
reject(err)
}
})
})
}
// 封装写入的操作
const fsWrite = (url: string, data: any) => {
return new Promise((resolve, reject) => {
fs.writeFile(url, data, {flag: 'a', encoding: 'utf-8' }, (err) => {
if(!err) {
resolve()
} else {
reject(err)
}
})
})
}
// 封装创建目录的函数
const fsDir = (url) => {
return new Promise((resolve, reject) => {
fs.mkdir(url, (err) => {
if(!err) {
resolve()
}
})
})
}
module.exports = {fsDir,fsRead, fsWrite}

使用方式:

1
2
3
(async function() {
let data = await fsRead('path')
})()

网络请求数据:

  • request,axios:效率比较高,但局限性比较大
  • puppeteer: 效率低,局限性比较小
  • 重点掌握: 页面的分析,数据存放的位置,以及响应的内容

网络响应数据:

  • http.createServer: 就可以创建1个服务器去监听某个端口,并且通过请求事件来处理每个发送过来的请求
    1
    2
    3
    4
    server.on('request', (req,res) => {
    req: 请求数据都会放在请求对象里
    res: 能够做出响应对象
    })
  • 路由:根据不同的路径响应不同的内容
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    // 循环匹配正则路径
    res.render = render
    res.setHeader("Content-Type", "text/html;charset=UTF-8")
    for(let key in this.reqEvent) {
    let regStr = key
    let reg = new RegExp(regStr, 'igs')
    if(reg.test(req.url)) {
    this.reqEvent[key](req, res)
    resState = true
    break
    }
    }

模板:

  • 会有固定样式和结构的HTML模板,根据请求的数据不同,显示页面内容。例如新闻网站。
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    function render(options, path) {
    fs.readFile(path,{encoding: "utf-8", flag: "r"},(err,data) => {
    // 这里使用箭头函数,使this指向调用的res
    if(err){
    console.log(err)
    }else {
    // 匹配普通的变量,并且替换内容
    data = replaceArr(data,options)
    data = replaceVAr(data,options)
    this.end(data)
    }
    })
    }
其他文章
cover
NPM上传包
  • 24/10/31
  • 17:15
  • Node
cover
梳理框架流程
  • 24/10/31
  • 17:15
  • Node
目录导航 置顶
  1. 1. 事件驱动:
  2. 2. 读写事件:
  3. 3. 读写的promise封装:
  4. 4. 网络请求数据:
  5. 5. 网络响应数据:
  6. 6. 模板:
请输入关键词进行搜索