Vuex-ORM 소개

최근에 리팩토링을 진행하면서 Vuex-ORM을 사용해봤다. 좋다. 추천해본다.

장점

  1. 별 수고없이(생각없이) Immutability를 높인다.
  2. Nested된 데이터를 다룰 때 매우 좋다.
  3. Query를 유연하게 짤 수 있다.
    1. 작성자 -> 게시글 -> 댓글 -> 대댓글을 JOIN으로 불러오면서 각 단계에서 orderBy를 다르게 먹일 수 있다.
  4. 어려움 없이 JSON object를 Vuex-ORM에 로딩할 수 있다.
  5. Vuex getter의 부족함을 많이 메꿔준다. getter를 getter에서 호출하지 못한다는 점이라든가…
  6. 근본 넘치는 TypeScript로 작성되어 있다. (?)

단점

  1. this.number(), this.string()과 같은 형식으로 속성을 선언하게 되면, null 값이 들어갔을 때 전자는 0으로, 후자는 “null”의 값이 들어간다. 따라서, 타입이 없는 this.attr()를 주로 사용하게 되는 것 같다. 타이핑이 살짝 부족한게 단점
  2. 복잡하지 않은 데이터를 다루는 프로젝트의 경우 오버엔지니어링으로 보인다.
  3. vuex는 불변성을 강조하지 않는 프레임워크기 때문에, 찾아낸 객체에 직접 변형을 가하는 경우가 많은데, 그런 코드가 많으면 많을 수록 Vuex-ORM으로 넘어가기 힘들다.

개인적으로 장점이 단점보다 매우 크다고 생각하기에 이 라이브러리를 추천한다. 뱀발로, vuex-orm의 플러그인 중 하나인 vuex-orm axios는 생각보다 별로다. vuex-orm으로 가져온 객체 x에 대해서 save() 함수나 delete() 함수를 호출했을 때 REST API를 호출하는 것이 아니라는 것에서 충격.

Leave a Reply