前置导读
1. 我们先来回顾一下Node.js 是什么?
Node.js 是 基于 Chrome V8引擎的 JavaScrip t的 运行时(运行环境-宿主环境)
2.Node.js .js,那么它是一个js文件吗?
不是,Node.js是一个软件,不是一个js文件,安装完毕后也没有图标,它是一个运行环境
3.学习Node.js的意义是什么?
3.1在Node环境下,写jsdiamante实现后端的功能(web服务器,写接口,读写数据库...)
3.2了解后端程序员的工作
4.Node.js 是一门新语言吗?
它只是一个环境,不是一门语言(不需要学习新的语言)
5.下载安装Node.js
Node.js中文网
下载长期支持版本(稳定版),另一个是尝鲜版的:
根据自身电脑系统下载对应的版本:
右键此电脑(计算机)->属性,查看是多少位的系统
后续一直下一步就行
6.打开小黑窗的4种方式
方法1: cmd窗口(window+R, ----> 运行 -----> 输入cmd,回车)
方法2: 在目标文件夹的路径栏输入cmd,回车
方法3: powershell -> 在目标目录中按下shift,同时点击鼠标右键,可以选择在此处打开powershell命令行窗口
方法4: vscode中在目标文件上点击右键,在集成终端中打开
7.常用的命令行下的命令及按键
cd .. 返回上级目录
cd \ 返回根目录
cd 目录地址 移动到目标地址
↑↓ 切换历史命令
一部分文件名按tab键 自动补全文件名
Ctrl+c 停止Node程序
cls/clear 清屏
ls/dir 查看目录列表
node 空格 某个js文件 调用node程序,运行js文件
8.Node.js和浏览器端的区别
相同点:
1. 都可以运行js代码,更严谨一点就是都可以运行ECMAScript
2. 都需要下载安装才能使用
不同点:
1. 各有不同的API: node.js运行js时,不能写DOM,BOM,也不能用window对象了
2. Node.js环境可以去实现后端的功能
3. 浏览器环境可以去实现前端的功能
9.Node.js中的模块分类
1.核心模块: Node.js自带的模块,安装后就可以随意使用
2.自定义模块: 程序员自定义的模块,类似于自定义函数
3.第三方模块:其他程序员写的模块,类似于axios,JQuery等等
10.核心模块fs
引入核心模块的固定格式: const 常量名(最好和核心模块同名) = require('核心模块名(不可随意更改)')
常用功能:
1.文件读取(同步) let 变量名 = fs.readFileSync('文件路径',编码(可选))
console.log(变量名) 若读取成功,则显示文件内容,若读取失败,则显示错误对象
2.文件写入(同步) fs.writeFileSync('文件路径','写入内容(必须得是字符串类型或者Buffer形式)',编码(可选))
buffer形式:二进制,显示的时候是十六进制
`注意:若该路径没有该文件,则创建该文件,若存在则写入内容(覆盖)`
核心模块是由Node.js提供的,具体的要看文档
使用步骤:
a. 引入。 const xxx = require('xxx')
ⅰ. console.log(xx)
b. 使用。
11.路径问题-相对路径的隐患
我们在fs中读取文件是,由于使用的是相对路径,所以在读这个文件的时候,node.js会去:
运行cmd命令的路径+代码中的相对路径.找它 如果你cd返回了上一层再运行,就会报错
12.解决办法-绝对路径
12.1 Node.js提供两个全局变量: _ _ filename、_ _ dirname
__filename: 获取目标文件的绝对路径
__dirname: 获取目标文件的文件夹的绝对路径
只需要在读入文件时,在文件名的前面拼接上路径:
const filePath = __dirname + '\\rs.txt'
13. path核心模块
作用是用来处理路径问题:拼接,分析,取后缀名等等。
● 官网文档地址
● 是node中的核心模块之一
常见API:
● path.basename() :此方法返回 path 的最后一部分。一般可用来获取路径中的文件名。
● path.join() :路径拼接。
● path.parse(pathurl) :把一个路径转成一个对象
示例:
path.basename('/foo/bar/baz/asdf/quux.html');// 返回: 'quux.html'
path.basename('/foo/bar/baz/asdf/quux.html', '.html');// 返回: 'quux'
path.dirname('/foo/bar/baz/asdf/quux');// 返回: '/foo/bar/baz/asdf'
path.extname('index.html');// 返回: '.html'
//路径拼写
const filePath = path.join(__dirname, 'html5.jpg')
附:path模块常用方法列表
方法 | 作用 |
---|---|
path.basename(path[, ext]) | 获取返回 path 的最后一部分(文件名) |
path.dirname(path) | 返回目录名 |
path.extname(path) | 返回路径中文件的扩展名(包含.) |
path.format(pathObject) | path.format(pathObject) 将一个对象格式化为一个路径字符串 |
path.join([…paths]) | 拼接路径 |
path.parse(path) | 把路径字符串解析成对象的格式 |
path.resolve([…paths]) | 基于当前工作目录拼接路径 |
附: fs模块中的常用方法
API | 作用 |
---|---|
fs.access(path, callback) | 判断路径是否存在 |
fs.appendFile(file, data, callback) | 向文件中追加内容 |
fs.copyFile(src, callback) | 复制文件 |
fs.mkdir(path, callback) | 创建目录 |
fs.readDir(path, callback) | 读取目录列表 |
fs.rename(oldPath, newPath, callback) | 重命名文件/目录 |
fs.rmdir(path, callback) | 删除目录(只能删除空目录) |
fs.stat(path, callback) | 获取文件/目录信息 |
fs.unlink(path, callback) | 删除文件 |
fs.existsSync(absolutePath) | 判断路径是否存在 |
fs.watchFile(filename[, options], listener) | 监视文件 |
fs.watch(filename[, options][, listener]) | 监视文件/目录 |
总结
1. nodejs 是什么?
a. 是一个基于chrome v8引擎的javascript 运行时
b. 它是不是一个新语言,它只是一个环境,用来运行js代码
2. 与浏览器的区别在?
a. nodejs中没有dom,bom, window, 只有 ECMAScript
3. 我们学它是图什么?
a. 它是用来写后端功能,帮助我们了解后端程序员是如何工作;
4. fs: 用来做文件(文件夹)操作:读\写\删除\创建.......
5. path: 做路径相关的操作 path.join()
6. __dirname, __filename : 在nodejs中,表示全局变量。用来获取绝对路径。
a. __dirname : 获取当前被执行的文件所在的文件夹的绝对路径
b. __filename: 获取当前被执行的文件的绝对路径