什么是NodeJS?
JS是一个需要解析器才能运行的脚本语言。对于web端的JS,浏览器充当了解析器的角色。而对于独立运行的JS,NodeJS就是一个解析器。每一种解析器都是一个运行环境,所以Node.js 也是JavaScript的运行环境。
模块化
定义:将复杂的逻辑代码封装起来,只向外部暴露一些接口方法提供服务。
在NodeJS中内置了模块化系统,一般每一个文件就是一个模块,提供了require、exports、module三个预先定义好的变量编写模块化代码。每个js文件在运行时都会把代码包裹在一个匿名函数中,该函数有五个参数:exports, require, module, __filename, __dirname
require
require是一个函数,用于在当前模块中加载和使用别的模块,传入模块名,返回一个模块导出对象。模块名可使用相对路径(以./或../开头),或者是绝对路径,对于内置模块可以直接填写模块名。例如:
var request = require('http');
exports
exports对象是当前模块的导出对象,用于导出模块公有方法和属性。
exports.hello = function () {
console.log('Hello World!');
};
module
通过module对象可以访问到当前模块的一些相关信息,但最多的用途是替换当前模块的导出对象
module.exports = {
name: 'leo',
getName() {
return this.name;
}
}
exports与module.exports
- exports公开模块导出对象的属性和方法。
- module.exports指向导出的模块对象。
模块初始化:一个模块中的JS代码仅在模块第一次被使用时执行一次,并在执行过程中初始化模块的导出对象。之后,缓存起来的导出对象被重复利用。
包
模块的基本单位是一个JS文件,但复杂模块往往由多个子模块组成。为了便于管理和使用,我们可以把由多个子模块组成的大模块称做包。
对于一个包而已,通常需要对外提供一个入口模块,以调用子模块的服务。一般,将入口模块文件命名为index.js,加载模块时可以使用模块所在目录的路径代替模块文件路径(既省略index)。
package.json
如果想自定义入口模块的文件名和存放位置,就需要在包目录下包含一个package.json文件,并在其中指定入口模块的路径。
文件结构详情参考:nodejs.cn/learn/the-p…
npm
NPM是随同NodeJS一起安装的包管理工具。通常,我们用于管理项目依赖以及发布我们自己编写的包
- 安装依赖
通过执行命令npm install <package-name>安装项目依赖。对于npm安装的依赖,项目会在package.json与package-lock.json中记录。
-
安装指定版本依赖,可在安装命令后加上版本号 @
-
安装命令默认带有选项
--save,如果只是在项目开发阶段使用依赖 打包发布后并不需要该依赖,可以在命令后添加-dev -
通过-g可全局安装依赖
-
更新依赖
npm update``<package-name> -
卸载依赖
npm uninstall <package-name>
更多用法参考npm官网