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代码下载
结束。