Awilix
Dependency Injection (DI) container สำหรับ JavaScript/Node
ความหมาย
install
npm install awilixUsage
Last updated
Dependency Injection (DI) container สำหรับ JavaScript/Node
npm install awilixLast updated
#user.interface.js
export interface IUserController
{
getUser(xtc)
}
#user.controller.js
export class UserController implement IUserController{
// We are using constructor injection.
constructor(opts:unknow) {
// Save a reference to our dependency.
this.userService = opts.userService
}
// imagine ctx is our HTTP request context...
getUser(ctx) {
return this.userService.getUser(ctx.params.id)
}
}
#user.service.js
export const makeUserService = ({ db }) => {
return {
getUser: id => {
return db.query(`select * from users where id=${id}`)
}
}
}
#index.js
import { asClass, asFunction, createContainer, InjectionMode } from 'awilix';
const awilixcontainer = createContainer<registerClassType>({
injectionMode: InjectionMode.PROXY,
});
awilixcontainer.createScope();
container.register({
userController: asClass(UserController)
userService: asFunction(makeUserService)
})
const router = express.Router();
router.get('/api/users/:id', awilixcontainer.resolve('userController').getUser)