2021/8/5 之前丢了一小部分笔记,给他补上
一、JavaScript开发弊端
javascript在使用的时候存在两大问题,文件依赖和命名冲突
-
- 文件依赖:如果你在开发过程中,引用了网上一个轮播图的a.js文件,但是它没有运行起来,经过一系列的分析和排查之后,发现a.js要引用b.js,引入之后发现b.js要引入c.js,最后在a.js中引入了b.js和c.js才能让这个轮播图实现,虽然我们能够实现了,但是这个过程是非常痛苦和烦锁的。 node.js中的模块化开发可以解决这个问题,模块化开发中直接写明了当前js文件需要引用哪些另外的文件
-
- 命令冲突: 在javascrip中文件与文件之间是开放的,在学习过程中,会发现有大量的变量重合过程,对于javascript来说,会出现变量覆盖这种情况,那么前面声明的变量就没有用了,所以可能导致一些小的功能不能实现。 在模块化开发中,实现了文件半封闭,我想让哪些代码在后续的程序中使用到,就把这些代码开放出去,其他代码都是封闭的,不允后面使用
二、Node.js模块化开发
1. 软件中的模块化开发
一个功能就是一个模块,多个模块可以组成完整应用,抽离一个模块不会影响其他功能的运行

2. Node.js中模块化开发规范
- Node.js规定一个javascript文件就是一个模块,模块内部定义的变量和函数默认情况下在外部无法得到
- 模块内部可以使用exports对象进行成员导出,使用require方法导入其他模块

const a = 10, b = 15;
const add = a + b;
exports.add = add;
const a = require('./a.js');
console.log(a.add);
3. 模块成员导出的另一种方式
module.exports.version = version;
module.exports.sayHi = sayHi;
exports是module.exports的别名(地址引用关系),导出对象最终以module.exports为准
三、系统模块
1. 什么是系统模块
Node运行环境提供的API。 因为这些API都是以模块化的方式进行开发的, 所以我们又称Node运行环境提供的API为系统模块 
2. 系统模块fs操作
f:file 文件 ,s:system 系统,文件操作系统。
2.1 读取文件操作
- fs.readFile是对硬盘的操作,对文件进行读取,需要耗时,那么我们需要使用回调函数的方式来获取文件读取结果
- 回调函数包含两个参数
const fs = require('fs');
fs.reaFile('文件路径/文件名称'[,'文件编码'], callback);
const fs = require('fs');
fs.readFile('./01.helloworld.js', 'utf8', (err, result) => {
console.log(err);
console.log(result);
})
2.2 写入文件内容
常用场景: 在网站运行的过程中,要记录网站运行情况,比如是否有报错的情况,但是程序媛是不可以一起盯着电脑屏幕的,所以我们希望当程序报错时,可以将程序写入一个错误日志中(也就是一个文件当中),最后只需要查看错误日志就可以知道哪里出了问题
fs.writeFile('文件路径/文件名称', '即将要写入的内容', callback);
const content = '<h3>正在使用fs.writeFile写入文件内容</h3>';
fs.writeFile('../index.html', content, err => {
if (err != null) {
console.log(err);
return;
}
console.log('文件写入成功');
});
四、系统模块path路径操作
为什么要进行路径拼接
- 不同操作系统的路径分隔符不统一
- /public/uploads/averar
- Windows 上是 / \
- Linux 上是 /
4.1 路径拼接语法
path.join('路径', '路径', ...)
const path = require('path');
let finialPath = path.join('itcast', 'a', 'b', 'c.css');
console.log(finialPath);
4.2 相对路径 VS 绝对路径
- 大多数情况下使用绝对路径,因为相对路径有时候相对的是命令行工具的当前工作目录
- 在读取文件或者设置文件路径时都会选择绝对路径
- 使用__dirname或者 __filename获取当前文件所在的绝对路径
- __dirname: 获取当前文件的父级绝对路径
- __filename: 获取当前文件的绝对路径
const path = require('path');
console.log(__dirname);
console.log(__filename);
const finalPath = path.join(__dirname, '/demo.txt');
console.log(finalPath);
|