目录
1.【初识Node.js】
1.1 回顾与思考
1.2 Node.js简介
1.3 Node.js环境的安装
2.【使用 fs 模块读写操作文件】
2.1什么是fs文件系统模块
2.2读取指定文件中的内容
2.3向指定的文件中写入内容
2.4 fs 模块––路径动态拼接的问题
3.【使用 path 模块处理路径】
3.1什么是path路径模块
3.2路径拼接
3.3 获取路径中的文件名
3.4 获取路径中的文件扩展名
时钟案例的两个注意点
浏览器中的JavaScript的组成部分:
JS核心语法
变量、数据类型;循环、分支、判断;函数、作用域、 this......
WebAPI
DOM操作;BOM操作;基于XMLHttpRequest的Ajax操作......
内置API
DOM;BOM;Canvas;Ajax......
JavaScript浏览器中被执行
Chrome浏览器 => v8
Firefox浏览器 => OdinMonkey(奥丁猴)
Safri浏览器 => JSCore
IE浏览器 => Chakra(查克拉)
Chrome浏览器的V8解析引擎性能最好!
JavaScript运行环境
运行环境是指代码正常运行所需的必要环境。
引擎负责解析和执行JavaScript代码。
内置API是由运行环境提供的特殊接口,只能在所属的运行环境中被调用。
什么是Node.js
Node.js 是一个基于Chrome v8引擎的JavaScript运行环境。
Node.js中的JavaScript运行环境
内置API
fs;path;http;js内置对象......
注意
1.浏览器是JavaScript的前端运行环境。
2.Node.js 是JavaScript 的后端运行环境。
3.Node.js 中无法调用DOM和BOM等浏览器内置API。
Node.js可以做什么
基于Express框架(http://www.expressjs.com.cn/),可以快速构建Web 应用
基于Electron框架(https://electronjs.org/),可以构建跨平台的桌面应用
基于restify框架(http://restify.com/),可以快速构建API接口项目
读写和操作数据库、创建实用的命令行工具辅助前端开发、......
Node.js怎么学
浏览器中的JavaScript学习路径:
JavaScript 基础语法+浏览器内置API(DOM + BOM)+第三方库(jQuery、art-template等)Node.js 的学习路径:
JavaScript 基础语法+Node.,js 内置API模块(fs、path、http等)+第三方API模块(express、mysql等)
区分LTS版本和Current版本的不同
LTS为长期稳定版,对于追求稳定性的企业级项目来说,推荐安装LTS版本的Node.js.
Current为新特性尝鲜版,对热衷于尝试新特性的用户来说,推荐安装Current版本的 Node.js。但是,Current 版本中可能存在隐藏的Bug 或安全性漏洞,因此不推荐在企业级项目中使用Current 版本的Node.js。
查看已安装的Node.js的版本号
打开终端,在终端输入命令node -v后,按下回车键,即可查看已安装的Node.js的版本号。
Windows 系统快速打开终端的方式:
使用快捷键(Windows徽标键+R)打开运行面板,输入cmd后直接回车,即可打开终端。
在Node.js环境中执行JavaScript代码
方法一:
1.打开终端
2.输入 node 要执行的js文件的路径
方法二:
找到js文件路径 右键 在终端打开 输入node 文件名
方法三:
找到js文件路径 空白处 shift + 右键 在PowerShell打开 输入node 文件名
终端中的快捷键
在Windows的powershell或cmd终端中,我们可以通过如下快捷键,来提高终端的操作效率:
1.使用 ↑ 键,可以快速定位到上一次执行的命令
2.使用tab键,能够快速补全路径
3.使用esc键,能够快速清空当前已输入的命令
4.输入cls命令,可以清空终端
fs 模块是Node.js 官方提供的、用来操作文件的模块。它提供了一系列的方法和属性,用来满足用户对文件的操作需求。
如果要在JavaScript 代码中,使用 fs 模块来操作文件,则需要使用如下的方式先导入它:
const fs = require('fs')
fs.readFile()方法,读取指定文件中的内容,语法格式:
fs.readFile(path[, options], callback)
参数1∶必选参数,字符串,表示文件的路径。
参数2 : 可选参数,表示以什么编码格式来读取文件。
参数3 : 必选参数,文件读取完成后,通过回调函数拿到读取的结果。
fs.readFile()示例代码:
// 1.导入 fs 模块
const fs = require('fs')
// 2.调用fs.readFile()方法读取文件
// 参数1:读取文件的存放路径
// 参数2:读取文件时候采用的编码格式,一般默认指定 utf-8
// 参数3:回调函数,拿到读取失败和成功的结果 err dataStr
fs.readFile('./files/01.txt', 'utf-8', function(err, dataStr) {
//2.1 打印失败的结果
//如果读取成功,则err的值为null
//如果读取失败,则err的值为错误对象,dataStr的值为undefined
console.log(err)
console.log('-------')
//2.2 打印成功的结果
console.log(dataStr)
})
判断文件是否读取成功:
const fs = require('fs')
fs.readFile('./files/01.txt', 'utf-8', function(err, dataStr) {
if (err) {
return console.log('读取文件失败!' + err.message);
}
console.log('读取文件成功!' + dataStr);
})
fs.writeFile()方法,用来向指定的文件中写入内容,语法格式:
fs.writeFile(file,data[, options], callback)
参数1∶必选参数,需要指定一个文件路径的字符串,表示文件的存放路径。
参数2 : 必选参数,表示要写入的内容。
参数3 : 可选参数,表示以什么格式写入文件内容,默认值是utf-8。
参数4 : 必选参数,文件写入完成后的回调函数。
fs.writeFile()示例代码:
// 1.导入 fs 模块
const fs = require('fs')
// 2.调用fs.writeFile()方法,写入文件的内容
// 参数1:表示文件的存放路径
// 参数2:表示要写入的内容
// 参数3: 回调函数
fs.writeFile('./files/2.txt', 'abcd', function(err) {
// 2.1如果文件写入成功,则err的值等于null
// 2.2如果文件写入失败,则err的值等于一个错误对象
console.log(err)
})
判断文件是否写入成功:
const fs = require('fs ')
fs.writeFile('./files/2.txt', 'ok123', function(err) {
if (err) {
return console.log('文件写入失败!' + err.message)
}
console.log('文件写入成功! ')
})
在使用fs模块操作文件时,如果提供的操作路径是以 ./ 或 ../ 开头的相对路径时,很容易出现路径动态拼接错误的问题
原因:代码在运行的时候,会以执行node命令时所处的目录,动态拼接出被操作文件的完整路径。
演示路径的问题:
const fs = require('fs')
//出现路径拼接错误的问题,是因为提供了 ./ 或 ../ 开头的相对路径
//如果要解决这个问题,可以直接提供一个完整的文件存放路径
/* fs.readFile('./files/01.txt', 'utf-8', function(err, dataStr) {
if (err) {
return console.log('读取文件失败!' + err.message);
}
console.log('读取文件成功!' + dataStr);
})
*/
//移植性非常差 不利于维护
/* fs.readFile('C:\\Users\\LY\\Desktop\\前端\\Node.js基础\\Day1\\code\\files\\01.txt', 'utf-8', function(err, dataStr) {
if (err) {
return console.log('读取文件失败!' + err.message);
}
console.log('读取文件成功!' + dataStr);
}) */
//__dirname表示当前文件所处的目录
//console.log(__dirname)
fs.readFile(__dirname + './files/01.txt', 'utf-8', function(err, dataStr) {
if (err) {
return console.log('读取文件失败!' + err.message);
}
console.log('读取文件成功!' + dataStr);
})
path模块是Node.,js官方提供的、用来处理路径的模块。它提供了一系列的方法和属性,用来满足用户对路径的处理需求。
如果要在JavaScript 代码中,使用 path 模块来操作文件,则需要使用如下的方式先导入它:
const path = require('path')
path.join()方法,用来将多个路径片段拼接成一个完整的路径字符串,语法格式:
path.join( [. . .paths])
1. ...paths路径片段的序列(任意多个)
2. 返回值:
注意:今后凡是涉及到路径拼接的操作,都要使用path.join()方法进行处理。不要直接使用+进行字符串的拼接。
path.join()示例代码:
const path = require('path');
const fs = require('fs');
/*
//注意:../会抵消前面的路经
const pathStr=path.join('/a','/b/c','../','./d','e');
console.log(pathStr); // \a\b\d\e
const pathStr=path.join('/a','/b/c','../../','./d','e');
console.log(pathStr); // \a\d\e
*/
//fs.readFile(__dirname + './files/01.txt')
fs.readFile(path.join(__dirname, './files/01.txt'), 'utf-8', function(err, datastr) {
if (err) {
return console.log(err.message);
}
console.log(datastr);
})
__dirname 表示当前文件所处的目路
__dirname+'/files/1.txt' 通过拼接路径
path.basename()方法,用来从路径字符串中,将文件名解析出来,语法格式:
path.basename(path[, ext])
参数一 :path
必选参数,表示一个路径的字符串 参数二 :ext
可选参数,表示文件扩展名 返回 :
表示路径中的最后一部分
path.basename()示例代码:
const path = require('path');
//定义文件的存放路径
const fpath = '/a/b/c/index.html';
// const fullName=path.basename(fpath);
// console.log(fullName);
const nameWithoutExt = path.basename(fpath, '.html');
console.log(nameWithoutExt);
path.extname()方法,可以获取路径中的扩展名部分,语法格式如下:
path.extname(path)
参数 :path
必选参数,表示一个路径的字符串 返回 :
返回得到的扩展名字符串
path.extname()示例代码:
const path = require('path');
//这是文件的存放路径
const fpath = '/a/b/c/index.html';
const fext = path.extname(fpath);
console.log(fext)
1.fs.writeFile() 方法只能用来创建文件,不能用来创建路径
2.重复调用fs.writeFile() 方法写入同一份文件,新写入的内容会覆盖掉之前的旧内容