赞
踩
Node.js是一个能够在服务器端运行JavaScript的开放源代码、跨平台JavaScript运行环境, 也就是说nodejs提供一个可以让javascript代码运行在服务端的环境。
Node.js主要用于编写像Web服务器一样的网络应用
官网地址:Node.js
中文官网:Node.js 中文网
nodejs提供一个可以让javascript代码运行在服务端的环境。
● 学习Node.js是为了解前后端交互流程
● 同时为后面学习前端框架做准备
● 前端有很多业务不能解决,需要使用Node.js处理
Node.js 诞生只有十二年(2009~2021)目前已经相当成熟。相比之下,JavaScript 已存在 24 年,而 Web 则是 31 年。十二年在技术领域并不是很长的时间,但是 Node.js 似乎已存在很久。
单线程 相当于一家饭店只有一个服务员
异步、非阻塞I(input)/O(output): I/O包括有文件I/O操作、网络I/O操作
事件驱动
JavaScript:ecmascript/BOM/DOM
Node: Ecmascript/Node提供的方法(另外nodejs也封装了自己的API(Application Programming Interface,应用程序接口)),没有DOM和BOM
下载地址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位)
console.log('Hello web');
运行nodejs程序的两种方式:【重点】
第一种:在dos小黑窗中使用node应用程序来执行nodejs程序文件,如下:
第二种:在vscode中通过code runner插件来运行nodejs程序文件,安装完code runner插件后在对应的程序文件中右单击并选择"Run code"来执行程序。
使用cmd命令可以打开DOS小黑窗。
什么是DOS小黑窗?
DOS小黑窗是windows操作系统提供的一个字符界面,在这个字符界面中可以使用命令来操作windows操作系统。
第一种:在“运行”框中输入cmd;
第二种:按住"shift"键后再右单击鼠标并选择“在此处打开命令窗口”;
第三种:在“资源管理器”的地址栏中输入cmd;
切换目录: cd
查看目录下的信息: dir
. 代表当前目录
.. 代表上一级目录
清屏:cls
切换盘符: 盘符后面加冒号
tab:自动补齐
→←↑↓
常用windows快捷键:
win+d:快速回到桌面
win+r:打开“运行”框
win+e:打开“资源管理器”
win+l:锁屏
环境变量就是用来设置操作系统运行的参数,配置完某个应用程序的环境变量后就可以在当前操作系统的任意中执行该应用程序。
五、文件系统/模块
二进制、八进制、十进制、十六进制...
在Nodejs中可以通过内置的fs模块来操作系统文件。
文件系统操作都具有同步和异步两种方式。
语法:
fs.openSync(path[, flags])
参数说明:
path:必写参数,是要打开的目标文件名的字符串(可以包含文件所在的具体路径)
flags:可选参数,设置打开文件的模式(访问模式),常用的模式为只读、写入、追加。
打开模式表:
模式 | 说明 |
---|---|
a | 文件用于追加。 如果文件不存在,则创建该文件 |
ax | 类似于a,但如果路径存在,则失败 |
a+ | 打开文件用于读取和追加。 如果文件不存在,则创建该文件 |
ax+ | 类似于 'a+',但如果路径存在,则失败 |
as | 打开文件用于追加(在同步模式中)。 如果文件不存在,则创建该文件 |
as+ | 打开文件用于读取和追加(在同步模式中)。 如果文件不存在,则创建该文件 |
r+ | 打开文件用于读取和写入。 如果文件不存在,则会发生异常 |
rs+ | 打开文件用于读取和写入(在同步模式中)。 指示操作系统绕过本地的文件系统缓存 |
w | 打开文件用于写入。 如果文件不存在则创建文件,如果文件存在则截断文件 |
wx | 类似于 'w',但如果路径存在,则失败 |
语法:
fs.writeSync( fd,内容 )
语法:
fs.closeSync(fd)
代码案例:
- //引入fs模块:fs模块是对文件或目录的操作
- const fs = require('fs');
- // console.log(fs);
-
-
- //第一步:打开文件 fs.open()、fs.openSync()
- // fs.openSync('./test.txt', 'a+');
- // let rt = fs.openSync('E:/web_beijing/day04/代码/test.txt', 'a+');
- let rt = fs.openSync('E:/web_beijing/day04/代码/test.txt', 'w+');
- // console.log(rt, 1111);
-
- //第二步:对文件进行读、写:
- // 写操作:fs.write()、fs.writeSync()
- // 读操作:fs.read()、fs.readSync()
- fs.writeSync(rt, 'Ha Ha');
-
- //第三步:关闭文件 fs.close()、fs.closeSync()
- fs.closeSync(rt);
5.4.1 写入文件
语法:
fs.writeFileSync( path,data[,options] )
参数说明:
path:必选参数,文件路径
data:文件中写入的数据
options:可选参数,设置以何种方式写入内容,主要有替换和追加 { flag:'a' }a代表追加append,w代表替换,默认为替换
代码示例:
- //引入fs模块:
- const fs = require('fs');
-
- console.log(__dirname);
- console.log(__filename);
-
-
- //写文件:fs.writeFile()、fs.writeFileSync();
- // fs.writeFileSync('E:/web_beijing/day04/代码/123.txt', '测试下', { flag: 'a+' });
- fs.writeFileSync(`${__dirname}/123.txt`, 'Hello web', { flag: 'a+' });
语法:
fs.readFileSync( path[,options] )
参数说明:
path:必选参数,文件路径
options:可选参数 { encoding:'utf8' } | 'utf8',以utf8编码格式读取内容,中括号代表可选参数
代码示例:
- //引入fs模块:
- const fs = require('fs');
-
- console.log(__dirname);
- console.log(__filename);
-
- //读取文件:fs.readFile()、fs.readFileSync()
- // let str = fs.readFileSync(`${__dirname}/123.txt`);
- // console.log(str, str.toString());
-
- //异步方式读取文件内容:
- fs.readFile(`${__dirname}/123.txt`, function(x, y) {
- console.log(x, y, y.toString());
- });
语法:
fs.renameSync( oldpath,newpath )
参数说明:
oldpath:必选参数,原文件|文件夹路径
newpath:必选参数,新文件|文件夹路径
代码示例:
语法:
fs.unlinkSync( filepath )
参数说明:
filepath:必选参数,要删除的文件路径
代码示例:
语法:
fs.statSync( path )
参数说明:
path:必选参数,文件或文件夹的路径地址
其他:
判断文件:stat.isFile()
判断目录:stat.isDirectory()
代码示例:
语法:
fs.mkdirSync( path[,options] )
参数说明:
path:必选参数,要创建的文件夹完整路径名称
options:可选参数,是否递归创建文件夹,{ recursive:true } true代表递归创建
代码案例:
语法:
fs.rmdirSync( path[,options] )
参数说明:
path:必选参数,要删除的文件夹完整路径
options:可选参数,是否递归删除文件夹,{ recursive:true } true代表递归创建,只有V14版本支持
代码案例:
语法:
fs.readdirSync(path)
参数说明:
path:必选参数,要读取的文件夹的完整路径
如果读取成功返回一个数组。
代码案例:
- const fs = require('fs');
-
- //判断文件或目录是否存在:fs.exists()、fs.existsSync()
-
-
- //创建目录:fs.mkdir()、fs.mkdirSync()
- // fs.mkdirSync(`${__dirname}/mydemo`);
- if (!fs.existsSync(`${__dirname}/test`)) { //test不存在时则创建
- fs.mkdirSync(`${__dirname}/test`);
- }
-
-
- //删除目录:fs.rmdir()、fs.rmdirSync()
- //注意:只能删除空目录
- // fs.rmdirSync(`${__dirname}/test`);
- // fs.rmdirSync(`${__dirname}/mydemo`);
-
- //删除文件:fs.unlink()、fs.unlinkSync();
- // fs.unlinkSync(`${__dirname}/mydemo/321.txt`);
-
- //给目录或文件重命名:fs.rename()、fs.renameSync()
- // fs.renameSync(`${__dirname}/test`, `${__dirname}/mytest`);
-
- //读取目录:fs.readdir()、fs.readdirSync()
-
- let arr = fs.readdirSync(__dirname);
- // console.log(arr);
- for (let fname of arr) {
- // console.log(fname, 333);
-
- //获取文件或目录的状态:fs.stat()、fs.statSync()
- let stat = fs.statSync(`${__dirname}/${fname}`);
- // console.log(stat, 111);
-
- //stat.isFile():判断是否为文件
- //stat.isDirectory():判断是否目录
- if (stat.isFile()) { //为文件
- console.log(`文件:${fname}`);
- } else { //为目录
- console.log(`目录:${fname}`);
- }
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。