Node.js
1.Node.js是什么
Node.js诞生于2009年,由joyent的员工Ryan Dahl开发而成,目前官网最新版本已经更新到12.0.0版本,最新稳定的是10.15.3。Node.js不是一门语言也不是框架,它只是基于Google V8引擎的JavaScript运行时环境,同时结合Libuv扩展了JavaScript功能,使之支持io、fs等只有语言才有的特性,使得JavaScript能够同时具有DOM操作(浏览器)和I/O、文件读写、操作数据库(服务器端)等能力、是目前最简单的全栈式语言。
Node.js的包管理工具、npm已经成为世界开源包管理中最大的生态、功能强大、目前单月使用者接近1000万
Node不同官网 :https://nodejs.org/en/ 英文全面网
Node中文网: http://nodejs.cn/ 中文网
2.Node.js特点(记住三句话)
- 事件驱动
- 非阻塞IO模型(异步)
- 轻量和高效
回顾模块化
1.CommonJS------双端(1.浏览器;2.服务器) ------ 暴露: module.exports = ??? exports.xxxx = ??? 浏览器不认识require------Browserify2
2.AMD ---- RequireJS ----- define (['asdas','asda'],function(){return ???}
)
3.CMD --- sea.js ---- define(function(require,module,exports){})
4.ES6 ----- 前端人员主要使用的 ------ babel -----Browserify
Node.js之父:Ryan Dahl (瑞安 · 达尔)
Node.js是一个基于 chrome V8 引擎的 JavaScript 运行环境
Node.js有什么特点
1.异步非阻塞的I/O (I/O线程池)
2.特别适用于I/O密集型应用 (对比传统java 服务器)
3.事件循环机制 (独有的一套,与浏览器不一样)
4.单线程(成也单线程,败也单线程)
5.跨平台 (几乎常见的语言都支持)
简单Web交互模型
不足之处
1.回调函数嵌套太多、太深(俗称回调地狱)
2.单线程,处理不好CPU密集型任务
I:input : 键盘、扫描仪、摄像头
O:output : 显示器、打印机
设备
I/O操作: input : 写 output: 读 (文件)
瓶颈:硬盘
演化:
I/O操作: (文件读写、数据的读写)
1.input:写 output: 读 (文件)
2.数据库的操作: 读、写
I/O密集型: 频繁操作I/O
单线程运行 "东西" :如果想实现 "异步" ,就必须有自己的 “事件循环模型”
跨平台: 1.js(跨平台) -----> js引擎 -----> 设计? 谷歌等
2.java(跨平台) ------> JVM虚拟机 ------
3.Node.js ----->
package包
Node.js的包基本遵循CommonJS规范,包将一组相关的模块组合在一起,形成一组完整的工具,包由包结构和包描述文件两个部分组成。
1、包结构:用于组织包中的各种文件
2、包描述文件:描述包的相关信息,以供外部读取分析
包结构
包实际上就是一个压缩文件,解压以后还原为目录,符合CommonJS规范的目录,应该包含如下文件和文件夹:
1、package.json 描述文件----描述文件(包的"说明书"、必须要有)
2、bin 可执行二进制文件----可执行二进制文件
3、lib js代码-------经过编译后的js代码
4、doc 文档------(说明文档、修复文档、版本变更记录文档)
5、test 单元测试------一些测试报告