【问题标题】:Adonisjs - Inheritence (Base / Admin / Front Controllers)Adonisjs - 继承(基础/管理/前端控制器)
【发布时间】:2017-11-27 08:57:24
【问题描述】:

我对 Adonisjs 框架有点陌生。我一直在使用这个很棒的框架开发我的第一个 nodejs 应用程序。我一直在尝试创建像

这样的应用程序结构
  • 基础
  • Admin 扩展 Base
  • 前延伸底座

为此,我尝试创建一个基类 (app/Http/Controllers/BaseController.js),如下所示:

'use strict'

class BaseController {
    constructor () {

        [...]

    }
}

module.exports = BaseController

管理类(app/Http/Controllers/AdminController.js)

'use strict'

const BaseController = use('BaseController')

class AdminController extends BaseController {
    constructor () {

        [...]

    }
}

module.exports = AdminController

前端类(app/Http/Controllers/FrontController.js)

'use strict'

const BaseController = use('BaseController')

class FrontController extends BaseController {
  constructor () {

        [...]  

  }
}

module.exports = FrontController

但我在 Admin 和 Front 控制器上都收到此错误 Cannot find module 'BaseController'。我只需要一个关于如何在 adonisjs 框架中创建基本继承类结构的提示/示例。

【问题讨论】:

    标签: node.js inheritance adonis.js


    【解决方案1】:

    我假设您使用的是框架的最新版本 4.0:

    adonis.js Ioc 容器自动加载应用程序目录的内容,并使其在“应用程序”命名空间下可用(请参阅Adonis.js 4.0 > Ioc container > Autoloading)。因此,文件“app/Http/Controllers/BaseController.js”的导出可在名称“App/Http/Controllers/BaseController”下使用。

    所以对于你的例子:

    'use strict'
    
    const BaseController = use('App/Http/Controllers/BaseController') // <--
    
    class AdminController extends BaseController {
        constructor () {
            [...]
    
        }
    }
    
    module.exports = AdminController
    

    如果您真的想使用没有命名空间的控制器(我不推荐),您可以通过在“start/app.js”配置文件中添加别名来为它们引入一个简短的唯一名称:

    ...
    const aliases = {
      'BaseController': 'App/Http/Controllers/BaseController'
    }
    ...
    

    之后你可以调用控制器类:

    use('BaseController')
    

    注意:不要忘记将super()放在子类的构造函数中:

    constructor () {
        super()
    }
    

    【讨论】:

    • 找不到模块'C:\wamp64\www\trade_findery\site\app/Http/AdminController'
    • 没关系。问题已解决(控制器文件的路径错误):)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多