node 是什么?
Node是一个基于Chrome V8引擎的JavaScript代码运行环境。
运行环境
- 浏览器(软件)能够运行JavaScript代码,浏览器就是JavaScript代码的运行环境
- Node(软件)能够运行JavaScript代码,Node就是JavaScript代码的运行环境
Node 组成
- JavaScript 由三部分组成,ECMAScript,DOM,BOM。
- Node.js是由ECMAScript及Node 环境提供的一些附加API组成的,包括文件、网络、路径等等一些更加强大的 API。
Node 中模块化开发规范
- Node.js规定一个JavaScript文件就是一个模块,模块内部定义的变量和函数默认情况下在外部无法得到
- 模块内部可以使用exports对象进行成员导出,使用require方法导入其他模块。
// a.js
// 在模块内部定义变量
let version = 1.0;
// 在模块内部定义方法
const sayHi = name => `您好, ${name}`;
// 向模块外部导出数据
exports.version = version;
exports.sayHi = sayHi;
//导出的另一方式
//module.exports.version = version;
//module.exports.sayHi = sayHi;
// b.js
// 在b.js模块中导入模块a
let a = require('./a.js');
//导入模块时后缀可以省略
// let a = require('./a');
// 输出b模块中的version变量
console.log(a.version);
// 调用b模块中的sayHi方法 并输出其返回值
console.log(a.sayHi('word'));
注意
exports是module.exports的别名**(地址引用关系)**,导出对象最终以module.exports为准
对象最终以module.exports为准,只向外导出了name
系统模块
定义:Node运行环境提供的API. 因为这些API都是以模块化的方式进行开发的, 所以我们又称Node运行环境提供的API为系统模块
fs文件模块
f:file 文件 ,s:system 系统,文件操作系统。
const fs = require('fs');
读取文件
fs.readFile('文件路径/文件名称'[,'文件编码'], callback);
代码示例
fs.readFile('./index.html', 'utf-8',(err,content) => {
//文件读取失败
if (err != null) {
console.log(err);
return;
}
//输出文件内容
console.log('文件内容:'+content);
});
写入文件
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路径操作
路径拼接
- 不同操作系统的路径分隔符不统一
- Windows 上是 \ /
- Linux 上是 /
针对路径分隔符不统一,可采用路径拼接语法
path.join('路径', '路径', ...)
// 导入path模块
const path = require('path');
// 路径拼接
let finialPath = path.join('itcast', 'a', 'b', 'c.css');
// 输出结果 itcast\a\b\c.css
console.log(finialPath);
绝对路径
- 大多数情况下使用绝对路径,因为相对路径有时候相对的是命令行工具的当前工作目录
- 在读取文件或者设置文件路径时都会选择绝对路径
- 使用__dirname获取当前文件所在的绝对路径
// 导入path模块
const path = require('path');
// 导入fs模块
const fs = require('fs');
fs.readFile(path.join(__dirname,'test.txt'),'utf8',(err,doc)=>{
console.log(err);
console.log(doc);
})