NodeJS 基础 | 青训营笔记

73 阅读1分钟

这是我参与「第五届青训营」伴学笔记创作活动的第 9 天

一、本堂课重点内容:

  1. NodeJS 应用场景
  2. 使用 NodeJS 编写简单的 HTTP Server

二、详细知识点介绍:

1. NodeJS应用场景

NodeJS被广泛应用于前端工程化(Vue、React、AngularJS等)、Web 服务端应用(Vercel)和 跨端桌面应用(Electron等)场景

许多熟知的打包构建工具都有NodeJS参与,例如 webpack、vite、esbuild和parcel等,也有例如babel和ts等语言转换程序也由nodejs编写。

在前端工程化领域,NodeJS也有许多优势,首先是学习曲线平缓、开发效率较高、其次是运行效率较高,社区生态丰富。且由于其语言优势,和前端结合更加顺畅,例如某些服务端渲染场景。

在跨端应用方面,微软的VSCode、聊天工具Slack、Discord都由Electron开发,值得在项目选型时考虑。

三、实践练习例子:

简单的 Hello World

const http = require('http')

const port = 3000

const server = http.createServer((req, res) => {
    res.end('hello')
})

server.listen(port, () => {
    console.log(`listening port on ${port}`)
})

首先,需要使用 require('http') 引用 NodeJS 自带的 http 模块。接着,使用 createServer 方法为请求绑定处理事件函数,其中,第一个参数是请求,第二个参数是响应,使用 res.end('hello') 来结束请求并返回 hello 字符串。最后,使用 listen 函数设置监听的端口,第一个参数是端口号,第二个参数是绑定成功的回调函数。

简单的静态文件服务

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

const port = 3000

const server = http.createServer((req, res) => {
    const info = url.parse(req.url)
    const file = fs.createReadStream(path.resolve(__dirname, '.' + info.pathname))
    file.pipe(res)
})

server.listen(port, () => {
    console.log(`listening port on ${port}`)
})

上面这段代码将传入的 url 和工作路径拼合成本地绝对路径,通过 NodeJS 自带的文件操作模块 fscreateReadStream 创建了一个文件流,并通过流内部方法pipe将其输出给res(响应对象),实现将对应路径的文件返回给浏览器的功能

四、课后个人总结:

NodeJS在当前环境下优势得天独厚,值得学习。其有着和其他语言相似的逻辑,且由于使用javascript,对于前端来说学习成本更低。