【node】初识node以及fs操作,path操作以及http操作(一)

1、不同浏览器使用不同的javaScript引擎

        chrome =>  v8

        Firefox  => OdinMonkey(奥丁猴)

        safri      => JSCore

        IE浏览器=>Chakra(查克拉)

2、node是一个基于chrome v8引擎的javaScript运行环境

浏览器是JavaScript的前端运行环境,node.js是JavaScript的后端运行环境

node.js中无法调用DOM和BOM等浏览器内置API。

3、node简单操作

查看node版本号 node -v

运行js文件 node 文件名

4、fs文件系统模块

fs是Node.js官方提供的、用来操作文件的模块

fs.readFile(); // 读取指定文件内容
fs.writeFile();//向指定文件中写入内容

JavaScript引入fs模块

const fs = require('fs')

 (1)读取指定文件内容

// fs.readFiles(path[,option],callback)
// 参数1:必选参数,字符串,表示文件的路径。
// 参数2:可选参数,表示以什么编码格式来读取文件。
// 参数3:必选参数,文件读取完成后,通过回调函数拿到读取的结果,
const fs = require('fs');
fs.readFile('read.txt','utf8',function(err,dataStr){console.log(err);console.log(dataStr);
})fs.readFile('read.txt','utf8',function(err,dataStr){if(err){return console.log(err);}console.log(dataStr);
})

(2)向指定文件写入内容

/ fs.readFile(file,data[,option],callback)
// 参数1:必选参数,文件的路径字符串,表示文件存放路径。
// 参数2:必选参数,表示写入内容。
// 参数2:可选参数,表示以什么编码格式来读取文件,默认utf8。
// 参数3:必选参数,文件写入完成后,通过回调函数拿到读取的结果,、const fs = require('fs');fs.writeFile('read.txt','hello!',function(err){if(err){return console.log("文件写入失败:"+err);}else{console.log("文件写入成功");}
})

如果成功 err==null 否则err返回一个错误对象

记事本中换行:\r\n

路径参数时, \  要写成  \\

process、__filename、__dirname

// 当前文件位置,绝对路径

console.log('__filename', __filename);

// 当前文件目录路径

console.log('__dirname', __dirname);

// 命令行的根路径  process进程对象,唯一对象

console.log('process.cwd()', process.cwd());

// 输出环境变量

console.log(process.env);

5、path模块

path 模块是 Node.is 官方提供的、用来处理路径的模块。它提供了一系列的方法和属性,用来满足用户对路径的处理需求。

(1)path.join() 方法,用来将多个路径片段拼接成一个完整的路径字符串

(2)path.basename() 方法,用来从路径字符串中,将文件名解析出来

(3)path.extname() 方法,获得路径扩展名

const path = require('path');
let resPath = path.join('a', 'b', 'c', '../', 'def/g'); // 不校验路径的合法性
// 相对路径获取其对应的绝对路径
let resolvePath = path.resolve('./a/b', 'c/d', 'e', 'xxx.txt');
// 进一步操作路径,以对象的方式解析路径
let pathObj = path.parse(resolvePath);const fullName = path.basename('/a/b/index.html'); // index.html
const nameWithoutExt = path.basename('/a/b/index.html','.html');

路径中 ../会抵消前面的路径

路径拼接使用 path.join(__dirname,'123.txt');,不要使用 “ + ” 。

6、http模块

(1)IP地址

客户端:负责消费资源的电脑

服务器:负责对外提供网络资源的电脑

http模块是node提供的,普通电脑可以通过http.createServer()方法变成服务器。

IP地址:在互联网上每台电脑唯一地址,格式--点分十进制,

ping IP地址

自身IP地址,测试 127.0.0.1

 (2)域名和域名服务器

字符型地址方案-域名地址

域名服务器是提供IP地址和域名之间转换服务的服务器

127.0.0.1 ==> localhost

(3)端口号

  1. 每个端口号不能同时间被多个web服务占用
  2. URL中80端口可以省略

 (4)创建最基本web服务器

创建 web 服务器的基本步骤

① 导入 http 模块

const http = require('http')

② 创建 web 服务器实例

调用http.createServer()方法,即可快速创建一个web服务器实例

const server = http.createServer()

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

