第2章
了解npm
本章将会讲述如何创建和组织一个Node项目。如果读者只是想简单地编写代码来解决某个小任务,如LeetCode上的算法题目,可以手动创建代码文件并在命令行中运行。但如果想要开始一个稍微有些规模的项目,那么更好的选择是使用npm来初始化和构建。
npm(Node Package Manager)是随着Node一起发布的包管理工具,它最常用的功能是将别人编写好的代码模块下载到本地,然后用在自己的项目中。在Node从小众到流行,再到成为很多软件开发基础设施的过程中,npm起到了重要的推动作用。
npm会随着Node一同安装,在控制台中输入npm -v,就会打印出当前的npm版本。
$ npm -v 6.9.0
在软件开发模块化程度越来越高的当下,很多基础功能不需要开发者自己动手实现,而是使用别人开发好的模块。多数语言或者框架都提供了类似的模块管理功能,如微软为C++/C#提供的Nuget,Java平台的Maven、Gradle等。
每个模块管理工具都从一个中心模块仓库下载对应的模块,如Maven对应的中心仓库repo.maven.apache.org,Python的中心仓库pypi.org等。Node的核心模块仓库是npmjs.com,开发者可以自由地将自己编写的模块上传至中心仓库,这样世界各地的开发者就可以将模块下载到本地并使用。
下面用一个例子来说明,有些时候想要在代码中使用二叉树,由于编程语言通常不会内置这一数据结构,常见的做法是从数组中生成一个二叉树,以数组[1,2,3,4]为例,生成的二叉树如图2-1所示。
图2-1 二叉树示意图
npm上有个简单的用于生成二叉树的模块node-tree-creator,首先把它下载到本地。
// 在命令行中运行 $ npm install node-tree-creator // 安装成功之后,就可以直接在代码中使用它生成二叉树的方法 var tree_creator = require('node-tree-creator'); var arr =[1,2,3,4]; var root = tree_creator.generateBST(arr);// 返回根节点
模块本质上就是经过封装的代码文件,可能是一套完整的Web框架,也可能是一个简单的函数。即使是最简单的hello world也可以封装成一个模块供他人使用,模块相关的语法会在第4章介绍。