这是我参与「第五届青训营 」伴学笔记创作活动的第 7 天
Node.js
初识
(1)Node.js是一个基于Chrome V8引擎的JavaScript运行环境。
(2)Node.js中的JavaScript运行环境
区分 :前端运行环境:浏览器;后端运行环境:Node.js
Node.js中无法调用DOM和BOM等浏览器内置API
(3)Node,js可以做什么
内置模块
//导入fs模块
const fs=require('fs')
//调用fs.readFile()方法读取文件
//参数一:读取文件的存放的路径
//参数二:读取文件时候采用的编码格式,一般默认utf8
//参数三,回调函数,拿到读取失败和成功的结果,err为失败结果,dataStr为成功结果
fs.readFile('C:\\codepractice\\Vue\\files\\12.txt','utf8',function(err,dataStr)
{
console.log(err)
console.log(dataStr)
});
http模块
(1)客户端:负责消费资源的电脑
服务器:负责对外提供网络资源的电脑
(2)
(3)IP地址 就是互联啊网上每台计算机的唯一地址
(4)域名和域名服务器
(5)端口号 每个web服务都对应一个唯一的端口号,客户端发送的网络请求,通过端口号,可以被准确地交给对应的web服务进行处理。
在实际运用当中,URL中的80端口可以被省略。比如,如果不是80端口,就要写成127.0.0.1:8080,如果是80的端口就可以写成127.0.0.1.
(5)创建最基本的web服务器
//第一步:导入http模块
const http=require('http')
//第二步:创建web服务器实例
const server = http.createServer()
//第三步:为服务器绑定request事件,监听客户端要求
server.on('request',function(req,res){
console.log('someone visit')
})
//第四步:启动服务器
server.listen(8080,function(){
console.log('serve running at http://127.0.0.1:8080')
})
Node.js运行时结构
单线程
js单线程
实际:js线程+uv线程池+v8任务线程池+v8 Inspextor线程
优点: 不用考虑多线程状态同步问题,也就不需要锁;同时还能比较高效地利用系统资源
缺点: 阻塞会产生更多负面影响;解决:多进程或多线程
跨平台
编写Http Server
Promisify
用promise+async await重写例子