朋也的博客 » 首页 » 文章
作者:朋也
日期:2018-04-20
类别:javascript学习笔记
版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)
业余时间学了一下egg.js,并开发了个非常简单的博客,实现了 CRUD 功能,总结一下
$ npm i egg-init -g
$ egg-init eblog --type=simple
$ cd eblog
$ yarn install
官方文档上说的很清楚了
参考:https://eggjs.org/zh-cn/basics/router.html
请求数据有三种: query, params, body
query取值方式:const id = this.ctx.request.query.id
适用于:/post?id=1
params 取值方式:const id = this.ctx.params.id
适用于:/post/1
body 取值方式 const id = this.ctx.request.body.id
适用于form表单提交
开发网站有时候要输出渲染后的模板,有时候要输出json数据
输出模板 this.ctx.render('index.nunjucks', {posts: posts});
输出json this.ctx.body = {code: 200, desc: 'success', detail: null}
官方文档说的也很清楚,https://eggjs.org/zh-cn/core/cookie-and-session.html
说一下页面上怎么取session里的数据,我用的是nunjucks,取值方法:
官方文档上也叫中间件,我习惯叫拦截器,当用户想编辑自己的博客的时候,会用到这个功能,跟在express里的用法差不多,下面来说一下
在 app
文件夹下建一个 middleware
文件夹,新建一个文件并加上下面内容
'use strict';
module.exports = () => {
/*
* 需要登录
*/
return async (ctx, next) => {
if (!ctx.session.user) {
return ctx.render('login.nunjucks');
}
await next();
};
};
然后在 router.js 里通过下面方法来取这个中间件
const { controller, middleware } = app;
const userRequired = middleware.userRequired();
router.get('/admin/index', userRequired, controller.admin.index);