Node.js模块系统
2020-05-26 本文已影响0人
YAOBINGGT
一、什么是模块系统
为了让Node.js的文件可以相互调用,Node.js提供了一个简单的模块系统。
模块是Node.js 应用程序的基本组成部分,文件和模块是一一对应的。换言之,一个 Node.js 文件就是一个模块,这个文件可能是JavaScript 代码、JSON 或者编译过的C/C++ 扩展。
1、Node核心模块(path,fs,http,ect)
const fs = requrie('fs')
2、通过npm下载的第三方模块或者安装包
const express = require('express')
3、自定义模块(文件)
const myFile = require('./myFile')
一个简单的模块创建引用demo
首先创建两个文件index.js、person.js
person.js
//创建一个自定义模块
//创建一个对象
const person = {
name:'yaobinggt',
age:28
}
//文件模块化
module.exports = person;
index.js
//引用模块 还要创建一个变量进行接收对象模块
const person = require('./person')
console.log(person.name);
//打印出来: yaobinggt
稍微复杂一点的模块创建引用
首先创建两个文件index.js、person.js
person.js
//创建person类
class Person{
//创建一个构造函数
constructor(name,age){
this.name = name;
this.age =age;
}
//创建一个方法
greething(){
console.log(`My name is ${this.name},age is ${this.age}`)
}
}
//模块化
module.exports=Person;
index.js
//创建一个变量并引入自定义模块
const Person = require('./person');
//对象实例化
const person1 = new Person('IUU',2);
//调用方法
person1.greething();
//结果:My name is IUU,age is 2
__dirname 、 __filename
console.log(__dirname,__filename)
//结果D:\myCode\node\node_module D:\myCode\node\node_module\index.js
二、路径模块
path 模块提供了一些用于处理文件与目录的路径的实用工具。
//引入核心模块
const path =require('path');
//path.basename() 返回path的最后一部分
console.log(__filename); //结果: D:\myCode\node\node_module\reference\path_demo.js
console.log(path.basename(__filename)); //结果:path_demo.js
//path.dirname() 返回path的目录名
console.log(path.dirname(__filename)); //结果: D:\myCode\node\node_module\reference
//path.extname() 返回文件的扩展名
console.log(path.extname(__filename)); //结果:.js
//path.parse()返回一个对象
console.log(path.parse(__filename));
//结果:
// {
// root: 'D:\\',
// dir: 'D:\\myCode\\node\\node_module\\reference',
// base: 'path_demo.js',
// ext: '.js',
// name: 'path_demo'
// }
//path.join() 串联路径
//../test/hello.html
console.log(path.join(__dirname,'test','hello.html')) //结果: D:\myCode\node\node_module\reference\test\hello.html
三、文件系统模块
fs 模块提供了用于与文件系统进行交互(以类似于标准 POSIX 函数的方式)的 API。
所有的文件系统操作都具有同步和异步的形式。
//引入模块
const fs = require('fs');
const path = require('path');
//fs.mkdir() 异步创建目录文件夹
fs.mkdir(path.join(__dirname,'/test'),{},(err)=>{
if (err) throw err;
console.log('文件夹创建成功...');
});
//fs,wirte() 异步写入创建文件
fs.writeFile(path.join(__dirname,'/test','hello.txt'),'hello yaobinggt',(err)=>{
if(err) throw err;
console.log('文件创建成功。。。');
//fs,appendFile() 内容添加
fs.appendFile(path.join(__dirname,'/test','hello.txt'),'I love UU',(err)=>{
if(err) throw err;
console.log('文件写入成功。。。');
})
})
//fs.readFile() 读取文件
fs.readFile(path.join(__dirname,'/test','hello.txt'),'utf8',(err,data)=>{
if(err) throw err;
console.log(data);
})
//fs.rename() 文件夹重名
fs.rename(path.join(__dirname,'/test','hello.txt'),path.join(__dirname,'/test','yaobinggt.html'),err=>{
if (err) throw err;
console.log(`文件名修改成功`)
})
四、操作系统模块
//引入模块
const os =require('os');
//os.platform() 返回标示操作系统平台的字符串
console.log(os.platform());
//os.arch() 返回CPU架构信息
console.log(os.arch());
//os.cpus() 返回内核信息
console.log(os.cpus());
//os.freemem() 返回系统空闲内存(以字节为单位)
console.log(os.freemem());
//os.totalmem() 返回系统总内存(以字节为单位)
console.log(os.totalmem());
//os.homedir()返回用户的主目录的字符串路径
console.log(os.homedir())
//os.uptime() 返回系统的正常运行时间(以秒为单位)
console.log(os.uptime())