Node
Node使用事件驱动、非阻塞和异步I/O模型等技术来提高性能。
模块
在Node.js中为了模块管理,引入了CommonJS规范。
模块的引用
使用require()
函数引入一个模块
var 变量 = require('模块的标识');
模块的定义
- 在node中一个js文件就是一个模块。
- 默认情况下在js文件中编写的内容,都是运行在一个独立的函数中,外部的模块无法访问。
导出变量和函数:
- 使用
exports
exports.属性 = 属性值;
exports.方法 = 函数;
- 使用
module.exports
module.exports.属性 = 属性值;
module.exports.方法 = 函数;
module.exports = {};
模块的标识
模块的标识就是模块的名字或路径。
对于核心模块(npm中下载的模块),直接使用模块的名字对其进行引入。
// 核心模块
var fs = require("fs");
var express = require("express");
对于自定义的文件模块,需要通过文件的路径来对模块进行引入,路径可以是绝对路径,如果是相对路径必须以./或 …/开头。
// 自定义模块
var router = require("./router");
模块扩展
global 全局对象
在node中有一个全局对象 global,它的作用和网页中window类似:
在全局中创建的变量都会作为global的属性保存
在全局中创建的函数都会作为global的方法保存
模块内自动添加的函数
Node中每个模块运行时,会自动为其添加一个函数:
function (exports, require, module, __filename, __dirname) {
模块中的代码
}
exports
- 该对象用来将变量或函数暴露到外部
require
- 函数,用来引入外部的模块
module
- module代表的是当前模块本身
- exports就是module的属性
- 既可以使用 exports 导出,也可以使用module.exports导出
__filename
- 当前模块的完整路径
__dirname
- 当前模块所在文件夹的完整路径
包
![](./img/1.png
NPM(Node Package Manager)
常用命令
npm -v
查看npm的版本npm version
查看所有模块的版本npm search 包名
搜索包npm install / i 包名
安装包npm remove / r 包名
删除包npm install 包名 --save
安装包并添加到依赖中 *****npm install
下载当前项目所依赖的包npm install 包名 -g
全局安装包(全局安装的包一般都是一些工具)npm install 文件路径
从本地安装npm install 包名 -registry=地址
从镜像源安装npm install set registry 地址
设置镜像源npm init
初始化模块
配置cnpm
node搜索包的流程
node在使用模块名字来引入模块时,它会首先在当前目录的node_modules中寻找是否含有该模块
如果有则直接使用,如果没有则去上一级目录的node_modules中寻找
如果有则直接使用,如果没有则再去上一级目录寻找,直到找到为止
直到找到磁盘的根目录,如果依然没有,则报错