fs模块
导入 fs 模块,来操作文件
const fs = require('fs');
调用fs.readFile()方法读取文件
参数1: 读取文件存放路径
参数2: 读取文件时候采用的编码格式,一般默认utf-8
参数3: 回调函数,拿到读取失败和成功的结果 err dataStr
const fs = require('fs');
fs.readFile('./files/1.txt','utf8', function (err, dataStr) {
// 打印失败的结果
// 如果读取成功,则 err 的值为 null
// 如果读取失败,则 err 的值为错误对象,dataStr的值为 undefined
console.log(err);
console.log('-----------------');
// 打印成功的结果
console.log(dataStr);
})
判断文件是否读取成功
const fs = require('fs');
fs.readFile('./files/1.txt','utf8', function (err, dataStr) {
if (err) {
return console.log('读取文件失败!' + err.message);
} else {
console.log('读取文件成功!' + dataStr);
}
})
调用fs.writeFile()方法,写入文件内容
// 参数1: 表示文件存放路径
// 参数2: 表示要写入的内容
// 参数3: 回调函数
fs.writeFile()方法只能用来创建文件,不能创建路径
重复调用fs.writeFile()方法写入同一个文件,新写入的内容会覆盖之前的旧内容
fs.writeFile('./files/2.txt', 'haha', function (err) {
// 如果文件写入成功,则 err 的值等于 null
// 如果文件写入失败,则 err 的值等于一个 错误对象
// console.log(err);
//判断文件是否写入成功
if (err) {
return console.log('文件写入失败!' + err.message);
} else {
console.log('文件写入成功!');
}
});
__dirname
出现路径拼接错误问题是因为提供了 ./ 或 ../ 开头的相对路径
解决方法:可以直接提供一个完整的文件存放路径(绝对路径),但是要注意" \ "需要转义
绝对路径移植性非常差,不利于维护
fs.readFile('D:\\Download\\Microsoft VS Code\\pro\\nodejs\\files\\1.txt','utf8', function (err, dataStr) {
if (err) {
return console.log('读取文件失败!' + err.message);
} else {
console.log('读取文件成功!' + dataStr);
}
})
__dirname 表示当前文件所处的目录
fs.readFile(__dirname + '/files/1.txt','utf8', function (err, dataStr) {
if (err) {
return console.log('读取文件失败!' + err.message);
} else {
console.log('读取文件成功!' + dataStr);
}
})
path模块
导入 path 模块
const path = require('path');
path.join() 方法
路径使用path.join()方法拼接
fs.readFile(path.join(__dirname, './files/1.txt'),'utf8', function (err, dataStr) {
if (err) {
return console.log('读取文件失败!' + err.message);
} else {
console.log('读取文件成功!' + dataStr);
}
})
path.basename()
path.basename()可以从文件路径中获取文件的名称部分
const fpath = 'D:\\Download\\Microsoft VS Code\\pro\\nodejs\\files\\成绩-ok.txt';
var fullName = path.basename(fpath);
console.log(fullName);
//输出: 成绩-ok.txt
var nameWithoutExt = path.basename(fpath,'.txt');
console.log(nameWithoutExt);
//输出: 成绩-ok
path.extname()
path.extname() 获取文件扩展名
const fpath = 'D:\\Download\\Microsoft VS Code\\pro\\nodejs\\files\\成绩-ok.txt';
const fext = path.extname(fpath);
console.log(fext);
//输出:.txt
创建 web 服务器的基本操作
1. 导入 http 模块
const path = require('path');
2.创建 web 服务器实例
const server = http.createServer();
3.为服务器实例绑定 request 事件,监听客户端的请求
server.on('request', function (req, res) {
console.log('Someone visit our server.');
});
4.启动服务器
server.listen(8080, function () {
console.log('server runing at http://127.0.0.1:8080');
});
了解 req请求对象
const server = http.createServer();
// req 是请求对象,包含了与客户端相关的数据和属性
server.on('request', (req) => {
// req.url 是客户端请求的 URL 地址
const url = req.url;
// req.method 是客户端请求的 method 类型
const method = req.method;
const str = `your request url is ${ url },and request method is ${ method }`
console.log(str);
});
server.listen(8080, () => {
console.log('server runing at http://127.0.0.1:8080');
});
res 响应对象 res.end()
const server = http.createServer();
// req 是请求对象,包含了与客户端相关的数据和属性
server.on('request', (req, res) => {
// req.url 是客户端请求的 URL 地址
const url = req.url;
// req.method 是客户端请求的 method 类型
const method = req.method;
const str = `your request url is ${ url },and request method is ${ method }`
console.log(str);
// 调用 res.end() 方法,向客户端响应一些内容
res.end(str);
});
server.listen(8080, () => {
console.log('server runing at http://127.0.0.1:8080');
});
解决中文乱码问题
// 为防止中文显示乱码问题,需要设置响应头 Content-Type 的值为 text/html; charset = utf-8
res.setHeader('Content-Type','text/html; charset=utf-8');
```
```js
const server = http.createServer();
server.on('request', (req, res) => {
// req.url 是客户端请求的 URL 地址
const url = req.url;
// req.method 是客户端请求的 method 类型
const method = req.method;
const str = `你请求的 url 地址是 ${ url }, 请求的 method 类型是 ${ method }`;
// 为防止中文显示乱码问题,需要设置响应头 Content-Type 的值为 text/html; charset = utf-8
res.setHeader('Content-Type','text/html; charset=utf-8');
// 调用 res.end() 方法,向客户端响应一些内容
res.end(str);
});
server.listen(8080, () => {
console.log('server runing at http://127.0.0.1:8080');
});
根据不同的 url 响应不同的 html 内容
const server = http.createServer();
server.on('request', (req, res) => {
//1. 获取请求的 url 地址
const url = req.url;
//2. 设置默认的响应内容为 404 Not found
let content = '<h1>404 Not found</h1>';
//3. 判断用户请求的是否为 / 或 /index.html 首页
//4. 判断用户请求的是否为 /about.html 关于页面
if (url === '/' || url === '/index.html') {
content = '<h1>首页</h1>'
}else if (url === '/about.html') {
content = '<h1>关于页面</h1>'
};
//5. 设置 Content-Type 响应头,防止中文乱码
res.setHeader('Content-Type','text/html; charset=utf-8');
//6. 使用 res.end() 把内容响应给客户端
res.end(content);
});
server.listen(8080, () => {
console.log('server runing at http://127.0.0.1:8080');
});
module.exports
module.exports 对象,将模块内的成员共享出去,供外界使用
外界用 require() 方法导入自定义模块时,得到的就是 module.exports 所指向的对象
在一个自定义模块中,默认情况下,moudule.expots = {}
const m = require('./11.自定义模块');
console.log(m);
//输出为:nickname: '张三',
//sayHi() {Object Function}
11.自定义模块.js
// 向 module.exports 对象上挂载 username 属性
module.exports.username = 'zs';
//向 module.exports 对象上挂载 sayHello 方法
module.exports.sayHello = function () {
console.log('hello!');
}
const age = 20;
//
module.exports.age = age;
//让 module.exports 指向一个全新对象
module.exports = {
nickname: '张三',
sayHi() {
console.log('Hi!');
}
}
exports 对象
exports 对象 ,默认情况下,exports 和 module.exports 指向同一个对象
最终共享结果,以module.exports 指向对象为准
格式化时间
格式化时间的传统做法
1.创建格式化时间的自定义模块
2.定义格式化时间的方法
function dateFormat(dtStr) {
const dt = new Date(dtStr);
const y = dt.getFullYear();
const m = padZero(dt.getMonth() + 1);
const d = padZero(dt.getDate());
const hh = padZero(dt.getHours());
const mm = padZero(dt.getMinutes());
const ss = padZero(dt.getSeconds());
return `${y}-${m}-${d} ${hh}:${mm}:${ss}`
}
3.创建补零函数
function padZero(n) {
return n > 9 ? n : '0' + n;
}
4.从自定义模块中导出格式化时间的函数
module.exports = {
dateFormat
}
5.导入格式化时间的自定义模块
const TIME = require('./dateFormat.js');
//6. 调用格式化时间的函数
const dt = new Date();
console.log(dt);
const newDT = TIME.dateFormat(dt);
console.log(newDT);
dateFormat.js
//定义格式化时间的方法
function dateFormat(dtStr) {
const dt = new Date(dtStr);
const y = dt.getFullYear();
const m = padZero(dt.getMonth() + 1);
const d = padZero(dt.getDate());
const hh = padZero(dt.getHours());
const mm = padZero(dt.getMinutes());
const ss = padZero(dt.getSeconds());
return `${y}-${m}-${d} ${hh}:${mm}:${ss}`
}
//3. 创建补零函数
function padZero(n) {
return n > 9 ? n : '0' + n;
}
// 导出格式化时间的函数
module.exports = {
dateFormat
}
格式化时间的高级做法
格式化时间的高级做法 moment 包 官方 API 文档 https://www.npmjs.com/
1.使用 npm 包管理工具,在项目中安装格式化时间的包 moment
npm i moment
2.使用 require() 导入包
const moment = require('moment');
//3. 参考 moment 的官方 API 文档对时间进行格式化
const dt = moment().format('YYYY-MM-DD HH:mm:ss');
console.log(dt);
HTML转义
1.定义HTML转义方法
function htmlEscape (htmlStr) {
return htmlStr.replace(/<|>|"|&/g, (macth) => {
switch (macth) {
case '<':
return '<'
case '>':
return '>'
case '"':
return '"'
case '&':
return '&'
}
})
}
2.定义还原 html 字符串的函数
function htmlUnEscape(str) {
return str.replace(/<|>|"|&/g, (macth) => {
switch (macth) {
case '<':
return '<'
case '>':
return '>'
case '"':
return '"'
case '&':
return '&'
}
})
}
3.向外共享成员
module.exports = {
htmlEscape,
htmlUnEscape
}
4.导出模块,使用
const itheima = require('./itheima-tools');
const htmlStr = '`<h1 title="abc">`这是h1标签`<span>`123 `</h1>`'
const str = itheima.htmlEscape(htmlStr);
console.log(str);
console.log("-----------------------------");
// 还原 html 字符串
const str2 = itheima.htmlUnEscape(str);
console.log(str2);
console.log("-------------------------------");
js 文件
// 定义HTML转义方法
function htmlEscape (htmlStr) {
return htmlStr.replace(/<|>|"|&/g, (macth) => {
switch (macth) {
case '<':
return '<'
case '>':
return '>'
case '"':
return '"'
case '&':
return '&'
}
})
}
// 定义还原 html 字符串的函数
function htmlUnEscape(str) {
return str.replace(/<|>|"|&/g, (macth) => {
switch (macth) {
case '<':
return '<'
case '>':
return '>'
case '"':
return '"'
case '&':
return '&'
}
})
}
module.exports = {
htmlEscape,
htmlUnEscape
}
开发属于自己的包 (itheima-tools)
包必须有 index.js 文件 package.json README.md
将不同功能进行模块化拆分,放入src文件夹中,存入不同 js 文件
然后在 index.js 中导入模块,得到需要向外共享的方法
在 index.js 中,使用 module.exports 把对应的方法共享出去
Express 快速创建 Web 服务器
使用 express 创建最基本的的服务器
先安装express包
npm i [email protected]
//1. 导入 express
const express = require('express');
//2. 创建 web 服务器
const app = express();
//3. 启动 Web 服务器
app.listen(80, () => {
console.log("express server running at http://127.0.0.1");
});
标签:return,log,err,server,console,nodejs.01,const
From: https://www.cnblogs.com/LuBingBing/p/16904795.html