1. node.js 认识 (一)

官网: (下载安装nodejs)
https://nodejs.org/en/

http://nodejs.cn/

Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。
Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高效。
Node.js 的包管理器 npm,是全球最大的开源库生态系统。

后端流行语言:
java #C node.js

验证版本:
node -v或--version
npm -v或--version或--v或-version

js组成:
1、DOM
2、BOM
3、ECMAScript

node文件的命名:
不能用:node.js 或 nodejs.js

node 用来写服务器

http 的端口:80
https 的端口:433

创建服务器:3步

1.引入模块
2.创建服务
3.监听端口

readFile 异步读取文件(有回调函数)
readFileSync 同步读取文件(无回调函数)

ajax:Asynchronous JavaScript and XML

异常处理try...catch

try{
//有可能出错的代码
}catch(e){//error
//补救的代码 或 提示信息
}

fs.readFile("地址、路径"[,编码],回调函数(err,data){...});
fs.readFileSync("地址、路径"[,编码]);
Buffer对象

utf-8/utf8/data+""/data.toString();

exp:创建服务器:
//1.引入模块
var http = require("http");
var fs = require("fs");

//2.创建服务
var server = http.createServer(function(req,res){
	var url = req.url;
	console.log("url:",url);

	fs.readFile("www"+url,function(err,data){
		if (err) {
			res.end("404");
		}else{
			res.end(data);
		}
	});
});

//3.监听端口
server.listen(9000,function(){
    console.log("服务器已开启:http://localhost:9000");
});

服务器运行:
1.打开服务器:
image
2.浏览器访问:
image
3.服务器响应:
image

登录注册

user.html

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
	</head>
	<script src="jquery.js"></script>
	<script>
		$(function(){
			var $oUser = $("#username");
			var $oPass = $("#pass");
			var $oLogin = $("#login");
			var $oReg = $("#reg");
			
			$oLogin.click(function(){
				$.ajax({
					url:"/login",
					data:{
						user:$oUser.val(),
						pass:$oPass.val()
					},
					dataType:"json",
					success:function(json){
						console.log(json);
					}
					
				});
			});
			$oReg.click(function(){
				$.ajax({
					url:"/reg",
					data:{
						user:$oUser.val(),
						pass:$oPass.val()
					},
					dataType:"json",
					success:function(json){
						console.log(json);
					}
					
				});
			});	
		});
	</script>
	<body>
		用户名:<input id = "username" type="text" value="aaa"/><br />
		密码: <input id ="pass" type="text" value="123"/><br />
		<input id = "login" type="button" value="登录"/>
		<input id = "reg" type="button" value="注册"/>
		
	</body>
</html>

user.js

var http = require("http");
var fs = require("fs");
var users = {aaa:123}; 
var server = http.createServer(function(req,res){
	var url = req.url;
	console.log("url:",url);
	var GET = {};
	
	if(url.indexOf("?") != -1){//接口
		var arr1 = url.split("?");
		url = arr1[0];
		var arr2 = arr1[1].split("&");
		for(var i = 0; i < arr2.length; i++){
			var arr3 = arr2[i].split("=");
			GET[arr3[0]] = arr3[1];
		}
		console.log("url:",url,"GET:",GET);
		
		if(url == "/login"){
			var username = GET.user;
			var password = GET.pass;
			if(!users[username]){
				res.end('{"error":0,"msg":"用户名或者密码不正确"}');
			}else{
				if(users[username] == password){
					res.end('{"error":0,"msg":"登录成功"}');
				}else{
					res.end('{"error":0,"msg":"用户名或者密码不正确"}');
				}
			}
		}else if(url == "/reg"){
			var username = GET.user;
			var password = GET.pass;
			/*res.end('{"error":1,"msg":"reg"}');*/
			if(users[username]){
				res.end('{"error":1,"msg":"用户名存在"}');
			}else{
				users[username] = password;
				res.end('{"error":1,"msg":"注册成功"}');
			}	
		}
		
	}else{
		fs.readFile("www"+url,function(err,data){//文件
			if(err){
				res.end("404");
			}else{
				res.end(data);
			}
		})
	}
});

server.listen(9000,function(){
	console.log("服务器已打开");
})


user2.js:引入url模块直接获取json对象

var http = require("http");
var fs = require("fs");
var modUrl = require("url");
var users = {aaa:123};
var server = http.createServer(function(req,res){
	var url = req.url;
	console.log("url:",url);
	
	var GET = {};
	var urlObj = modUrl.parse(url,true);
	url = urlObj.pathname;	
	GET = urlObj.query;	

	if(url == "/login"){
		var username = GET.user;
		var password = GET.pass;
		if(!users[username]){
			res.end('{"error":0,"msg":"账号或密码输入错误!"}');
		}else{
			if(users[username] == password){
				res.end('{"error":0,"msg":"输入正确"}');
			}else{
				res.end('{"error":0,"msg":"账号或密码输入错误!"}');
			}
		}
	}else if(url == "/reg"){
		var username = GET.user;
		var password = GET.pass;
		if(users[username]){
			res.end('{"error":1,"msg":"用户名已存在,请重新输入"}');
		}else{
			users[username] = password;
			res.end('{"error":1,"msg":"注册正确"}');
		}		
	}else{
		fs.readFile("www" + url,function(err,data){
			if(err){
				res.end("404");
			}else{
				res.end(data);
			}
		})
	}
});
server.listen(9000);

运行效果:

image

image

posted @ 2018-07-09 19:14  飞刀还问情  阅读(381)  评论(1编辑  收藏  举报