目录
不同语言运行在不同的系统/环境/软件中:
c/c++ ==>运行在 windows linux
swift object-c ==>运行在 iOS
java ==>运行在 安卓
html/css/js ==>运行在 浏览器
javascript ==>运行在 node.js
Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine.
Node.js是基于Chrome的V8 JavaScript引擎构建的JavaScript运行时环境,使用单线程的基于事件驱动的非阻塞I/O模型,它拥有全世界最大的开源库生态系统npm.
那么JS在哪里运行?
浏览器: ECAMS==>ES5 ES6 ES7... array object function date DOM BOM 操作页面
node: 不能操作页面 没有DOM和BOM ECMA 服务器相关操作的API 文件操作 数据库的连接 http服务:提供接口
==> node.js是一个软件,它是js的代码运行环境,可以运行js代码然后实现服务器的功能
1、模块化
node.js的开发是模块化开发的思想 具有一些相同功能的代码 集成为一个模块 模块主要是由:node系统自带的模块 第三方模块和自定义模块组成 第三方模块几乎都是由npm来管理 ==>npm是一个集成了当前世界上最多开源库的生态系统
(把功能按照模块来封装,方便扩展,维护管理,更有利于开发大型项目)
npm社区nodejs的模块化社区,是全世界最大的模块市场,后被微软收购
2、事件驱动
回调函数是事件驱动的具体实现
把任务添加到事件池(event-loop),让异步任务去子线程中执行 然后注册一个事件 任务执行完毕以后 就回到主线程执行回调函数
3、非阻塞I/O操作模型
底层c/c++是多线程 为上层js提供异步编程接口,实现CPU多核处理的优势
I/O 是耗时操作
非阻塞:让计算机的多核发挥功能 同时执行任务
4、单线程
node的上层js业务代码是单线程语言
1、node.js是单线程还是多线程,为何是单/多线程?
答:
1) 单线程
2) 原因:因为node.js的主线程 是程序员写的这个线程 这个线程的代码是v8在运行 js代码,它提供的异步函数是底层c/c++在开启线程执行任务
2、为何是单线程,还能是非阻塞?
答:
1) 因为node.js的主线程 是程序员写的这个线程 这个线程的代码是v8在运行 js代码,它提供的异步函数是底层c/c++在开启线程执行任务。
2) 我们写的代码是js代码,是单线程。但是有一些异步函数是nodejs底层在开线程运行。
node是一个开源的免费的环境,性能好速度快 资源占用小,它不安全
在某个文件夹下路径上输入cmd,就会在当前的路径下运行cmd.exe
node xxx.js文件 //用node环境去运行js文件
cls //清除控制台屏幕上的打印信息
ctrl+c //停止程序运行
上下键//输入过的指令历史