首先在windows下安装nodejs和mysql(这里不介绍),
安装好nodejs后,安装express。npm install -g express(全局,需要在path中添加变量) 或npm install express(在当前文件夹中,推荐)
注意:我用的是webstorm,他可以自动帮你创建express和生成目录结构。如图:
目录结构:
其中:models文件夹,db.js和sqlMapping.js是我添加的,其中models是数据逻辑层,相当于dao层,db配置的是mysql,sqlMapping是sql语句根据自己可要可不要。
要安装nodejs和mysql的驱动,npm install mysql --save.注意最好在项目文件夹下运行命令,那么mysql就会安装在node_modules中 ,--save 参数是把项目所依赖的包添加到package,json中:
{ "name": "nodejsweb", "version": "0.0.0", "private": true, "scripts": { "start": "node ./bin/www" }, "dependencies": { "body-parser": "~1.13.2", "cookie-parser": "~1.3.5", "debug": "~2.2.0", "express": "~4.13.1", "jade": "~1.11.0", "morgan": "~1.6.1", "mysql": "^2.10.2", "serve-favicon": "~2.3.0" }
}
mysql就会添加进去。其中我是参考网上一篇配置的mysql。http://www.tuicool.com/articles/JfqYN3I 可是有错误,我修改了一下。
db.js
module.exports = {
mysql: {
host: '127.0.0.1',
user: 'root',
password: 'root',
database:'mahout',
port: 3306
}
};
sqlMapping.js
var user = {
insert:'INSERT INTO book(id, name, author) VALUES(0,?,?)',
update:'update book set name=?, age=? where id=?',
delete: 'delete from book where id=?',
queryById: 'select * from book where id=?',
queryAll: 'select * from book'
};
module.exports = user;
在app.js中添加路由,即访问的路径相当于springmvc中的controller(name="");添加一下代码:
var book = require('./routes/book');
app.use('/book', book);
book,js
var express = require('express');
var router = express.Router();
var book= require('../models/Book');
/* GET users listing. */
router.get('/', function(req, res, next) {
book.queryAll(req, res, next);
});
router.get('/queryById', function(req, res, next) {
book.queryById(req, res, next);
});
module.exports = router;
其中要在models创建Book.js即数据逻辑层:
Book.js
var mysql = require('mysql');
var $db = require('../db');
var $sql = require('../SqlMapping');
// 使用连接池,提升性能
var pool = mysql.createPool( $db.mysql);
// 向前台返回JSON方法的简单封装
var jsonWrite = function (res, ret) {
if(typeof ret === 'undefined') {
res.json({
code:'1',
msg: '操作失败'
});
} else {
res.json(ret);
}
};
module.exports = {
queryAll: function (req, res, next) {
pool.getConnection(function(err, connection) {
connection.query($sql.queryAll, function(err, result) {
jsonWrite(res, result);
connection.release();
});
});
},
queryById: function (req, res, next) {
var id = +req.query.id;
pool.getConnection(function(err, connection) {
connection.query($sql.queryById, id, function(err, result) {
jsonWrite(res, result);
connection.release();
});
});
}
};
其中数据表book字段有name,author,id(主键)。
运行http://127.0.0.1:3000/book
运行http://127.0.0.1:3000/book/queryById?id=1(queryById是在book.js中配置的路径):
其中可能对初学者有很多疑惑的地方,即项目目录各个功能及文件配置的地方。不懂的地方留言,有错的话会及时修改。