| 
				
					 | 
			2 lat temu | |
|---|---|---|
| .. | ||
| lib | 2 lat temu | |
| node_modules | 2 lat temu | |
| History.md | 2 lat temu | |
| LICENSE | 2 lat temu | |
| README.md | 2 lat temu | |
| index.d.ts | 2 lat temu | |
| index.js | 2 lat temu | |
| package.json | 2 lat temu | |
A core Pluggable framework based on koa.
Don't use it directly, see egg.
Directory structure
├── package.json
├── app.js (optional)
├── agent.js (optional)
├── app
|   ├── router.js
│   ├── controller
│   │   └── home.js
|   ├── extend (optional)
│   |   ├── helper.js (optional)
│   |   ├── filter.js (optional)
│   |   ├── request.js (optional)
│   |   ├── response.js (optional)
│   |   ├── context.js (optional)
│   |   ├── application.js (optional)
│   |   └── agent.js (optional)
│   ├── service (optional)
│   ├── middleware (optional)
│   │   └── response_time.js
│   └── view (optional)
|       ├── layout.html
│       └── home.html
├── config
|   ├── config.default.js
│   ├── config.prod.js
|   ├── config.test.js (optional)
|   ├── config.local.js (optional)
|   ├── config.unittest.js (optional)
│   └── plugin.js
Then you can start with code below
const Application = require('egg-core').EggCore;
const app = new Application({
  baseDir: '/path/to/app'
});
app.ready(() => app.listen(3000));
EggLoader can easily load files or directories in your egg project. In addition, you can customize the loader with low level APIs.
Load config/plugin.js
Load config/config.js and config/{serverEnv}.js
If process.env.EGG_APP_CONFIG is exists, then it will be parse and override config.
Load app/controller
Load app/middleware
Load app/extend/application.js
Load app/extend/context.js
Load app/extend/request.js
Load app/extend/response.js
Load app/extend/helper.js
Load app.js, if app.js export boot class, then trigger configDidLoad
Load agent.js, if agent.js export boot class, then trigger configDidLoad
Load app/service
Retrieve application environment variable values via serverEnv. You can access directly by calling this.serverEnv after instantiation.
| serverEnv | description | 
|---|---|
| default | default environment | 
| test | system integration testing environment | 
| prod | production environment | 
| local | local environment on your own computer | 
| unittest | unit test environment | 
To get directories of the frameworks. A new framework is created by extending egg, then you can use this function to get all frameworks.
A loadUnit is a directory that can be loaded by EggLoader, cause it has the same structure.
This function will get add loadUnits follow the order:
loadUnit has a path and a type. Type must be one of those values: app, framework, plugin.
{
  path: 'path/to/application',
  type: 'app'
}
To get application name from package.json
Get the infomation of the application
package.jsonpackage.jsonTo load a single file. Note: The file must export as a function.
To load files from directory in the application.
Invoke this.loadToApp('$baseDir/app/controller', 'controller'), then you can use it by app.controller.
To load files from directory, and it will be bound the context.
// define service in app/service/query.js
module.exports = class Query {
  constructor(ctx) {
    // get the ctx
  }
  get() {}
};
// use the service in app/controller/home.js
module.exports = function*() {
  this.body = this.service.query.get();
};
Loader app/extend/xx.js to target, For example,
this.loadExtend('application', app);
| Param | Type | Description | 
|---|---|---|
| directory | String/Array | 
directories to be loaded | 
| target | Object | 
attach the target object from loaded files | 
| match | String/Array | 
match the files when load, default to **/*.js(if process.env.EGG_TYPESCRIPT was true, default to `[ '*/.(js | 
| ignore | String/Array | 
ignore the files when load | 
| initializer | Function | 
custom file exports, receive two parameters, first is the inject object(if not js file, will be content buffer), second is an options object that contain path | 
| caseStyle | String/Function | 
set property's case when converting a filepath to property list. | 
| override | Boolean | 
determine whether override the property when get the same name | 
| call | Boolean | 
determine whether invoke when exports is function | 
| inject | Object | 
an object that be the argument when invoke the function | 
| filter | Function | 
a function that filter the exports which can be loaded | 
EggCore record boot progress with Timing, include:
process.uptime to record the script start running time, framework can implement a prestart file used with node --require options to set process.scriptTime)require durationStart record a item. If the item exits, end the old one and start a new one.
End a item.
Generate all record items to json
Please open an issue here.
This project follows the git-contributor spec, auto updated at Wed Nov 24 2021 22:24:39 GMT+0800.