Node.js模块化开发
一、Node.js模块化开发
1、JavaScript开发弊端
JavaScript在使用时存在两大问题:文件依赖和命名冲突,又由于JavaScript代码是半封闭状态。
2、软件中的模块化开发
一个功能就是一个模块,多个模块可以组成完整应用,抽离一个模块不会影响其他功能的运行。
3、node.js模块化开发规范
-
nodejs规定一个JavaScript文件就是一个模块,模块内部定义的变量和函数默认情况下在外部无法得到。
-
模块内部可以使用export对象进行成员导出,使用require方法导入其他模块
exports.add = add
//a.js文件
const add = (n1,n2)=>{
console.log(n1+n2);
}
exports.add1 = add;
//b.js文件
const a = require('./a.js'); //用一个变量去接收require方法获得的模块
a.add1(1,2) //输出3;
- 模块成员导出的另一种方式
module.exports.add = add
//module-a.js文件
const add = (n1,n2)=>{
console.log(n1+n2);
}
module.exports.add1 = add;
//module-b.js文件
const a = require('./module-a.js'); //用一个变量去接收require方法获得的模块
a.add1(1,2) //输出3;
两者之间的区别:exports是module.exports的别名(地址引用关系),导出对象最终以module.exports为准;
二、系统模块
1、什么是系统模块
Node运行环境提供的API,因为这些API都是以模块化的方式进行开发的,所以我们又称Node运行环境提供的API为系统模块。
2、系统模块fs文件操作
const fs = require('fs');
//读取文件内容
fs.readFile('文件路径/文件名称'[,'文件编码'],callback);
//写入文件内容
fs.write('文件路径/文件名称','数据',callback)
3、系统模块path路径操作
为什么要进行路径拼接
- 不同操作系统的路径分隔符不统一
- /public/uploads/avatar
- window上是\ /
- linux上是 /
路径拼接语法
path.join('路径','路径',....)
// 获取到path模块
const path = require('path');
const finalPath = path.join('public','a','b');
console.log(finalPath); // public\a\b
三、第三方模块
1、什么是第三方模块
别人写好的、具有特定功能的、我们能直接使用的模块即第三方模块,由于第三方模块通常都是由多个文件组成并且被放置在一个文件夹中,所以又名包.
有两种存在形式:
- 以js文件形式存在,提供实现项目具体功能的API接口
- 以命令行工具形式存在,辅助项目开发
2、获取第三方模块
npm:node的第三方模块管理工具
- 下载:npm install 模块名称
- 卸载:npm unintall package 模块名称
全局安装与本地安装
- 命令行工具:全局安装
- 库文件:本地安装
3、第三方模块 nodemon
在Node.js中,每次修改文件都要在命令行工具中重新执行该文件,非常繁琐。nodemon可以不用每次都重启服务器,便于程序员操作。
使用步骤:
npm install nodemon
在package.json文件内把node修改成nodemon