Awilix

Dependency Injection (DI) container สำหรับ JavaScript/Node

ความหมาย

  • Dependent แปลว่า

    • (adj) ขึ้นอยู่กับ, ต้องอาศัย, ต้องพึ่งพา

    • (n) คนที่คอยพึ่งผู้อื่น, ผู้อาศัย, คนรับใช้

  • Dependency หมายถึงสิ่งที่ขึ้นอยู่กับสิ่งอื่น โดยในทาง programming แล้ว object ที่เป็น dependency นั้น จะขึ้นอยู่กับ class อื่นๆ ซึ่งไม่ใช่ class ที่เราสนใจอยู่

  • Injection นั้นเป็น noun ของคำว่า inject ซึ่งแปลได้ว่า ฉีด(ยา) หรืออีกความหมายหนึ่งก็คือการนำบางอย่างเข้าสู่บางสิ่ง ซึ่งแปลง่ายๆได้ว่า การส่งต่อนั้นเอง

  • Dependency Injection ก็คือเทคนิคหนึ่งในการเขียนโปรแกรม โดยจะใช้การส่งต่อ (inject) ตัว dependency แทนการสร้าง dependency ขึ้นมาใหม่

ประโยชน์ของ Dependency Injection

  • ลดการ couple(ผูกมัด) ของ code

    ถ้าเราใช้เทคนิค dependency injection แล้ว code ในส่วนของ dependency ก็จะไม่ผูกหรือขึ้นอยู่กับ class ของเรา ทำให้นำไปสู่ข้อต่อไป

  • ง่ายต่อการ test

    เมื่อ code ผูกมัดกัน(couple)น้อยลงแล้ว ทำให้เวลาเรา test สามารถ mock(จำลอง) ส่วนของ dependency ได้ จึงทำให้ง่ายต่อการเขียน test ครับ

install

npm install awilix

Usage

  • Create a container

  • Register some modules in it

  • Resolve and use!

การเรียกใช้ awilixcontainer.resolve('userController') ซึ่งจะ return เป็น instant ของคลาส UserController

ตัวแปร contructor จะส่งไปในรูปแบบของ object ซึ่งจะถูกบรรจะด้วย class ที่เรา register เข้าไป

อ่านเพิ่มเติม

Last updated