Node -day01

一、Node简介

Node.js是一个能够在服务器端运行JavaScript的开放源代码、跨平台JavaScript运行环境。

Node.js主要用于编写像Web服务器一样的网络应用

官网地址:Node.js

中文官网:Node.js 中文网

1.1 什么是Node.js

Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境[在服务器端的运行环境]

1.2 为什么学习Node.js

● 学习Node.js是为了解前后端交互流程

● 同时为后面学习前端框架做准备

● 前端有很多业务不能解决,需要使用Node.js处理

1.3 Node.js简史

Node.js 诞生只有十二年(2009~2021)目前已经相当成熟。相比之下,JavaScript 已存在 24 年,而 Web 则是 31 年。十二年在技术领域并不是很长的时间,但是 Node.js 似乎已存在很久。

1.4 Node.js的特点【重点】

进程相当于工厂中的车间,而线程相当于车间中的工人;一个进程可以派生多个线程;

  • 单线程:相当于一家饭店只有一个服务员;

  • 异步、非阻塞I/O(网络I/O、文件I/O):

  • 事件驱动:

1.5 Node与JavaScript之间的区别【重点】

JavaScript:ecmascript/BOM/DOM

Node: Ecmascript/Node提供的方法,没有DOM和BOM

1.6 Node的应用领域

善于I/O,不善于计算。因为Node.js最擅长的就是任务调度,如果业务有很多的CPU计算,实际上也相当于这个计算阻塞了这个单线程,就不适合Node.js开发。

当应用程序需要处理大量并发的I/O,而在向客户端发出响应之前,应用程序内部并不需要进行非常复杂的处理的时候,Node.js非常适合。Node.js也非常适合与web socket配合,开发长连接的实时交互应用程序。

二、Node安装

2.1 下载与安装

下载地址1:Download | Node.js (V14只能是win10及以上。)

下载地址2:Node.js Mirror v12

node-v12.16.0-x64.msi (64位)

node-v12.16.0-x86.msi (32位)

2.2 第一个nodejs程序

console.log('Hello WEB!');

2.3 运行nodejs代码的两种方式:【重点】

第一种:通过vscode的code runner插件来运行;

第二种:在dos小窗口使用node.exe或node来运行我们的nodejs程序文件,见下图:

三、命令行与cmd

3.1 dos小黑窗介绍

DOS小黑窗:是windows操作系统提供一个字符界面,在这个字符界面中可以通过命令来操作windows操作系统。

3.2 打开dos小黑窗口的方法【重点】

第一种:在"运行"框中输入cmd命令;

第二种:在“资源管理器”窗口中的地址栏中输入cmd命令;

第三种:在某个目录或盘符中按住"shift"键再右单击鼠标,然后选择“在此处打开命令窗口”菜单; [win10操作系统可以忽略]

3.3 常用dos命令【重点】

c

3.4 使用技巧

tab →←↑↓

windows常用的快捷键:

win+r:打开运行框

win+d:快速回到桌面

win+e:打开资源管理器

win+l:锁屏

四、环境变量

4.1 什么是环境变量【重点】

就是给操作系统设置指定的参数,设置完这些参数后就可以在当前的操作系统的任意目录执行执行对应的应用程序。

4.2 如何配置环境变量

win10:

win7:

五、文件系统/模块

5.1 进制【了解】

5.1.1 常见进制简述

二进制、八进制、十进制、十六进制...

5.1.2 进制转换原理

5.1.3 计算机存储原理

5.1.4 ASCII(美国国标码)

5.2 文件的操作流程

在Nodejs中可以通过内置的fs模块来操作系统文件。

文件系统操作都具有同步和异步两种方式。

__dirname:动态获取当前文件所在的目录 【重点】

__filename:动态获取当前文件所在的目录包含当前文件名 【重点】

5.2.1 打开文件

语法:

fs.openSync(path[, flags])

参数说明:

path:必写参数,是要打开的目标文件名的字符串(可以包含文件所在的具体路径)

flags:可选参数,设置打开文件的模式(访问模式),常用的模式为只读、写入、追加。

打开模式表:

模式说明
a文件用于追加。 如果文件不存在,则创建该文件
ax类似于a,但如果路径存在,则失败
a+打开文件用于读取和追加。 如果文件不存在,则创建该文件
ax+类似于 'a+',但如果路径存在,则失败
as打开文件用于追加(在同步模式中)。 如果文件不存在,则创建该文件
as+打开文件用于读取和追加(在同步模式中)。 如果文件不存在,则创建该文件
r+打开文件用于读取和写入。 如果文件不存在,则会发生异常
rs+打开文件用于读取和写入(在同步模式中)。 指示操作系统绕过本地的文件系统缓存
w打开文件用于写入。 如果文件不存在则创建文件,如果文件存在则截断文件
wx类似于 'w',但如果路径存在,则失败

5.2.2 写入内容

语法:

fs.writeSync( fd,内容 )

5.2.3 关闭文件

语法:

fs.closeSync(fd)

代码实例如下:

