-
-
Notifications
You must be signed in to change notification settings - Fork 1.8k
Closed
Description
Loader
做到灵活性,扩展性强。
API
loader 只提供原子粒度的 API,由框架来自行组织
Env
- getServerEnv
- getEggPaths
- getLoadUnits
- getAppname
Low Level API
- loadFile
- loadToApp
- loadToContext
- loadExtend
High Level API
- loadPlugin
- loadConfig
- loadController
- loadMiddleware
- loadApplicationExtend
- loadContextExtend
- loadRequestExtend
- loadResponseExtend
- loadHelperExtend
- loadCustomApp
- loadCustomAgent
- loadService
和插件的关系
插件需要用到 loader 功能需要增加一个 loader 插件,比如 db 的功能
|- app
`- db
`- a.js
新增 egg-loader-db 插件
// app.js
module.exports = function(loader) {
app.loader.loadToApp('app/db', 'db');
};db 插件直接依赖 egg-loader-db 插件
load unit
每个加载单元的目录结构都是类似的,框架、插件、应用的路径都是称为 loadDir。
|- app
|- extend
|- service
|- controller
|- middleware
`- router.js
|- config
|- config.js
`- plugin.js
|- agent.js
`- app.js
LoaderOptions
- directory: null,
- target: null,
- ignore: undefined,
- lowercaseFirst: false,
- initializer: null,
- call: true,
- override: false,
- inject: undefined,
Action
- 去除 loading
- app.js/agent.js 支持返回一个 promise app.js/agent.js 支持返回一个 promise #51
- 调整 console
- 去除 lib/core 潜规则?
- 去除 eggPath 和 customEgg 参数
- 增加 strict 模式 loader 增加 strict 模式 #52
Core
egg-core 是包含了 loader 和应用初始化的功能,简单理解就是一个有目录约定的 koa,初始化包括了 loader。
- loader
- ready
- logger
- router
egg 就像其他框架一样只需要继承 egg-core 就可以直接使用
嗯, 只需提供一个机制给框架开发者扩展, 如集团那边是有 proxy, 其他开发者可以定义:
this.db.xxx -> app/db/xxx.js
this.filters.xxx -> app/filters/xxx.js