Egg.js Basic Tutorial

官网:https://eggjs.org/zh-cn/ 安装 // 1、创建并进入项目目录 mkdir egg-example && cd egg-example // 2、初始化 npm init egg --type=simple // 3、安装项目 npm i // 4、启动项目 npm run dev // http://localhost:7001 type的类型 simple - 基础应用模板 microservice - 基于egg的微服务模板 sequelize - 带有sequelize的egg应用 ts - typescript的基础应用模板 empty - 空模板 plugin - egg 插件模板 framework - 框架模板 核心功能 1、控制器 Controller // app/controller/home.js const Controller = require('egg').Controller; class HomeController extends Controller { async index() { this.ctx.body = 'Hello world'; } } module.exports = HomeController; 2、路由 Router // app/router.js module.exports = app => { const { router, controller } = app; router.get('/', controller.home.index); }; 3、服务 service // app/service/news.js const Service = require('egg').Service; class NewsService extends Service { async list(page = 1) { // read config const { serverUrl, pageSize } = this.config.news; // use build-in http client to GET hacker-news api const { data: idList } = await this.ctx.curl(`${serverUrl}/topstories.json`, { data: { orderBy: '"$key"', startAt: `"${pageSize * (page - 1)}"`, endAt: `"${pageSize * page - 1}"`, }, dataType: 'json', }); // parallel GET detail const newsList = await Promise.all( Object.keys(idList).map(key => { const url = `${serverUrl}/item/${idList[key]}.json`; return this.ctx.curl(url, { dataType: 'json' }); }) ); return newsList.map(res => res.data); } } module.exports = NewsService; 4、模板渲染 view 需要单独安装视图插件,比如egg-view-nunjucks等 ...

August 7, 2021 · 2 min · 335 words · Aixin.me