node.js与前端开发实践 | 青训营笔记

90 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的第4天

node.js与前端开发实践

01.应用场景

  • 前端工程化
  • web服务端应用
  • Electron跨端桌面应用

前端工程化:打包工具webpack、vite等等 web服务端应用:学习曲线平缓,开发效率高、运行效率接近常见编译语言、有社区生态丰富的工具链、结合前端 Electron跨端桌面应用:应用普遍,商业应用,vscode等,公司内部的效率工具

实际应用场景:

  1. Web开发:Express + EJS + Mongoose/MySQL
  2. REST开发
  3. Web聊天室(IM)
  4. Web博客:Hexo
  5. 前端包管理平台: bower.js

02.运行时结构

什么是nodejs?

  • 基于 Chrome 的名为 V8 的 JavaScript 引擎构建的 JavaScript 运行环境

优点:实现双向连接的web应用,简单的来说就是客户端与服务器都可以启动通信,自由的交换数据。与客户端发起通信的web响应模式形成对比

工作特点:构建快速可扩展的网络应用,前端工作者无需学习不同的语言就可以编写服务器代码,具有大量的库

  • 异步IO:执行IO操作时,(网络读取,访问数据库或文件系统),相应返回时恢复操作而不是阻塞线程并浪费CPU周期

  • 单线程:使用单个服务器处理成千上万个并发连接

  • 跨平台:在非浏览器平台上工作,跨端工作

和浏览器的区别:浏览器中往往与DOM或webAPI进行交互,nodejs通过模块提供友好的API,比如文件系统访问功能

03.使用nodejs发送http请求

执行get请求

const https =  require('https')

const options =  {

 hostname:  'nodejs.cn',

 port:  443,

 path:  '/todos',

 method:  'GET'

}

const req = https.request(options,  res  =>  {

  console.log(`状态码: ${res.statusCode}`)

 res.on('data',  d  =>  {

 process.stdout.write(d)

  })

})

req.on('error',  error  =>  {

  console.error(error)

})

req.end()

执行post请求

 const https =  require('https')

const data =  JSON.stringify({

 todo:  '做点事情'

})

const options =  {

 hostname:  'nodejs.cn',

 port:  443,

 path:  '/todos',

 method:  'POST',

 headers:  {

  'Content-Type':  'application/json',

  'Content-Length': data.length

  }

}

const req = https.request(options,  res  =>  {

  console.log(`状态码: ${res.statusCode}`)

 res.on('data',  d  =>  {

 process.stdout.write(d)

  })

})

req.on('error',  error  =>  {

  console.error(error)

})

req.write(data)

req.end()