【node.js】fs\path\http模块的使用 02

简介: Node.js的fs\path\http模块的使用,模块化开发概念

先上本文的核心图

2ccf2ca7001a4fd99424056194a13fd5.png

一、node.js概念与作用

1.概念:

node.js 是一种 基于谷歌V8引擎 的 运行环境,V8是Google发布的开源JavaScript引擎,本身是用于Chrome浏览器的js解释部分

2.作用:

具有超强的高并发能力,能够实现高性能服务器

Node 包管理工具(node package manager,NPM)提供了数十万个可重用的工具包。它还提供了一流的依赖解决方案,可实现自动化工具链构建。(说白了node就是便于我们模块化的开发,需要啥就导入啥进去,不需要把整个文件都导入到我们的文件中)

二、模块发开发三大板块

1.模块化开发介绍

  • 把一个大文件拆分成很多个小文件,然后使用特定的语法组合在一起,这种开发方式叫做模块化开发

模块化开发有啥好处?

  • 按需引入,节省资源
  • 避免变量污染
  • 业务分离,便于维护

2.常见三大模块

1.fs 读写模块

writeFile()的使用

①导入内置模块

const fs = require('fs')

②使用模块

第一个参数path : 文件路径

第一个参数encoding : 文件编码  默认值二进制. 中文: utf8

第三个参数callback :  (err,data)=>{ err:错误信息  data:读取的数据 }

fs.readFile('./data/aaa.txt','utf-8',(err,data)=>{
  if(err){
    console.log(err); 
    throw err
  }else{
    console.log(data);
  }
})

③在集成终端查看

3a05a209ab44421f90b774b89ccc2913.png

输入node 文件名(可按tab快速补齐)

2c5accb85e8140a890d3d7aaca17bfc0.png

writeFile()的使用

①导入内置模块

const fs = require('fs')

②使用模块

第一个参数: 文件路径

第二个参数: 要写入的数据

第三个参数: 文件编码  默认是数据编码

第四个参数: (err)=>{ }

fs.writeFile('./data/bbb.txt','年少莫问前程,天涯亦有归途',err=>{
  if( err ){
    throw err
  }else{
    console.log('文件写入成功')
  }
})

③在集成终端查看

7b8d21c93d904dc084a1fa411e58feba.png

a562fe6a3f3147cc9ed49ef9274a992d.png

点开bbb.txt查看内容

3d68669964064eecb90b47cfd738d0e1.png

2.path 路径模块

①.导入模块

const path = require('path')

②使用模快-有四种方法

(1) 获取一个文件的拓展名

/* 不关心此路径文件在不在, 就是处理这个字符串。 获取.后面的部分可以知道这个文件格式 */
console.log( path.extname('index.html') )// .html
console.log( path.extname('aaa.bbb') )// .bbb
console.log(path.extname('javaScript.js'));//js

集成终端查看

c2547403c6214406b8e0911dc4324110.png

(2)拼接相对路径, 使用join方法

/* 把多个字符串按照路径的方式拼接起来 */
console.log( path.join('aaa','bbb') )// aaa/bbb
console.log(path.join('a,b,c'));//a,b,c

集成终端查看

349264f201364513b65cbf84c85a6ea0.png

(3) 拼接绝对路径

/* 默认从磁盘根目录开始拼接出完整的路径 */
console.log( path.resolve('/aa','bb','cc') )// 文件夹绝对路径/aa/bb/cc

集成终端查看

b47fb4f3046e4d2fa38f3e0381cf8239.png

(4)获取当前文件所在的绝对路径

console.log( __dirname )// 可获取文件夹绝对路径
console.log( path.join(__dirname , 'aaa','bbb') )

集成终端查看

16b87c004fa744e698173aaf0abe4727.png

3.http 搭建服务器模块

整体步骤:

①导入http模块

const http = require('http')

②创建服务器

const app =  http.createServer( (req,res)=>{
  // (1) req : request 请求报文
  console.log( decodeURI(req.url) )
  // console.log( req.url, decodeURI(req.url) )
  // (2)处理
  // (3)res : response 响应报文
} )

③开启http服务器

// 3.开启服务器
/* 
第一个参数 port : 端口号
  一个电脑有很多个软件,一个软件对应一个端口号. 范围[0,65535]
第二个参数 hostname : 主机名(ip地址)
  网线地址: 192.168.81.34            cmd命令:ipconfig
  本机地址: 127.0.0.1  (获取当前网线的ip地址,相当于js中的self) 
第三个参数 callback : ()=>{}
*/
app.listen(3088,'192.168.74.149',()=>{
  console.log('服务器开启成功')
})

06a923d2332040e49787c0fb0aa8af1f.png

之后进浏览器在地址栏输入,可查看到服务器接受到了666666

(查看本机IP地址,在cmd中输入ipconfig即可)

070fa6c5d3f044e6ac115a7bb07a41c4.png

方法1:在服务器中根据请求不同处理不同的信息

