Nodejs安装与基本使用

1、在nodejs官网https://nodejs.org/en/download/下载相应的安装版本,并安装。安装完成后进入安装目录(如d:\Program Files\nodejs,也可将此目录加入path)执行以下命令可查看版本

node.exe --version

2、编写一个helloworld.js,内容如下

console.log("this is hello world,hahaha!");

3、使用nodejs来执行此js,命令如下

node d:\nodejs\helloworld.js

如无异常,终端将输出正确内容。

4、下面创建一个简单的nodejs应用。创建一个server.js,内容如下

var http = require('http');

http.createServer(function(request,response){
	// 发送 HTTP 头部
	// HTTP 状态值: 200 : OK
	// 内容类型: text/plain
	response.writeHead(200,{'Content-Type':'text/plain'});
	// 发送响应数据
	response.write('hello world haha');
	response.end();
}).listen(8888);

// 终端打印如下信息
console.log('Server running at http://127.0.0.1:8888/');

server.js完成了一个可以工作的 HTTP 服务器。 使用 node 命令执行server.js

node d:\nodejs\server.js

正常启动后,访问http://127.0.0.1:8888/即可看到结果

----------------分割线-----------------

下面根据一个实例介绍一下nodejs操作数据库例子.

5、前面的代码可以看到,所有的请求都统一返回一个结果,显然不符合基本要求,下面创建一个router.js(路由模块),requestHandler.js(处理模块,查询及插入数据),server.js,index.js,简单演示一下不同请求的处理

router.js

//路由模块,针对不同的请求,做出不同的响应
//handle 处理请求方法
//pathname 请求路径

function route(handle,pathname,response){
	console.log('route a request foo '+pathname);
	
	//检查给定的路径对应的请求处理程序是否存在,如果存在则直接调用相应的函数
	if(typeof handle[pathname] == 'function'){
		handle[pathname](response);
	}else{
		console.log('no request handler found for '+pathname);
		response.writeHead(404,{'Content-Type':'text/plain'});
		response.write('404 not found');
		response.end();
	}
}

exports.route = route;

requestHandler.js(简单处理,下一步再加入mysql数据库操作)

//url对应的处理程序

function welcome(response){
	console.log('request handler "welcome" was called.');
	response.writeHead(200,{'Content-Type':'text/plain'});
	response.write('welcome');
	response.end();
}

//插入记录
function insert(response){
	console.log('request handler "insert" was called.');
	response.writeHead(200,{'Content-Type':'text/plain'});
	response.write('insert');
	response.end();
}

//查询记录
function query(response){
	console.log('request handler "query" was called.');
	response.writeHead(200,{'Content-Type':'text/plain'});
	response.write('query');
	response.end();
}

exports.insert = insert;
exports.query = query;
exports.welcome = welcome;

server.js

//自带模块
var http = require('http');
var url = require('url');

//调用http模块提供的createServer函数
function start(route,handle){
	function onRequest(request,response){
		//获取请求路径
		var pathname = url.parse(request.url).pathname;
		
		//关闭nodejs默认访问favicon.ico
		if(!pathname.indexOf('/favicon.ico')){
			return;
		}
		
		console.log('request for '+pathname+' received.');
		
		//路由处理
		route(handle,pathname,response);
	}
	
	http.createServer(onRequest).listen(8888);
	console.log('Server running at http://127.0.0.1:8888/');
}

//开放接口
exports.start = start;

index.js

var server = require('./server');
var router = require('./router');
var requestHandler = require('./requestHandler');

//handle保存不同的请求路径对应的处理方法

var handle = {};

handle['/'] = requestHandler.welcome;
handle['/insert'] = requestHandler.insert;
handle['/query'] = requestHandler.query;

//传入路由模块方法,路径处理方法
server.start(router.route,handle);

完成基本测试查看结果

启动nodejs
node d:\nodejs\index.js
使用以下地址查看结果
http://127.0.0.1:8888/
http://127.0.0.1:8888/insert
http://127.0.0.1:8888/query
http://127.0.0.1:8888/xxx

6、添加mysql支持,完成操作数据库(建一个mysql数据库hode,新增一张表user)

CREATE 
    TABLE user 
    ( 
        id int(11) NOT NULL AUTO_INCREMENT, 
        name varchar(30) NOT NULL, 
        age int(11) NOT NULL, 
        UNIQUE USING BTREE (id) 
    ) 
    ENGINE= InnoDB

在nodejs项目根目录执行以下命令安装mysql并添加依赖,如先进入目录d:\nodejs

d:\nodejs>"d:\Program Files\nodejs\npm" install mysql -save

成功安装后,此目录会生成node_modules文件夹,接着继续修改代码

7、修改requestHandler.js中insert,query中的代码(注意console.log()中含中文,需将js文件编码改为UTF-8),如下

function insert(response){
	console.log('request handler "insert" was called.');
	
	var mysql = require('mysql');
	var connection = mysql.createConnection({
		host:'127.0.0.1',
		user:'root',
		password:'kroot',
		database:'hode'
	});
	//连接
	connection.connect();
	
	var result = '';
	
	connection.query('insert into user(name,age) values(\'hode'+parseInt(Math.random()*100,10)+'\','+parseInt(Math.random()*100,10)+')',function(err,rows,fields){
		if(err){
			throw err;
		}else{
			console.log('insert finished');
			console.log('影响的行数:'+rows.affectedRows);
			response.writeHead(200,{'Content-Type':'text/plain;charset=UTF-8'}); //含中文用utf-8
	        response.write('影响的行数:'+rows.affectedRows+' 时间'+new Date());
	        response.end();
		}
	});
	//关闭
	connection.end();
}

function query(response){
	console.log('request handler "query" was called.');

	var mysql = require('mysql');
	var connection = mysql.createConnection({
		host:'127.0.0.1',
		user:'root',
		password:'kroot',
		database:'hode'
	});
	//连接
	connection.connect();
	
	var result = '';
	
	connection.query('select * from user order by id desc limit 10',function(err,rows,fields){
		if(err){
			throw err;
		}else{
			for(var i=0;i<rows.length;i++){
				console.log('id:'+rows[i].id+' name :'+rows[i].name+' age:'+rows[i].age);
				result += 'id:'+rows[i].id+' name :'+rows[i].name+' age:'+rows[i].age+'\r\n';
			}
			console.log('query result finished');
			
			response.writeHead(200,{'Content-Type':'text/plain'});
	        response.write(result);
	        response.end();
		}
	});
	//关闭
	connection.end();
	
}

重新访问以下地址完成测试

http://127.0.0.1:8888/insert http://127.0.0.1:8888/query

好,简单的例子先到此为止。

Demo代码下载

结束。


赞赏(Donation)
微信(Wechat Pay)

donation-wechatpay