nodejs - nodejs模块系统

nodejs模块系统

内置模块:可以直接在本地使用,不需要下载,直接通过 require() 在项目中引入

第三方模块https://www.npmjs.com/ 所有的第三方模块都需要通过 npm 下载然后引入

下载第三方模块:

  • 本地安装:npm install 模块名 npm i 模块名

  • 全局安装:-g 代表全局安装, 可以在任何地方使用, npm i 模块名 -g 或者 npm i -g 模块名

  • 自定义模块:需要通过 exportsmodule.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] }
posted @ 2022-06-08 17:33  秋弦  阅读(46)  评论(0编辑  收藏  举报