前言
koa2的脚手架,默认模板引擎是jade。如果想用art-template或者是ejs的模板的同学可以点击这个链接koa脚手架,拉去使用即可。
地址分享
koa_api:拉去下来,运行直接使用即可。
koa脚手架:搭建好的koa脚手架,使用art-template模板引擎,或者ejs
Koa
安装
- 1、初始化package.json
npm init --yes
- 2、安装koa 、koa-router
cnpm install koa koa-router --save
- 3、创建入口文件app.js
const Koa = require('koa');
const Router = require('koa-router')
// 创建一个Koa对象表示web app本身:
const app = new Koa();
const router = new Router();
//配置路由
app.use(router.routes()).use(router.allowedMethods());
const port = process.env.PORT || 5000;
router.get('/', async ctx => {
ctx.body = {
msg:'hellow koa'}
})
// 对于任何请求,app将调用该异步函数处理请求:
app.use(async (ctx, next) => {
await next();
ctx.response.type = 'text/html';
ctx.response.body = '<h1>Hello, koa2!</h1>';
});
// 在端口3000监听:
app.listen(port);
console.log(`app started at port ${
port}`);
- 4、启动项目即可
koa配置art-template模板
art-template,速度非常快,推荐使用。
- 安装
cnpm install --save art-template
cnpm install --save koa-art-template
- 配置
const render = require('koa-art-template')
render(app,{
root:path.join(__dirname,'view'),
extname:'.art',
debug:process.env.NODE_ENV !== 'production'
})
koa配置ejs模板引擎
- 安装
npm install koa-view --save
npm install ejs --save
- 配置
const views = require('koa-views')
app.use(view(__dirname,{
extension:'ejs'})) //
- 使用
await ctx.render('index.html')
- 语法
<%= title %> //变量
<% array.forEach(element => {
%>
<%= element %>
<% }) %> //遍历
<% include public/header.ejs %> //引入模板
<%- element %> //变量(会解析HTML)
<% if(num>24) {
%> //判断
<% }else{
%>
<% } %>
- 操作
koa静态资源中间件(配置)
- 安装
cnpm install koa-static --save
- 配置
const serve = require('koa-static')
app.use(serve(__dirname + '/static'))
koa中cookie
cookie保存在浏览器。
koa中无法使用中文cookie,使用Buffer解决。
- 使用
ctx.cookies.set('userInfo','zhangsan'.{
maxAge:60*1000*24 //过期时间
path:'/news' //配置可以访问的cookie路径
domain:'.baidu.com' //正常情况不需要设置
httpOnly:true; //这个cookie只有服务器才能访问。 false表示浏览器服务器都可以使用cookie、
overwrite
})
ctx.cookies.get('userInfo')
console.log(new Buffer('hellow,word!').toString('base64'))
console.log(new Buffer('aGVsbG8sIHdvcmxkIQ==','base64').toString())
koa中使用Session
- 安装
cnpm install koa-session --save
- 配置
var session = require('koa-session')
app.keys = ['some secret hurr']
const CONFIG = {
key: 'koa.sess', /** 默认 */
maxAge: 86400000, //过期时间
autoCommit: true, /** (boolean) automatically commit headers (default true) */
overwrite: true, /** (boolean) can overwrite or not (default true) */
httpOnly: true, /** ture表示只有服务器可以获取session */
signed: true, /** 默认 签名 */
rolling: false, /** 每次请求强行设置我们的session */
renew: true, /** 每次操作,就会重新设置时间*/
secure: true, /** (boolean) secure cookie*/
sameSite: null, /** (string) session cookie sameSite options (default null, don't set it) */
};
app.use(session(CONFIG, app));
- 使用
ctx.session.userInfo = '张三' //设置
ctx.session.userinfo //获取
koa操作mongodb数据库
- 1、安装mongose
cnpm install mongose --save
- 2 、使用mongose链接数据库
mongose.connect('url',,{
useNewUrlParser: true })
.then((res) => {
console.log('链接成功')
})
.catch((res) => {
console.log('数据库链接失败')
})
koa 配置路由
koa的路由配置使用koa-router
cnpm install koa-router --save
const router = require('koa-router')()
//get 获取参数
router.get('/test',async (ctx) => {
//直接使用
console.log(ctx.query) //{ aid: '123' } 获取的是对象 用的最多的方式 **推荐
console.log(ctx.querystring) //aid=123&name=zhangsan 获取的是一个字符串
//使用request
console.log(ctx.request.query); //{ aid: '123', name: 'zhangsan' } 对象
console.log(ctx.request.querystring); //aid=123&name=zhangsan
})
app.use(router.routes(),router.allowedMethods()) //启动路由 router中有一个方法routes方法,执行这个方***把router中所有的路由添加到项目上。
request可以不写,用法类似与window.document 可以直接写document。
配置bodyparser中间件
使用post的方法,需要引入。koa-bodyparser这个包
cnpm install koa-bodyparser --save
完成后可以在,ctx中的request的body属性中拿到值。(这个包会把post请求前端传递过来的数据添加到ctx的request属性上。在ctx上不能访问)
koa密码加密
安装bcrypt.js
cnpm i bcryptjs
- 1 、哪里需要加密,就在那里引用
const bcrypt = require('bcryptjs')
//哪里需要需要加密这段代码就放在哪里
bcrypt.genSalt(10, (err, salt) => {
bcrypt.hash('需要加密的内容', salt, (err, hash) => {
console.log(hash) //加密后的hash值
newUser.password = hash
});
});
koa配置头像(墓碑)
- 1、安装
cnpm i gravatar --save
const gravatar = require('gravatar')
const avatar = gravatar.url(ctx.request.body.email, {
s: '200', r: 'pg', d: 'mm'});
koa使用Token
- 1、安装jsonwebtoken
cnpm i jsonwebtoken --save
const payload = {
id: user.id,name:user.name,avatar:user.avatar} //需要传递的参数
const token = jwt.sign(payload,"secret",{
expiresIn:3600}); //进行token配置,参数、密钥、时间
ctx.status = 200;
ctx.body = {
success:true , token: 'Bearer ' + token}
验证token
安装
cnpm i koa-passport --save
安装
cnpm i passport-jwt
验证输入内容格式
validator
安装
cnpm i validator
中间件
koa中的中间件
应用级中间件
app.use(async (ctx,next) => {
console.log(new Date());
await next()
})
路由中间件
router.get('/news',async (ctx,next) => {
await next()
})
错误处理中间件
app.use(async (ctx,next) => {
console.log(new Date());
await next()
if(status == 404){
ctx.body = {
message:'找不到页面'}
}
})
koa脚手架
脚手架默认模板引擎是jade
- cnpm install koa-generator -g
- koa koa_demo
- cd koa_demo
- yarn
- npm start
总结
为了帮同学们更好的理解前后端交付这里我给大家封装了一个接口。拉去下来直接使用即可。api