1、基本环境搭建
1、创建项目以及安装依赖
mkdir hackernews-tegg
cd hackernews-tegg
npm init
npm i egg
npm i @eggjs/bin --save-dev
2、添加 npm scripts 到 package.json:
{
"name": "hackernews-tegg",
"scripts": {
"dev": "egg-bin dev"
}
}
3、创建对应文件结构
egg-example
├── app
│ ├── controller
│ │ └── home.js
│ └── router.js
├── config
│ └── config.default.js
└── package.json
// app/controller/home.js
const Controller = require('egg').Controller;
class HomeController extends Controller {
async index() {
this.ctx.body = 'Hello world';
}
}
module.exports = HomeController;
// app/router.js
module.exports = (app) => {
const { router, controller } = app;
router.get('/login', controller.home.index);
router.redirect('/old', '/login') // 重定向
};
// config/config.default.js
exports.keys = '<此处改为你自己的 Cookie 安全字符串>';
// 启动
npm run dev
4、常规应用
// app/router.js
module.exports = (app) => {
const { router, controller } = app;
router.get('/login', controller.home.index); // 对象匹配
// router.get('/login', "home.index"); // 字符串匹配
// router.redirect('/old', '/login') // 重定向
// router.redirect('/old', 'home.index') // 重定向另一种写法
};
// app/router.js
// 当业务量过大 建议写法
const mapper = {}
mapper.User = function (app) {
const { router } = app;
const prefix = 'api/user'
router.get(`${prefix}/fn1`, 'user.fn1');
router.get(`${prefix}/fn2/:id`, 'user.fn2');
}
mapper.Home = function (app) {
const { router } = app;
const prefix = 'api/home'
router.get(`${prefix}/fn1`, 'home.fn1');
router.get(`${prefix}/fn2/:id`, 'home.fn2');
}
module.exports = (app) => {
const { router } = app;
Object.values(mapper).forEach(fn => fn(app))
};
// RESTful 风格的 URL 定义
// app/router.js
module.exports = (app) => {
const { router, controller } = app;
router.resources('posts', '/api/posts', controller.posts);
};
// app/controller/posts.js
const Controller = require('egg').Controller;
class PostsController extends Controller {
async index() {}
async new() { };
async create() { };
async show() { };
async edit() { };
async update() { };
async destroy() { };
}
module.exports = PostsController;
1000

被折叠的 条评论
为什么被折叠?



