process.argv
创建一个文件
touch index.js
删除文件
rm -rf index.js
rm -rf www
npm的淘宝镜像
用npm去下载cnpm包,指定源为https://registry.npmmirror.com
npm install -g cnpm --registry=https://registry.npmmirror.com
下一次使用cnpm i axios
去装包时,他会默认指定registry
为https://registry.npmmirror.com
进程
process.stdin.on("data",e=>{
const res = e.toString().trim()
console.log(res+":"+res);
if(res == 3) {
process.exit()
}
})
node 运行示意图
nodejs的非阻塞I/O
I/O
就是Input/Output
,一个系统的输入和输出- 阻塞
I/O
和非阻塞I/O
的区别就在于系统接受输入再到输出期间,能不能接受其他输入。
事件循环
async await
- async 是promise语法糖封装
- 异步编程的终极解决方案,以同步方式写异步
- await关键字可以暂停 async function 的执行
- await关键字可以以同步的写法获取Promise执行结果
- try-catch 可以获取await所获得的错误
什么是http服务?
- http要做什么事情?
- 解析进来的http请求报文
- 返回对应的http返回报文
node启动一个http服务器
打开浏览器 访问localhost:3000
于是打印出request.url
会有两个结果,一个是/
一个是/favicon.ico
http 返回一个html页面
内置模块url.parse
内置模块querystring
内置模块url.URL
express
koa
- 核心功能比express更加极致,request/response简化
- ctx.status = 200
- ctx.body = “hello”
- express vs koa
- express门槛更低,koa更强大优雅
- express封装更多东西,开发更快速,koa可定制性更高
rpc调用
- remote procedure call (远程过程调用)
- 和ajax有什么相同点
- 都是两个计算机之间的网络通信
- 需要双发约定一个数据格式
- 和ajax有什么不同点
- 不一定使用dns作为寻址服务
- 应用层协议一般不使用http
- 基于tcp或udp协议
- 寻址、负载均衡
-
ajax:使用dns进行寻址
-
rpc:使用特有服务进行寻址
-
- tcp通信方式
- 单工通信,只能由一方 发数据 给 另一方
- 半双工通信,可以从左到右,可以从右到左,但是不可以同时进行
- 全双工通信 ,可以从左到右,可以从右到左,可以同时进行
- 二进制协议
- http协议通信用html,或者json,人类好理解,但是计算机不好理解
- rpc用二进制协议,更小的数据包体积,更快的编解码速度