这是我参与「第四届青训营 」笔记创作活动的第4天
node.js与前端开发实践
01.应用场景
- 前端工程化
- web服务端应用
- Electron跨端桌面应用
前端工程化:打包工具webpack、vite等等 web服务端应用:学习曲线平缓,开发效率高、运行效率接近常见编译语言、有社区生态丰富的工具链、结合前端 Electron跨端桌面应用:应用普遍,商业应用,vscode等,公司内部的效率工具
实际应用场景:
- Web开发:Express + EJS + Mongoose/MySQL
- REST开发
- Web聊天室(IM)
- Web博客:Hexo
- 前端包管理平台: 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()