nodejs - nodejs模块系统
nodejs模块系统
内置模块:可以直接在本地使用,不需要下载,直接通过 require() 在项目中引入
第三方模块: https://www.npmjs.com/ 所有的第三方模块都需要通过 npm 下载然后引入
下载第三方模块:
-
本地安装:
npm install 模块名
npm i 模块名
-
全局安装:-g 代表全局安装, 可以在任何地方使用,
npm i 模块名 -g
或者npm i -g 模块名
-
自定义模块:需要通过
exports
和module.exports
导出模块, 通过requier()
引入模块; 不管模块是什么类型的,引入模块时都是通过require()
引入; -
运行js文件:
node 文件路径/文件名
自定义模块
1、通过exports定义接口
导出模块:
exports:导出的是具体的值
,一个文件可以通过exports导出多个接口定义一个接口:
exports.变量名 = value
自定义模块: 一个文件就是一个独立模块系统 可以导出多个接口,也可以引入模块
// 创建一个module.js文件
const fs = require('fs');
exports.num = 100;
exports.print = function(){
console.log('自定义');
}
exports.read = function(url){
fs.readFile(url, (err, data) => {
console.log(data.toString());
})
}
创建一个文件去引入模块
导入模块:
require('模块名称/模块位置')
// 创建一个require.js文件
const fs = require('fs');//内置
const axios = require('axios');//第三方
// 1.可以通过赋值给变量的方式,引入自定义模块
// const res = require('./module'); //自定义
// 2.也可以通过对象解构的方式入需要的接口
const {num,print,read} = require('./module')
console.log(num); // 100
print() // 自定义
read('./resouse/日志.txt'); // 春眠不觉晓(读取了resouse文件夹下 日志.txt里的内容)
一个模块可以被多个文件引用,一个文件也可以引入多个模块
2、通过module.exports定义接口
使用module.exports定义接口时导出的是一个对象,一个文件只能有一个module.exports导出接口,如果是多个,后面的会把前面的进行覆盖
module.exports = { }
//module.js文件
module.exports = {
run:function(){
console.log('跑步');
},
eat:function(){
console.log('打王者');
}
}
// 多个的话会覆盖 后边覆盖前边的
module.exports = {
eat:function(){
console.log('吃饭');
}
}
//require.js文件
const res = require('./module');
console.log(res);//{ eat: [Function: eat] }
单独导出一个函数
module.exports = (x) => x * x;
//require.js文件
const res = require('./module');
console.log(res,res(100)); // [Function (anonymous)] 10000
3、两种方式同时存在
两种导出方式 同时存在时。
module.exports
会覆盖exports
//module.js文件
module.exports = {
say(){
console.log('hello');
}
}
exports.score = function(){
console.log('考试成绩');
}
//require.js文件
const res = require('./module'); //自定义
console.log(res);//{ say: [Function: say] }