Node.js之模块的初步了解与使用

本篇内容将涉及到一下内容:
①模块机制commonjs
②包与Npm

一、模块加载机制(commonjs)

在ES5中没有原生模块化,都是通过JavaScript标签进行引入js,在node.js模块中引入了commonjs规范。
1、引入
例如:

const fs = require('fs')

上面代码表示引入fs文件模块,requre()是commonjs中的一个方法,这个方法接受模块标识。

2、导出
在需要使用的模块中必须先进行导出方可使用引入该模块
例如:

//直接导出对象
module.exports.obje={
	name:'李四',
	age:18
}
//直接导出属性
module.exports.name='张三'
//导出函数
module.exports.fn = function(){
	let a = 1;
return a;
}

3、模块的标识
模块标识其实就是传递给require()方法的参数,它必须是符合小驼峰命名的字符串,或者以./或者…/开头的相对路径,或者绝对路径,可以没有后缀js。
例如:

const obj = require("./obj");

4、模块引入过程
主要经历三个步骤:①路径分析②文件定位③编译执行
Node.js之模块的初步了解与使用_第1张图片在Node中模块分两种,一种是Node自身提供的模块为核心模块,二种是自己编写的模块为文件模块
核心模块
核心模块部分在Node源代码的编译过程中,编译进了二进制执行文件。在Node进程启动时,部分核心模块就被直接加载进内存中,所以这部分核心模块引入时,文件定位和编译执行这两个步骤可以省略掉,并且在路径分析中优先判断,所以它的加载速度是最快的。
文件模块
文件模块则是在运行时动态加载,需要完整的路径分析、文件定位、编译执行过程,速度比核心模块慢。

二、包与Npm

1、何为包?
CommonJS的包规范允许我们将一组相关的模块组合到一起,形成一组完整的工具。CommonJS的包规范由包结构和包描述文件两个部分组成。
①包结构
用于组织包中的各种文件
②包描述文件
描述包的相关信息,以供外部读取分析
但是,完全符合CommonJS规范的包目录。
包目录如下:

package.json:包描述文件。
bin:用于存放可执行二进制文件的目录。
lib:用于存放JavaScript代码的目录。
doc:用于存放文档的目录。
test:用于存放单元测试用例的代码。

2、包描述文件
包描述文件用于表达非代码相关的信息,它是一个JSON格式的文件——package.json,位于包的根目录下,是包的重要组成部分。而NPM的所有行为都与包描述文件的字段息息相关。
在cmd中,使用 npm init命令 可以初始化一个package.json文件,生成一个新的package.json文件。
package.json文件结构如下

{
//  项目的名称
  "name": "package",
//  项目的版本号
  "version": "1.0.0",
//  项目的描述
  "description": "good demo",
//  项目入口文件
  "main": "app.js",
//  项目依赖的模块
  "dependencies": {
//    模块名称和版本号,“^2.0.0”表示固定2这个版本号,就是别人在安装你的依赖的时候如果模块版本发生变化,比如变为“2.1.1”就会更新版本,如果变成“3.0.0”则不更新,你也可以固定所有的(^2.^0.^0)
    "time-stamp": "^2.0.0"
  },
//  项目关键词
  "keywords": [
    "good"
  ],
//  作者
  "author": "",
//  模块协议,默认就可以
  "license": "ISC"
//  描述和关键词要写全,这是方便别人搜索的时候可以据此搜到并引用你的模块,上述所有的内容填写都要是英文
}

3、Npm
模块就是一些功能的封装,所以一些成熟的、经常使用的功能,都有人封装成为了模块。并且放到了社区中,供人免费下载。
地址:https://www.npmjs.com/
作用:
允许用户从NPM服务器下载别人编写的第三方包到本地使用。
允许用户从NPM服务器下载并安装别人编写的命令行程序到本地使用。
允许用户将自己编写的包或命令行程序上传到NPM服务器供别人使用。

由于新版Node.js包含了npm,所以只需要检测下是否已安装Npm,输入命令npm -v 即可查看版本号 如下图:
Node.js之模块的初步了解与使用_第2张图片4、Npm使用

如果我们需要使用一个模块,直接去社区搜索,点进去,看API即可。
如果要配置一个模块,那么直接在cmd中使用:npm install 包名
就可以安装。 模块名字全球唯一。
安装后的包将存在node_modules文件夹目录中,如下图:
Node.js之模块的初步了解与使用_第3张图片
安装完即可使用包里面的方法
常用Npm命令:

npm -v 查看npm的版本
npm version 查看所有模块的版本
npm init 初始化项目(创建package.json)
npm i/install 包名 安装指定的包 @版本号,不加版本默认为最新
npm i/install 包名 --save 安装指定的包并添加依赖
npm i/install 包名 -g 全局安装(一般都是一些工具)
npm i/install 安装当前项目所依赖的包
npm s/search 包名 搜索包
npm r/remove 包名 删除一个包

国内直接使用 npm 的官方镜像是非常慢的,这里推荐使用淘宝NPM镜像。
淘宝 NPM 镜像是一个完整 npmjs.org 镜像,你可以用此代替官方版本(只读),同步频率目前为 10分钟 一次以保证尽量与官方服务同步。所以我们可以使用淘宝定制的 cnpm (gzip 压缩支持) 命令行工具代替默认的 npm:
第1种方式:

npm install -g cnpm --registry=https://registry.npm.taobao.org

这样就可以使用 cnpm 命令来安装模块了:cnpm install 包名

第2种方式:

npm config set registry https://registry.npm.taobao.org

这种方式会在系统用户的目录下,创建一个.npmrc文件,并写入以下配置registry=https://registry.npm.taobao.org
如图:
Node.js之模块的初步了解与使用_第4张图片在这里插入图片描述

以上是我对Node.js之模块的初步理解,后续中将讲解Node中常用模块,欢迎大家互相交流!

你可能感兴趣的:(Node.js)