다즈
112
2019-07-21 17:54:06
2
650

자바스크립트 사용하면서 필요한 함수를 외우면서 하시나요?


제가 공부 중인데 

예를 들어서 Sequelize 에서 

1. class Foo extends Model {

get fullName() { return this.firstname + ' ' + this.lastname; } set fullName(value) { const names = value.split(' '); this.setDataValue('firstname', names.slice(0, -1).join(' ')); this.setDataValue('lastname', names.slice(-1).join(' ')); } } Foo.init({ firstname: Sequelize.STRING, lastname: Sequelize.STRING }, { sequelize, modelName: 'foo' }); // 2. Or with `sequelize.define` sequelize.define('Foo', { firstname: Sequelize.STRING, lastname: Sequelize.STRING }, { getterMethods: { fullName() { return this.firstname + ' ' + this.lastname; } }, setterMethods: { fullName(value) { const names = value.split(' '); this.setDataValue('firstname', names.slice(0, -1).join(' ')); this.setDataValue('lastname', names.slice(-1).join(' ')); } } });

1번과 같은 정의 방법에서는 직접 sequelize 모듈안에 Model 이라는 클래스를 들고 와서 직접 상속해서 

클래스안에 this 를 사용하게 되면 vscode 같은 경우 상속한 Model 클래스에서 사용할 수 있는 함수 리스트들이 나옵니다. 

근데 2번과 같은 정의 방식은 모델 이름이 Foo 로 문자열 값을 지정했고 안에 setter, getter 함수들을 지정해놨지만 Foo 객체를 조회해서 Foo. 함수를 확인하면 안뜹니다. 


보면 1번과 같은 class, extends 키워드를 사용한 곳이 별로 없더라고요 ECMA 최근 문법이라고 해도 노드 설치하면 서버로 구동할 경우 노드 8버전이든 10버전이든 사용해도 되는데

2번과 같은 방식으로 하면 맨날 코딩할 때 자신이 사용한 라이브러리 문서 보면서 사용 가능한 함수를 보면서 하시는건가요? 


그렇게 하면 생산 속도 안나오지 않나요? 안에 함수 매개변수가 어떻게 되어있는지 컴파일 전에는 모를텐데 다들 외우시나요? 


0
0
  • 댓글 2

  • mer
    54
    2019-07-21 18:23:56 작성 2019-07-21 18:25:01 수정됨

    규모가 커지면 기억 못하는게 당연하구요

    sequelize는 아무리 IDE에서 자동완성을 잘 붙여도 메서드를 정의하는 방식이 특이해서 자동완성이 안붙습니다


    타입스크립트를 쓰면 어느정도 해결되는 문제입니다

    항상 자동완성이 되고 매개변수도 체크해주기 때문에 규모가 큰 개발에서도 헷갈릴 일이 적구요

    sequelize는 타입스크립트에서도 쓰기 번거롭기 때문에 저는 typeorm을 추천드려요


    꼭 자바스크립트에서 개발을 해야하는 상황이라면 기능을 정의할 때 일정한 규칙을 지키면(네이밍과 파라미터 규칙)

    상대적으로 외워야 할게 적어서 덜 헷갈립니다


    2
  • 스텁
    988
    2019-07-21 19:53:22

    JS 핵심은 프라미스 만드는방법 및 콜백 펑션이나 펑션을 파라미터로 넘기는거라서..그것만 알면..뭐.....

    0
  • 로그인을 하시면 댓글을 등록할 수 있습니다.