期末周-趁着学了点儿node.js

目录

Node初步了解

作用

注意

Node.js 文件系统

node导入文件系统模块

读取文件中的内容

示例: 

区别:

向文件中写入内容

示例 :

 fs 模块 - 路径动态拼接的问题

Node.js中路径模块

 导入path路径模块

路径拼接

 示例:

获取文件路径的文件名

示例 

获取路径中的文件扩展名

示例


Node初步了解

简单的说 Node.js 就是运行在服务端的 JavaScript。

作用

① 基于 Express 框架( http://www.expressjs.com.cn/ ),可以快速构建 Web 应用
② 基于 Electron 框架( https://electronjs.org/ ),可以构建跨平台的桌面应用
③ 基于 restify 框架( http://restify.com/ ),可以快速构建 API 接口项目
④ 读写和操作数据库、创建实用的命令行工具辅助前端开发、etc…

注意

① 浏览器是 JavaScript 的前端运行环境。
② Node.js 是 JavaScript 的后端运行环境。
③ Node.js 中无法调用 DOM 和 BOM 等
浏览器内置 API。

Node.js 文件系统

node导入文件系统模块

var fs=requier("fs");

读取文件中的内容

一.异步读取

fs.readFile(path[,options],callback);
1.path是必选参数,表示文件的路径
2.option是可选参数,表示以什么样子的编码格式来读取文件
3.callback是必选参数,表示文件读取完毕之后,通过回调函数来拿到读取的结果

二.同步读取

readFileSync(path[, options]) 同步读取文件

path: 文件路径
options:可选参数 用于配置 读取文件的option

示例: 

//导入fs模块
var fs = require('fs');

//异步读取
fs.readFile('文件路径', (err, data) => {
    if (err) {
        console.log('读取失败');
        return;
    }
    console.log(data.toString());
})
console.log("111111");
//会先打印出111111,之后,如果读取成功,会打印出data.toString,如果失败,会打印出读取失败

//同步读取
let data = fs.readFileSync('文件路径');

console.log(data.toString());

区别:

同步:前面的代码先执行 后面的代码需要等待前面的代码执行完毕才会执行
异步:代码的执行不分先后 也就是说前面的代码执行 不会导致后面的代码阻塞 所以异步代码的执行结果的顺序是不一定的

建议使用异步方法,比起同步,异步方法性能更高,速度更快,并且没有阻塞。

对于异步,代码自上而下运行,走到地方之后,去运行io磁盘线程,效率更高,

向文件中写入内容

异步写入内容
fs.writeFile(file, data[, options], callback);
  • file - 文件名或文件描述符。

  • data - 要写入文件的数据,可以是 String(字符串) 或 Buffer(缓冲) 对象。

  • options - 该参数是一个对象,包含 {encoding, mode, flag}。默认编码为 utf8, 模式为 0666 , flag 为 'w'

  • callback - 回调函数,回调函数只包含错误信息参数(err),在写入失败时返回。

同步写入内容

  fs.writeFileSync(file, data[, options], callback);

   file 要写入的文件的路径
        data 要写入的内容
        options 配置对象(可选)
            encoding 编码 默认 utf8
            flag  操作类型  默认 w
            mode  文件的权限 默认666,一般不需要传

流式写入内容

 其他的文件的写入方式都是一次性将一个内容写入到文件中的,
 如果文件太大了则会导致运行速度过慢,会严重影响程序的性能
 流式文件写入适合较大的文件写入,可以分多次将多个内容输出到文件中
追加写入

fs.appendFile('文件路径','\r\n温故而知新,可以为师矣')

其中"\r\n"是换行的作用

示例 :

//导入fs模块
const fs = require('fs');

//写入文件
fs.writeFile('../../wenzi/座右铭.txt', '三人行,则必有我师焉', err => {
    //写入失败:错误对象,写入成功null
    if (err) {
        console.log('写入失败');
        return;
    }
    console.log('写入成功');

})

console.log(1 + 1);

//同步写入
// fs.writeFileSync('../../wenzi/座右铭.txt', '三人行,则必有我师焉);
//1.导入Fs
const fs = requier('fs');

//2.创建写入流对象
const ws = fs.createWriteStream('文件路径');

//3.write
ws.write('11111111\r\n');
ws.write('2222222\r\n');
ws.write('3333333333\r\n');
ws.write('4444444444\r\n');

//4.关闭通道
ws.close();



 fs 模块 - 路径动态拼接的问题

在使用 fs 模块操作文件时,如果提供的操作路径是以 ./ ../ 开头的 相对路径 时,很容易出现路径动态拼接错误的问题。
原因:代码在运行的时候, 会以执行 node 命令时所处的目录 ,动态拼接出被操作文件的完整路径。
解决方案:在使用 fs 模块操作文件时, 直接提供完整的路径 ,不要提供 ./ 或 ../ 开头的相对路径,从而防止路径动态拼接的问题。

Node.js中路径模块

path 模块 是 Node.js 官方提供的、用来 处理路径 的模块。它提供了一系列的方法和属性,用来满足用户对路径的处理需求。

 导入path路径模块

const path=require('path');

路径拼接

注意:今后凡是涉及到路径拼接的操作,都要使用 path.join() 方法进行处理。不要直接使用 + 进行字符串的拼接。

path.join([...paths]);

  ...paths <string> 路径片段的序列
  返回值: <string>

 示例:

const pathStr=path.join('/a','/b/c','../','./d','e');
console.log(pathStr);//输出\a\b\d\e

const pathStr2=path.join(_dirname,'./files/1.txt');
console.log(pathStr2);//输出 当前文件所处的目录\files\1.txt

获取文件路径的文件名

使用 path.basename() 方法,可以从一个文件路径中,获取到文件的名称部分:

path.basename(path[,ext]);

参数

path <string> 必选参数,表示一个路径的字符串

 ext <string> 可选参数,表示文件扩展名
返回:

 <string> 表示路径中的最后一部分

示例 

const fpath='/a/b/c/index.html';//文件存放的路径

var fullName=path.basename(fpath);
console.log(fullName); //输出index.html

var nameWithoutExt=path.basename(fpath,'html');
console.log(nameWithoutExt);//输出 index

获取路径中的文件扩展名

使用 path.extname() 方法,可以获取路径中的扩展名部分
path.extname(path);
参数
path <string>必选参数,表示一个路径的字符串
返回:
<string> 返回得到的扩展名字符串

示例

const fpath='a/b/c/index.html';//路径字符串

const fext=path.extname(fpath);
console.log(fext);//输出 .html

猜你喜欢

转载自blog.csdn.net/www340300/article/details/131270946
今日推荐