三层架构 + MVC
在 egg 中使用数据库
egg 支持多种方式操作数据库:
部分代码
-
/config/config.default.js
exports.keys = "ricepudding.cn"; exports.view = { // 该配置会被 egg-view 读取 mapping: { // 映射配置,将不同的模板后缀映射到对应的模板引擎处理 ".ejs": "ejs", }, defaultViewEngine: "ejs", //如果映射找不到对应的模板引擎,将使用该值作为默认使用的模板引擎 defaultExtension: ".ejs", //后续在controller中渲染模板时,默认渲染的模板后缀名 }; // 安全配置 exports.security = { csrf: { enable: false, }, }; // 配置redis exports.redis = { client: { port: 6379, // Redis port host: "127.0.0.1", // Redis host password: "", db: 0, }, }; exports.$apiBase = "http://study.yuanjin.tech";
-
/config/plugin.js
exports.ejs = { enable: true, package: "egg-view-ejs", }; exports.redis = { enable: true, package: "egg-redis", };
-
/service/local.js
const Service = require("egg").Service; module.exports = class extends Service { async getProvinces() { const key = "province"; const provinces = await this.app.redis.get(key); if (provinces) { console.log("使用了缓存"); return JSON.parse(provinces); } const resp = await this.app.axios.get(`${this.config.$apiBase}/api/local`); //缓存 this.app.redis.set(key, JSON.stringify(resp.data)); return resp.data; } };
-
/controller/home.js
const Controller = require("egg").Controller; module.exports = class extends Controller { async index() { const provinces = await this.service.local.getProvinces(); var model = { title: "首页", provinces }; await this.ctx.render("home", model); } };
-
/router.js
module.exports = (app) => { const { router } = app; const verifyToken = app.middleware.verifyToken({}, app); router.get("/", verifyToken, "home.index"); router.get("/login", "user.login"); router.post("/login", "user.handleLogin"); };
Egg👉 抽离业务逻辑
上一篇