Node.js内置模块:fs、path、http

path模块+用 fs path 正则表达式 CV
http模块+加载服务器资源

注意:在es6中 __dirname __filename 要这样才能用

import { fileURLToPath } from 'url';
import { dirname } from 'path';
const __filename = fileURLToPath(import.meta.url);
const __dirname = dirname(__filename);

console.log(__dirname);
console.log(__filename);

fs 文件系统模块

/*
*fs模块
*/
console.log(__dirname)// 当前文件目录
console.log(__filename)// 当前文件
// 路径拼接( __dirname+'/1.txt' 或者用:path.join(__dirname,'1.txt'))

const fs = require('fs');//导入fs模块
// err返回错误信息(成功:null)
// datastr是文件里的数据(读取失败:undefined)
// utf-8是默认编码形式(可省略)
fs.readFile(__dirname + '\\1.txt', 'utf-8', function (err, dataStr) {
    if (err !== null) {
        console.log(err); return;
    }
    console.log('文件读取成功:\n' + dataStr);

    //成绩读取实例
    var arrOld = dataStr.split(' ');
    console.log(arrOld);
    var arrNew = [];
    arrOld.forEach(item => {
        arrNew.push(item.replace('=', ':'));
    });
    console.log(arrNew)
    const newStr = arrNew.join('\n');
    console.log(newStr);

    fs.writeFile(path.join(__dirname,'2.txt'), newStr, function (err) {
        if (err !== null) {
            console.log('文件写入失败'); return;
        }
        else{
            console.log("文件写入成功")
        }
    });

});

在这里插入图片描述

path 路径模块

/*
* path模块
*/

const path = require('path');
//join 路径拼接
var pathStr = path.join('C:', '/b/c/d', '../', './e', 'f.html');
console.log(pathStr);// C:\b\c\e\f.html
// basename 获取文件名,第二个参数是隐藏拓展名(可不加)
var fullName = path.basename(pathStr, '.html');
console.log(fullName)// f.html
// extname 获取文件拓展名
var fext = path.extname(pathStr);
console.log(fext)// .html

用 fs path 正则表达式 CV

const fs = require('fs')
const path = require('path')

// 正则表达式:\s空白字符 \S非空白字符 *任意个 \转义字符
const styleStr = /<style>[\s\S]*<\/style>/
const scriptStr = /<scrpt>[\s\S]*<\/script>/

fs.readFile(path.join('1.html'), 'utf-8', function (err, dataStr) {
    if (err) {
        console.log('err'); return;
    } else {
        resolveCSS(dataStr);
        //resolveJS(dataStr);
    }
})
// 用于提取style标签的内容
function resolveCSS(htmlStr){
    // 按照styleStr方式处理,处理了的是第一个字符串,第二个是全部
    let r1 =styleStr.exec(htmlStr)
    let newCSS=r1[0].replace('<style>','').replace('</style>','');//把style去掉
    // console.log(r1)
    console.log(newCSS)
    //然后再写入文件
    fs.writeFile(path.join(__dirname,'1.css'), newCSS, function (err) {
        if (err) {
            console.log('err'); return;
        }
    })
}
// 提取script标签的内容(同上)

http模块

/*
* http模块
*/
const http = require('http');
// 创建web server实例
const server = http.createServer()

// 绑定request事件,response
server.on('request', function (req, res) {
    // 客户端请求的url地址(从端口号后开始)
    let url=req.url
    // req.method 客户端请求的method类型
    let str = `你请求的地址是${req.url},and erquest methon is ${req.method}`//注意是反引号
    
    // 为防中文乱码,需设置响应头
    res.setHeader('Content-Type', 'text/html; charset=utf-8')
    // 设置响应头 text/html 才能用html标签
    let content;
    if(url==='/'){
        content='<h1>首页</h1>'
    }else if(url==='/a.html'){
        content='<h1>第二页</h1>'
    }else{
        content='<h2>404 Not Found!</h2>'
    }

    res.end(content)//响应请求
})

// 启动server,第一个参数为端口号
server.listen(8080, function () {
    console.log('server running at http://127.0.0.1:8080')
})

加载服务器资源

const fs = require('fs')
const path = require('path')
const http = require('http')
const server = http.createServer();
server.on('request', function (req, res) {
    let url = req.url;
    let fpath = '';
    if (url === '/') {
        fpath = path.join(__dirname, '/a/默认首页.html')
    } else if (url === '/b.html') {
        fpath = path.join(__dirname, 'b', url)
    } else {
        fpath = path.join(__dirname, url)
    }
    fs.readFile(fpath, 'utf-8', function (err, dataStr) {
        if (err) {
            res.end('404 not found!')
        }
        else {
            res.end(dataStr)
        }
    })
})
let duankohao = 90
server.listen(duankohao, function () {
    console.log('server running at http://127.0.0.1:' + duankohao);
});

导入css,js时需要 加入到 静态资源中或者 添加router 让css,js可以通过服务访问。
我导入时发现在else{}里面拼接路径时,fpath = path.join(__dirname, url)可以导入,fpath = path.join(__dirname, ‘b’, url) 就不能导入(就算没到else里面,就只进了if()里面,默认页面也没导入css)
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小木荣

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值