一、Node.js 是什么?
官网定义:是一个基于Chrome V8引擎的JavaScript运行环境
- 以前只有游览器可以解析执行 JavaScript 代码
-
Node.js出现使JavaScript也能用于服务端编程,Node.js 是一个让JavaScript 运行在服务端的开发平台(简单点说 Node.js 可以在服务端解析执行 JavaScript 代码)
image.png
1.1、游览器中的 JavaScript 和 Node.js 中的 JavaScript 的区别
1.1.1、游览器中的 JavaScript
- EcmaScript
- 基本语法
- if
- var
- function
- Object
- Array
- BOM
- DOM
1.1.2、Node.js 中的 JavaScript
- 没有 BOM、DOM
- EcmaScript
- 在 Node 这个JavaScript 执行环境中为 JavaScript 提供了一些服务器级别的操作 API
- 例如文件的读写
- 网络服务的构建
- 网络通信
- http服务器
- 等处理。。。
1.1.3 Node.js 构建于 Chrome V8引擎之上
- 代码只是具有特定格式的字符串而已
- 引擎可以解析和执行代码
- Google chrome 的 V8 引擎是目前公认的解析执行 JavaScript 代码最快的
- Node.js 作者把 Google chrome 中的 V8 引擎移植了出来,开发出来一个独立的 JavaScript 运行时环境
1.2、Node.js 特点
- event-driven 事件驱动
- non-blocking I/O model 非阻塞 IO 模型(异步)
- lighweight and efficient 轻量和高效
1.3、Node.js 优缺点
优点
1)异步非阻塞的l/o (I/o线程池)
2)特别适用于l/o密集型应用(对比传统java服务器)
3)事件循环机制(独有的一套,与浏览器不一样)
4)单线程(成也单线程,败也单线程)
5)跨平台(几乎常见的语言都支持)
缺点
1)回调函数嵌套太多、太深(俗称回调地狱)
2)单线程,处理不好CPU密集型任别
1.3 Node.js 基于Node.js开发的包管理工具
- npm 是世界上最大的开源库生态系统
- 绝大多数 JavaScript 相关的包都存放在 npm 上,目的是方便开发人员下载使用 (npm i axios)
二、Node.js 能做什么?
- web 服务器后台
- 命令行工具
- npm(node)
- git(c语言)
- hexo(node)。。。
- 对于前端开发工程师来说,接触 node 最多的是它的命令行工具
- 一般自己写的比较少,主要是使用别人第三方开发的例如
- webpack 、 glup 、npm
三、学了 Node.js 能学到什么?
- B/S 编程模型
- Browser(游览器端)- Server(服务器端)
- back-end
- 任何服务端技术这种 B/S 模型都是一样的,和语言无关
- Node 只是我们学习 B/S 编程模型的一个工具而已
- 模块化编程
- CommonJS 、RequireJS、SeaJS
- 以前的认知中的 JavaScript 只能通过 script 标签来引入模块
- 在 Node 中使用 require 来引入模块
- Node 常用 API
- 异步编程
- 回调函数
- Promise
- async
- generator
- Express Web 开发框架
网友评论