Node是什么
Node是一个基于Chrome V8引擎的JavaScript代码运行环境
Node.js的组成
JavaScript由:ECMAScript,DOM,BOM,
Node.js由ECMAScript及Node环境提供的一些附加API组成,包括文件、网络、路径
Node下载:直接去官网找安装包下载即可
Node官网
内置对象介绍
分类
全局对象:何时何处都能访问
核心对象:向系统索要,引入即可使用
自定义对象:按路径引入即可
process(全局对象)
-
process.env是一个对象,我i们可以通过其属性名来获取具体的环境变量值
设置一个特定的环境变量以简单区别不同的机器,从而针对生产/开发环境运行不同的效果
-
process.argv获取命令行参数
命令行的命令:set可以查看系统变量
应用上,在本机,和真实的服务器上应该有区别
区分不同的机器做不同的效果
filename/dirname(全局变量)
- __filename 获取当前运行的文件的目录,绝对路径
- __dirname 当前运行文件的绝对路径
node.js实现规范
- CommonJS:规范JavaScript语言作为后端语言运行的标准
- 具备什么能力
- 模块该怎么写:Moudle
- 依赖一个模块,require
- 需要被模块依赖 module.exports = 给外部的数据
- 一个文件是一个模块
核心对象path
1、引入
const path = require('path');
2、路径 -> 在处理路径的时候很擅长,其不负责判断路径是否存在文件
3、拼接并修正路径 path.join(__dirname,‘a’ ,‘b’)
4、接收一个合法的路径字符串,就换成一个对象
path.parse
方便以对象的方式操作路径
5、接收一个路径对象,转换成一个字符串路径
path.format
6、path.resolve:相对路径转绝对路径
let patha = path.parse(mypath);
pathb.base = 'mick';
mypath = path.format(patha);
base 可以作为修改文件名,或者后缀名的方式
node.js
https://nodejs.org/dist/latest-v14.x/docs/api/
JavaScript的弊端
文件依赖和命名冲突
软件的模块化开发
一个功能就是一个模块,多个模块可以组成完整应用,抽离一个模块不会影响其他模块的运行
Node.js的模块化规范
Node.js规定了一个JavaScript文件就是一个模块,模块内部定义的变量和函数默认情况下在外部无法得到
模块内部可以用exports对象进行成员导出,使用require方法导出其他模块
导入模块时的后缀可以省略(.js)
另一种方式:module.exports
exports是module.exports的别名,如果两个同时指向一个变量,以module.exports为准
系统模块
node运行环境提供的API,因为这些API都是以模块化的方式进行开发的。
系统模块 : fs 文件操作
- 文件读写
- 其他功能
- 扩展介绍
f:file文件,s:system系统
读取文件内容
异步读取:不阻塞后续代码
fs.readFile(“文件路径/文件名称”[,‘文件编码’],callback);callback:回调函数,获取文件的读取结果
同步读取
fs.readFileSync(文件路径)
//读取上一级css下的文件
fs.readFile("../css/base.css","utf-8" (err,doc) => {
//如果文件读取发生错误,参数err的值为错误对象,否则err为null
//doc为文件内容
if(err == null){
console.log(doc);
}
})
注意:读取文件是硬盘的操作,需要调用回调函数
写入文件内容
输出到文件夹中
异步读写
fs.writeFile(‘文件路径/文件名称’, ‘写入的数据’,[flag:a}(追加),callback);
追加方式:appendFile(‘path’,'data’,callback);
同步读写
fs.writeFileSync(文件路径)
I :input
对计算机来说,就是输入
O:output
对计算机来说,展现/写入数据就是输出
系统模块 path 路径操作
路径拼接符
为什么?不同操作系统的路径的分隔符不一致
语法:
path.join('路径','路径',...);
//导入path
const path = require('path');
const finalpath = path.join('public','uploads','avatar');
console.log(finalpath);
相对路径vs绝对路径
大多数情况下,使用绝对路径,因为相对路径有时候相对的是命令行工具的当前工作目录
在读取或设置文件路径的时候都选择绝对路径
使用__dirname获取当前文件所在的绝对路径,然后再拼上当前要操作的文件名