初识NodeJS

121 阅读3分钟

什么是NodeJS?

JS是一个需要解析器才能运行的脚本语言。对于web端的JS,浏览器充当了解析器的角色。而对于独立运行的JS,NodeJS就是一个解析器。每一种解析器都是一个运行环境,所以Node.js 也是JavaScript的运行环境。

模块化

定义:将复杂的逻辑代码封装起来,只向外部暴露一些接口方法提供服务。

在NodeJS中内置了模块化系统,一般每一个文件就是一个模块,提供了requireexportsmodule三个预先定义好的变量编写模块化代码。每个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官网