10.26 node.js day01

目录

global模块

fs模块

path路径模块

http模块



ctrl+L 清除终端内容

esc 清除当前行内容

tab 补全代码

ctrl+c 停止终端


global模块

__filename 当前文件所在路径

__dirname 当前文件夹所在目录的路径


fs模块

        1读取本地文件

// 需求: 读取 静夜思.txt 文件中的文本内容

// 引入fs模块 注意后面字符串
const fs=require('fs')

// 调用方法
// fs.readFile(path[, options], callback)
fs.readFile('静夜思.txt','utf-8',(err,data)=>{
  if(err){
    return console.log("读取文件错误",err);
  }
  console.log(data)
  // console.log(data.toString())
})

        2写入本地文件

                注意:参数1,注意写入的文件目录和名字

// 1.引用
const fs=require('fs')

// 2调用模块方法
//  参数1:要写入的文件,若文件没有,则自动创建
//  参数2:要写入的数据
//  参数3:配置项
//  参数4:回调函数
//     参数1:err错误对象 
//默认覆盖写法
fs.writeFile('短歌行.txt','对酒当歌,人生几何',(err)=>{
  if(err){
    return console.log('写入文件失败,',err)
  }
  console.log('写入成功');
})

        3追加写入

                (1)了解

//追加写入
fs.writeFile('短歌行.txt','譬如朝露, 去日苦多',{flag:'a'},(err)=>{
  if(err){
    return console.log('写入文件失败,',err)
  }
  console.log('写入成功');
})

        (2)

 /*fs.appendFile(path, data[, options], callback)
*/
// 需求: 往 短歌行.txt 文件中追加 譬如朝露, 去日苦多

const fs=require('fs')
fs.appendFile('短歌行.txt','\n譬如朝露, 去日苦多\n',(err)=>{
  if(err){
      return console.log('内容追加失败',err);
  }
  console.log('追加成功')
})

1) 存在问题:

 在使用 fs 模块操作文件时

 如果提供的操作路径是以./ 或 ../ 开头的相对路径时

 很容易出现路径动态拼接错误的问题

 2) 原因:

 代码在运行的时候,会以执行node 命令时所处的目录,动态拼接出被操作文件的完整路径

 3) 解决方案:

 在使用fs 模块操作文件时,直接提供绝对路径

 不要提供./ 或 ../ 开头的相对路径,从而防止路径动态拼接的问题


path路径模块

路径(Path) | Node.js 中文文档 | Node.js 中文网 (nodeapp.cn)

导入模块 

        const path=require('path')

1.path.join()

        使用平台特定的分隔符把全部给定的 path 片段连接到一起,并规范化生成的路径。

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

console.log(path.join('a','b','短歌行.txt'));//a\b\短歌行.txt

fs.readFile(path.join(__dirname,'./静夜思.txt'),'utf-8',(err,data)=>{
    if(err){
        return console.log('读取文件失败',err);
    }
    console.log(data);
})

 2.path.basename()

        返回一个 path 的最后一部分,类似于 Unix 中的 basename 命令。 没有尾部文件分隔符,

console.log(path.basename('http:www.jd.com/ddd/da/af/nb.jpg'));//nb.jpg

3.path.extname()

        返回 path 的扩展名,即从 path 的最后一部分中的最后一个 .(句号)字符到字符串结束。 如果 path 的最后一部分没有 . 或 path 的文件名(见 path.basename())的第一个字符是 .,则返回一个空字符串。

console.log(path.extname('http:www.jd.com/ddd/da/af/nb.jpg'))//.jpg

http模块

1.面试题:在浏览器输入www.baidu.com的时候,发生了什么。

                

        1.域名解析

        2.浏览器与服务器建立连接

        3.web浏览器发送HTTP请求

        4.web服务器处理请求并返回HTTP响应

        5.浏览器接收HTTP响应

        6.浏览器渲染页面

2.创建web服务器的基本步骤

        1) 导入 http 模块

         2) 创建 web 服务器实例

         3) 启动服务器           

                     参数1 端口号

                    参数2 主机地址

                    参数3 回调函数

        访问localhost:3000 

          4) 为服务器实例绑定request 事件,监听客户端的请求

const http=require('http')

const server=http.createServer()

server.listen(3000,()=>{
  console.log("已启用")
})

// 4)绑定request事件,监听客户端的请求
  // 参数1:req接受的是一个request对象,包含所有请求相关信息
  // 参数1:res接受的是一个response对象,包含所有响应相关信息,可以通过改对象给客户端返回响应数据
server.on('request',(req,res)=>{
 console.log('请求进来了')
 res.end('this is very ok')
})

3、 request对象常用属性

         headers: 所有的请求头信息

         method: 请求的方式

         url: 请求的地址

const http=require('http')

const server=http.createServer((req,res)=>{
    console.log('请求进来了');
    console.log(req.headers);
    console.log('==========')
    console.log(req.method);
    console.log(req.url);

    res.end('my niu')
})
server.listen(3000,()=>{
    console.log('端口启用');
})

4. response对象详解

http://nodejs.cn/api/http.html#http_class_http_serverresponse

常见的属性和方法:

res.write(data): 给浏览器发送响应体,可以调用多次,从而提供连续的请求体

res.end();   通知浏览器,所有响应头和响应主体都已被发送,即服务器将其视为已完成。

res.end(data); 结束请求,并且响应一段内容,相当于res.write(data) + res.end()

res.statusCode: 响应的的状态码 200 404 500

res.statusMessage: 响应的状态信息, OK Not Found ,会根据statusCode自动设置。

res.setHeader(name, value); 设置响应头信息, 比如content-type

res.writeHead(statusCode, statusMessage, options); 设置响应头,同时可以设置状态码和状态信息。

// 1导入http模块
const http=require('http')

// 2创建web服务器,并运行在3000端口上
http.createServer((req,res)=>{
    console.log('请求进来');

    // res.write('jjj')

    res.statusCode=404
    res.end('404')


}).listen(3000,()=>{
    console.log('3000端口的服务器启用');
})

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值