下面我们先了解一下创建 ServiceProvider 的步骤 .. 应用里面特有的一些 Service Provider 可以放在应用根目录下面的 providers 这个目录的下面 ..
不同的 Provider 都可以放在单独的目录的下面 .. 比如我们创建一个 Demo 目录 .. 里面添加一个 DemoProvider.js .. 主要就是演示一下 Service Provider 还有 Ioc container ..
Provider 类要继承 ServiceProvider ... 在文件里面,先从 @adonisjs/fold 里面,把 ServiceProvider 这个类解构出来 ..
然后再创建一个 Provider 类 .. 继承一下 ServiceProvider ..
类里面可以添加一个 register 方法 .. 在这个方法里面,可以绑定一些东西到应用的 ioc container 里面 ..
类里面还可以添加一个 boot 方法 .. 所有 provider 都注册完成以后,就会调用这个 boot 方法 .. 在这个方法里,可以扩展应用现有的一些东西 .. 比如添加视图全局方法 .. 在 Request 上面添加新的方法等等 ... 这些事情之前我们都是在应用的 hook 里面做的 .. 你也可以创建一个 provider ,然后在 boot 方法里面去做这些事情 ..
最后导出创建的这个 DemoProvider 类 ...
注册 Provider
有了 Provider 以后还得再去注册一下 .. 打开 start ... app.js ...
先在文件顶部 .. 导入 Node.js 里的 path 模块 .. const path ... require .. path ..
然后在 providers 里面 ... 用一下 path.join .. __dirname 表示当前模块的位置 .. 两个点表示上一级目录 .. 再加上 providers/Demo/DemoProvider ...
这样在 DemoProvider 里面绑定在 Ioc container 上的东西,在应用里就可以直接使用了 ..