node模块化简介
模块化就是把一个文件拆分成若干个小文件,而且还能通过特定语法组合到一起。主要的模块化规范一共有4种,分别是:AMD, CMD, CommonJS, ES6。其中commonJS是node中的模块化使用方案,主要运行在服务端上。
模块化的优势:
- 更利于维护
- 更加好的复用性
模块的分类:
-
自定义模块
- NodeJS中创建的JS文件都是自定义模块(也就是处处皆模块)
-
内置模块(也叫核心模块)
- 安装Node之后,自带了很多内置模块。我们可以直接加载使用他们
-
第三方模块
- 其他人编写的模块,发布到npm网站上,我们可以下载使用
自定义模块
每个JS文件都是一个自定义模块,具有模块作用域,也就是说在模块中创建的变量,函数等都只能在当前模块中使用。
-
共享(导出)内容给其他模块用,需要使用
module.exports导出内容module是Node中的一个全局对象,对象包含当前模块的详细信息。module.exports是模块的出口,也就是导出内容用的,默认值是{ }- 例如要导出name, age, fn给其他模块用,就要用
module.exports={name,age,fn}
-
导入其他模块导出的内容,可以使用
require()加载- let 结果 = require('模块路径')
- 注意:加载自定义模块,必须加路径,即使是./也必须加(require的机制是如果识别到有
./的存在就认定为自定义模块),但是可以省略后缀。
内置模块
内置模块也叫核心模块,它是nodeJS平台自带的一套基本的API(功能模块),由于内置模块有很多很多,所以这里只看几个常用模块。
注意:用require加载内置模块不能写路径,这是和加载自定义模块不一样的。
-
path模块
-
path是node本身提供的API,专门用来处理路径
// 使用核心模块之前,首先加载核心模块 const path = require('path'); //extname方法可以获取文件得后缀名 path.extname('test.html') //join方法可以拼接路径 path.join('a','b','c','test.js') //__dirname可以获取当前这个文件得绝对路径,结合join拼接路径 path.join(__dirname,'a','b','c','test.json')
-
-
fs模块
- fs即是file system文件系统,该模块可以实现对文件和文件夹的操作
- 引入模块:
const fs = require('fs'),这种模块引入建议使用const,因为我们不希望它改变。 - 常用方法是:
fs.readFileSync('路径','utf-8'),fs.writeFileSync('路径','导入的内容')
第三方模块
非node自带的模块,也不是自定义模块。
是别人写的模块,然后发布到npmjs.com网站上,我们可以使用npm工具来下载安装别写的模块。
-
本地模块初始化:初始化后会在项目目录生成package.json文件
npm init -y #或 npm init
-
下载/卸载安装第三方模块
#安装 npm install 模块名 npm i 模块名 npm i 模块名 模块名 模块名 #卸载 npm uninstall 模块名 npm un 模块名 npm un 模块名 模块名 模块名
\