// 使用服务器实例 .on() 方法,为服务器绑定一个request事件
server.on('request',(req, res)=>{// 只要有客户端来请求我们自己的服务器,就会触发request事件,从而调用这个事件处理函数console.log('Someone visit our web server')})

④ 启动服务器

调用服务器实例的 .listen()方法,即可启动当前的web服务器实例:

server.listen(80, ()=>{console.log('http server running at http://127.0.0.1')})

 (5) req请求对象

只要服务器接收到客户端得请求,就会调用通过server.on()为服务器绑定request事件处理函数

如果想在事件处理函数中访问客户端相关的数据或属性,可以用req请求对象

server.on('request', function (req, res) {const url = req.url;const method = req.method;
})

(6) res响应对象

访问与服务器相关得数据或属性,采用res.end

server.on('request', function (req, res) {const url = req.url;const method = req.method;const str =`request is ${url},method is ${method}`// 调用res.end()方法,向客户端响应内容res.end(str);
})

 

中文乱码问题

res.setHeader('Content-Type','text/html; charset=utf-8');

(7) 不同url响应不同页面

① 获取请求得url地址

② 设置默认响应内容

③ 判断用户请求得是否为/ 或/index.html首页

④ 判断用户请求得是否为 /其他页面

⑤ 设置响应头,防止乱码

⑥ 使用res.end()把内容响应给客户端

const http = require('http')
const server = http.createServer()
server.on('request', function (req, res) {const url = req.url;let content = '<h1>404 Not found!</h1>';if(url==='/'|url==='/index.html'){content = '<h1>首页</h1>'}else if(url === '/about.html'){content = '<h1>about页面</h1>'}res.setHeader('Content-Type','text/html; charset=utf-8');// 调用res.end()方法,向客户端响应内容res.end(content);
})
server.listen(80, function () {console.log('server running at http://127.0.0.1:80')
})

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

社交媒体的未来图景:探索Facebook的数字化之旅

随着科技的迅猛发展&#xff0c;数字化社交已经成为了我们日常生活中不可或缺的一部分。在这个数字化时代&#xff0c;社交媒体平台扮演着重要角色&#xff0c;其中Facebook作为社交媒体的先锋&#xff0c;不断探索创新之路&#xff0c;引领着数字化社交的未来发展。本文将深入…

力扣:链表篇章

1、链表 链表是一种通过指针串联在一起的线性结构&#xff0c;每一个节点由两部分组成&#xff0c;一个是数据域一个是指针域&#xff08;存放指向下一个节点的指针&#xff09;&#xff0c;最后一个节点的指针域指向null&#xff08;空指针的意思&#xff09;。 2、链表的类…

图【数据结构】

文章目录 图的基本概念邻接矩阵邻接表图的遍历BFSDFS 图的基本概念 图是由顶点集合及顶点间的关系组成的一种数据结构 顶点和边&#xff1a;图中结点称为顶点 权值:边附带的数据信息 路径 &#xff1a; 简单路径 和 回路&#xff1a; 子图&#xff1a;设图G {V, E}和图G1…

考研C语言复习进阶(1)

目录 1. 数据类型介绍 1.1 类型的基本归类&#xff1a; 2. 整形在内存中的存储 2.1 原码、反码、补码 2.2 大小端介绍 3. 浮点型在内存中的存储 ​编辑 1. 数据类型介绍 前面我们已经学习了基本的内置类型&#xff1a; char //字符数据类型 short //短整型 int /…

【Python】random库

专栏文章索引&#xff1a;Python 原文章&#xff1a;Python中random函数用法整理_python random-CSDN博客 目录 1.random.random() 2.random.uniform(a, b) 3.random.randint(a, b) 4.random.randrange([start], stop[, step]) 5. random.choice() 6. random.shuffle(x[,…

测试用例的设计(2)

目录 1.前言 2.正交排列(正交表) 2.1什么是正交表 2.2正交表的例子 2.3正交表的两个重要性质 3.如何构造一个正交表 3.1下载工具 3.1构造前提 4.场景设计法 5.错误猜测法 1.前言 我们在前面的文章里讲了测试用例的几种设计方法,分别是等价类发,把测试例子划分成不同的类…

鸿蒙开发面试真题分享~

1. 在鸿蒙应用开发中&#xff0c;有哪些常用的性能优化策略和技术手段&#xff0c;如启动速度优化、内存管理优化、功耗控制等&#xff1f; 参考答案&#xff1a; 2. 鸿蒙系统强调跨平台特性&#xff0c;你会如何利用这一特性来优化多端部署和适配&#xff1f; 参考答案&…

关于Spark中OptimizeShuffleWithLocalRead 中自己的一些理解

背景 本文基于 Spark 3.5 关于ShuffleLocalRead的作用简单的来说&#xff0c;就是会按照一定的规则&#xff0c;从一个 map Task 中连续读取多个 reduce数据 的任务&#xff0c;&#xff08;正常的情况下是读取所有map Task中特定的一个reduce数据任务&#xff09;&#xff0c…

DJI RONIN 4D变0字节恢复案例

RONIN 4D这个产品听起来比较陌生&#xff0c;还是DJI大疆出品。没错&#xff0c;这是大疆进军影视级的重点明星机型。前阵子刚处理过大疆RONIN 4D的修复案例&#xff0c;下边这个案例是和exfat有关的老问题:文件长度变成0字节。 故障存储:希捷18T /MS Exfat文件系统。 故障现…

海豚调度系列之:任务类型——SPARK节点

海豚调度系列之&#xff1a;任务类型——SPARK节点 一、SPARK节点二、创建任务三、任务参数四、任务样例1.spark submit2.spark sql 五、注意事项&#xff1a; 一、SPARK节点 Spark 任务类型用于执行 Spark 应用。对于 Spark 节点&#xff0c;worker 支持两个不同类型的 spark…

Orange3数据预处理(离散化组件)

离散化&#xff1a;将数值属性转换为分类属性。 输出 数据&#xff1a;具有离散化值的数据集 设置离散化的默认方法。 选择变量以为每个变量设置特定的离散化方法。将鼠标悬停在变量上显示区间。 离散化方法Keep numeric(保持数值)&#xff1a;保持变量不变。Remove (移除)&a…

介绍第一位 AI 软件工程师 Devin

认识 Devin&#xff0c;世界上第一位完全自主的 AI 软件工程师。 ‍ Devin 是一位孜孜不倦、技术娴熟的队友&#xff0c;同样愿意与您一起构建或独立完成任务供您查看。 有了 Devin&#xff0c;工程师可以专注于更有趣的问题&#xff0c;工程团队可以为更雄心勃勃的目标而奋斗。…

如何利用生成式人工智能撰写英语商务邮件?

写商务邮件简介 在当今数字化时代&#xff0c;能够撰写有效的商务邮件是一项无价的技能。电子邮件是专业世界中主要的沟通方式&#xff0c;在轻松跨越距离和时区的同时&#xff0c;也带来了一系列挑战&#xff1b;它要求清晰、高效&#xff0c;并遵循某些专业礼仪的潜在规则。…

常用的gpt网站

ChatGPT是一款基于人工智能技术的对话型AI助手&#xff0c;能够进行自然语言交互并提供个性化的对话服务。通过先进的深度学习模型&#xff0c;ChatGPT能够理解用户输入的文本&#xff0c;并生成有逻辑、连贯性的回复。它可以回答各种问题、提供建议、分享知识&#xff0c;还能…

2024年软考计划开始了,你准备好了吗?

目录标题 2024年度计算机技术与软件专业技术资格&#xff08;水平&#xff09;考试工作计划计算机软考中级科目哪个含金量最高&#xff1f;报考流程和说明 2024年度计算机技术与软件专业技术资格&#xff08;水平&#xff09;考试工作计划 一、2024年度计算机软件资格考试(初级…

SSM整合和实战练习笔记

SSM整合和实战练习1 SSM整合springmvc配置业务层 service aop tx的配置mybatis整合配置&#xff08;方式2容器初始化配置类访问测试mapper层service层controller层 实战练习前端程序搭建后端程序搭建配置类创建实体类三层架构搭建(controller service mapper)功能实现&#xff…

Java学习笔记(7)

练习 package exercise3;public class FightTest {public static void main(String[] args) {Role r1 new Role("kobe", 100);Role r2 new Role("james", 100);while (true) {r1.attack(r2);if (isWin(r1,r2)) break;r2.attack(r1);if (isWin(r2,r1)) br…

虚幻4 | 制作游戏——学习记录(一)

1. 启动Epic后下载虚幻4&#xff0c;打开虚幻4后新建一个第三人称游戏项目&#xff0c;效果如下&#xff1a; &#xff08;1&#xff09;内容/ThirdPersonBP/Blueprints中的ThirdPersonCharacter&#xff08;左下角人物&#xff09; 这是模板中使用的主要蓝图类&#xff0c;它…

Frostmourne - Elasticsearch源日志告警配置

简介 配置Frostmourne 接入Elasticsearch源进行日志匹配告警&#xff0c;并静默规则&#xff0c;告警消息发送到企业微信&#xff0c;告警信息使用Markdown。 部署安装教程查看&#xff1a; https://songxwn.com/frostmourne_install ELK 安装教程&#xff1a;https://songx…

【Android】 ClassLoader 知识点提炼

1.Java中的 ClassLoader 1.1 、ClassLoader的类型 Java 中的类加载器主要有两种类型&#xff0c;即系统类加载器和自定义类加载器。其中系统类 加载器包括3种&#xff0c;分别是 Bootstrap ClassLoader、Extensions ClassLoader 和 Application ClassLoader。 1.1.1.Bootstra…