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

news2024/11/18 0:19:30

🥳博       主:初映CY的前说(前端领域)

🌞个人信条:想要变成得到,中间还有做到!

🤘本文核心:Node.js的fs\path\http模块的使用,模块化开发概念


目录

一、node.js概念与作用

1.概念:

2.作用:

二、模块发开发三大板块

1.模块化开发介绍

2.常见三大模块 

1.fs 读写模块

        writeFile()的使用

        writeFile()的使用

2.path 路径模块

3.http 搭建服务器模块



先上本文的核心图

一、node.js概念与作用

1.概念:

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

2.作用:

  1. 具有超强的高并发能力,能够实现高性能服务器
  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);
  }
})

③在集成终端查看

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

 writeFile()的使用

①导入内置模块

const fs = require('fs')

②使用模块

第一个参数: 文件路径

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

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

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

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

③在集成终端查看

 点开bbb.txt查看内容

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

集成终端查看


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

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

集成终端查看


(3) 拼接绝对路径

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

集成终端查看


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

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

 集成终端查看

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('服务器开启成功')
})

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

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

方法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(浏览器响应)

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

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

 方法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('服务器开启成功')
  })

网页地址栏搜索

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/136216.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一个曾经分享动态(2021)的回顾和解释-2023-

虽然看过一些典故,里面有名言道: 解释永远是多余的,理解的人不需要,不理解的更不需要。 但是,误会还是需要沟通来消除的。 例如,曾经分享过: 如下都是误会 ↓↓↓↓↓↓↓↓↓ 有朋友联系我&a…

解决东方财富数据接口激活后仍显示reactive的问题

首先确保代码可以在python中导入这个包: from EmQuantAPI import c如果无法导入,就是python没有配置好东方财富的接口,可以参考: Mac版本:Mac使用Python接入东方财富量化接口Choice,调试与获取数据Window…

北京智和信通:信创运维自动化,全栈适配国产软硬件环境

近年来,新基建和信创产业政策东风席卷神州,国产CPU、操作系统、关键应用软件等核心技术步入发展快车道,一批优秀软硬件产品走进政府机关、国企事业单位。在国产软硬件核心技术崛起的过程中,如何迅速搭建起成熟的生态环境是行业面临…

LeetCode135之分发糖果(相关话题:数组,贪心思想)

题目描述 n 个孩子站成一排。给你一个整数数组 ratings 表示每个孩子的评分。 你需要按照以下要求,给这些孩子分发糖果: 每个孩子至少分配到 1 个糖果。相邻两个孩子评分更高的孩子会获得更多的糖果。 请你给每个孩子分发糖果,计算并返回需…

【node.js】跨域的解决办法(CORS方法、同源策列的理解)

🥳博 主:初映CY的前说(前端领域) 🌞个人信条:想要变成得到,中间还有做到! 🤘本文核心:面对cors跨域、同源策略的处理 下图为本文的核心 目录 一、 跨域介绍 二、同源策略 三…

正态分布与numpy.random.normal函数

文章目录1. 正态分布2. numpy.random.normal函数3. 示例在Numpy中,有一个专门用于生成符合正态分布的随机数函数:numpy.random.normal,本文我们梳理一下它的使用方法,在梳理前,需要先了解一下什么是正态分布。 1. 正态…

黑马Hive+Spark离线数仓工业项目-任务流调度工具AirFlow(1)

任务流调度工具AirFlow 1. AirFlow介绍【了解】 - 功能、特点 - 架构角色、安装部署 2. **AirFlow使用【掌握】** - 核心:调度脚本【Python | Shell】 - 定时调度:Linux Crontab表达式 - 邮件告警:配置 3. 回顾Spark核心概念 - 存…

【10个基本网络故障排查工具-每个IT专业人员应了解】

网络故障排除工具是每个网络管理员的必需品。 在网络领域入门时,重要的是要积累一些可用于解决各种不同网络状况的工具。 虽然特定工具的使用确实是主观的并且由工程师自行决定,但本文中的工具选择是基于它们的一般性和通用性。 本文回顾了可帮助您解决大…

聊聊业务项目如何主动感知mysql是否存活

前言 先前写过一篇文章聊聊如何利用redis实现多级缓存同步,里面讲到业务部门因数据库宕机,有技术提出当数据库宕机,切换到redis,今天我们就来聊聊如何触发这个切换动作? 1、方案一:利用异常机制 伪代码如下&#xf…

