内置模块的基本使用
const fs
= require("fs");
fs
.unlink("01-内置模块fs的使用/tmp/hello.txt", (err
) => {
if (err
) throw err
;
console
.log("已成功删除 /tmp/hello");
});
fs模块的读文件
fs
.readFile(path
[, options
], callback
)
第一个参数:文件的路径
第二个参数:可选参数,读取文件的编码格式
第三个参数:回调函数
fs
.readFile("01-内置模块fs的使用/etc/passwd.txt", "utf-8", (err
, data
) => {
console
.log(data
);
});
Npdemon全局模块
作用:终端下自动执行代码
安装 npm i nodemon -g
nodemon 文件名即可
自动监视文件的修改,自动重新运行
vscode快捷键
ctrl+d 选择相同的下一个ctrl+左右 按单词跳转光标ctrl+enter 光标另起一行
同步异步
同步
console
.log("哈哈");
for (var i
= 0; i
< 10; i
++) {
console
.log(i
);
}
console
.log("呵呵"); ->
哈哈
0
1
2
3
4
5
6
7
8
9
10
呵呵
异步
console
.log("哈哈");
setTimeout(() => {
console
.log("啦啦啦");
}, 1000);
console
.log("呵呵"); ->
哈哈
呵呵
啦啦啦
刚才我们学习的fs模块读/写操作就是一个异步操作
console
.log("哈哈");
const fs
= require("fs");
fs
.readFile("01-内置模块fs的使用/etc/望庐山瀑布.txt", "utf-8", (err
, data
) => {
if (err
=== null) {
console
.log(data
);
} else {
console
.log(err
);
}
});
console
.log("呵呵"); ->
哈哈
呵呵
望庐山瀑布
唐·李白
日照香炉生紫烟,
遥看瀑布挂前川。
飞流直下三千尺,
疑是银河落九天。
其实读文件也有同步操作
console
.log("哈哈");
const fs
= require("fs");
let data
= fs
.readFileSync("01-内置模块fs的使用/etc/passwd.txt", "utf-8");
console
.log(data
);
console
.log("呵呵"); ->
哈哈
这是一个寂寞的天,下着有些伤心的雨!
呵呵
同步异步面试题
var t
= true;
while (t
) {
window
.setTimeout(function () {
t
= false;
}, 1000);
}
alert("end"); -> 死循环
和路径相关的两个变量
__dirname: 获现的是当前这个文件所在的整个文件夹的绝对路径__filename: 拿到的是当前这个文件的绝对路径
console
.log(__dirname
);
console
.log(__filename
);
使用拼接的绝对路径来读取文件
const fs
= require("fs");
const fullPath
= __dirname
+ "\\etc\\1.txt";
fs
.readFile(fullPath
, "utf-8", (err
, data
) => {
if (err
=== null) {
console
.log(data
);
} else {
console
.log(err
);
}
});
path.join([…paths])
path.join() 方法会将所有给定的 path 片段连接到一起(使用平台特定的分隔符作为定界符),然后规范化生成的路径。
长度为零的 path 片段会被忽略。 如果连接后的路径字符串为长度为零的字符串,则返回 '.',表示当前工作目录。
const path
= require("path");
const fullPath
= path
.join(__dirname
, "etc", "1.txt");
console
.log(fullPath
);
使用path模块拼接而成的绝对路径来读取文件
const fs
= require("fs");
const path
= require("path");
const fullPath
= path
.join(__dirname
, "etc", "1.txt");
fs
.readFile(fullPath
, "utf-8", (err
, data
) => {
if (err
=== null) {
console
.log(data
);
} else {
console
.log(err
);
}
});
使用内置模块http来创建一个服务器
const http
= require("http");
const server
= http
.createServer((require
, response
) => {
response
.end("hello world!");
});
server
.listen(8087, () => {
console
.log("服务器开启了:8087");
});
request.setHeader(name, value)
为请求头对象设置单个请求头的值。 如果此请求头已存在于待发送的请求头中,则其值将被替换。 这里可以使用字符串数组来发送具有相同名称的多个请求头。 非字符串值将被原样保存。 因此 request.getHeader() 可能会返回非字符串值。 但是非字符串值将转换为字符串以进行网络传输。
request
.setHeader('Content-Type', 'application/json');
或:
request
.setHeader('Cookie', ['type=ninja', 'language=javascript']);
如果想要返回去的中文不乱码,那就要设置响应头.
response
.setHeader("Content-Type", "text/html;charset=utf-8");