一、Node.js
简单的说 Node.js 就是运行在服务端的 JavaScript。
Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台。
Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎,V8引擎执行Javascript的速度非常快,性能非常好。
二、Express 框架
Express 是一个简洁而灵活的 node.js Web应用框架, 提供了一系列强大特性帮助你创建各种 Web 应用,和丰富的 HTTP 工具。
使用 Express 可以快速地搭建一个完整功能的网站。
Express 框架核心特性:
可以设置中间件来响应 HTTP 请求。
定义了路由表用于执行不同的 HTTP 请求动作。
可以通过向模板传递参数来动态渲染 HTML 页面。
三、代码实现
主要实现了node.js连接mysql 数据库,查询需要的信息并返回查询结果的一个服务,中间包含了在开发服务中遇到的mysql 连接断开问题和请求跨域问题,可以作为node.js入门实战demo.
var express = require('express');
var app = express();
var request = require('request');
var mysql = require('mysql');
//解决mysql连接超过一定时间没有活动后,会自动关闭该连接
var pool = mysql.createPool({
host: '192.168.1.2',
user: 'root',
password: '******',
port: '3307',
database: 'testdb',
useConnectionPooling: true
});
//allow custom header and CORS
//解决跨域问题
app.all('*', function (req, res, next) {
res.header('Access-Control-Allow-Origin', '*');
res.header('Access-Control-Allow-Headers', 'Content-Type, Content-Length, Authorization, Accept, X-Requested-With , yourHeaderFeild');
res.header('Access-Control-Allow-Methods', 'PUT, POST, GET, DELETE, OPTIONS');
if (req.method == 'OPTIONS') {
res.send(200); /让options请求快速返回/
}
else {
next();
}
});
app.get('/getsource', function (req, res) {
//可以接受外部传参
var paramtype = req.query.type;
var sql = 'SELECT * FROM testtable where type=' + paramtype;
//查询
pool.query(sql, function (err, result) {
if (err) {
console.log('[SELECT ERROR] - ', err.message);
var errorinfo = {
"result": false,
"error": err.message,
"data": ""
};
res.send(errorinfo);
return;
}
console.log(req.query.name);
console.log('--------------------------SELECT----------------------------');
console.log(result);
var successinfo = {
"result": true,
"error": "",
"data": result
};
res.send(successinfo);
console.log('------------------------------------------------------------\n\n');
});
});
var server = app.listen(3000, function () {
var host = server.address().address;
var port = server.address().port;
console.log('Example app listening at http://%s:%s', host, port);
});