大三寒假人生第一次面试失败

2022/12/28,今天是人生第一次面试。坐了2个小时的地铁去面试结果却很惨。一开始进门就笔试,当看到笔试题时发现很多基础,平时耳熟能详的词汇却怎么样也回答不出来。做了一个多小时,当面试官把题改了以后一句笔试没过。说真的在出门…

RocketMQ消息队列的下载、配置、启动、测试

目录 下载 环境变量的配置 新建一个变量 配置path 新建变量 启动 命名服务器 启动broker 测试是否启动成功 下载 地址:RocketMQ 官方网站 | RocketMQ 切换到中文模式很容易看的 下载那一列就行了 安装很容易的。 环境变量的配置 新建一个变量 就是你的bin文…

No.181# 点直播简要架构梳理走查

引言直播带货、潮流电商、短视频不断融合,本文走查下音视频直播的简要架构和角色。选择UDP,注重传输实时性,在线教育、音视频会议等。选择TCP,注重画面质量、是否卡顿等,娱乐直播、直播带货等。本文主要内容有&#xf…

RPA:帮助企业完成财务数字化转型

为什么要做财务的数字化转型 a. 传统企业财务的现状 “重复性强、耗时耗力、效率低下”是目前大家对传统企业财务的固有印象。很多企业的财务部门仍然采用传统的手工操作模式,财务流程繁琐分散,且财务部门缺乏获取、处理数据的工具。绝大部分的人力都投…

2022LOL微博杯模糊问题,1080p高清看微博杯the shy比赛直播

2022LOL微博杯的直播模糊,看着不爽 观看方法 1.打开下面在线播放m3u8文件的地址 http://www.m3u8.zone/ 如图 2.输入播放地址 微博杯的播放地址: (1月三号的地址 如果失效往下看解决方法) https://plwb01.live.weibo.com/ali…

前端数据结构与算法

前端数据结构与算法 文章宝典 链表 可以快速删除和插入节点,只用修改节点的引用 实例 队列 实例 栈 实例 树 并且左节点的值和后续节点的值都要小于等于该节点的值 图 根据图的节点之间的边是否有方向,可以分为有向图和无向图。 在有向图…

数字调制系列:如何理解IQ ?

最近在筹划写一系列关于数字IQ 调制的短文,以帮助初学者能够更好地理解和掌握。虽然IQ 调制技术已经非常广泛地应用于各种无线通信应用中,但是究其细节,仍有很多人存在疑惑,尤其对于初学者。作者从事测试工作多年,对IQ…

强化学习的Sarsa与Q-Learning的Cliff-Walking对比实验

强化学习的Sarsa与Q-Learning的Cliff-Walking对比实验Cliff-Walking问题的描述Sarsa和Q-Learning算法对比代码分享需要改进的地方引用和写在最后Cliff-Walking问题的描述 悬崖行走:从S走到G,其中灰色部分是悬崖不可到达,求可行方案 建模中&am…

(Java)【深基9.例4】求第 k 小的数

【深基9.例4】求第 k 小的数 一、题目描述 输入 nnn&#xff08;1≤n<50000001 \le n < 50000001≤n<5000000 且 nnn 为奇数&#xff09;个数字 aia_iai​&#xff08;1≤ai<1091 \le a_i < {10}^91≤ai​<109&#xff09;&#xff0c;输出这些数字的第 kk…

元旦礼第三弹!玻色量子荣登2022年中国创新力量50榜单

​2022年12月&#xff0c;国内最大的创新者社区极客公园重磅发布了全新的「中国创新力量 50 榜单&#xff08;InnoForce 50&#xff09;」——在过去一年为泛计算机科学领域及其交叉领域带来创新和突破的中国公司/机构。玻色量子凭借在光量子计算领域突出的核心竞争力&#xff…

配电网前推后带法求电力系统潮流(PythonMatlab实现)

目录 1 概述 2 数学模型 3 节点分层前推回代潮流计算及步骤 3.1 计算方法 3.2 计算步骤 4 算例及数据 5 Matlab&Python代码实现 1 概述 配电网通常是单电源全网连接、开环运行&#xff0c;即呈树状。针对配电系统分析&#xff0c;其根本就是进行潮流计算。潮流计算的…