const http =require('http')
const app =http.createServer((req,res)=>{
    if( req.url === '/index' ){
        // 3.response : 响应报文
        // 设置响应头 :  服务器告诉浏览器我给你的数据是什么格式
        res.writeHead(200,{
          'Content-Type':'text/html;chartset=utf8'
        })
        res.end('index')//响应体
      }else if( req.url === '/login' ){
        res.writeHead(200,{
          'Content-Type':'text/json;chartset=utf8'
        })
        // 后台只能响应 字符串或二进制,  如果你想要响应其他数据需要转成json
        // js=>json :  JSON.stringify( js对象 )
        res.end( JSON.stringify( {name:'初映',age:22} ) )
      }else{
        res.end('Not Found' + req.url )
      }
})
app.listen(3088,'192.168.74.149',()=>{
    console.log('服务器开启成功')
  })

请求地址是login。res.end(浏览器响应)

1d5d2fb80a4745df92bcc8628e61c0f1.png

请求地址是index的时候。res.end(浏览器响应)

61361f1c473c4bd0802eb1d1b472956f.png

当服务器收到了错误的请求地址。res.end(浏览器响应)

7cebc1c6e0dc4c74a55d239d2936a0b8.png

方法2:nodejs响应客户端html文件

①导入需要的模块

// 1.导入
const http =require('http')
const fs =require('fs')
const path =require('path')

②创建我们的服务器

// 2.创建
const app = http.createServer((req,res)=>{
    if(req.url==='/'){
        // 响应index.html代码
        fs.readFile(path.join(__dirname,'index.html'),(err,data)=>{
            if (err) {
               throw err 
            }else{
                res.end(data)
            }
        })}}
    )

③开启服务器

// 3.开启
app.listen(3000,()=>{
    console.log('服务器开启成功')
  })

网页地址栏搜索

906215b0e4e940c2986ecdadbb27c8fb.png




相关文章
|
3天前
|
运维 网络安全 Python
使用Python http.server模块共享文件
今天给大家介绍一下Python标准库中的http.server模块。这个模块提供了一种简单的方式来快速启动一个HTTP服务器,非常适合临时共享文件、测试、教学等轻量级场景。
|
8天前
|
JSON JavaScript API
使用 Node.js 开发一个简单的 web 服务器响应 HTTP post 请求
使用 Node.js 开发一个简单的 web 服务器响应 HTTP post 请求
31 1
|
8天前
|
JSON JavaScript 中间件
使用 Node.js 开发一个简单的 web 服务器响应 HTTP get 请求
使用 Node.js 开发一个简单的 web 服务器响应 HTTP get 请求
11 2
|
8天前
|
存储 JSON JavaScript
Node.js 上开发一个 HTTP 服务器,监听某个端口,接收 HTTP POST 请求并处理传入的数据
Node.js 上开发一个 HTTP 服务器,监听某个端口,接收 HTTP POST 请求并处理传入的数据
14 0
|
8天前
|
JavaScript 前端开发 测试技术
编写JavaScript模块化代码主要涉及将代码分割成不同的文件或模块,每个模块负责处理特定的功能或任务
【5月更文挑战第10天】编写JavaScript模块化代码最佳实践:使用ES6模块或CommonJS(Node.js),组织逻辑相关模块,避免全局变量,封装细节。利用命名空间和目录结构,借助Webpack处理浏览器环境的模块。编写文档和注释,编写单元测试以确保代码质量。通过这些方法提升代码的可读性和可维护性。
18 3
|
8天前
|
JSON 前端开发 搜索推荐
BoostCompass( http_server 模块 | 项目前端代码 )
BoostCompass( http_server 模块 | 项目前端代码 )
30 4
|
8天前
|
消息中间件 监控 JavaScript
Node.js中的进程管理:child_process模块与进程管理
【4月更文挑战第30天】Node.js的`child_process`模块用于创建子进程,支持执行系统命令、运行脚本和进程间通信。主要方法包括:`exec`(执行命令,适合简单任务)、`execFile`(安全执行文件)、`spawn`(实时通信,处理大量数据)和`fork`(创建Node.js子进程,支持IPC)。有效的进程管理策略涉及限制并发进程、处理错误和退出事件、使用流通信、谨慎使用IPC以及监控和日志记录,以确保应用的稳定性和性能。
|
8天前
|
缓存 JavaScript 前端开发
Node.js的模块系统:CommonJS模块系统的使用
【4月更文挑战第29天】Node.js采用CommonJS作为模块系统,每个文件视为独立模块,通过`module.exports`导出和`require`引入实现依赖。模块有独立作用域,保证封装性,防止命名冲突。引入的模块会被缓存,提高加载效率并确保一致性。利用CommonJS,开发者能编写更模块化、可维护的代码。
|
8天前
|
JavaScript API
Node.js API实例讲解——FS 文件夹操作
Node.js API实例讲解——FS 文件夹操作
33 0
|
8天前
|
JavaScript API
node.js之模块系统
node.js之模块系统