Node
一、初始Nodejs
1、含义:
Node.js
是一个基于Chorme V8引擎的JavaScript 运行环境
传统意义上的javascript运行在浏览器上,这是因为浏览器内核实际上分为两个部分,渲染引擎和javaScript引擎
。前者主要负责渲染HTML+CSS,后者主要负责运行javaScript。
不同的浏览器使用不同的javascript解析引擎
chrome 浏览器 => V8
firefox 浏览器 => OdinMonkey(奥丁猴)
safri 浏览器 => JSCore
IE浏览器 => chakra (查克拉)
…
其中,chorme浏览器的V8 解析
引擎性能最好!
2、Node.js中的JavaScript运行环境
其中,V8引擎负责执行和解析JavaScript代码,在JS中调用内置API可以做一些后端的事情,环境中可以编写待执行的JavaScript代码,利用Node提供的内置API,最后将代码交给V8引擎进行解析并执行。
注意:浏览器
是JavaScript的前端运行环境
Node.js
是JavaScript 的后端运行环境
Node.js中无法调用
DOM和BOM等浏览器内置API
二、FS文件系统模块
1、了解fs文件系统模块
fs模块
是Node.js官方提供的、用来操作文件的模块。它提供了一系列的方法和属性,用来满足用户对文件的操作需求。
例如:
fs.readFile()
方法,用来读取
指定文件中的内容fs.writeFile()
方法,用来指定文件中的写入
内容
如果要在JavaScript代码中,使用FS模块来操作文件,则需要使用如下的方式去导入它:
const fs = require('fs')
首先调用require方法,在方法中给定字符串’fs’,明确告诉导入fs模块,最后利用const 常量接受fs,后面就可以利用fs提供的fs.readFile()方法进行读取文件和fs.writeFile()方法进行写文件
2、fs.readFile方法
fs.readFile()的语法格式
fs.readFile(path[,options],callback)
参数解读:
参数1:必选
参数,字符串,表示文件的路径。可以是绝对路径,也可以是相对路径。注意
,如果是相对路径,一般表达形式为(’./’)是相对于当前进程所在的路径(process.cwd()),而不是相对于当前脚本所在的路径。如果出现相对路径错误,可以直接提供一个完整的文件存放路径。
参数2:可选参数,表示以什么编码格式
来读取文件
参数3:必选
参数,文件读取完成后,通过回调函数拿到读取的结果。该函数的第一个参数是发生错误时的错误对象
,第二个参数是代表文件内容的Buffer实例
。
注意:通过中括号包起来的参数都是可选参数,未被中括号包起来的参数是必选参数。
下面看一段代码示例,利用readFile()
读取aaa文件
中的内容
首先,aaa文件中的内容为
然后,编写read.js文件
//1.导入js模块
const fs = require('fs');
//2.调用fs.readFile()读取文件
fs.readFile('./aaa','utf8',function (err,datastr){
console.log(err); //打印失败的结果
console.log('---------'); //分割线
console.log(datastr); //打印成功的结果
})
利用webstorm 运行结果如图
这是运行成功的目录,但我们需要读取的文件目录不存在的话,那么将会出现这样的一个错误对象。
3、fs.writeFile() 方法
fs.writeFile() 的语法格式
fs.writeFile(file,data[,option],callback)
参数解读:
参数1:必选
参数,需要指定一个文件路径的字符串
,表示文件的存放路径。
参数2:必选
参数,表示要写入的内容。
参数3:可选参数,表示以什么格式写入文件内容,默认值是 utf8。
参数4:必选
参数,文件写入完成后的回调函数。
下面看一段代码示例,利用writeFile()
向write.txt文件中写入‘hello’
一段内容
//1.导入js模块
const fs = require('fs');
//2.调用fs.writeFile()读取文件
fs.writeFile('./write.txt','hello',function (err){
console.log(err)
})
默认打印结果为null
但同时在我们的目录里可以看到出现了write.txt的这样一个文件,同时打开文件之后hello字样。
下面示例一下判断文件写入成功
//1.导入js模块
const fs = require('fs');
//2.调用fs.writeFile()读取文件
fs.writeFile('../write2.txt','hello!hello!hello!hello!',function (err){
if(err){
return console.log('文件写入失败'+err.message)
}
console.log('文件写入成功!')
})
可以看到在上一级目录中出现了write2.txt
这样一个文件
打开文件后也可以看到输入内容
三、PATH模块
path 模块提供了许多非常实用的函数来访问文件系统并与文件系统进行交互。无需安装。使用时需要引入path模块:
const path = require('path');
(1)path 方法
1、获取文件名
path.basename(path[, ext]):返回 path 的最后一部分,类似于 Unix basename 命令。 尾随的目录分隔符被忽略
如果 path 不是字符串,或者如果给定 ext 并且不是字符串,则抛出 TypeError。
const path = require('path');
path.basename('/foo/aaa~/path.html');
// 返回: 'path.html'
path.basename('/foo/aaa~/path.html', '.html');
// 返回: 'path'
Windows 通常以不区分大小写的方式处理文件名(包括文件扩展名)但 basename 将扩展名视为区分大小写的字符串:
path.win32.basename('C:\\foo.html', '.html');
// 返回: 'foo'
path.win32.basename('C:\\foo.HTML', '.html');
// 返回: 'foo.HTML'
2、获取文件目录名
path.dirname(path):返回 path 的目录名,尾随的目录分隔符被忽略。
path.dirname('/foo/aaa~');
// 返回: '/foo'
如果 path 不是字符串,则抛出 TypeError。
3、获取文件扩展名
path.extname(path):返回 path 的扩展名,即 path 的最后一部分中从最后一次出现的 .(句点)字符到字符串的结尾。 如果 path 的最后一部分中没有 .,或者除了 path 的基本名称的第一个字符之外没有 . 个字符,则返回空字符串。
path.extname('index.html');
// 返回: '.html'
path.extname('index.coffee.md');
// 返回: '.md'
path.extname('index.');
// 返回: '.'
path.extname('index');
// 返回: ''
path.extname('.index');
// 返回: ''
path.extname('.index.md');
// 返回: '.md'
4、路径的格式化
path.format(pathObject):从对象返回路径字符串。(即将对象转换为字符串)
path.format({
dir: 'C:\\path\\dir',
base: 'file.txt'
});
// 返回: 'C:\\path\\dir\\file.txt'
path.parse(path):返回一个对象,其属性表示 path 的有效元素。(即将字符串转换为对象)
path.parse('C:\\目录1\\目录2\\文件.txt');
// 返回:
// { root: 'C:\\',
// dir: 'C:\\目录1\\目录2',
// base: '文件.txt',
// ext: '.txt',
// name: '文件' }