问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

...模块实现文件读写+如何使用http模块创建web服务器

发布网友 发布时间:2024-10-12 11:58

我来回答

1个回答

热心网友 时间:2024-10-26 07:06

node.js概念:

node.js是一个运行js的环境---Chrome和node都是基于ChromeV8引擎执行js的。

node和浏览器的差异:

1、主要是内置api不一样;

2、浏览器是js的前端运行环境,node是js的后端运行环境;

3、在浏览器端:js由三部分组成:ECMAScript+BOM+DOM;

4、在NoeJS端:由ECMAScript+内置模块(fs,http,path等)+第三方模块(别人开发的模块)。

主要学习:

1、通过npm工具来安装,卸载第三方包;

2、学会下包;

3、内置模块、自定义模块、第三方模块。

作用:

1、使自己的技术更加全面;

2、为后面学习Vue等框架打下基础;

3、理解为一个容器,用来运行js代码的环境;这个环境让js有读写文件,操作数据库,开启web服务器等能力。

node安装:

1、到https://nodejs.org/zh-cn/网页下载长期支持版node;

2、下载完安装包,一步步默认安装即可---注意不能存储在中文目录下,安装完也不会在桌面出现快捷图标;

3、打开小黑窗输入‘node-v’能看到版本号则表示安装成功。

用法:

node是在小黑窗里运行js文件的。

1、新建一个js文件;

2、在小黑窗里输入代码执行这个js文件---注意:要进入到js文件所在的文件夹,然后才能运行js文件。

如:

属性:打开小黑窗的方法:小黑窗操作node快捷键:注意点:

Node.js只是JS的服务端运行环境,不是一门语言(不需要学习新语言),而只需要学习它里面新的Api。

如果node所运行的js文件,是不能运行涉及浏览器功能的代码的,比如(alert(‘aa’),BOM节点,DOM节点等等),但是它可以运行js的基础语法。

node模块概念:

模块也是一个对象,是node的重要组成部分。

属性:

核心模块:就是nodejs自带的模块,在安装完nodejs之后,就可以任意使用啦。相当于学习js时使用的Math对象一样。

自定义模块:程序员自己写的模块。相当于我们在学习js时的自定义函数。

第三方包:其他程序员写好的模块,nodejs生态提供了一个专门的工具npm来管理第三方模块,例如我们前面学习的echarts等。

用法:

我怎么去找到核心模块呢?

答:直接在nodeapi官网查找---能在官网找到的模块都为核心模块,如果不能找到,则是第三方模块,或者自定义模块。

fs.readFile异步读取文件内容概念:

是fs模块里的一个方法;管文件大小,代码的执行顺序,是看文件读取完的先后来决定。

作用:

fs.readFile方法可以异步读取文件。

语法:

"fs.readFile(path,[,options],callback)"

---参数:

path:读取文件的路径(相对路径或绝对路径);

options:读取文件的参数配置----[,options]-可以不写;

callback:读取完毕的回调函数(err,data)=>{}?----err表示读取失败返回的数据,data表示读取成功返回的数据。

用法:

1、定义被读取的文本

2、定义读取文件的js,并用node运行js。

读取成功:data原样输出返回缓存数据,加上toString()方法则返回文件里的内容‘hello’;err则返回null。

读取失败:err原样输出为报错,加上message属性则显示具体报错信息;data则返回undefined。

注意点:

1、执行此方法,必须导入fs模板;

2、[,options]如果设置为utf8,那么我们就能得到和文件内容一样的数据,不再是二进制buffer格式,不过此时的内容是字符串格式的。另外中括号表示可写可不写的参数。

fs.readFileSync同步读取文件内容概念:

readFileSync()是fs模板里的一个方法;不管文件大小,始终是按顺序执行代码。

作用:

fs.readFileSync()方法可以同步读取文件。

语法:

"let?res=fs.readFileSync(path,[,options])"

参数:res:自定义变量名,用来接收读取的数据;

path:读取文件的路径(相对路径或绝对路径);

options:读取文件的参数配置,通常用一个utf8字符串表示即可---[,options]-可以不写。

用法:

1、定义被读取文本

2、定义读取文件的js,并用node运行js

3、结果

注意:fs.readFileSync(path,[,options])整体就为同步读取的文件的内容,直接用变量接收。

注意点:

1、读取文本内容文件时,utf8参数要加上,不然打印出来的是一个Buffer二进制内容,

加上utf8打印出来的就是文件内容,不过是字符串格式;

2、使用同步获取,要想有错误提示,就要引入trycatch;

3、'[,options]'是一般在读人家接口的时候会出现,中括号表示可写可不写的参数。

fs.writeFile异步写入内容概念:

异步向文件里写入内容。

特点:

