node介绍

time 0m
image.png
nodejs不是一种语言,以前js在浏览器环境中跑,nodejs使得浏览器可以在浏览器环境之外跑,虽然用的是浏览器的v8引擎,但js可以在浏览器环境之外跑,在nodejs环境跑,与浏览器有区别。类似于net core、net framework、jre等,运行环境

time 2m22s
nodejs提供js在服务端进行开发的一种能力,nodejs为了能够让js在服务端运行起来,并且能完成响应后端服务的这一套api,比如处理网络请求,处理文件读写的

time 3m
nodejs不是一门语言,它是基于js这门语言,通过chrome v8引擎提供的js的运行环境,来在后端给我们提供的一套的api,通过这些api来完成我们在服务端通常我们要去进行完成的一些程序任务

time 6m13s
事件驱动,通过回调通知我们

time 8m49s
事件驱动,test完成const res = a + b;这个任务了,通过回调函数cb告诉我们,或者说是告诉回调函数cb,cb中可以日res+3
什么叫事件驱动?说白了就是别人做一件事情,做完了,然后通过一种方式告诉你,然后你紧接着做下一件事情
这里面是同步运行,都是同步代码,nodejs有的回调函数是异步执行的

  1. function test(a, b, cb) {
  2. const res = a + b;
  3. cb && cb(res);
  4. }
  5. test(1, 2, function (res) {
  6. console.log(res);//3
  7. // console.log(res+3);//6
  8. })

readFile 是异步的Async,readFileSync是同步的api

time 12m18s
i/o,输入输出是对应的

生态

time 15m37s
新框架学不学,看生态,一般生态看两年,一年半就有迹象,如果一年半生态没有起来,它就很难活下来,如果想商业化,得需要强大的生态为其服务
vue不是尤雨溪一个人的了,它是大量的生态,所有人的所共有的一个一个财产,只是vue的创始人是尤雨溪

多线程

time 18m24s
nodejs也是单线程的,但可以在nodejs开子进程,可以在子进程开多线程

高并发

time 19m23s
许多人同一时间请求服务器,比如秒杀、抢红包等,这时就需要高并发能力,高并发同一时间之内,同时向服务器发送请求的能力,服务器接收这些请求的能力
常见的服务器语言比如java,是用多线程处理的,真正意义上完全同步是不可能的,只是响应速度很快,线程池比如有100个线程,有空闲有任务就交给空闲的线程,
image.png

nodejs

time 26m25s
主线程处理是单线程的,fs i/o操作不是单线程的
请求1、2、3都进来,主线程处理请求1,阻塞,交给fs操作了,主线程继续处理请求2,交给http操作,fs操作完成交给主线程,主线程发给客户端阻塞

java多线程,开多线程势必耗费性能,需要服务器硬件配置高,nodejs单线程,耗费性能低,服务器配置低也可以运行
但nodejs有很多缺点
image.png