egg框架的应用

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;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值