writeFile方法是覆盖式写入,后面的内容会将前面的内容覆盖。

语法:

"fs.writeFile(path,data,[,options],callback)"

参数:path:被写入文件的路径(相对路径或绝对路径);data:要写入的内容,字符串格式;options:写入文件的参数配置,----可以省略;callback:写入完毕的回调函数(err)=>{}?----err值为写入的状态,比如写入失败或者成功。

用法:注意点:

如果path路径存在,但没有这个文件,那么writeFile会新建一个文件,并写入内容;如果path路径都不存在,则报错。

fs.writeFileSync同步写入内容概念:

同步向文件里写入内容。

特点:

writeFileSync方法也是覆盖式写入,后面的内容会将前面的内容覆盖。

语法:

'fs.writeFileSync(path,data[,options])'

参数:path,被写入文件的路径(相对路径或绝对路径);data,要写入的内容,字符串格式;options:写入文件的参数配置,默认是utf8编码---可以省略。

用法:注意点:

1、如果path路径存在,但没有这个文件,那么writeFileSync会新建一个文件,并写入内容;如果path路径都不存在,则报错。

2、使用同步写入,要想有错误提示,就要引入trycatch;

3、fs.writeFileSync整体没有返回值,为undefined。

引入:trycatch概念:

算是一种查错的语句;err表示为接收到的错误信息。

原理:

当try大括号里的内容出错了,就会执行catch大括号里的内容---和if(){xxx}else{xxx}执行步骤类似

语法:

try{放有可能出错的代码}catch(error){报错后执行的代码,通常是输出错误}

使用场景:

前提:"fs.readFileSync同步读取文件内容"由于此表达式本身不带回调函数,所以我们无法知道,读取文件是否成功进行,那么我们就可以利用try和catch语句实现排查。如下:

结果:

http模块概念:

http模块也是一个对象,是node的重要组成部分。

作用:

是用来写web服务器的。

web服务器:

1、用户通过浏览器来享受web服务器提供的图片,视频,音频等网页内容浏览的服务;

2、用户用url地址来访问某个web服务器上的资源;

3、浏览器端发起请求,web服务器收到请求后,响应这个请求,并将处理结果返回给浏览器;

4、浏览器端与web服务器是通过http(或者是https)协议来进行请求和响应的。

创建web服务器所涉及的方法:1、require()

引入http核心模块require('http'),整体得到的是一个对象。这个对象可以用来创建服务器。

2、createServer():介绍:

是require('http')对象里的一个方法用来创建一个http服务;

createServer方法参数是一个回调函数:当有http请求进来时,它会自动被调用,请求一次,它就被调用一次;

request

request简写(req)是回调函数的第一参数:客户端的请求报文;

req里的主要属性:

1、method:获取客户端请求的方式;

2、url:url获取客户端地址"/"之后的内容,以/开头。---如果地址里没有"/"数据,则req的url属性值默认为"/";

3、body:body获取客户端传过来的请求体数据,post和put请求所携带的数据就为body数据;

4、query:获取客户端传过来的query数据,get和delete请求所携带的数据就为query数据。

response

response简写(res)是回调函数的第二参数:设置对本次请求的响应报文;

res里的主要方法与属性:

1、end()---小括号里的内容,表示为请求的响应数据,而且有结束本次请求的作用,默认情况下只能传入buffer或者是String类型的数据;

2、setHeader(响应头,响应值)---如果end()里想传入中文或其他字符,就需要在end方法前面设置setHeader方法。

如:res.setHeader(“Content-Type”,”text/html;charset=utf8”)--可以解决,在end方法里放入中文,浏览器显示乱码的问题。

----注意:一次请求只能有一个res.end()响应,如果设置了多个则以第一个响应的数据为准,同时服务器报错终止

3、statusCode---属性:服务器给前端返回的状态码。也要写在end()方法前面才有效。

3、listen()

(require('http').createServer()).listen()用来监听服务器,并且给服务器设置端口号:

listen里有两个参数,第一个参数表示端口号,第二个参数表示回调函数。

如果监听成功,则回调函数会执行一次;

如果不成功(例如端口被占用),会报错。

如:

使用步骤:

1、引入http核心模块;

2、使用createServer来创建服务;

3、使用listen来启动服务,端口为8001(端口可以修改0-65535);

4、在浏览器输入http://127.0.0.1:8001回车即可看到服务器响应回来的信息:OK;

5、我们也可以通过ipconfig查看本机ip,再通过http://局域网ip:8001回车访问服务器。

注意点:

end()只能传入buffer或者是String类型的数据---不了解的情况下,不建议写中文。

测试api接口工具Apipost

Apipost是一款api接口的测试工具,可以模拟get,post,文件上传等请求。

下载地址:Apipost

拓展:域名:

ip地址的别名,如:www.baidu.com;

