《诗·小雅·小旻》:“战战兢兢,如临深渊,如履薄冰。”
查看当前使用的Node.js版本:node -v
执行JS:node 01.js
加载fs模块对象到自己编写的js文件中,进行写与读
数据流对象默认为十六进制,使用toString方法转化
我们在nodejs环境中执行js代码,它的所有相对路径是以终端文件夹作为起点。
疑问:在windows中要用\反斜杠吗?—— 传到join方法中会做转换
成功找到test.txt文件
使用path模块的join方法,结合_dirname生成的绝对路径,
可在任意位置开启的终端找到所需文件。
实践代码:
/**
* 目标1:压缩 html 代码
* 需求:把回车符 \r,换行符 \n 去掉,写入到新 html 文件中
* 1.1 读取源 html 文件内容
* 1.2 正则替换字符串
* 1.3 写入到新的 html 文件中
*/
// 1.1 读取源 html 文件内容
const fs = require('fs')
const path = require('path')
fs.readFile(path.join(__dirname, 'public/index.html'), (err, data) => {
if (err) console.log(err)
else {
const htmlStr = data.toString()
// 1.2 正则替换字符串
const resultStr = htmlStr.replace(/[\r\n]/g, '')
console.log(resultStr)
// 1.3 写入到新的 html 文件中
fs.writeFile(path.join(__dirname, 'dist/index.html'), resultStr, err => {
if (err) console.log(err)
else console.log('写入成功')
})
}
})
写入的代码只有一行
注意:http 协议,默认访问 80 端口(所以之前访问接口的时候没有加端口号,也能获取到数据)
执行时server.js,与之前不同,没有停止执行,它会在终端里启动一个进程,进程持续存在,监听有无请求,有请求就会触发处理函数,返回一个响应内容。
之前执行完后,会立刻出现路径,再让你输入下一条命令
实践代码:
/**
* 目标:基于 http 模块创建 Web 服务程序
* 1.1 加载 http 模块,创建 Web 服务对象
* 1.2 监听 request 请求事件,设置响应头和响应体
* 1.3 配置端口号并启动 Web 服务
* 1.4 浏览器请求(http://localhost:3000)测试
*/
// 1.1 加载 http 模块,创建 Web 服务对象
const http = require('http')
const server = http.createServer()
// 1.2 监听 request 请求事件,设置响应头和响应体
server.on('request', (req, res) => {
// 设置响应头-内容类型-普通文本以及中文编码格式
res.setHeader('Content-Type', 'text/plain;charset=utf-8')
// 设置响应体内容,结束本次请求与响应
res.end('欢迎使用 Node.js 和 http 模块创建的 Web 服务')
})
// 1.3 配置端口号并启动 Web 服务
server.listen(3000, () => {
console.log('Web 服务启动成功了')
})