node-03-node模块-内置模块

三、Node模块

1.使用步骤

  1. 下包(第三方才需要)

  2. 导包

  3. 用包

    英文文档官网:https://nodejs.org/en/

    中文文档官网: http://nodejs.cn/

2.内置模块包

1.fs模块

读取文件

const fs = require('fs'); //引入内置的fs模块

//读文件 readFile  有三个参数
//第一个参数: 要读取文件的路径
//第二个参数: 编码格式
//第三个参数: 回调函数
//           回调函数里也有2个参数
//           err 错误信息, 没有错误是null
//           data就是读取的内容.
fs.readFile('./etc/sb.txt','utf-8', (err, data) => {
    if (err) throw err;
    console.log(data);
  });

写入文件

const fs = require('fs');

const data = `
    望庐山瀑布
    日照香炉生紫烟
    遥看瀑布挂玉川
    飞流直下三千尺
    疑是银河落九天
`;

//如果没有这个文件,会创建这个文件.
//如果没有这个文件夹,会报错,不会创建文件夹的.
fs.writeFile('./etc1/2.txt', data, (err) => {
    if (err) throw err;
    console.log('文件已被保存');
  });

删除文件

var fs = require("fs");

console.log("准备删除文件!");
fs.unlink('./input.txt', function(err) {
   if (err) {
       return console.error(err);
   }
   console.log("文件删除成功!");
});
2.path
1.问题–相对路径和绝对路径

nodejs 当前工作目录是启动Node的目录,用Node操纵路径时用相对路径可能出错

解决的方法:

1.直接修改相对路径,方法不好

2.使用绝对路径,但是路径写死,在别的机器上不适用,node.js提供了两个全局变量

  • __dirname: 总是返回被执行的 js 所在文件夹的绝对路径
  • __filename: 总是返回被执行的 js 的绝对路径

此时可以使用__dirname拼接路径

__dirname+'/etc/01.txt'
//如果使用的式\,则需要使用转义符转义\\

当然可以使用nodejs内置的path模块的join方法拼接路径

const path = require('path');
const fullPath = path.join(__dirname,"etc","01.txt");
2.获取用户请求的资源名称

使用join方法进行路径拼接

//req是函数形参,自己定义的
const fullPath = path.join(__dirname,'www',req.url)
3.http
设置静态资源服务器

静态资源服务器的工作流程

在这里插入图片描述

//这里就是我们写代码来配置静态资源服务器.

// 导入 fs 模块
const fs = require('fs');
// 导入 http 模块
const http = require('http');
// 导入 path 模块
const path = require('path');

//创建服务器
const server = http.createServer((request,response)=>{
    //request请求
	//response响应
    console.log(request);
    
    //console.log(request.url); //request.url就可以获取到用户请求的静态资源名称.
    //根据用户请求的资源拼接一个路径.
    const fullPath = path.join(__dirname,'www',request.url);
    //读取文件
    //嗅探
    fs.readFile(fullPath,(err,data)=>{
        if(err == null){
            response.end(data);
        }else {
            // response.end('404 not found');
            response.end(`
            <html>
                <head>
                    <title>404 Not Found</title>
                </head>
                <body>
                    <h1>Not Found</h1>
                    <p>The requested URL ${request.url} was not found on this server.</p>
                </body>
            </html>
            `);
        }
    });

});

//开启服务器
//第一个参数是端口号
//第二个参数是回调函数,开启成功后执行的代码.
server.listen(8048,()=>{
    console.log('success');
});
  1. 接收用户的请求

  2. 接收到请求之后,获取请求的url地址

  3. 把url地址转化为服务器中的一个绝对路径

    1. 读取文件
      1. 存在 返回
      2. 不存在 404
http.createServer方法

方法说明:

该函数用来创建一个HTTP服务器,并将 requestListener 作为 request 事件的监听函数。

语法

http.createServer([requestListener])

接收参数:

requestListener 请求处理函数,自动添加到 request 事件,函数传递两个参数:

​ req 请求对象,想知道req有哪些属性,可以查看 “http.request 属性整合”。

​ res 响应对象 ,收到请求后要做出的响应。想知道res有哪些属性,可以查看 “http.response属性整合”。

例子:

例子中res指定了响应头,响应体内容为node.js,用end结束。

最后调用listen函数,监听3000端口。

var http = require('http');
http.createServer(function(req, res){
 res.writeHead(200, {'Content-type' : 'text/html'});
    //向请求发送响应头。 状态码是一个 3 位的 HTTP 状态码,如 404。 最后一个参数 headers 是响应头。 可以可选地将用户可读的 statusMessage 作为第二个参数。
    //此方法只能在消息上调用一次,并且必须在调用 response.end() 之前调用。
 res.write('<h1>Node.js</h1>');
    
 res.end('<p>Hello World</p>');
    //此方法向服务器发出信号,表明已发送所有响应头和主体,该服务器应该视为此消息已完成。
    //如果指定了 data,则相当于调用 response.write(data, encoding) 之后再调用 response.end(callback)
}).listen(3000);

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值