1、node版本的选择:分为激进版和长期支持版,激进版是node版本用于更新测试,我们只能用来尝试玩一些新东西的时候使用,长期支持版用于实际开发。目前我们常用的开发版本是6.9.1
2、node中的一些常见重要概念:
①什么是i/o? io input、output 输入输出,电脑的输入输出,例如音频录音表示声音输入、听音乐是声音的输出
网络上的传输全部是在传字符串,i/o在服务器上可以理解为读写操作。
②什么是并发? 一个时间段中有几个程序都处于已启动运行到运行完毕之间。
③什么是进程?进程是为运行当中的应用程序提供运行环境的一个运行当中的应用程序就会有一个进程与之相对应。
④什么是线程?线程是用来运行应用程序中代码的,一个线程在一个时间只能做一件事件。多线程,调度起来很麻烦。node是单线程执行,用异步替代了多线程
⑤同步、异步有什么不同?异步不会阻塞后面的代码,同步会阻塞后面的代码一条线程先执行同步的代码后执行异步的代码。
⑥异步非i/o操作和异步i/o操作?异步非io setTimeout setInterval 异步IO操作 操作文件 网络操作 fs。
⑦node的事件驱动模型?
主线程:
1.执行node的代码,把代码放入队列
2.事件循环程序(主线程)把队列里面的同步代码都先执行了,
3.同步代码执行完成,执行异步代码
4.异步代码分2种状况,
⑴异步非io setTimeout() setInterval()
判断是否可执行,如果可以执行就执行,不可以跳过。
⑵异步io 文件操作
会从线程池当中去取一条线程,帮助主线程去执行。
5主线程会一直轮训,队列中没有代码了,主线程就会退出。
子线程:被放在线程池里面的线程,用来执行异步io操作
①在线程池里休息
②异步io的操作来了,执行异步io操作。
③子线程会把异步io操作的callback函数,扔回给队列
④子线程会回到线程池了去休息。
callback
在异步io代码执行完成的时候被扔回主线程。
⑧异步和多线程的比较?node的异步是帮助我们去做了多线程的操作,简化了代码,多线程不安全,并且难以控制。