之前学过node,但是时间太久了,所以现在又重新学一遍,从最基础的开始,首先让我们了解node!
一、基础知识
1、概述
Node.js是基于Chrome JavaScript运行时建立的一个平台,实际上它是对Google Chrome V8引擎进行了封装,它主要用于创建快速的、可扩展的网络应用。Node.js采用事件驱动和非阻塞I/O模型,使其变得轻微和高效,非常适合构建运行在分布式设备的数据密集型实时应用。
运行于浏览器的Javascript,浏览器就是Javascript代码的解析器,而Node.js则是服务器端JS的代码解析器,存于服务器端的JS代码由Node.js来解析和应用。
JS解析器只是JS代码运行的一种环境,浏览器是JS运行的一种环境,浏览器为JS提供了操作DOM对象和window对象等接口。Node.js也是JS的一种运行环境,node.js为JS提供操作文件、创建http服务、创建TCP、UDP服务等接口,所以Node.js可以完成其他后台语言能完成的工作。
二、get与post方法
1、我们首先创建一个服务器:
const http = require('http');
var server = http.createServer(function(req,res){});
//listen为事件的监听,后面为端口号,如何访问可以访问http://localhost:8080
server.listen(8080);
2.get方法
有三种方式:
1.用split()方法,分解来自于页面的url
2.用querystring()方法,可是能分解的只是类似于a=12&b=90,用的时候为querystring.parse(),分解后为对象
3.url方法解析:可以直接分解地址,一般都会有参数,true,直接将query分解,得到对象,例如obj.pathname得到的就是路径,obj.query得到的就是想要的对象。
下面为具体的例子:
const http = require('http');
const querystring = require('querystring')
const urlLib = require('url')
var server = http.createServer(function(req,res){
var get = {};
if(req.url.indexOf("?")!=-1){
var arr = req.url.split("?");
//arr[0] 地址 //arr[1] 数据
var url = arr[0]
var arr2 = arr[1].split("&");
for(var i = 0 ; i < arr2.length ; i++){
var arr4 = arr2[i].split("=");
get[arr4[0]]=arr4[1]
}
console.log(url,get);
}
if(req.url.indexOf("?")!=-1){
var arr = req.url.split("?");
var json = querystring.parse(arr[1]);
console.log(json);
}
//第三种,最简单,最常用的方式
var j = urlLib.parse(req.url,true)
console.log(j.pathname,j.query)
res.write("www");
res.end();
});
server.listen(8000);
3、post方法
可以传输的内容多,就是当传输的数据到达一定的大小只后就会分段传输,基础语法:
req.on('data',function(data){
str+=data;
})
req.on('end',function(){
console.log(str)
})
data是一段到达,end是全部到达。
例子:
const http = require("http")
const querystring = require("querystring")
http.createServer(function(req,res){
var str = '';
var i = 0;
req.on('data',function(data){
console.log('第${i++}次接收数据')
str+=data;
});
req.on('end',function(){
var st = querystring.parse(str)
console.log(st) });
}).listen(8088);
4、文件操作
var file_name = './www'+ url;
fs.readFile(file_name,function(err,data){
if(err){
res.write('404')
}
else{
res.write(data)
}
res.end;
})
需要注意的一点就是,当我们用谷歌浏览器请求req.url时,会有地址和另外一个东西favicon.ico,即:
第一条时URL地址为用户输入的客户端请求的目标URL地址,"/"代表用户的目标url地址为web应用程序的根目录.
第二个目标URL地址问浏览器为页面在收藏夹中的显示图标.默认为favicon.ico.而自动发出的请求的目标URL地址.
可以对上面的代码做修改后屏蔽这样的请求:
var http=require("http");
var server=http.createServer();
server.on("request",function(req,res){
if(req.url!=="/favicon.ico")
console.log(req.url);
res.end();
});
上面介绍了最基础简单的node知识,如有不正确望指正!