最近在研究nodejs的学习,毕竟很火的一门语言,一个强大的服务器脚本语言,做了这么久的php开发,默然回头发现,java开发是那么的臃肿,不过必须承认java严格的语法是安全性高的基础,现在非常喜欢这种脚本型的语言,开发快,写的代码少,简洁,效率高,下面开始node代码之旅。

首先是安装node,去nodejs中文网就可以下载了,下载msi格式的直接带npm管理工具很方便,我的网盘下载地址http://pan.baidu.com/s/1c0lUnfE,安装之后别忘了下载git工具,git工具在windows系统上给人一种linux命令的感觉很好用,百度git就可以下载了,像现在的开发,基本都是使用git仓库在管理项目,也是必须学会的,这2样安装完毕之后,就可以开始写代码了。

我学习都是按照我自己的路线走的,东西都是在实际过程用了才会记住,最好有一个API手册,开发过程中的宝典,帮我记住了好多PHP的函数手册地址http://pan.baidu.com/s/1dDAUFzb自己去下载吧,学习总是自己在不断的问自己,这样才可以不断的提高,开始代码。

有了npm安装mysql

安装好了mysql模块之后点击node_moudle文件夹

就有了mysql的模块。

开始准备开发,把mysql模块复制到你的项目文件夹下面:我的路径

创建入口app.js文件

 

/**
 * 引入相应的类
 */
var http = require('http');
var url = require("url");
var qs = require("querystring");
function start() {  
 function onRequest(request, response) 
 { //获取url的路径访问,进行判断跳转不同的控制器处理。    
  var pathname = url.parse(request.url).pathname;     
    var str='';
    //主界面
    if(pathname == '/'){ 
        response.writeHead(200, {"Content-Type": "text/html; charset=utf-8"}); 
        str="<h1>欢迎</h1><a href='/login'>点我登录</a>";
         response.write(str); 
         response.end(); 
    }
    //登陆界面
    if(pathname == '/login'){

    	str = require('./login').get(request,response); 
    }
    //登陆处理
    if(pathname == '/dologin'){
      var s = require('./login');
          var a="";
            //接受数据
            //设置request请求的数据编码。  
            request.setEncoding("utf8"); 
            request.addListener("data",function(postdata){
            //对表单数据进行解码
            var c = decodeURIComponent(postdata);
             //转换成json对象
            var b = qs.parse(c);  
            a = b; 
        });
        //接受完毕数据触发事件
        request.addListener("end",function(){
            s.deal(request,response,a);
        });
       }
       //修改界面
       if(pathname == '/modify'){

	var s = require('./login');
        var data = url.parse(request.url).query;
 	data= qs.parse(data); //转化成JSON格式数据好处理
 	s.dealget(request,response,data);
     }
   }   
      http.createServer(onRequest).listen(8888);   
      console.log("服务器启动:监听端口8888."); 
  } 
  start();

2.我的业务逻辑代码都在login.js里面,代码如下:

exports.get = function(req,res){
	  res.writeHead(200,{'Content-type':'text/html;charset=utf-8'});
          var str = "<form action='/dologin' method='post'>"+
           "帐号:<input type ='text' name='name'><br/><br/>"+
    	   "密码:<input type ='password' name='password'><br/><br/>"+
    	   "  <input type ='submit' value='提交'></form>";
    	 res.write(str); 
         res.end(); 
}
exports.deal = function(req,res,data){

	var mysql = require('./mysql');
	var name = data.name;
	var password = data.password;
	var sql = "SELECT * FROM t_user WHERE name = '"+name+"' AND password = '"+password+"'";
	mysql.query(sql,function(data){

			showpage(req,res,data);
	});	
}
exports.dealget = function(req,res,data){
	var mysql = require('./mysql');
	var id = data.id;

	var sql = "SELECT * FROM t_user WHERE id = '"+id+"'";
	mysql.query(sql,function(data){

			modifyview(req,res,data);
	});
}
function showpage(req,res,data){
		
		res.writeHead(200,{'Content-type':'text/html;charset=utf-8'});
		if(data != ''){
			
			var str = "<h1>登录成功</h1>";
			    str+="帐号:"+data[0].name+"<br>";
			    str+="密码:"+data[0].password;
			    str+="<table border='1' width='400px'>";
			    str+="<tr><th>姓名</th><th>电话</th><th>年龄</th><th>操作</th></tr>";
			    for (var i = data.length - 1; i >= 0; i--) {

			    	str+="<tr>";
			    	str+="<td>"+data[i].name+"</td>";
			    	str+="<td>"+data[i].tel+"</td>";
			    	str+="<td>"+data[i].age+"</td>";
			    	str+="<td><a href='/modify?id="+data[i].id+"'>修改</a></td>";
			        str+="</tr>";
			    };
			    str+="</tr></table>";
		}else{

			var str = "<h1>登录失败</h1>";
			    str+="<a href='/login'>返回登录</a>";
		}	
		res.write(str); 
        res.end(); 
}
function modifyview(req,res,data){

		res.writeHead(200,{'Content-type':'text/html;charset=utf-8'});

		var str = "帐号:<input name='name' value="+data[0].name+"><br>";
			str = "密码:<input name='name' value="+data[0].password+"><br>";
			str+="年龄:<input name='age' value="+data[0].age+"><br>";
			str+="电话:<input name='age' value="+data[0].tel+"><br>";
			str+="<input type='submit' onclick=javascript:alert('修改成功') value='提交'><br>";
			str+="<a href='javascript:void(0)' onclick='window.history.go(-1)'>返回列表</a>";
		res.write(str); 
        res.end(); 

}

3.mysql处理的文件mysql.js,说明,node框架本身是异步框架,返回数据不能直接进行return,因为会打断异步,所以只能靠回调来进行数据返回。

var mysql = require("mysql");
var connection  = mysql.createConnection({

   host:'localhost',
   user:'root',//账号
   password:'',//密码
   database:'test' //数据库名字

});
connection.connect();

//查询数据
function query(sql,callback){


		connection.query(sql, function(err, rows, fields) {
    		if (err) throw err;
     		 callback(rows);
     		 
      });
	//connection.end();
}
exports.query = query;


4.自己创建test数据库,t_user表创建代码

CREATE TABLE `t_user` (
  `id` int(11) NOT NULL,
  `name` varchar(20) DEFAULT NULL,
  `password` varchar(20) DEFAULT NULL,
  `nickname` varchar(20) DEFAULT NULL,
  `age` int(10) DEFAULT NULL,
  `sex` varchar(10) DEFAULT NULL,
  `tel` varchar(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of t_user
-- ----------------------------
INSERT INTO `t_user` VALUES ('1', 'admin', 'admin', '系统管理员', '11', '男', '11111111111');
INSERT INTO `t_user` VALUES ('2', 'ssss', 'ssss', '管理员', '22', '女', '22222222222');

5.最后运行app.js,命令 node app.js:

成功界面:

 


 

 

以上就是node与数据库交互并且简单表单处理,node与页面交互很不方便,所以需要借助框架来进行web开发,下一步,会使用Epress框架来进行进一步的node开发。

Logo

更多推荐