由于ip地址不好记忆,我所以给它们取个好记的别名;

127.0.0.1的别名为localhost;

系统自动解析的,不需要做额外的配置。

服务器类型:

1、web服务器(重点学习)安装apache/tomcat/iis或者在nodejs环境写代码来提供:图片/视频/音频浏览/新闻数据浏览等服务的服务器;2、ftp服务器安装serv-U软件,为其它电脑提供文件下载,共享服务;3、数据库服务器安装mysql软件,为其它电脑提供数据库服务。

端口:

一个网络设备可以有65536个端口,范围是从[0,65535]);不同的端口被不同的软件占用,以提供不同的服务;服务器要提供服务必须要通过指定的端口;客户端与服务器都需要通过特定端口要进行通信(http://157.122.54.189:9092);端口是可以编程分配;有一些端口号是被预定了的,如:http:80、https:443、mysql:3306。

协议:概念:

制定客户端与服务器之间的通讯规则,不同的协议的作用也不同,我们主要了解HTTP协议。

http协议

HTTP(HyperTextTransferProtocol)超文本传输协议,浏览器与web服务器都要遵守的协议;HTTP协议中明确规定了请求数据和响应数据的格式(报文)。

---浏览器请求资源,遵循http协议,即请求报文;服务器返回资源遵循http协议,即响应报文。

content-type作用:

在http协议中,content-type用来告诉对方本次传输的数据的类型是什么。

解释:

在请求头中设置content-type来告诉服务器,本次请求携带的数据是什么类型的;在响应头中设置content-type来告诉浏览器,本次返回的数据是什么类型的;res.setHeader方法可以设置content-type这个响应头,浏览器根据不同类型做出不同解析。

属性:注意:

请求头和响应头都可以设置content-type;

如果读取.html的文件内容,但是content-type设置为了text/css则浏览器将不会当作是html页面来渲染了。

原文:https://juejin.cn/post/7096407069661593630
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
"委""坐" 在古文中的意思 索泰nvidia geforce 210 1g 能玩什么游戏?列举出来 GT210能玩什么中高端游戏 gt210可以玩什么游戏 影驰GT210显卡是否适合玩大型3D游戏? 开网店卖零食怎么样?卖零食现在好做吗? 休闲零食店利润怎么样 开一家休闲零食店需要多少钱 王者荣耀 王者荣耀打野怎么玩? 会议服务进什么科目 会议服务计入什么会计科目 吃喜糖喝喜酒喜气洋洋上联是什么 对'娘子'的思念 古文造句 吃喜糖喝喜酒喜气洋洋怎么对联如题 谢谢了 横批是双喜临门 上联是吃喜糖 喝喜酒 办喜事 求下联 苹果四代是3g手机么 农行boeing有什么用 农行boeing是什么意思 农行boeing什么计划 caco3是碱吗 江西财经大学哪个校区最好? 斯达克力维和妙系列有什么区别 目前最先进的助听器是什么品牌 蔡卓妍阿sa现身时装周 粉色长裙展现东方美 从地铁七号线昌平路站的哪个站口出站然后再往哪走可以到七一中学分部... 有600g浓度为10%的盐水,现在要将该盐水的浓度变为8%,应加水多少克? 我的联想Y470 ifi I5系列,说的是750G怎么只有600多G? 上海到乌鲁木齐火车中间兰州可以下人吗 上海到乌鲁木齐的铁路叫什么? 150g糊精和600g蔗糖混合物>750g,为什么?解释原因 上海什么站到乌鲁木齐市 合肥亲子鉴定去哪里做? 瓷砖铺贴如何降低损耗 综合定价步骤 李小龙周星驰周润发的电影在国内外放疯了没 发哥、成龙、周星驰、李连杰、华仔、李小龙谁的影响力大 京安拓普邮票评级靠谱吗 专业的邮票评级机构选谁? 不同茶类抗烟毒诱发细胞微核率的效果 香港直飞日本东京空运价格? 香港空运到杭州的费用。 推荐好看的纯古代言情小说,就像昭然天下那样,男的要很厉害的那种 天天爱象棋最高级别是什么级别如何下载 ...食品质量与安全方向、食品科学与工程 我不知道选什么好?_百度... 女生读高职选择食品与工程、电子科学与技术、化学工程与工艺专业哪一... 生物科学,生物技术,资源环境科学,食品质量与安全,乳品工程,生物工程... 电子科学与技术,食品科学与工程,食品质量与安全,交通工程,公共事业管理... 食品科学与工程专业的食品科学方向与食品工程方向,食品生物技术方向哪 ... 揭秘装修公司常用的预算欺骗手段及对策 如何识破装修预算陷阱 让装修更省钱 全包装修有什么猫腻 全包装修的报价