node入门基础知识(get,post,文件请求等等)

之前学过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知识,如有不正确望指正!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值