koa2快速实现注册、登录+分页
配图:蓝血月全食昨天又霸占了朋友圈!
2017-03-28, Version 7.8.0 Notable Changes:fix async await desugaring in V8
自从node 7.8+发布以来,我们可以很爽的使用async await去开发了
最新的V8引擎下,NodeJs性能更好,问题更少,所以,现在普遍都在用 Node 8
今天,简单分享一下这个小而美的WEB框架:Koa2 ,技术栈:
koa 2
mysql 2
sequelize
2017年网上关于Koa2的教学太多太多,所以,本次不会讲的太啰嗦
一、版本同步及安装
Node.js 8.0 or greater
Npm 5.0 or greater
1、全局安装用于创建koa工程的cli工具
npm install -g koa-generator
2、创建一个叫作blog的工程,并使用 Ejs模板
koa2 blog -ejs
3、除了默认创建的Koa工程,还要另外安装2个数据库依赖包:
npm i -S mysql2 sequelize
4、项目结构:
+ bin
+ node_modules
+ public
+ routes
+ views
- app.js
- package.json
- package-lock.json
- readme.md
- yarn.lock
5、启动Koa2服务
npm start
浏览器预览如下:
http://localhost:3000/
view-source:
Hello Koa 2!
EJS Welcome to Hello Koa 2!
再继续阅读之前,以上步骤最好先尝试一下!
二、数据库的使用
创建3个脚本文件,用于操作实例化sequelize、封装API、添加测试数据
bin\db.js
bin\user.js
bin\userTest.js
# bin\db.js
const Sequelize = require('sequelize');
// new Sequelize('mysql://localhost:3306/database', {})
module.exports = new Sequelize('koa2', 'root', 'root', {
host: 'localhost', // 数据库地址
dialect: 'mysql', // 指定连接的数据库类型
pool: {
max: 5, // 连接池中最大连接数量
min: 0, // 连接池中最小连接数量
idle: 10000 // 如果一个线程 10 秒钟内没有被使用过的话,那么就释放线程
}
});
# bin\user.js
code ...
# bin\userTest.js
code...
用模型创建数据库表 user.js
Desktop\blog>node bin/user
sequelize deprecated String based operators are now deprecated. Please use Symbol based operators for better security, read more at http://docs.sequelizejs.com/manual/tutorial/querying.html#operators node_modules\sequelize\lib\sequelize.js:237:13
Executing (default): CREATE TABLE IF NOT EXISTS `users` (`id` INTEGER NOT NULL auto_increment , `userName` VARCHAR(255), `email` VARCHAR(255), `createdAt` DATETIME NOT NULL, `updatedAt` DATETIME NOT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB;
Executing (default): SHOW INDEX FROM `users`
添加测试数据 userTest.js
Desktop\blog>node bin/userTest
sequelize deprecated String based operators are now deprecated. Please use Symbol based operators for better security, read more at http://docs.sequelizejs.com/manual/tutorial/querying.html#operators node_modules\sequelize\lib\sequelize.js:237:13
Executing (default): CREATE TABLE IF NOT EXISTS `users` (`id` INTEGER NOT NULL auto_increment , `userName` VARCHAR(255), `email` VARCHAR(255), `createdAt` DATETIME NOT NULL, `updatedAt` DATETIME NOT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB;
Executing (default): INSERT INTO `users` (`id`,`userName`,`email`,`createdAt`,`updatedAt`) VALUES (DEFAULT,'saturn','vmto@qq.com','2018-02-01 05:47:52','2018-02-01 05:47:52');
Executing (default): SHOW INDEX FROM `users`
Executing (default): SELECT `id`, `userName`, `email`, `createdAt`, `updatedAt` FROM `users` AS `user` WHERE `user`.`userName` = 'saturn' LIMIT 1;
attributes [ 'id', 'userName', 'email', 'createdAt', 'updatedAt' ]
{ id: 1,
userName: 'saturn',
email: 'vmto@qq.com',
createdAt: 2018-02-01T05:47:52.000Z,
updatedAt: 2018-02-01T05:47:52.000Z
}
经过上面两步操作,数据库的users表内容如下:
id userName email createdAt updatedAt
------ -------- ----------- ------------------- ---------------------
1 saturn vmto@qq.com 2018-02-01 05:47:52 2018-02-01 05:47:52
改造路由和视图,用于操作user.js文件中封装的接口:
修改一:
routes\index.js
const User = require('../bin/user');
router.get('/', async (ctx, next) => {
let user = await User.findByName('saturn');
await ctx.render('index', {
title: 'hello index',
user: user
})
})
修改二:
views\index.ejs
EJS Welcome to
浏览器预览如下:
http://localhost:3000/
view-source:
hello index
EJS Welcome to hello index
{
"id": 1,
"userName": "saturn",
"email": "vmto@qq.com",
"createdAt": "2018-02-01T05:47:52.000Z",
"updatedAt": "2018-02-01T05:47:52.000Z"
}
近期想分享的不光是Koa2,还有adonsJs,先用Koa2热热身
毕竟她是一个极简的WEB框架
源码在 github koa2-sequelize
下一篇继续完善注册、登录