const fs = require('fs'); //引入fs内置模块
// console.log(fs);
​
// console.log(__dirname, 111);
// console.log(__filename, 222);
​
//第一步:打开文件:  fs.open() 、fs.openSync()
// let fnum = fs.openSync('F:/web_zhengzhou/day04/代码/123.txt', 'a+');
// console.log(fnum);
​
// fs.open('F:/web_zhengzhou/day04/代码/456.txt', 'a+', function(err, fd) {
//a+:以追加方式打开文件,可以对文件内容进行读取和追加
// fs.open(`${__dirname}/456.txt`, 'a+', function(err, fd) {
//w+:以读取和写入方式打开文件,只能保留最后一次写入的内容,原来内容会被覆盖
fs.open(`${__dirname}/456.txt`, 'w+', function(err, fd) {
​
    //第二步:写文件:fs.write()、fs.writeSync()
    //        读文件:fs.read()、fs.readSync()
    fs.writeFileSync(fd, '1234');
    //    fs.write(fd,'Hello...',function(){
​
    //    });
​
    //第三步:关闭文件:fs.close()、fs.closeSync()
    fs.closeSync(fd);
});

5.4 文件操作

5.4.1 写入文件【重点】

语法:

fs.writeFileSync( path,data[,options] )

参数说明:

path:必选参数,文件路径

data:文件中写入的数据

options:可选参数,设置以何种方式写入内容,主要有替换和追加 { flag:'a' }a代表追加append,w代表替换,默认为替换

代码示例:

const fs = require('fs');
​
​
//写入文件:fs.writeFile()、fs.writeFileSync()
//注意:fs.writeFileSync()默认是以"w"方式写入文件内容,也就是覆盖原有文件内容方式写入文件
// fs.writeFileSync(`${__dirname}/456.txt`, 'this is test....');
fs.writeFileSync(`${__dirname}/456.txt`, 'Yes OK!!', { flag: 'a+' });

5.4.2 读取文件【重点】

语法:

fs.readFileSync( path[,options] )

参数说明:

path:必选参数,文件路径

options:可选参数 { encoding:'utf8' } | 'utf8',以utf8编码格式读取内容,中括号代表可选参数

代码示例:

const fs = require('fs');
​
//读取文件:fs.readFile()、fs.readFileSync()
let str = fs.readFileSync(`${__dirname}/456.txt`);
console.log(str, str.toString());
// fs.readFile(`${__dirname}/456.txt`, (err, data) => {
//     console.log(err, data, data.toString());
// });

5.4.3 修改文件或目录的名称【重点】

语法:

fs.renameSync( oldpath,newpath )

参数说明:

oldpath:必选参数,原文件|文件夹路径

newpath:必选参数,新文件|文件夹路径

5.4.4 删除文件【重点】

语法:

fs.unlinkSync( filepath )

参数说明:

filepath:必选参数,要删除的文件路径

5.4.5 获取文件信息(状态)【重点】

语法:

fs.statSync( path )

参数说明:

path:必选参数,文件或文件夹的路径地址

其他:

判断文件:stat.isFile()

判断目录:stat.isDirectory()

5.5 文件夹操作

5.5.1 创建目录【重点】

语法:

fs.mkdirSync( path[,options] )

参数说明:

path:必选参数,要创建的文件夹完整路径名称

options:可选参数,是否递归创建文件夹,{ recursive:true } true代表递归创建

5.5.2 读取目录【重点】

语法:

fs.readdirSync( path[,options] )

参数说明:

path:必选参数,要删除的文件夹完整路径

options:可选参数,是否递归删除文件夹,{ recursive:true } true代表递归创建,只有V14版本支持

5.5.3 删除目录【重点】

语法:

fs.rmdirSync(path)

参数说明:

path:必选参数,要读取的文件夹的完整路径

如果读取成功返回一个数组。

代码实例如下

const fs = require('fs');
​
//判断文件或目录是否存在:fs.exist()、fs.existSync()
​
if (!fs.existsSync(`${__dirname}/mydemo2`)) { //mydemo目录不存在时则创建
    //创建目录:fs.mkdir()、fs.mkdirSync()
    fs.mkdirSync(`${__dirname}/mydemo2`);
}
​
​
​
//删除目录:fs.rmdir()、fs.rmdirSync()  
//注意:只能删除空目录
// fs.rmdirSync(`${__dirname}/mydemo`);
​
​
if (fs.existsSync(`${__dirname}/123.txt`)) {
    //删除文件:fs.unlink()、fs.unlinkSync()
    fs.unlinkSync(`${__dirname}/123.txt`);
}
​
//对目录或文件重命名:fs.rename()、fs.renameSync()
// fs.renameSync(`${__dirname}/456.txt`, `${__dirname}/yesok.txt`);
​
​
//读取目录:fs.readdir()、fs.readdirSync()
let arr = fs.readdirSync(__dirname);
// console.log(arr);
for (let item of arr) {
    // console.log(item);
    //读取文件的状态:fs.stat()、fs.statSync()
    let stats = fs.statSync(`${__dirname}/${item}`);
    // console.log(stats);
    //判断是否为目录:stats.isDirectory()  
    //判断是否为文件:stats.isFile()
    if (stats.isDirectory()) { //为目录
        console.log(`目录:${item}`);
    } else { //为文件
        console.log(`文件:${item}`);
    }
}

六、fs模块中的两种编程风格

fs模块中的每种操作都提供同步与异步两种方式。

七、其他

6.1 全局变量

在浏览器 JavaScript 中,通常 window是顶层对象,而 Node.js 中的顶层对象是 global

Node平台内置了例如:__filename__dirname等全局变量 setInterval() setTimeout()等方法

__dirname:动态获取当前文件所在的目录 【重点】

__filename:动态获取当前文件所在的目录包含当前文件名 【重点】

6.2 优化路径

const fs = require('fs');
​
//读取文件:fs.readFile()、fs.readFileSync()
let str = fs.readFileSync(`${__dirname}/456.txt`);
console.log(str, str.toString());
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值