发布网友 发布时间: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请求进来时,它会自动被调用,请求一次,它就被调用一次;
requestrequest简写(req)是回调函数的第一参数:客户端的请求报文;
req里的主要属性:1、method:获取客户端请求的方式;
2、url:url获取客户端地址"/"之后的内容,以/开头。---如果地址里没有"/"数据,则req的url属性值默认为"/";
3、body:body获取客户端传过来的请求体数据,post和put请求所携带的数据就为body数据;
4、query:获取客户端传过来的query数据,get和delete请求所携带的数据就为query数据。
responseresponse简写(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接口工具ApipostApipost是一款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