Node.js模块化开发与系统模块

1.Node.js模块化开发

  • Node.js规定一个JavaScript文件就是一个模块,模块内部定义的变量和函数默认情况下在外部无法得到
  • 模块内部可以使用exports(与module.exports类似,而最终的导出对象以module.exports为准)对象进行成员导出, 使用require方法导入其他模块。
// a.js
// 在模块中定义变量和方法
let age = 18;
const hello = str => `hellow,${str}`;
// 通过exprots向外部暴露变量和方法
exports.age = age;
exports.hello = hello;
// b.js
// 在别的模块中导入a.js模块  因而a.js中的变量和方法就可以在b.js中使用
let a = require('a.js');
// 调用a.js中的变量和方法
console.log(a.age); // 18
console.log(a.hello('Node'); // hellow,Node

2.系统模块

  • Node运行环境提供的API称为系统模块
  • Node中主要的系统模块有fs文件操作和path路径操作

2.1.fs(filesystem)文件操作

1.读取文件操作

// 引入系统模块
const fs = require('fs');
// 读取文件内容   **fs.readfile('文件路径',['文件的编码'],callback);**
fs.readFile('./01.a.js', 'utf-8', (err, doc) => {
    // 如果文件读取出错err 是一个对象 包含错误信息
    // 如果文件读取正确 err是 null
    // doc 是文件读取的结果
    if(err == null){
    	console.log(doc);
    }else{
    	console.log(err);
    }
});

2.写入文件内容操作

// 引入系统模块
const fs = require('fs');
// 写入内容   **fs.writeFile('文件路径', '数据', callback);**
fs.writeFile('./demo.txt', '写入的内容', err => {
	if (err != null) {
		console.log(err);
		return;
	}
	console.log('*文件内容写入成功*');
})

2.2.path路径操作

1.拼接路径
在path路径的路径拼接中使用:

path.join('路径','路径',...);

示例:

// 导入path模块
const path = require('path');

let newPath = path.join('demo', 'css','a.css');

console.log(newPath); // 结果:demo/css/a.css

2.相对路径和绝对路径

  1. 我们通常使用绝对路径,因为相对路径是有时候相对的是命令行当前的工作目录。
  2. 使用__dirname能够获取当前文件的绝对路径
/******通过路径拼接实现文件的读取******/
const fs = require('fs');
const path = require('path');

// __dirname 得到当前文件的绝对路径
console.log(__dirname);

// 通过path.join()实现路径拼接
fs.readFile(path.join(__dirname, 'a.js'), 'utf-8', (err, doc) => {
	if(err == null){
    	console.log(doc) // 当err == null 时取得a.js中的内容
    }
});

3.node.js中模块的加载机制

1.模块查找规则-当模块拥有路径但没有后缀时

require('./xxx');
  1. require方法根据模块路径查找模块,如果是完整路径(不省略后缀),直接引入模块
  2. 如果模块后缀省略,先找同名JS文件再找同名JS文件夹
  3. 如果找到了同名文件夹,找文件夹中的index.js
  4. 如果文件夹中没有index.js就会去当前文件夹中的package.json文件中查找main选项中的入口文件
  5. 如果找指定的入口文件不存在或者没有指定入口文件就会报错,模块没有被找到

2.模块查找规则-当模块没有路径且没有后缀时

require('xxx');
  1. 首先会查找系统模块
  2. Node.js会去node_modules文件夹中
  3. 首先看是否有该名字的JS文件
  4. 再看是否有该名字的文件夹
  5. 如果是文件夹看里面是否有index.js
  6. 如果没有index.js查看该文件夹中的package.json中的main选项确定模块入口文件
  7. 都找不到则报错
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值