egg-- 实现自定义模块挂载到app上

egg-- 实现自定义模块挂载到app上

1.将自己封装的模块功能类写到一个单独文件内,并导出(exports).

//test.js
const BaseContextClass = require('egg').BaseContextClass;

exports.Test = class extends BaseContextClass {
	constructor(ctx){
		super(ctx);//初始化
	}
	.../*其他方法*/
}

2.在app.js 文件中将自定义模块挂载到 app 上

const path = require('path');

module.exports = app => {
    const baseName = 'test';  //文件夹名
    const baseTestDir = 'app/test';//模块目录  这里 放到 app 文件下 
    const ctx = app.createAnonymousContext(); // 创建一个新的执行上下文
    app.loader.loadToApp(        //将test模块 挂载到 app 上
        path.join(app.baseDir, baseTestDir ),    // path.join()的作用 :将路径片段使用特定的分隔符(window:\)连接起来形成路径,并规范化生成的路径。若任意一个路径片段类型错误,会报错。
        baseName,
        {
            caseStyle: 'lower',//小写    this.app.模块名.小写方法名   调用
            ignore: 'test.js',//忽略 test.js 文件   这里配置 你需要忽略的文件  被忽略的文件 将不能通过 this.app.模块名.方法  访问
            initializer: test => {  //初始化器
                return new test(ctx);
            }
        },
    );
}

3.使用:

app/test/index.js

const  Test = require('test.js文件的路径');  //引入功能 类

class  Home extends Test {  //继承 功能类  以至于 可以通过this调用功能类内的方法
	

}
module.exports = Home;

在其他的文件中调用 test模块的方法:
eg:

app/service/xxx.js            

this.app.test.xxx()   即可     test 为app.js 文件 内定义好的模块名
发布了96 篇原创文章 · 获赞 64 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/qq_41709082/article/details/101756963
egg
今日推荐