node.js的本质是一个JavaScript的解析器,是JavaScript的运行环境,是一个服务器程序。node.js是一个事件驱动I/O服务端javascript环境,基于Google的V8引擎,不是web服务器。
为什么要使用node.js:
(1)为了提供高性能的web服务;(2)IO性能强大;(3)事件处理机制完善;(4)天然能够处理DOM;(5)社区非常活跃,生态圈日趋完善。
node.js的优势:
(1)处理大流量数据;(2)适合实时交互的应用;(3)完美支持对象数据库;(4)异步处理大量并发连接。
yarn命令使用
node -v 查看node版本
node 进入REPL(交互式解释器)环境,两次ctrl+c 退出
npm install cnpm
npm -v 查看npm版本
npm install npm -g 升级npm,需要全局安装
npm search xxx 搜索npm包,xxx为包名
npm list -g 查看所有全局安装的模块
npm list grunt 查看grunt模块的版本号
npm help install 怎么使用install,按q退出(会有提示)
npm install 可以简写成 npm i
npm uninstall 可以简写成 npm un
--save-dev 可以简写成 -D
--save 可以简写成 -S
1、函数调用方式分为三类:同步调用、回调和异步调用。
2、回调是一种双向调用模式;可以通过回调函数来实现回调。
3、阻塞和非阻塞关注的是程序在等待调用结果(消息,返回值)时的状态。阻塞就是做不完不准回来;非阻塞是你先做,我先看看有其他事没有,完了告诉我一声。
非阻塞性IO
事件处理代码流程:
(1)引入events对象,创建eventEmitter对象;(2)绑定事件处理程序;(3)触发事件。
所有能触发事件的对象都是EventEmitter类的实例。
eventEmitter.on()方法用于注册监听器,eventEmitter.emit()方法用于触发事件。
为了让node.js的文件可以相互调用,node.js提供了一个简单的模块系统。模块是node.js应用程序的基本组成部分。文件和模块是一一对应的。一个node.js文件就是一个模块。这个文件可能是javascript代码、JSON或者编译过的C/C++扩展。node.js中存在4类模块(原生模块和3种文件模块)。
node.js的模块加载方式:
从文件模块缓存中加载 --> 从原生模块加载 --> 从文件加载
require方法加载模块
require方法接受以下几种参数的传递:
1、http、fs、path等原生模块
2、./mod或../mod,相对路径的文件模块
3、/pathtomodule/mod,绝对路径的文件模块
4、mod,非原生模块的文件模块